Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
-
Upload
fgsl -
Category
Economy & Finance
-
view
3.943 -
download
3
description
Transcript of Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
Hardening Linux
Agenda Introdução
Definição Hardening Importância
Controles de Hardening Checklists (21) básico de
verificação
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;
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.
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
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
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
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
Hardening Linux
Checklist C2 - Adequação da inicialização automática de
serviços➔ # /etc/init.d/servico stop➔ # chkconfig --list | grep :on | awk '{ print $1 }'➔ # chkconfig -s servico off➔ # update-rc.d -f servico remove➔ # grep 'disable' /etc/xinetd.d/*➔ # netstat -ntulp➔ # lsof
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
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
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
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
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
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#/etc/login.defs
Habilita registro de tentativas de login utilizando usuários inexistentes;
LOG_UNKFAIL_ENAB yes #/etc/login.defs#/etc/login.defs
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#/etc/pam.d/login
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# /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# /etc/pam.d/common-password
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#/etc/login.defs
Número mínimo de dias permitido entre trocas de password
PASS_MIN_DAYS 0 #/etc/login.defs#/etc/login.defs Número de dias de aviso dados antes da senha expirar.
PASS_WARN_AGE 7 #/etc/login.defs#/etc/login.defs
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#/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
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#/etc/login.defs
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)
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.
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.
Hardening Linux
Checklist C12 - Adequação do acesso SSH
/etc/ssh/sshd_config
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;
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.
Hardening Linux
Checklist C13 - Adequação das configurações de rede
utilizadas pelo kernel /etc/sysctl.conf
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
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/etc/security/limits.conf @usuarios hard fsize 100000
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/etc/security/limits.conf * hard maxlogins 3
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/etc/ntp.conf
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 (SOCSOC) para correlacionamento e geração de alertas;
Conteção por um período mínimo (3 anos); /etc/syslog.conf/etc/syslog.conf *.* @10.10.10.10
Syslog-ng: poder nos filtros!
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;
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/boot/grub/menu.lst
password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe
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
Hardening Linux
Revisão Final! Políticas de Controle de Acesso (SO e Rede) Kernel; Auditoria;
Rastreabilidade evidência; Manutenção dos controles;
Hardening Linux
FIM