Endurecimento Linux: uma lista de verificação de 15 passos para um servidor Linux seguro

Gus Khawaja

a maioria das pessoas assume que o Linux é seguro, e isso é uma falsa suposição. Imagina que o teu portátil é roubado sem ser endurecido. Um ladrão provavelmente assumiria que seu nome de usuário é ” root “e sua senha é” toor”, uma vez que essa é a senha padrão no Kali e a maioria das pessoas continuam a usá-la. E tu? Espero que não.

as implicações negativas da carreira de escolher não endurecer a sua máquina Kali Linux são graves, por isso vou partilhar os passos necessários para tornar a sua máquina Linux segura, incluindo a forma como uso o teste de penetração e o Kali Linux para fazer o trabalho. É importante notar que, embora sejam muitas distribuições (AKA distros) do Linux e cada uma difere da perspectiva da linha de comando, a lógica é a mesma. Use as seguintes dicas para endurecer a sua própria caixa Linux.

1-documente a informação da máquina

cada vez que você trabalha em uma nova tarefa de endurecimento Linux, você precisa criar um novo documento que tem todos os itens da lista de verificação listados neste post, e você precisa verificar todos os itens que você aplicou. Além disso, no topo do documento, você precisa incluir a informação da máquina Linux:

  • nome da Máquina
  • endereço IP
  • endereço Mac
  • Nome da pessoa que está fazendo o endurecimento (provavelmente você)
  • Data
  • Número do Ativo (Se você estiver trabalhando para uma empresa, então você precisa incluir o número do imobilizado que a sua empresa utiliza para marcação de hosts.)

2-protecção BIOS

é necessário proteger a BIOS do hospedeiro com uma senha para que o utilizador final não seja capaz de alterar e sobrepor as definições de segurança da BIOS; é importante manter esta área protegida de quaisquer alterações. Cada fabricante de computador tem um conjunto diferente de chaves para entrar no modo BIOS, então é uma questão de encontrar a configuração onde você define a senha administrativa.

Em seguida, você precisa desativar o arranque de dispositivos de mídia externos (USB/CD/DVD). Se você omitir para alterar esta configuração, qualquer um pode usar uma pen USB que contém um sistema operacional inicializável e pode acessar os dados do seu sistema operacional.

+ deseja saber mais sobre o Linux? Aprenda mais com Pluralsight, uma plataforma de aprendizagem tecnológica. Aprenda o Linux agora. +

as placas-mãe dos servidores mais recentes têm um servidor WEB interno onde você pode acessá-las remotamente. Certifique-se de alterar a senha padrão da página de administração ou desativá-lo, se for possível.

3-encriptação em disco rígido (confidencialidade)

a maioria das distribuições Linux irão permitir-lhe cifrar os seus discos antes da instalação. Criptografia de disco é importante em caso de roubo, porque a pessoa que roubou o seu computador não será capaz de ler os seus dados se eles conectam o disco rígido à sua máquina.

na imagem abaixo, escolha a terceira opção da lista: guiado-use o disco inteiro e configure o LVM encriptado (LVM significa Gestor de volume lógico).)

se sua distribuição Linux não suporta criptografia, você pode ir com um software como TrueCrypt.

4-Proteção do disco (disponibilidade)

Backups têm tantas vantagens em caso de um sistema danificado, bugs na atualização do so. Para servidores importantes, o backup precisa ser transferido fora do local em caso de um desastre. Backup precisa ser gerenciado também. Por exemplo, quanto tempo você vai manter os backups antigos? Quando você precisa fazer backup de seu sistema (todos os dias, todas as semanas …)?

sistemas Críticos devem ser separados em diferentes partições para:

  • /
  • /boot
  • /usr
  • /home
  • /tmp
  • /var
  • /opt

Porcionamento discos dá-lhe a oportunidade de desempenho e de segurança em caso de um erro de sistema. Na imagem abaixo, você pode ver a opção de como separar partições no Kali Linux durante a instalação.

