Atualizado em

Linux Hardening é um conjunto de técnicas e práticas utilizadas para fortalecer a segurança de sistemas operacionais baseados em Linux. O conceito de hardening é o conjunto de técnicas e configurações que tornam o servidor mais resistente a ataques e intrusões, removendo vulnerabilidades e reduzindo a probabilidade de acesso não autorizado. Embora o Linux seja reconhecido por sua robustez e segurança nativa, nenhum sistema é completamente imune a ameaças, principalmente quando se tem humanos o operando. Com o grande aumento no número de ameaças existentes na Internet, é fundamental que o sistema de um servidor esteja preparado para superar todas as tentativas de invasão.

Quando começarmos com nossas técnicas de hardening, vamos ter que pensar sempre em três fatores: segurança, risco e flexibilidade. A relação entre esses elementos determina o nível de proteção implementado. O administrador de redes deve analisar essas grandezas e encontrar um estado de harmonia entre elas, pois quanto maior a segurança, menor o risco, mas também menor a flexibilidade. É importante ressaltar que as técnicas de hardening podem não ser adequadas para todas as situações. Por isso, antes de implantar efetivamente as técnicas de hardening, é fundamental que haja um estudo completo do cenário e serviços em questão.

Técnicas fundamentais de hardening

O processo de hardening inicia-se já na instalação do sistema operacional. Inicialmente recomenda-se sempre instalar versões atuais dos sistemas operacionais, que contenham correções e patches de segurança, pois pode ser problemático utilizar uma versão antiga sem atualizações. A configuração adequada de partições é um dos primeiros passos críticos. A criptografia de partições com LUKS é uma medida robusta para proteger dados em armazenamento, utilizando algoritmos como AES-XTS-PLAIN64 com chaves de 512 bits para garantir alta segurança.

Quanto mais aplicações temos instaladas em nossos servidores maior é a probabilidade de existir uma falha, principalmente se existem aplicações desnecessárias. A remoção de serviços desnecessários envolve desativar ou remover serviços e aplicativos que não são essenciais para o funcionamento do sistema, reduzindo assim a exposição a possíveis ameaças. Um servidor não deve conter programas de desktop, e o ideal é fazer uma varredura no sistema verificando todos os programas instalados.

As permissões especiais em sistemas Linux merecem atenção especial. O bit Suid, quando setado, permite que qualquer usuário execute determinado binário ou programa como se fosse o usuário proprietário. A configuração incorreta dessas permissões pode criar vulnerabilidades significativas. A configuração de usuários e permissões é uma técnica importante de Linux hardening. É importante criar contas de usuário separadas para cada usuário que precisar acessar o sistema, em vez de usar uma conta de administrador compartilhada. As permissões devem ser configuradas corretamente para garantir que cada usuário tenha apenas os privilégios necessários para realizar suas tarefas.

Controle de Acesso Mandatório e Proteção de Processos

SELinux e AppArmor são sistemas de segurança que fornecem ferramentas para isolar aplicações umas das outras e, por sua vez, isolar um atacante do resto do sistema quando uma aplicação é comprometida. SELinux é um robusto sistema de controle de acesso mandatório (MAC) que impõe políticas de segurança granulares no sistema, definindo meticulosamente quais processos podem acessar recursos específicos. Desenvolvido pela Agência de Segurança Nacional (NSA) dos Estados Unidos, o SELinux está integrado ao kernel do Linux e é o padrão em distribuições como RHEL, CentOS, Fedora e AlmaLinux.

Leia também: 5 ferramentas de segurança para Linux que todo administrador precisa conhecer

AppArmor é um sistema de segurança que fica habilitado o tempo todo apenas aguardando ser configurado. Desenvolvido pela Novell de 1999 a 2008, foi posteriormente adquirido pela Canonical que o implementou no Ubuntu 7.10. SELinux usa políticas de segurança baseadas em rótulos de arquivo, enquanto AppArmor usa políticas baseadas em caminhos. A principal vantagem do AppArmor é a simplicidade e a curta curva de aprendizado. Este módulo é muito menos complexo que o SELinux, tornando-o mais fácil de configurar e gerenciar.

