Práticas Recomendadas de Segurança e Fortalecimento de Servidores Linux
Introdução
A implementação de configurações seguras em todo o seu ambiente computacional, incluindo seus sistemas Unix e Linux, é uma prática de segurança essencial porque reduz a área de superfície de ataque e limita os danos que os ciberataques podem causar. De fato, o endurecimento do sistema é um controle central em muitas diretrizes de conformidade.
Este guia explica o que é o endurecimento de configuração e como estabelecer padrões de construção endurecidos para seus sistemas Linux e Unix.
Os Fundamentos do Endurecimento de Sistema
O servidor Linux mais seguro ou outro computador é aquele que está desligado e desconectado da rede. Mas se quisermos realmente usar a máquina para fornecer serviços de TI, precisamos maximizar suas defesas de segurança quando estiver ligada e conectada à rede ou até mesmo à internet.
É aqui que entra em jogo o endurecimento. Endurecer um sistema significa otimizar sua configuração para operações seguras e proteção de dados. A gama de vulnerabilidades exploráveis é vasta, portanto, existem três regras principais a seguir:
- Remova funcionalidades que não são necessárias para o papel do computador. Por exemplo, sistemas operacionais e outras aplicações geralmente são entregues em um estado de “início rápido”, pré-carregados utilmente com utilitários e recursos que os usuários podem querer. No entanto, quanto mais funções forem fornecidas, maior será a superfície de ataque apresentada pelo host. Portanto, certifique-se de desativar funções que você não precisa e evite adicionar funções desnecessárias sempre que possível.
- Atualize e aplique patches prontamente. Falhas no design do software criam vulnerabilidades que os atacantes podem explorar. Os fornecedores de software fornecem patches ou versões atualizadas do software para corrigir esses problemas, então certifique-se de que todo o software, incluindo sistemas operacionais, esteja sempre totalmente atualizado.
- Mantenha configurações de segurança adequadas. É crucial que as configurações seguras sejam habilitadas e mantidas.
Endurecimento de Sistema Linux
Não é surpreendente que o reforço de segurança no Linux seja um procedimento especializado por si só, dada a ampla gama de distribuições Linux sutilmente diferentes. Embora não faltem guias, listas de verificação e dicas para as melhores práticas no reforço de servidores Linux — incluindo os benchmarks do Center for Internet Security (CIS) e os DISA STIGs — este guia fornecerá as principais opções de configuração a adotar.
Importante: Certifique-se de fazer backup dos seus sistemas antes de aplicar configurações reforçadas e teste após um reinício. É fácil ficar bloqueado!
Remova Funcionalidades Desnecessárias
Comece removendo quaisquer recursos, utilitários e serviços que não sejam necessários para a execução do servidor. Desinstale softwares desnecessários e desative serviços do sistema que não sejam precisos. Uma vez que o hardware em sua infraestrutura também apresenta vulnerabilidades exploráveis, certifique-se de que quaisquer interfaces acessíveis, como portas USB, estejam desativadas ou até mesmo fisicamente removidas da máquina.
O fluxo de trabalho aqui é fazer login e obter um relatório dos pacotes e serviços instalados e revisá-lo para identificar quais podem ser removidos ou desativados. Para os itens essenciais que permanecem, verifique se há patches disponíveis para remediar vulnerabilidades conhecidas contra exploits.
Como listar softwares em sistemas Linux/Unix
Sistema | Comandos para Usar |
|---|---|
|
Linux (por exemplo, RedHat ou CentOS) |
rpm -qa --qf '%{NAME} %{VERSION} %{VENDOR}\\n' |
|
Debian Linux (por exemplo, Ubuntu) |
dpkg -l |
|
Fedora Linux |
|
|
Para listar softwares a partir de um terminal ou sessão putty: service --status-all chkconfig --list systemctl -a |
|
|
Para parar um serviço: Serviço <Service-Name> parar Chkconfig <Service-Name> Systemctl stop <Service-Name> |
|
|
Para desativar um serviço: Systemctl disable <Service-Name> Chkconfig <Service-Name> off |
|
|
Também inspecione o caminho /etc/init.d/ para quaisquer scripts de controle de serviço e execute ls /etc/init.d/ para expor todos os scripts de inicialização; em seguida, renomeie ou remova qualquer um que deva ser desativado. |
Minimize Portas Abertas e Outras Vulnerabilidades de Rede
Ataques baseados em rede estão entre as ameaças mais comuns. Para reduzir seu risco, identifique portas acessíveis pela rede que estejam abertas e remova quaisquer processos correspondentes que não sejam necessários. Para listar portas abertas no Linux, use o seguinte comando:
ss -tulpn | egrep “LISTEN” | awk ‘{print “IP-Port “ $4 “ PID/Name “ $7}’
Além disso:
- Certifique-se de que o serviço TCP Wrappers está ativo.
- Defina tanto uma lista de permissões etc/hosts.allow quanto uma lista de bloqueio etc/hosts.deny.
- Utilize os serviços iptables ou Firewalld com uma política de Negação Total para o tráfego de IP V4 e V6, mesmo que esteja utilizando WAFs de terceiros e proteção de firewall na rede.
- Bloqueie o tráfego ICMP para impedir varreduras de ping usadas por ferramentas de hackers para descoberta de dispositivos.
Revisar Contas de Usuário e Autenticação
Revise as contas de usuário local e remova todas as que não forem necessárias. Para as contas de usuário local que permanecerem, deve ser configurada uma política de senha forte que abranja a complexidade da senha, comprimento, expiração, reutilização e frequência de alteração. Certifique-se também de usar algoritmos de hash fortes para senhas armazenadas.
As contas de usuário e autenticação devem ser gerenciadas usando um sistema de controle centralizado, como o Active Directory ou, ainda melhor, uma solução moderna de Privileged Access Management (PAM) que permite uma estratégia de Zero Standing Privilege, a qual elimina muitos dos problemas associados a contas de usuário tradicionais e privilégios permanentemente atribuídos. Claro, nunca use root e sempre certifique-se de que a elevação de privilégios com sudo seja usada apenas quando necessário.
Como Configurar uma Política de Senha para Contas Locais
Localize e edite o seguinte arquivo de configuração: /etc/security/pwquality.conf
Para impor uma senha de 14 caracteres:
minlen = 14
Para impor complexidade para todas as senhas:
minclass = 14
OU
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
Para impor uma política rigorosa de bloqueio de senha:
Atualize os arquivos /etc/pam.d/system-auth e /etc/pam.d/password-auth para definir as seguintes opções:
auth required pam_faillock.so preauth silent deny=5 unlock_time=900
auth required pam_faillock.so authfail deny=5 unlock_time=900
Para impor uma política de histórico de senhas de 5 ou mais senhas:
Adicione a opção remember=5 às linhas pam_pwhistory.so e pam_unix.so em /etc/pam.d/password-auth:
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root retry=3 remember=5
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
Para impor um hashing de senha forte:
Atualize os arquivos /etc/pam.d/system-auth e /etc/pam.d/password-auth da seguinte forma:
/etc/pam.d/password-auth:
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok
/etc/pam.d/system-auth:
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=5
Revisar Contas de Serviço
As contas de sistema e serviço devem ser revisadas e quaisquer que não sejam mais necessárias devem ser removidas.
As contas de serviço são “reforçadas” no sentido de que apenas suportam a operação de um processo executado localmente e não fornecem um shell de usuário, portanto, essas contas nunca podem ser usadas para acessar o servidor por meio de um logon de usuário. No entanto, um princípio fundamental do reforço é minimizar a funcionalidade, portanto, contas de serviço não utilizadas ainda devem ser removidas.
Reforço do SSH para Linux e Unix
Como a principal via para administrar remotamente seus sistemas Linux, o SSH requer atenção especial. Existem várias configurações padrão no arquivo /etc/ssh/sshd_config que precisam ser habilitadas para reforçar a operação do servidor SSH.
SSH é utilizado para todo o acesso a Linux e Unix, portanto, as seguintes diretrizes também se aplicam para o endurecimento de Unix.
Ative a versão 2 do protocolo SSH
Por exemplo, a configuração padrão habilita a versão 1 do protocolo SSH, que é ultrapassada e menos segura. As orientações de hardening da CIS recomendam habilitar a versão 2 para aumentar a segurança. Para isso, basta descomentar a configuração do Protocolo 2 no arquivo de configuração (/etc/ssh/sshd_config) removendo o #, conforme a seguir:
Entrada padrão em /etc/ssh/sshd_config:
# The default requires explicit activation of protocol 1
# Protocol 2
Uma configuração mais segura:
# The default requires explicit activation of protocol 1
Protocol 2
Endurecimento adicional
Além disso, aplique as seguintes configurações endurecidas CIS recomendadas ao arquivo de configuração:
LogLevel INFO
IgnoreRhosts yes
…
PermitEmptyPasswords no
…
LoginGraceTime 60
PermitRootLogin no
MaxAuthTries 4
HostbasedAuthentication no
…
X11Forwarding no…
PermitUserEnvironment no
…
ClientAliveInterval 300
ClientAliveCountMax 0
…
Banner /etc/issue.net
…
AllowUsers <Specify user names, separated by spaces, e.g. user1 user2>
Notas Adicionais:
/etc/issue.net precisará ser criado/editado para incluir um Banner apropriado, por exemplo
Aviso! O acesso não autorizado a este sistema é proibido e será processado por lei. Ao acessar este sistema, você concorda que suas ações podem ser monitoradas se houver suspeita de uso não autorizado.
Junto com AllowUsers, AllowGroups também é suportado como uma chave de configuração/palavra-chave.
Fortalecimento do Apache Web Server
Linux é a plataforma de escolha para hospedar aplicações web baseadas na internet, e Apache Tomcat e Apache HTTP Server (frequentemente referido como Apache HTTPD) são duas das opções mais populares para entrega de conteúdo web.
A abordagem para o endurecimento da configuração do Apache é a mesma: minimizar a funcionalidade e implementar configurações de segurança onde disponíveis.
Verifique se apenas os módulos essenciais do Apache estão habilitados:
httpd -M
Por exemplo, mod_dav e mod_dav_fs devem sempre estar desativados, enquanto o módulo log_config deve estar sempre carregado e ativado.
Confirme que a definição de package.access inclui apenas os seguintes pacotes permitidos:
package.access = sun.,org.apache.catalina.,org.apache.coyote.,
org.apache.tomcat.,org.apache.jasper.
Configure o arquivo server.xml:
O arquivo server.xml no caminho CATALINA_HOME/conf é o principal repositório de configuração para o servidor web. As configurações recomendadas para incluir no server.xml são as seguintes:
- Desative a porta de desligamento:
Server port="-1" shutdown="SHUTDOWN">
- Remova conectores não utilizados, incluindo o HTTPConnector padrão e o AJPConnector. Para remover o HTTPConnector, exclua ou comente esta tag:
Connector className="org.apache.catalina.connector.http.HttpConnector"
...
connectionTimeout="60000"/>
Remova as configurações padrão de anúncio de presença:
Para Tomcat:
Defina o atributo xpoweredBy como false:
xpoweredBy="false" />
Para Servidor HTTP:
- Remova o padrão index.html e comente as linhas abaixo no /etc/httpd/conf.d/welcome.conf usando um # ou ## para cada linha:
##<LocationMatch "^/+$">
## Options -Indexes
## ErrorDocument 403 /error/noindex.html
##</LocationMatch>
- Comente a seção Server-Status:
##<Location /server-status>
## SetHandler server-status
## Order deny,allow
## Deny from all
## Allow from .example.com
##</Location>
- Comente a seção server-info:
##<Location /server-info>
## SetHandler server-info
## Order deny,allow
## Deny from all
## Allow from .example.com
##</Location>
Desative as facilidades de rastreamento de diagnóstico:
Defina o atributo allowTrace para cada Connector como false
Desative a implantação automática de aplicativos e desative a implantação na inicialização:
autoDeploy="false"
deployOnStartup="false"
Reforço adicional:
- Certifique-se de que as permissões de arquivos e pastas sejam restritivas e que os serviços do Apache sejam executados usando contas de serviço sem shell (ou seja, contas que não podem ser usadas para fazer login no sistema). Desative a Listagem de Diretórios e a navegação.
$CATALINA_HOME
$CATALINA_BASE
Endurecimento do Kernel para Linux
O SELinux modifica o kernel do Linux para impor controles de acesso obrigatórios, restringindo como os processos do Linux podem acessar arquivos e programas. Essa camada adicional de restrição oferece um mecanismo de proteção fundamental contra malwares do tipo rootkit. O AppArmor oferece um nível equivalente de MAC para distribuições Debian.
Configurações do SELinux
Instale o SELinux no CentOS/RHEL:
dnf install libselinux
Habilite SELinux:
Por padrão, o SELinux será desativado. Para habilitar o SELinux na inicialização, edit/etc/default/grub e remova estas configurações padrão:
selinux=0
enforcing=0
Defina a configuração do SELinux para enforcing
Edite o arquivo /etc/selinux/config para incluir o seguinte:
SELINUX=enforcing
SELINUXTYPE=default
Verifique se todos os serviços estão sendo executados com um contexto de segurança controlado pelo SELinux:
O seguinte comando irá listar quaisquer serviços que estão sendo iniciados a partir do processo init, os quais podem requerer um contexto de segurança não-padrão atribuído a eles:
ps -eZ | egrep "initrc" | egrep -vw "tr|ps|egrep|bash|awk" | tr ':' ' ' | awk '{ print $NF }'
Reinicie o computador para garantir que todas as configurações foram carregadas.
Configurações do AppArmor
Instale o AppArmor no Ubuntu/Debian:
apt-get install apparmor apparmor-profiles apparmor-utils
Habilite o AppArmor na inicialização:
Edite /etc/default/grub e adicione as seguintes configurações:
GRUB_CMDLINE_LINUX="apparmor=1 security=apparmor"
Garanta que todos os perfis do AppArmor estejam no modo de aplicação:
aa-enforce /etc/apparmor.d/*
Hardening de Linux Embarcado
O Linux Embarcado oferece um sistema operacional simplificado para dispositivos ou sistemas embarcados, como smartphones, smart TVs, set-top boxes e roteadores de internet de banda larga.
Um sistema operacional simplificado com uma pegada reduzida é atraente quando a gama completa de funções normalmente fornecida por dispositivos Linux de nível de servidor não é necessária e os recursos de hardware, como armazenamento, memória e CPU, foram minimizados para economizar nos custos de fabricação. Por exemplo, a plataforma de código aberto Android desenvolvida pelo Google é otimizada para smartphones e TVs, e o firmware de roteador OpenWrt é utilizado para uma ampla gama de roteadores de banda larga.
A funcionalidade incluída no sistema operacional varia amplamente dependendo da aplicação pretendida. Por exemplo, o Android inclui bloqueio de tela, reconhecimento facial, suporte para entrada de PIN e serviços de localização; esses não são necessários em sistemas operacionais para roteadores domésticos, mas recursos como VPN, Wi-Fi para convidados e limitação de largura de banda estão incluídos. Como resultado, as orientações de fortalecimento estão especificamente vinculadas ao dispositivo e plataforma em uso.
Destaques do Hardening de Android
Certifique-se de que o firmware do dispositivo está atualizado:
Vá até Configurações | Sistema | Atualizações do Sistema; selecione Verificar se há atualizações e instale quaisquer atualizações disponíveis.
Instale o Google Play e atualizações de segurança:
Vá para Configurações | Segurança:
- Selecione Google Security Check-Up e aplique quaisquer atualizações disponíveis.
- Selecione a atualização do sistema Google Play e aplique todas as atualizações disponíveis.
Ative a segurança geral do dispositivo:
- Vá até Settings | Security | Device Security e faça o seguinte:
- Defina ‘Screen Lock’ como ‘Enabled’.
- Defina ‘Pattern Visible’ como ‘Desativado’.
- Defina ‘Automatically Lock’ para ‘Immediately’.
- Defina a opção ‘Power Button Instantly Locks’ como ‘Ligado’.
- Defina aplicativos de administrador de dispositivo ‘Find My Device’ para ‘Habilitado’.
- Defina ‘Permitir bloqueio e apagamento remotos’ como ‘Ativado’.
2. Acesse Configurações | Sistema | Avançado e faça o seguinte:
- Defina as ‘Opções de Desenvolvedor’ para ‘Desligado’.
3. Acesse Settings | Apps & Notifications | Advanced | Special App Access e faça o seguinte:
- Defina ‘Install Unknown Apps’ como ‘Não Permitido’.
4. Inicie Play Store | Menu e faça o seguinte:
- Selecione ‘My Apps & Games’ e clique em ‘Update All’.
Destaques do Hardening do OpenWrt
- Altere a senha de administrador do padrão.
- Certifique-se de que o firmware esteja sempre atualizado para a versão mais recente.
Kali Linux Hardening
Kali Linux foi otimizado para ser a plataforma de escolha dos testadores de penetração, portanto possui uma ampla gama de utilitários de auditoria de segurança e testes de penetração.
Uma vez que Kali Linux é uma distribuição Linux baseada em Debian, você pode usar as dicas de fortalecimento do Linux acima para abordar as fraquezas de segurança nos sistemas Kali Linux.
Reforço de Segurança do Linux Mint
Da mesma forma para o Linux Mint, como uma plataforma de Desktop Linux derivada do Ubuntu, os mesmos procedimentos de fortalecimento usados para o Debian-Linux devem ser adotados. Siga as etapas anteriores da Lista de Verificação de Fortalecimento do Linux e aplique-as aos seus sistemas Linux Mint.
Reforço da segurança do Arch Linux
Como uma distribuição Linux independente, não derivada diretamente do Debian ou Fedora, o Arch Linux é um caso individual no que diz respeito a medidas de reforço de segurança, embora os conceitos de como e o que reforçar sejam semelhantes. O código do Arch é intencionalmente construído como uma distribuição Linux enxuta e sem 'enchimentos', e como tal exigirá menos trabalho de reforço quando se trata de remover/desativar serviços desnecessários.
Palavra Final
Mesmo um sistema reforçado ainda pode ser comprometido, especialmente pelos seguintes:
- Ameaças zero-day — explorações das quais não tínhamos conhecimento e, portanto, não estávamos protegidos contra
- Ransomware e outros malwares
- Ameaças internas, incluindo tanto hackers utilizando credenciais roubadas quanto usuários abusando de seu acesso
Portanto, além de reforçar seus sistemas, você precisa de defesas adicionais. Em particular, é vital monitorar a integridade do sistema e dos arquivos. Qualquer alteração inesperada pode levar a uma violação ou outro incidente de segurança. Netwrix Change Tracker fornece alertas em tempo real sobre todas as alterações não planejadas e é compatível com todas as plataformas Linux e Unix.
Netwrix Change Tracker
Ganhe confiança na integridade do seu sistema Linux/Unix com o software de gerenciamento de configuração de segurança da Netwrix
Solicitar Teste GratuitoCompartilhar em