Pesquisa de site

25 dicas de segurança para servidores Linux


Todo mundo diz que o Linux é seguro por padrão e concorda até certo ponto (são tópicos discutíveis). No entanto, o Linux possui um modelo de segurança integrado por padrão. É necessário ajustá-lo e personalizá-lo conforme sua necessidade, o que pode ajudar a tornar o sistema mais seguro. O Linux é mais difícil de gerenciar, mas oferece mais flexibilidade e opções de configuração.

Proteger um sistema em produção das mãos de hackers e crackers é uma tarefa desafiadora para um administrador de sistema. Este é o nosso primeiro artigo relacionado a “Como proteger a caixa Linux” ou “Fortalecendo uma caixa Linux“. Nesta postagem explicaremos 25 dicas e truques úteis para proteger seu sistema Linux. Espero que as dicas e truques abaixo ajudem você a proteger seu sistema.

1. Segurança do sistema físico

Configure o BIOS para desativar a inicialização a partir de CD/DVD, dispositivos externos, unidade de disquete no BIOS. Em seguida, habilite a senha do BIOS e também proteja o GRUB com senha para restringir o acesso físico ao seu sistema.

  1. Defina a senha do GRUB para proteger servidores Linux

2. Partições de disco

É importante ter partições diferentes para obter maior segurança dos dados caso aconteça algum desastre. Ao criar partições diferentes, os dados podem ser separados e agrupados. Quando ocorre um acidente inesperado, apenas os dados dessa partição serão danificados, enquanto os dados de outras partições sobreviverão. Certifique-se de ter as seguintes partições separadas e de que os aplicativos de terceiros sejam instalados em sistemas de arquivos separados em /opt.

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

3. Minimize pacotes para minimizar a vulnerabilidade

Você realmente deseja todos os tipos de serviços instalados? É recomendado evitar a instalação de pacotes inúteis para evitar vulnerabilidades nos pacotes. Isto pode minimizar o risco de que o comprometimento de um serviço possa levar ao comprometimento de outros serviços. Encontre e remova ou desative serviços indesejados do servidor para minimizar a vulnerabilidade. Use o comando ‘chkconfig‘ para descobrir os serviços que estão sendo executados no nível de execução 3.

/sbin/chkconfig --list |grep '3:on'

Depois de descobrir que algum serviço indesejado está em execução, desative-o usando o seguinte comando.

chkconfig serviceName off

Use o gerenciador de pacotes RPM como as ferramentas “yum” ou “apt-get” para listar todos os pacotes instalados em um sistema e removê-los usando o seguinte comando.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 exemplos de comando chkconfig
  2. 20 exemplos práticos de comandos RPM
  3. 20 comandos Linux YUM para gerenciamento de pacotes Linux
  4. 25 comandos APT-GET e APT-CACHE para gerenciar o gerenciamento de pacotes

4. Verifique as portas da rede de escuta

Com a ajuda do comando de rede ‘netstat’ você pode visualizar todas as portas abertas e programas associados. Como eu disse acima, use o comando ‘chkconfig’ para desabilitar todos os serviços de rede indesejados do sistema.

netstat -tulpn
  1. 20 comandos Netstat para gerenciamento de rede no Linux

5. Use Shell Seguro (SSH)

Os protocolos Telnet e rlogin usam texto simples, e não formato criptografado, que é uma violação de segurança. SSH é um protocolo seguro que utiliza tecnologia de criptografia durante a comunicação com o servidor.

Nunca faça login diretamente como root, a menos que seja necessário. Use “sudo” para executar comandos. sudo são especificados no arquivo /etc/sudoers e também podem ser editados com o utilitário “visudo” que abre no editor VI.

Também é recomendado alterar o número da porta SSH 22 padrão por algum outro número de porta de nível superior. Abra o arquivo de configuração SSH principal e defina alguns parâmetros a seguir para restringir o acesso dos usuários.