5-bloqueie a pasta de arranque

a pasta de arranque contém ficheiros importantes relacionados com o kernel do Linux, por isso terá de se certificar de que esta pasta está bloqueada para as permissões apenas para leitura, seguindo os próximos passos simples. Primeiro, Abre o ficheiro “fstab”.

em seguida, adicione a última linha destacada na parte inferior.

Quando você terminar de editar o arquivo, você precisa definir o proprietário, executando o seguinte comando:

#chown root:root /etc/fstab

em seguida, defina algumas permissões para proteger as configurações de inicialização:

  • define o proprietário e o grupo de /etc/grub.conf para o utilizador raiz:

#chown root:root /etc/grub.conf

  • definir a permissão no /etc / grub.conf arquivo para leitura e gravação para raiz:

#chmod og-rwx /etc/grub.conf

  • Exigir autenticação para o modo de usuário único:

#sed -i "/SINGLE/s/sushell/sulogin/" /etc/sysconfig/init

#sed -i "/PROMPT/s/yes/no/" /etc/sysconfig/init

6-Desativar USB de uso

Dependendo de como críticas do seu sistema, às vezes é necessário desativar os sticks USB de uso no host Linux. Existem várias maneiras de negar o uso do armazenamento USB; aqui está um popular:

abra a “lista negra”.conf” arquivo utilizando o seu editor de texto favorito:

#nano /etc/modprobe.d/blacklist.conf

Quando abre o ficheiro, em seguida, adicione a seguinte linha no final do arquivo (salvar e fechar):

blacklist usb_storage

Após isso, abra o rc.local do arquivo:

#nano /etc/rc.local

por último, adicione as seguintes duas linhas:

modprobe -r usb_storage

exit 0

7-atualização do Sistema

a primeira coisa A fazer após o primeiro boot é para atualização de sistema; isto deve ser uma etapa fácil. Geralmente, você abre a sua janela de terminal e executa os comandos apropriados. No Kali Linux, você conseguir isso através da execução de comandos na imagem abaixo:

8-Verifique os pacotes instalados

Lista todos os pacotes instalados em seu sistema operacional Linux e remover o desnecessários. Você precisa ser muito rigoroso se o host que você está tentando endurecer é um servidor porque os servidores precisam do menor número de aplicativos e serviços instalados neles. Aqui está um exemplo de como listar os pacotes instalados no Kali Linux:

Lembre-se que desabilitar serviços desnecessários irá reduzir a superfície de ataque, por isso é importante remover as seguintes legado serviços se você achou instalado no servidor Linux:

  • o servidor Telnet
  • servidor RSH
  • servidor NIS
  • servidor TFTP
  • TALK server

9-Verificação de portas abertas

Identificação de conexões abertas para a internet é uma missão crítica. No Kali Linux, eu uso o seguinte comando para detectar quaisquer portos abertos escondidos:

10-Secure SSH

sim, de fato SSH é seguro, mas você precisa endurecer este serviço também. Em primeiro lugar, se você pode desativar o SSH, isso é um problema resolvido. No entanto, se você quiser usá-lo, então você tem que alterar a configuração padrão do SSH. Para fazê-lo, navegue para /etc/ssh e abra o ficheiro “sshd_ Config” usando o seu editor de texto favorito.

  • mudar a porta padrão número 22 para outra coisa, por exemplo, 99.
  • certifique-se que o root não consegue entrar remotamente através do SSH:

PermitRootLogin no

  • permitir alguns utilizadores específicos:

AllowUsers

a lista pode continuar, mas deve ser suficiente para começar. Por exemplo, algumas empresas adicionam banners para dissuadir os atacantes e desencorajá-los de continuar. Eu encorajo você a verificar o manual do SSH para entender todas as configurações neste arquivo, ou você pode visitar este site para mais informações.

