Pesquisa de site

20 dicas de segurança para proteção do servidor CentOS - Parte 1


Este tutorial cobre apenas dicas gerais de segurança para CentOS 8/7 que podem ser usadas para proteger o sistema. As dicas da lista de verificação destinam-se a ser usadas principalmente em vários tipos de servidores bare-metal ou em máquinas (físicas ou virtuais) que fornecem serviços de rede.

No entanto, algumas dicas também podem ser aplicadas com sucesso a máquinas de uso geral, como desktops, laptops e computadores de placa única do tamanho de cartões (Raspberry Pi).

Requisitos

  • Instalação mínima do CentOS 8
  • Instalação mínima do CentOS 7

1. Proteção Física

Bloqueie o acesso às salas de servidores, use bloqueio de racks e vigilância por vídeo. Leve em consideração que qualquer acesso físico às salas de servidores pode expor sua máquina a sérios problemas de segurança.

As senhas do BIOS podem ser alteradas redefinindo os jumpers na placa-mãe ou desconectando a bateria do CMOS. Além disso, um intruso pode roubar os discos rígidos ou anexar diretamente novos discos rígidos às interfaces da placa-mãe (SATA, SCSI, etc), inicializar com uma distribuição Linux ao vivo e clonar ou copiar dados sem deixar nenhum rastro de software.

2. Reduza o impacto da espionagem

No caso de dados altamente confidenciais, você provavelmente deve usar proteção física avançada, como colocar e travar o servidor em uma Faraday Cage ou usar uma solução militar TEMPEST para minimizar o impacto da espionagem do sistema via rádio ou vazamento de emanações elétricas.

3. BIOS/UEFI seguro

Inicie o processo de proteção de sua máquina protegendo as configurações de BIOS/UEFI, especialmente defina uma senha de BIOS/UEFI e desative dispositivos de mídia de inicialização (CD, DVD, desative o suporte USB) em para evitar que usuários não autorizados modifiquem as configurações do BIOS do sistema ou alterem a prioridade do dispositivo de inicialização e inicializem a máquina a partir de uma mídia alternativa.

Para aplicar este tipo de alteração em sua máquina você precisa consultar o manual do fabricante da placa-mãe para obter instruções específicas.

4. Carregador de inicialização seguro

Defina uma senha GRUB para evitar que usuários mal-intencionados alterem a sequência de inicialização do kernel ou os níveis de execução, editem os parâmetros do kernel ou iniciem o sistema em modo de usuário único para danificar seu sistema e redefinir a raiz senha para obter controle privilegiado.

5. Use partições de disco separadas

Ao instalar o CentOS em sistemas destinados a servidores de produção, use partições dedicadas ou discos rígidos dedicados para as seguintes partes do sistema:

/(root) 
/boot  
/home  
/tmp 
/var 

6. Use LVM e RAID para redundância e crescimento do sistema de arquivos

A partição /var é o local onde as mensagens de log são gravadas no disco. Esta parte do sistema pode crescer exponencialmente em tamanho em servidores com tráfego intenso que expõem serviços de rede, como servidores web ou servidores de arquivos.

Portanto, use uma partição grande para /var ou considere configurar esta partição usando volumes lógicos (LVM) ou combine vários discos físicos em um dispositivo RAID 0 virtual maior para sustentar grandes quantidades de dados. Para dados, redundância considere usar o layout LVM acima do nível RAID 1.

Para configurar LVM ou RAID nos discos, siga nossos guias úteis:

  1. Configure o armazenamento em disco com LVM no Linux
  2. Crie discos LVM usando vgcreate, lvcreate e lvextend
  3. Combine vários discos em um grande armazenamento virtual
  4. Crie RAID 1 usando dois discos no Linux

7. Modifique as opções do fstab para proteger partições de dados

Separe partições destinadas ao armazenamento de dados e evite a execução de programas, arquivos de dispositivos ou bits setuid nesses tipos de partições adicionando as seguintes opções ao arquivo fstab conforme ilustrado abaixo excerto:

/dev/sda5 	 /nas          ext4    defaults,nosuid,nodev,noexec 1 2

Para evitar escalonamento de privilégios e execução arbitrária de scripts, crie uma partição separada para /tmp e monte-a como nosuid, nodev e noexec .

/dev/sda6  	/tmp         ext4    defaults,nosuid,nodev,noexec 0 0

8. Criptografe os discos rígidos em nível de bloco com LUKS

Para proteger a espionagem de dados confidenciais em caso de acesso físico aos discos rígidos da máquina. Sugiro que você aprenda como criptografar disco lendo nosso artigo Linux Hard Disk Data Encryption with LUKS.

9. Use PGP e criptografia de chave pública

