Segurança de Informações é uma área abrangente e importante para as corporações, pois visa garantir a continuidade de negócio, zelando da imagem da Empresa perante o mercado. O maior patrimônio das Empresas, sem dúvida nenhuma, são suas informações. E nela, devemos estar sempre atentos para prevenir as ameaças e diminuir os riscos em falhas. Mitigar os riscos, ameaças, falhas ou panes, devemos implementar controles no GNU/Linux. Os controles vão desde a nível de kernel até políticas de conta de usuários. Estes controles chamamos de "Hardening Linux". A palestra sobre "Hardening Linux" exibirá as melhores práticas das dezenas de controles a serem aplicados no GNU/Linux e a explicação técnica de como implementá-los, fazendo um paralelo com as normas ISO 27001 e ISO 17799.
1. Hardening Linux
Hardening Linux
1º S.G.S.L. / 5º F.G.S.L.
Juliano Bento
juliano.bento@gmail.com
2. Hardening Linux
Agenda
Introdução
Definição Hardening
Importância
Controles de Hardening
Checklists (21) básico de
verificação
3. Hardening Linux
Agenda
Checklist (Controles)
Políticas de Controle de Acesso
(SO e Rede)
Sistema Operacional GNU/Linux
Kernel;
Auditoria;
Rastreabilidade evidência;
Manutenção dos controles;
4. Hardening Linux
Definições
Hardening
Processo de fortificação do sistema operacional
aplicando técnicas específicas de controles.
Efeito de blidagem do sistema
Exemplos:
Patch do kernel ou configuração de parâmetros (sysctl);
Remoção de pacotes e desabilitação de serviços
desnecessários.
5. Hardening Linux
Projetos de Hardening Linux
Hardening Linux Kernel:
Security-Enhanced Linux (SELinux),
http://selinux.sourceforge.net
Uso do Linux Security Modules (LSM) no kernel
Grsecurity, http://www.grsecurity.net
PaX Project, http://pax.grsecurity.net/
Hardening Linux:
Bastille Linux, http://bastille-linux.sourceforge.net
Debian Harden
6. Hardening Linux
Importância
Adequação as Normas
ISO 17799 e ISO 27001
Guia de referência para boas práticas dos processos e gestão
da Segurança da Informação Corporativa;
Controle de Acesso
Lógico e Físico
Políticas
Processos (gestão da continuidade de negócio)
É um processo da fase do Gerenciamento de
Riscos
Avaliação de todos os ativos
7. Hardening Linux
Checklist
C1 - Atualização e adequação dos pacotes
instalados no Linux
Implementar e documentar procedimentos de
gerenciamento de patchs.
Avaliar as janelas de tempo necessárias para
aplicabilidade e os devidos impactos.
Garantir a autencidade dos pacotes a serem atualizados.
Avaliar os pacotes desnecessários e removê-los.
# dpkg --get-selections > pacotes_instalados_debian.txt
# rpm -qa > pacotes_instalados_RH.txt
8. Hardening Linux
Checklist
C2 - Adequação da inicialização automática de
serviços
Avaliar quais serviços são necessários para o
funcionamento do sistema
Parar a inicialização automática de todos os serviços
desnecessários.
Ex: não parar os serviços: syslog, network, ssh, randon e cron
10. Hardening Linux
Checklist
C3 - Adequação da metodologia de acesso remoto
através de emulação de terminal
Remover serviço de TELNET
Protocolo inseguro;
Não garante confidencialidade dos dados trafegados;
As credencias de acesso são enviados em texto puro;
Utilizar OpenSSH
Protocolo totalmente seguro
Checklist próprio para o serviço de SSH
11. Hardening Linux
Checklist
C4 - Adequação da metodologia de transferência
de arquivos
Preferencialmente não utilizar FTP;
Não há garantia da confidencialidade
Utilizar SSH;
SCP
SFTP
Nível de proteção contra usuários maliciosos ou espiões
12. Hardening Linux
Checklist
C5 - Desabilitação da re-inicialização do sistema
operacional através do teclado
Teclas pressionadas simultaneamente Ctrl+Alt+Del
Elimina probabilidade de indisponibilidade do serviço de
atacantes com acesso físico ao servidor
Comentar a linha abaixo no arquivo /etc/inittab
# ca::ctrlaltdel:/sbin/shutdown -r -t 4 now
Ubuntu: alterar /etc/event.d/control-alt-delete
Pacote upstart
13. Hardening Linux
Checklist
C6 - Autenticação compulsória em modo mono-
usuário (linux single)
Runleves (System V);
Proteção contra usuário malicioso que possui acesso ao
gerenciador de boot
Verificar existência da seguinte linha abaixo no arquivo
/etc/inittab
~~:S:respawn:/sbin/sulogin
14. Hardening Linux
Checklist
C7 - Aumento do tempo de espera após tentativa
fracassada de autenticação
O intervalo de tempo de espera após tentativa
fracassada de autenticação em seqüência de um mesmo
login em terminal do sistema operacional deve ser
aumentado para um valor que permita a mitigação de
ataques de força bruta sem comprometer a usabilidade
do sistema; Tempo padrão (3s).
Alterar arquivo /etc/login.defs
FAIL_DELAY 15
15. Hardening Linux
Checklist
C8 - Habilitação de registros de logins e tentativas
de logins fracassadas
Auxilia na detecção de ataques de força bruta;
Habilita registro de tentativas fracassadas de login em
/var/log/faillog
FAILLOG_ENAB yes #/etc/login.defs
Habilita registro de tentativas de login utilizando usuários
inexistentes;
LOG_UNKFAIL_ENAB yes #/etc/login.defs
16. Hardening Linux
Checklist
C8 - Habilitação de registros de logins e tentativas
de logins fracassadas
Habilita registro de logins no sistema juntamente com
data/hora associada (lastlog)
session optional pam_lastlog.so #/etc/pam.d/login
17. Hardening Linux
Checklist
C9 - Definição de política de senhas
Definir tamanhos minimos e máximos conforme política
do controle de acesso adotados pela corporação
Habilitar verificação de senhas fracas durante a troca
(obscure)
password required pam_unix.so nullok obscure min=8
max=12 md5 # /etc/pam.d/common-password
ou... paranóia (libpam-cracklib)
password required pam_cracklib.so retry=3 minlen=12
difok=3
password required pam_unix.so use_authtok nullok md5
# /etc/pam.d/common-password
18. Hardening Linux
Checklist
C9 - Definição de política de senhas
Número máximo de dias que a senha dever ser utilizada
PASS_MAX_DAYS 60 #/etc/login.defs
Número mínimo de dias permitido entre trocas de
password
PASS_MIN_DAYS 0 #/etc/login.defs
Número de dias de aviso dados antes da senha expirar.
PASS_WARN_AGE 7 #/etc/login.defs
19. Hardening Linux
Checklist
C10 - Adequação das permissões dos diretórios
home dos usuários
Os usuários do sistema não podem ter acesso de leitura
ou escrita ou execução no diretório home dos outros
usuários (princípio least privilege)
UMASK 077 #/etc/login.defs
Permissão 700 no diretório /home/user
drwx------ 96 user user
Fix: Adequação do diretório home dos usuários já criados
anteriormente
for user in $(ls -1 /home/); do chmod 700 $user; done
20. Hardening Linux
Checklist
C11 - Adequação do processo de autenticação em
terminais (console)
Tempo limite permitido para que seja realizada a
autenticação;
Número máximo de tentativas fracassadas antes que
seja necessário re-iniciar o processo de autenticação
Eficácia contra adivinhação de senhas e ataques de
força bruta
LOGIN_RETRIES 2 #/etc/login.defs
21. Hardening Linux
Checklist
C12 - Adequação do acesso SSH
Emulação de terminal remoto através canal de
comunicação criptografado;
Configura o serviço de SSH para somente operar com protocolo
SSHv2
Habilita registro detalhado das atividades relacionadas ao
serviço de SSH.
Impede a autenticação do usuario root no serviço de SSH.
Habilita a verificação das permissões do diretório home do
usuario antes de permitir sua autenticação através de SSH.
Desabilita autentição do serviço SSH atraves de arquivos .rhosts
e hosts.equiv. (SSHv1)
22. Hardening Linux
Checklist
C12 - Adequação do acesso SSH
Desabilita autentição do serviço SSH atraves de combinação de
chaves RSA com arquivos .rhosts e hosts.equiv. (SSH v1 e v2)
Desabilita utilização de senhas nulas para autenticação no
serviço SSH
Habilita exibição de mensagem anterior a autentição do usuário
através de SSH contendo a política de uso aceitável do sistema.
Habilita exibição de mensagem indicativa de data e origem da
ultima conexão do usuário após autenticação via SSH.
23. Hardening Linux
Checklist
C12 - Adequação do acesso SSH
Habilita separação de privilégios para o serviço de SSH. Esta
opção faz com que o serviço crie um processo filho com
privilégios reduzidos para cada conexão recebida visando
mitigar tentativas de elevação indevida de privilégios.
Limita o número máximo (10) de conexões concorrentes ao
serviço SSH cuja autenticação ainda não foi realizada com êxito.
Habilita detecção de conexões pendentes ao serviço de SSH
que já tenham sido encerradas.
Deve ser informado os usuários que poderão usar o serviço
SSH.
24. Hardening Linux
Checklist
C12 - Adequação do acesso SSH
/etc/ssh/sshd_config
25. Hardening Linux
Checklist
C13 - Adequação das configurações de rede
utilizadas pelo kernel
/etc/sysctl.conf
Mitiga uma série de ataques:
DoS (de maneiras distintas), redirecionamento malicioso de
tráfego de rede e encaminhamento indevido de pacotes entre
interfaces.
A utilização de SYN cookies deve ser habilitada → DoS Syn
Flooding;
Pacotes ICMP destinados a endereços de broadcast ou
multicast devem ser ignorados visando mitigar a utilização
do sistema como amplificador de ataques de negação de
serviço;
26. Hardening Linux
Checklist
C13 - Adequação das configurações de rede
utilizadas pelo kernel
Pacotes ICMP do tipo redirect devem ser ignorados → utilizado
apenas entre roteadores;
Pacotes cujo roteamento foi determinado na origem, em
oposição a pacotes cujo roteamento foi decidido pelos
equipamentos efetivamente responsáveis por esta tarefa, devem
ser ignorados;
O envio de pacotes ICMP do tipo redirect deve ser desabilitado;
O encaminhamento de pacotes entre interfaces deve ser
desabilitado.
27. Hardening Linux
Checklist
C13 - Adequação das configurações de rede
utilizadas pelo kernel
/etc/sysctl.conf
28. Hardening Linux
Checklist
C14 - Exibição de mensagens de política de uso
aceitável do sistema
Informar ao usuário banner com política de uso aceitável
e devidas sanções em caso de má utilização;
Exibição nos terminais locais da estação (servidor) e nas
conexões de emulação remota de terminal (ssh);
/etc/issue /etc/issue.net
29. Hardening Linux
Checklist
C15 - Configuração de limite máximo de tamanho
para arquivos criados por usuários.
Evita ataques de exaustão de recursos;
Paradas inesperadas;
/etc/security/limits.conf
@usuarios hard fsize 100000
30. Hardening Linux
Checklist
C16 - Configuração de limite máximo de sessões
de login simultâneas (3) para usuários.
Evitar ataques de exaustão de recursos (memória, I/O e
processamento);
/etc/security/limits.conf
* hard maxlogins 3
31. Hardening Linux
Checklist
C17 - Ajuste adequado da data e horário do Linux
Evitar inconsistências certificar o horário exato da
ocorrência dos eventos do sistema;
Sincronização com servidores NTPs confiáveis;
Configuração: cron ou ntpclient
/etc/ntp.conf
32. Hardening Linux
Checklist
C18 - Configuração adequada do serviço de
registros (logs) do sistema operacional
Enviar todos os eventos de syslog do sistema para
servidor syslog corporativo (SOC) para
SOC
correlacionamento e geração de alertas;
Conteção por um período mínimo (3 anos);
/etc/syslog.conf
*.* @10.10.10.10
Syslog-ng: poder nos filtros!
33. Hardening Linux
Checklist
C19 - Adequação da rotação dos registros (logs) do
sistema operacional
Adequar rotacionamento de logs (logrotate);
Armazenasr eventos ocorridos por um período de tempo pré-
estabelecido.
Garantir integridade dos logs (eventos) → evidências;
34. Hardening Linux
Checklist
C20 - Adequação da configuração do gerenciador
de boot
Resguardar
Contra ataques maliciosos de usuários com acesso físico no
servidor;
Integridade (modo rescure, modo mono-usuário)
Grub ou LILO
Utilizar senha para alteração de parâmetros na inicialização do
Linux
grub-md5-crypt
/boot/grub/menu.lst
password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe
35. Hardening Linux
Checklist
C21 - Configuração adequada de regras locais de
filtragem de tráfego de rede
Implementar filtro de pacotes local
Negar tudo e permitir somente as portas/protocolos necessários;
Iptables
Regras INPUT e OUTPUT
36. Hardening Linux
Revisão Final!
Políticas de Controle de Acesso (SO e Rede)
Kernel;
Auditoria;
Rastreabilidade evidência;
Manutenção dos controles;