Configuração de Segurança e Kernel Linux: sysctl, PAM e Controle de Acesso
A segurança de um sistema Linux exige uma abordagem multi-camadas que começa no kernel e se estende pelo sistema de autenticação até os controles de acesso e montagem de armazenamento. Este guia fornece uma referência detalhada dos componentes de configuração de segurança mais críticos em um ambiente Linux moderno.
1. Parâmetros do Kernel com sysctl
O comando sysctl e o arquivo /etc/sysctl.conf (junto com arquivos em /etc/sysctl.d/) são as principais ferramentas para configurar os parâmetros do kernel Linux em tempo de execução. Muitos desses parâmetros têm implicações de segurança significativas.
Usando um Gerador de Configuração sysctl
Embora você possa editar manualmente os arquivos de configuração, um gerador de configuração sysctl (sysctl config generator) pode ajudar a garantir que você não perca configurações críticas de endurecimento. Parâmetros comuns para configurar incluem:
- Endurecimento de Rede: Desabilitar o encaminhamento de IP (
net.ipv4.ip_forward = 0), ignorar redirecionamentos ICMP (net.ipv4.conf.all.accept_redirects = 0) e habilitar a proteção de cookie TCP SYN (net.ipv4.tcp_syncookies = 1). - Proteção de Memória: Habilitar ASLR (Address Space Layout Randomization) via
kernel.randomize_va_space = 2. - Restrição de Vazamento de Informação: Restringir o acesso aos logs do kernel (
kernel.dmesg_restrict = 1) e à tabela de símbolos do kernel (kernel.kptr_restrict = 2).
Tabela de Referência de Parâmetros do Kernel Linux
| Parâmetro | Valor Recomendado | Descrição |
|---|---|---|
net.ipv4.tcp_syncookies |
1 |
Protege contra ataques SYN flood. |
net.ipv4.conf.all.rp_filter |
1 |
Ativa a filtragem de caminho reverso para evitar falsificação de IP (spoofing). |
kernel.randomize_va_space |
2 |
ASLR completo para evitar exploits de buffer overflow. |
fs.protected_fifos |
2 |
Evita gravações não autorizadas em FIFOs em diretórios com permissão de escrita para todos. |
2. Módulos de Autenticação Plugáveis (PAM)
O PAM fornece uma maneira flexível de gerenciar a autenticação para vários serviços sem modificar os próprios serviços. Configurar o PAM corretamente é essencial para aplicar políticas de senha fortes e autenticação de múltiplos fatores.
Considerações sobre o Gerador de Configuração PAM
Um gerador de configuração PAM (PAM config generator) normalmente se concentra nos arquivos em /etc/pam.d/. Os principais módulos a serem incluídos para segurança são:
- pam_cracklib.so / pam_pwquality.so: Aplica requisitos de complexidade de senha (comprimento, tipos de caracteres).
- pam_tally2.so / pam_faillock.so: Bloqueia contas após um certo número de tentativas de login falhas para evitar ataques de força bruta.
- pam_unix.so: O módulo padrão para verificar senhas contra o arquivo
/etc/shadow.
Exemplo de configuração para qualidade de senha:
password requisite pam_pwquality.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
3. Controle de Acesso Obrigatório: SELinux e AppArmor
Ao contrário do Controle de Acesso Discricionário (DAC) padrão baseado em usuários e grupos, o Controle de Acesso Obrigatório (MAC) permite que os administradores definam políticas de segurança granulares para cada processo e arquivo no sistema.
Gerador de Política SELinux vs. Gerador de Perfil AppArmor
- SELinux (Security-Enhanced Linux): Usa um sistema de rotulagem para cada objeto (processo, arquivo, porta). É poderoso, mas tem uma curva de aprendizado íngreme. Um gerador de política SELinux (SELinux policy generator) (como
audit2allow) é frequentemente necessário para lidar com negações complexas. - AppArmor: Usa perfis baseados em caminho. Geralmente é considerado mais fácil de configurar do que o SELinux. Um gerador de perfil AppArmor (AppArmor profile generator) (como
aa-genprof) pode ajudar a criar perfis monitorando o comportamento da aplicação.
Comparação SELinux vs. AppArmor
| Característica | SELinux | AppArmor |
|---|---|---|
| Tipo de Controle | Baseado em rótulo | Baseado em caminho |
| Complexidade | Alta | Média |
| Padrão em | RHEL, CentOS, Fedora | Ubuntu, Debian, openSUSE |
| Flexibilidade | Extremamente alta | Alta |
| Curva de Aprendizado | Íngreme | Moderada |
4. Montagem Segura de Armazenamento com /etc/fstab
O arquivo /etc/fstab define como os dispositivos de armazenamento são montados. Usar as opções de montagem corretas pode prevenir muitos tipos de ataques, como a execução de binários maliciosos a partir de diretórios temporários.
Flags de Segurança do Gerador /etc/fstab
Ao usar um gerador /etc/fstab (/etc/fstab generator), certifique-se de incluir estas flags de segurança para partições que não sejam do sistema (como /tmp, /var ou drives externos):
nodev: Impede a interpretação de dispositivos especiais de bloco ou caractere no sistema de arquivos.nosuid: Desativa os bits set-user-identifier ou set-group-identifier.noexec: Impede a execução de binários no sistema de arquivos.
Exemplo de entrada segura para /tmp:
UUID=... /tmp tmpfs rw,nosuid,nodev,noexec 0 0
FAQ: Configuração de Segurança Linux
P: Devo usar SELinux ou AppArmor?
R: Geralmente depende da sua distribuição. Use o que é suportado nativamente e habilitado por padrão (SELinux para baseadas em RHEL, AppArmor para baseadas em Debian), pois elas terão as políticas pré-configuradas mais abrangentes.
P: Por que net.ipv4.ip_forward é desabilitado por padrão?
R: Habilitar o encaminhamento de IP permite que seu sistema atue como um roteador, o que pode ser um risco de segurança se não for pretendido explicitamente e devidamente protegido por firewall.
P: O que acontece se eu configurar o PAM incorretamente?
R: Um PAM mal configurado pode bloquear o acesso de todos (incluindo o root) ao sistema. Sempre mantenha uma sessão root ativa aberta ao testar alterações no PAM ou tenha um plano de recuperação (como dar boot por um Live CD).
P: Como posso verificar se minhas configurações de sysctl foram aplicadas?
R: Use o comando sysctl -a para ver todos os parâmetros atuais do kernel e seus valores. Você também pode verificar parâmetros específicos, por exemplo, sysctl net.ipv4.tcp_syncookies.