vi /etc/ssh/sshd_config
Desativar login raiz
PermitRootLogin no
Permitir apenas usuários específicos
AllowUsers username
Use a versão 2 do protocolo SSH
Protocol 2
  1. 5 melhores práticas para proteger e proteger o servidor SSH

6. Mantenha o sistema atualizado

Sempre mantenha o sistema atualizado com os patches de lançamento mais recentes, correções de segurança e kernel quando estiver disponível.

yum updates
yum check-update

7. Cronjobs de bloqueio

Cron tem seu próprio recurso integrado, onde permite especificar quem pode e quem não pode querer executar tarefas. Isso é controlado pelo uso de arquivos chamados /etc/cron.allow e /etc/cron.deny. Para bloquear um usuário usando o cron, basta adicionar nomes de usuário em cron.deny e para permitir que um usuário execute o cron adicione no arquivo cron.allow. Se você quiser impedir que todos os usuários usem o cron, adicione a linha ‘ALL’ ao arquivo cron.deny.

echo ALL >>/etc/cron.deny
  1. 11 exemplos de agendamento Cron no Linux

8. Desative o stick USB para detectar

Muitas vezes queremos impedir que os usuários usem pendrives USB em sistemas para proteger e proteger dados contra roubo. Crie um arquivo ‘/etc/modprobe.d/no-usb‘ e adicionar a linha abaixo não detectará o armazenamento USB.

install usb-storage /bin/true

9. Ligue o SELinux

Linux com segurança aprimorada (SELinux) é um mecanismo de segurança de controle de acesso obrigatório fornecido no kernel. Desabilitar o SELinux significa remover o mecanismo de segurança do sistema. Pense duas vezes antes de remover, se o seu sistema estiver conectado à internet e acessado pelo público, pense um pouco mais sobre isso.

O SELinux fornece três modos básicos de operação e eles são.

  1. Aplicar: Este é o modo padrão que habilita e aplica a política de segurança SELinux na máquina.
  2. Permissivo: Neste modo, o SELinux não imporá a política de segurança no sistema, apenas avisará e registrará ações. Este modo é muito útil para solucionar problemas relacionados ao SELinux.
  3. Desativado: SELinux está desativado.

Você pode visualizar o status atual do modo SELinux na linha de comando usando 'system-config-selinux', 'getenforce' ou ' comandos sestatus'.

sestatus

Se estiver desabilitado, habilite o SELinux usando o seguinte comando.

setenforce enforcing

Ele também pode ser gerenciado a partir do arquivo ‘/etc/selinux/config’, onde você pode ativá-lo ou desativá-lo.

10. Remova áreas de trabalho KDE/GNOME

Não há necessidade de executar desktops X Window como o KDE ou o GNOME em seu servidor LAMP dedicado. Você pode removê-los ou desativá-los para aumentar a segurança do servidor e o desempenho. Para desativar, basta abrir o arquivo ‘/etc/inittab‘ e definir o nível de execução como 3. Se você deseja removê-lo completamente do sistema use o comando abaixo.

yum groupremove "X Window System"

11. Desligue o IPv6

Se você não estiver usando um protocolo IPv6, deverá desativá-lo porque a maioria dos aplicativos ou políticas não exige o protocolo IPv6 e atualmente não é necessário no servidor . Vá para o arquivo de configuração de rede e adicione as seguintes linhas para desativá-lo.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Restringir os usuários a usar senhas antigas

Isso é muito útil se você deseja impedir que os usuários usem as mesmas senhas antigas. O arquivo de senha antigo está localizado em /etc/security/opasswd. Isto pode ser conseguido usando o módulo PAM.

Abra o arquivo ‘/etc/pam.d/system-auth‘ em RHEL/CentOS/Fedora.

vi /etc/pam.d/system-auth

Abra o arquivo '/etc/pam.d/common-password' em Ubuntu/Debian/Linux Mint.

vi /etc/pam.d/common-password

Adicione a seguinte linha à seção ‘auth’.

