palestra hardening linux - por juliano bento - v fgsl e i sgsl

37
Hardening Linux Hardening Linux 1º S.G.S.L. / 5º F.G.S.L. Juliano Bento [email protected]

Upload: fgsl

Post on 25-Dec-2014

3.945 views

Category:

Economy & Finance


3 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

Hardening Linux

Hardening Linux

1º S.G.S.L. / 5º F.G.S.L.

Juliano [email protected]

Page 2: 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

Page 3: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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;

Page 4: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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.

Page 5: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 6: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 7: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 8: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 9: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 10: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 11: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 12: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 13: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 14: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 15: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 16: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 17: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 18: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 19: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 20: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 21: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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)

Page 22: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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.

Page 23: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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.

Page 24: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

Hardening Linux

Checklist C12 - Adequação do acesso SSH

/etc/ssh/sshd_config

Page 25: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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;

Page 26: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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.

Page 27: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

Hardening Linux

Checklist C13 - Adequação das configurações de rede

utilizadas pelo kernel /etc/sysctl.conf

Page 28: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 29: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 30: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 31: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 32: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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!

Page 33: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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;

Page 34: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 35: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

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

Page 36: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

Hardening Linux

Revisão Final! Políticas de Controle de Acesso (SO e Rede) Kernel; Auditoria;

Rastreabilidade evidência; Manutenção dos controles;

Page 37: Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL

Hardening Linux

FIM