SELinux suporta controle de acesso mandatório refinado com regras detalhadas sobre usuários, processos e objetos. AppArmor fornece um bom nível de controle, mas carece da profundidade do SELinux em aplicação multi-nível e baseada em funções. SELinux usa tanto Multi-Level Security (MLS) quanto Multi-Category Security (MCS), enquanto AppArmor não usa nenhum dos dois. A escolha entre as duas ferramentas depende das necessidades específicas do ambiente: SELinux oferece controle granular máximo, enquanto AppArmor proporciona uma abordagem mais acessível e amigável.

Firewall, monitoramento e detecção de intrusões

A configuração de um firewall é uma das técnicas mais básicas de hardening, mas também uma das mais importantes. Um firewall pode bloquear tráfego indesejado e ajudar a proteger o sistema contra ataques externos. O IPTables é uma ferramenta do kernel Linux baseada no framework netfilter que processa pacotes de rede por meio de tabelas e cadeias, oferecendo controle absoluto e granular. Para ambientes que necessitam de simplicidade, o UFW (Uncomplicated Firewall) é um wrapper para o IPTables que torna a configuração mais intuitiva sem sacrificar a segurança.

O Fail2ban é uma ferramenta essencial que ajuda a proteger contra ataques de força bruta ao monitorizar logs e banir IPs maliciosos que tentam aceder ao sistema repetidamente. O Fail2Ban funciona monitorando os logs do sistema em busca de padrões suspeitos e bloqueando endereços IP que violam regras de segurança predefinidas. A ferramenta pode ser configurada para proteger diversos serviços, incluindo SSH, servidores web e servidores de email, com políticas personalizáveis de tempo de banimento e número máximo de tentativas permitidas.

O auditd é uma ferramenta poderosa para auditoria de segurança de sistemas Linux. Ele permite a criação de regras específicas para monitorar atividades críticas, como modificações de arquivos sensíveis ou tentativas de acesso root. Ferramentas de análise de logs, como o Logwatch, ajudam a resumir informações importantes de logs para revisões diárias, permitindo que os administradores identifiquem rapidamente atividades anômalas. AIDE cria uma base de dados com instantâneos do estado do sistema e verifica a integridade dos arquivos periodicamente, alertando sobre modificações não autorizadas.

Criptografia de dados e proteção em camadas

A criptografia de partições com LUKS é uma medida robusta para proteger dados em armazenamento. dm-crypt é um subsistema de criptografia transparente de dispositivos de bloco no kernel Linux. Faz parte da infraestrutura do device mapper e usa rotinas criptográficas da API Crypto do kernel. LUKS fornece duas coisas principais: cabeçalho e uma forma de armazenar e gerenciar chaves. O cabeçalho permite ao sistema identificar o dispositivo como LUKS e contém todos os metadados necessários para trabalhar com o dispositivo.

O LUKS (Linux Unified Key Setup) oferece vantagens significativas sobre a criptografia simples. Ele fornece fortalecimento de frase-senha, proteção contra ataques de dicionário e suporta múltiplos slots de chave, permitindo que usuários adicionem chaves ou frases-senha de backup. O cryptsetup suporta diferentes modos de operação de encriptação com o dm-crypt. O mais comum e padrão é o LUKS. A configuração típica utiliza o algoritmo AES-XTS-PLAIN64 com hash SHA-512 e tamanho de chave de 512 bits para garantir alta performance e segurança.

Port Knocking permite que portas permaneçam ocultas até que uma sequência específica de tentativas de conexão seja realizada. Isso aumenta a segurança, pois impede que a porta de SSH, por exemplo, fique visível na rede. Uma VPN (Rede Privada Virtual) cria uma conexão segura e criptografada, permitindo acesso remoto ao servidor somente a partir de uma rede interna. A configuração de acesso baseado em IP permite controlar quem pode acessar serviços críticos do servidor, reduzindo significativamente a exposição a ameaças externas.

A segurança de servidores Linux em produção é essencial para garantir a integridade, a disponibilidade e a confidencialidade dos dados e serviços. O processo de hardening não é uma medida única, mas sim um conjunto de práticas contínuas para melhorar a segurança do sistema e proteger contra ameaças em constante evolução. A implementação de múltiplas camadas de segurança, combinando controle de acesso, criptografia, monitoramento e auditoria, cria um ambiente resiliente contra ataques internos e externos. O hardening efetivo requer não apenas configuração inicial cuidadosa, mas também manutenção contínua, atualizações regulares e monitoramento ativo das atividades do sistema.