auth        sufficient    pam_unix.so likeauth nullok

Adicione a seguinte linha à seção ‘senha’ para impedir que um usuário reutilize as últimas 5 senhas dele ou dela.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Apenas as últimas 5 senhas são lembradas pelo servidor. Se você tentou usar qualquer uma das últimas 5 senhas antigas, receberá um erro como.

Password has been already used. Choose another.

13. Como verificar a expiração da senha do usuário

No Linux, as senhas dos usuários são armazenadas no arquivo ‘/etc/shadow’ em formato criptografado. Para verificar a expiração da senha do usuário, você precisa usar o comando ‘chage’. Ele exibe informações sobre detalhes de expiração de senha junto com a data da última alteração de senha. Esses detalhes são usados pelo sistema para decidir quando um usuário deve alterar sua senha.

Para visualizar as informações de antiguidade de qualquer usuário existente, como data de expiração e hora, use o comando a seguir.

#chage -l username

Para alterar a validade da senha de qualquer usuário, use o seguinte comando.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Parâmetros
  1. -M Definir número máximo de dias
  2. -m Definir número mínimo de dias
  3. -W Defina o número de dias de aviso

14. Bloqueie e desbloqueie a conta manualmente

Os recursos de bloqueio e desbloqueio são muito úteis, em vez de remover uma conta do sistema, você pode bloqueá-la por uma semana ou um mês. Para bloquear um usuário específico, você pode usar o comando follow.

passwd -l accountName

Nota : O usuário bloqueado ainda está disponível apenas para o usuário root. O bloqueio é realizado substituindo a senha criptografada por uma string (!). Se alguém tentar acessar o sistema usando esta conta, receberá um erro semelhante ao abaixo.

su - accountName
This account is currently not available.

Para desbloquear ou habilitar o acesso a uma conta bloqueada, use o comando como. Isso removerá a string (!) com senha criptografada.

passwd -u accountName

15. Aplicando senhas mais fortes

Vários usuários usam senhas suaves ou fracas e suas senhas podem ser hackeadas com ataques baseados em dicionário ou de força bruta. O módulo ‘pam_cracklib‘ está disponível na pilha de módulos PAM (Pluggable Authentication Modules) que forçará o usuário a definir senhas fortes. Abra o seguinte arquivo com um editor.

Leia também:

vi /etc/pam.d/system-auth

E adicione a linha usando parâmetros de crédito como (lcredit, ucredit, dcredit e/ou ocredit respectivamente em letras minúsculas , maiúsculas, dígitos e outros)

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

16. Habilite Iptables (Firewall)

É altamente recomendável ativar o firewall do Linux para proteger o acesso não autorizado aos seus servidores. Aplique regras em iptables para filtrar pacotes de entrada, de saída e de encaminhamento. Podemos especificar o endereço de origem e destino para permitir e negar em um número de porta udp/tcp específico.

  1. Guia básico e dicas do IPTables

17. Desative Ctrl+Alt+Delete no Inittab

Na maioria das distribuições Linux, pressionar ‘CTRL-ALT-DELETE’ fará com que o sistema reinicie o processo. Portanto, não é uma boa ideia ter esta opção habilitada pelo menos em servidores de produção, caso alguém faça isso por engano.

Isso é definido no arquivo ‘/etc/inittab’, se você olhar atentamente nesse arquivo, verá uma linha semelhante à abaixo. Por padrão, a linha não é comentada. Temos que comentar isso. Esta sinalização de sequência de teclas específica desligará um sistema.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Verificando contas em busca de senhas vazias

Qualquer conta com uma senha vazia significa que ela está aberta para acesso não autorizado a qualquer pessoa na web e faz parte da segurança de um servidor Linux. Portanto, você deve garantir que todas as contas tenham senhas fortes e que ninguém tenha acesso autorizado. Contas com senhas vazias são riscos de segurança e podem ser facilmente hackeadas. Para verificar se havia alguma conta com senha vazia, use o seguinte comando.

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. Exibir banner SSH antes do login