Aqui estão algumas opções adicionais que você precisa se certificar de existir no arquivo” sshd_config”:

  • Protocol2
  • IgnoreRhosts yes
  • HostbasedAuthentication não
  • PermitEmptyPasswords no
  • X11Forwarding não
  • MaxAuthTries 5
  • Cifras aes128-ctr,aes192-ctr aes256-ctr
  • ClientAliveInterval 900
  • ClientAliveCountMax 0
  • UsePAM yes

Finalmente, defina as permissões no arquivo sshd_config, de modo que apenas usuários root pode alterar seu conteúdo:

#chown root:root /etc/ssh/sshd_config

#chmod 600 /etc/ssh/sshd_config

11- Enable SELinux

Security Enhanced Linux is a Kernel security mechanism for supporting access control security policy. O SELinux tem três modos de configuração:

  • Desativado: desligado
  • Permissiva: Imprime avisos
  • Aplicação: Política é imposta

Usando um editor de texto, abra o arquivo de configuração:

#nano /etc/selinux/config

E certifique-se de que a diretiva é aplicada:

SELINUX=enforcing

12- parâmetros de rede

garantir as suas actividades de rede host Linux é uma tarefa essencial. Nem sempre assumas que a tua firewall vai tratar de tudo. Aqui estão algumas características importantes a considerar para garantir a sua rede de host:

– desativar o encaminhamento de IP, definindo a rede.ipv4.parâmetro ip_forward a 0 em ” / etc / sysctl.conf”

– activar a protecção da mensagem de erro má, definindo a rede.ipv4.icmp_ignore_bogus_error_responses parâmetro 1 in ” / etc / sysctl.conf ”

recomendo vivamente a utilização do Firewall Linux, aplicando as regras iptable e filtrando todos os pacotes recebidos, enviados e encaminhados. Configurar as suas regras iptables vai levar algum tempo, mas vale a pena a dor.

13- Políticas de senha

as pessoas muitas vezes reutilizam suas senhas, o que é uma má prática de segurança. As senhas antigas são armazenadas no arquivo “/etc/security/opasswd”. Vamos usar o módulo PAM para gerir as Políticas de segurança da máquina Linux. Sob uma distribuição debian, abra o arquivo ” / etc / pam.d / common-password ” usando um editor de texto e adicionar as duas linhas seguintes:

auth sufficient pam_unix.so likeauth nullok

password sufficient pam_unix.so remember=4 (não permitirá que os usuários reutilizem as últimas quatro senhas.)

outra política de senha que deve ser forçada é senhas fortes. O módulo PAM oferece um pam_cracklib que protege o seu servidor de ataques de dicionário e força bruta. Para realizar esta tarefa, abra o arquivo / etc / pam.d / system-auth usando qualquer editor de texto e adicionar a seguinte linha:

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

O Linux irá alterar a senha para evitar gravá-la no cleartext, por isso, terá de se certificar de definir um algoritmo seguro de lavagem de senhas SHA512.

outra funcionalidade interessante é bloquear a conta após cinco tentativas falhadas. Para fazer isso acontecer, você precisa abrir o arquivo ” / etc / pam.d/senha-auth” e adicione as seguintes linhas:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Nós não somos feitos ainda; uma etapa adicional é necessária. Abra o ficheiro ” / etc / pam.d/system-auth” e certifique-se de que você tem as seguintes linhas adicionadas:

auth required pam_env.so

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=604800

auth pam_unix.so

auth pam_faillock.so authfail audit deny=5 unlock_time=604800

auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=604800

auth required pam_deny.so

Depois de cinco tentativas falhadas, somente um administrador pode desbloquear a conta utilizando o seguinte comando:

# /usr/sbin/faillock –user <userlocked> –reset

Também, outra boa prática é definir a palavra-passe expira após 90 dias, para realizar esta tarefa, você precisa:

  • configure o parâmetro PASS_MAX_DAYS para 90 em ” / etc / login.defs”
  • Alterar o active usuário, executando o seguinte comando :