Para criptografar discos, use PGP e criptografia de chave pública ou comando OpenSSL para criptografar e descriptografar arquivos confidenciais com uma senha, conforme mostrado neste artigo Configurar armazenamento criptografado do sistema Linux.

10. Instale apenas a quantidade mínima de pacotes necessária

Evite instalar programas, aplicativos ou serviços sem importância ou desnecessários para evitar vulnerabilidades de pacotes. Isso pode diminuir o risco de que o comprometimento de um software possa levar ao comprometimento de outros aplicativos, partes do sistema ou até mesmo sistemas de arquivos, resultando finalmente em corrupção ou perda de dados.

11. Atualize o sistema com frequência

Atualize o sistema regularmente. Mantenha o kernel do Linux sincronizado com os patches de segurança mais recentes e todo o software instalado atualizado com as versões mais recentes, emitindo o comando abaixo:

yum update

12. Desative Ctrl+Alt+Del

Para evitar que os usuários reiniciem o servidor quando tiverem acesso físico a um teclado ou por meio de um aplicativo de console remoto ou console virtualizado (KVM, interface de software de virtualização), você deve desativar Ctrl+Alt +Del sequência de teclas executando o comando abaixo.

systemctl mask ctrl-alt-del.target 

13. Remova pacotes de software desnecessários

Instale o software mínimo necessário para sua máquina. Nunca instale programas ou serviços extras. Instale pacotes apenas de repositórios confiáveis ou oficiais. Utilize a instalação mínima do sistema caso a máquina esteja destinada a funcionar durante toda a sua vida como servidor.

Verifique os pacotes instalados usando um dos seguintes comandos:

rpm -qa

Faça uma lista local de todos os pacotes instalados.

yum list installed >> installed.txt

Consulte a lista de softwares inúteis e exclua um pacote emitindo o comando abaixo:

yum remove package_name

14. Reinicie os serviços Systemd após as atualizações do Daemon

Use o exemplo de comando abaixo para reiniciar um serviço systemd para aplicar novas atualizações.

systemctl restart httpd.service

15. Remova serviços desnecessários

Identifique os serviços que estão atendendo em portas específicas usando o seguinte comando ss.

ss -tulpn

Para listar todos os serviços instalados com seu status de saída, emita o comando abaixo:

systemctl list-units -t service

Por exemplo, a instalação mínima padrão do CentOS vem com o daemon Postfix instalado por padrão, que é executado pelo nome de um mestre na porta 25. Remova o serviço de rede Postfix caso sua máquina não seja usada como servidor de e-mail.

yum remove postfix

16. Criptografar dados transmitidos

Não use protocolos não seguros para acesso remoto ou transferência de arquivos, como Telnet, FTP ou outros protocolos de texto simples, como SMTP, HTTP, NFS ou SMB que, por padrão, não criptografa as sessões de autenticação ou dados enviados.

Use apenas sftp, scp para transferências de arquivos e SSH ou VNC sobre túneis SSH para conexões de console remoto ou acesso GUI.

Para encapsular um console VNC via SSH, use o exemplo abaixo, que encaminha a porta VNC 5901 da máquina remota para sua máquina local:

ssh -L 5902:localhost:5901 remote_machine

Na máquina local execute o comando abaixo para conectar-se virtualmente ao endpoint remoto.

vncviewer localhost:5902

17. Verificação de porta de rede

Realize verificações de portas externas usando a ferramenta Nmap de um sistema remoto pela LAN. Este tipo de verificação pode ser usado para verificar vulnerabilidades de rede ou testar as regras do firewall.

nmap -sT -O 192.168.1.10

18. Firewall de filtragem de pacotes

Use o utilitário firewalld para proteger as portas do sistema, abrir ou fechar portas de serviços específicos, especialmente portas conhecidas (<1024).

Instale, inicie, habilite e liste as regras de firewall emitindo os comandos abaixo:

yum install firewalld
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --list-all

19. Inspecione pacotes de protocolo com Tcpdump

Use o utilitário tcpdump para detectar pacotes de rede localmente e inspecionar seu conteúdo em busca de tráfego suspeito (portas de origem-destino, protocolos TCP/IP, tráfego de camada dois, solicitações ARP incomuns).

Para uma melhor análise do arquivo tcpdump capturado utilize um programa mais avançado como o Wireshark.

tcpdump -i eno16777736 -w tcpdump.pcap

20. Prevenir ataques DNS

Inspecione o conteúdo do seu resolvedor, normalmente o arquivo /etc/resolv.conf, que define o endereço IP dos servidores DNS que ele deve usar para consultar nomes de domínio, a fim de evitar interferências humanas. - ataques intermediários, tráfego desnecessário para servidores DNS raiz, falsificação ou criação de um ataque DOS.

Esta é apenas a primeira parte. Na próxima parte discutiremos outras dicas de segurança para o CentOS 8/7.