É sempre melhor ter um banner legal ou banners de segurança com alguns avisos de segurança antes da autenticação SSH. Para definir esses banners, leia o artigo a seguir.

  1. Exibir mensagem de aviso SSH para usuários

20. Monitore as atividades do usuário

Se você está lidando com muitos usuários, então é importante coletar as informações das atividades e processos de cada usuário consumidos por eles e analisá-las posteriormente ou caso haja algum tipo de desempenho, problemas de segurança. Mas como podemos monitorar e coletar informações sobre as atividades do usuário.

Existem duas ferramentas úteis chamadas 'psacct' e 'acct' que são usadas para monitorar atividades e processos do usuário em um sistema. Essas ferramentas são executadas em segundo plano do sistema e rastreiam continuamente a atividade de cada usuário em um sistema e os recursos consumidos por serviços como Apache, MySQL, SSH, FTP, etc. Para mais informações sobre instalação, configuração e uso, visite o URL abaixo.

  1. Monitore a atividade do usuário com comandos psacct ou acct

21. Revise os registros regularmente

Mova os logs em um servidor de log dedicado, isso pode impedir que intrusos modifiquem facilmente os logs locais. Abaixo estão os nomes dos arquivos de log padrão comuns do Linux e seu uso:

  1. /var/log/message – Onde os logs de todo o sistema ou os logs de atividades atuais estão disponíveis.
  2. /var/log/auth.log – Logs de autenticação.
  3. /var/log/kern.log – Registros do kernel.
  4. /var/log/cron.log – Registros Crond (cron job).
  5. /var/log/maillog – Logs do servidor de e-mail.
  6. /var/log/boot.log – Log de inicialização do sistema.
  7. /var/log/mysqld.log – arquivo de log do servidor de banco de dados MySQL.
  8. /var/log/secure – Registro de autenticação.
  9. /var/log/utmp ou /var/log/wtmp : arquivo de registros de login.
  10. /var/log/yum.log: arquivos de log do Yum.

22. Backup de arquivos importantes

Em um sistema de produção, é necessário fazer backup de arquivos importantes e mantê-los em cofre de segurança, local remoto ou externo para recuperação de desastres.

23. Ligação NIC

Existem dois tipos de modo na ligação NIC, que precisam ser mencionados na interface de ligação.

  1. modo=0 – Round Robin
  2. mode=1 – Ativo e Backup

NIC Bonding nos ajuda a evitar pontos únicos de falha. Na ligação NIC, unimos duas ou mais placas Ethernet de rede e criamos uma única interface virtual onde podemos atribuir um endereço IP para conversar com outros servidores. Nossa rede estará disponível no caso de uma placa NIC estar inoperante ou indisponível por qualquer motivo.

Leia também: Crie ligação de canal NIC no Linux

24. Mantenha /boot como somente leitura

O kernel do Linux e seus arquivos relacionados estão no diretório /boot que por padrão é leitura-gravação. Alterá-lo para somente leitura reduz o risco de modificação não autorizada de arquivos de inicialização críticos. Para fazer isso, abra o arquivo “/etc/fstab”.

vi /etc/fstab

Adicione a seguinte linha na parte inferior, salve e feche.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Observe que você precisa redefinir a alteração para leitura e gravação se precisar atualizar o kernel no futuro.

25. Ignore ICMP ou solicitação de transmissão

Adicione a seguinte linha no arquivo “/etc/sysctl.conf” para ignorar a solicitação de ping ou broadcast.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Carregue novas configurações ou alterações executando o seguinte comando

#sysctl -p

Se você perdeu alguma dica importante de segurança ou proteção na lista acima ou tem alguma outra dica que precisa ser incluída na lista. Por favor, deixe seus comentários em nossa caixa de comentários. A TecMint está sempre interessada em receber comentários, sugestões e discussões para melhorias.