#chage --maxdays 90 <user>

A próxima dica para melhorar as senhas de políticas para restringir o acesso para o comando su definindo o pam_wheel.então os parâmetros em “/etc/pam.d / su”:

auth necessária pam_wheel.so use_uid

a dica final para a Política de senhas é desactivar as contas do sistema para utilizadores não root usando o seguinte programa bash:

#!/bin/bash

for user in `awk -F: '( < 500) {print }' /etc/passwd`; do

if

then

/usr/sbin/usermod -L $user

if && &&

then /usr/sbin/usermod -s /sbin/nologin $user

fi

fi

done

14-Permissões e verificações

Prepare-se mentalmente porque esta vai ser uma longa lista. Mas, permissões é uma das tarefas mais importantes e críticas para alcançar o objetivo de segurança em uma máquina Linux.

#chown root:root /etc/anacrontab

#chmod og-rwx /etc/anacrontab

#chown root:root /etc/crontab

#chmod og-rwx /etc/crontab

#chown root:root /etc/cron.hourly

#chmod og-rwx /etc/cron.hourly

#chown root:root /etc/cron.daily

#chmod og-rwx /etc/cron.daily

#chown root:root /etc/cron.weekly

#chmod og-rwx /etc/cron.weekly

#chown root:root /etc/cron.monthly

#chmod og-rwx /etc/cron.monthly

#chown root:root /etc/cron.d

#chmod og-rwx /etc/cron.d

Definir o direito e permissões em “/var/spool/cron” para “raiz crontab”

#chown root:root <crontabfile>

#chmod og-rwx <crontabfile>

Definir Usuário/Proprietário do Grupo e Permissão “passwd” arquivo

#chmod 644 /etc/passwd

#chown root:root /etc/passwd

Definir Usuário/Proprietário do Grupo e Permissão no “grupo” arquivo

#chmod 644 /etc/group

#chown root:root /etc/group

Definir Usuário/Proprietário do Grupo e Permissão “sombra” arquivo

#chmod 600 /etc/shadow

#chown root:root /etc/shadow

Definir Usuário/Proprietário do Grupo e Permissão “gshadow” arquivo

#chmod 600 /etc/gshadow

#chown root:root /etc/gshadow

15- processo de endurecimento

Para o último item na lista, eu estou incluindo algumas dicas que devem ser consideradas ao fortalecimento de um host Linux.

em primeiro lugar, restringir os dumps do núcleo por:

  • adicionar o núcleo duro 0 aos ” /etc/security / limits.conf ” file
  • Adding fs.suid_dumpable = 0 para o ” / etc / sysctl.ficheiro conf”

Em segundo lugar, configurar o escudo Exec por:

  • adicionar kernel.exec-shield = 1 para o “/etc/sysctl.conf ” file

Third, enable randomized Virtual Memory Region Placement by:

  • adicionar kernel.randomize_va_space = 2 to the ” / etc / sysctl.ficheiro conf”

palavras finais

neste pequeno post, cobrimos muitas configurações importantes para a segurança Linux. Mas, nós apenas arranhamos a superfície do endurecimento Linux-há um monte de configurações complexas e rudimentares. Para saber mais sobre como endurecer seus servidores Linux para uma melhor segurança, confira meus cursos em Pluralsight.Gus Khawaja é um consultor de segurança e autor em Pluralsight. Ele trabalha em segurança, TI e desenvolvimento de aplicações Web e cria cursos para Pluralsight. Gus entregou e desenvolveu com sucesso soluções de TI para empresas em todo o Canadá. Depois de muitos anos de experiência em Ciência da computação, ele voltou sua atenção para a segurança cibernética e a importância que a segurança traz a este campo minado. Sua paixão por hacking ético misturou-se com seu passado na programação e isso faz dele um sábio profissional Suíço de canivete no campo da ciência da computação.

Deixe uma resposta

O seu endereço de email não será publicado.