unidade iv -hardening linux

110
Faculdade de Tecnologia de Teresina CET Auditoria e Segurança de Redes Prof.º: André Henry I. e Silva [email protected] [email protected]

Upload: maxuel-wylen

Post on 19-Jan-2016

82 views

Category:

Documents


1 download

DESCRIPTION

Permissões linux

TRANSCRIPT

Page 1: Unidade IV -Hardening Linux

Faculdade de Tecnologia de Teresina – CET

Auditoria e Segurança de Redes

Prof.º: André Henry I. e Silva

[email protected]

[email protected]

Page 2: Unidade IV -Hardening Linux

[email protected]

Unidade IV – Hardening Linux

• Definição de Hardening e importância

• Instalação segura do sistema

• Controle de acesso em sistemas de arquivos

• Procedimentos pós-instalação

• Controle de acesso de usuários

• Ajustando o kernel

• Registro (Logs) no Sistema

Page 3: Unidade IV -Hardening Linux

[email protected]

Hardening: Definições

Segundo a Wikipedia

– “Hardening é um processo de mapeamento

das ameaças, mitigação dos riscos e

execução das atividades corretivas - com foco

na infra-estrutura e objetivo principal de torná-

la preparada para enfrentar tentativas de

ataque.”

Page 4: Unidade IV -Hardening Linux

[email protected]

Hardening: Definições (2)

Segundo a ITSecurity.com

– “Hardening é o processo de otimizar as

configurações de segurança de um sistema,

um termo comumente aplicado a sistemas

operacionais.”

Page 5: Unidade IV -Hardening Linux

[email protected]

Hardening: Definições (3)

•Processo de fortificação do sistema operacional

aplicando técnicas específicas de controles.

•Efeito de blindagem 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 6: Unidade IV -Hardening Linux

[email protected]

Hardening: 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: Unidade IV -Hardening Linux

[email protected]

Projetos de Hardening em 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 8: Unidade IV -Hardening Linux

[email protected]

Hardening: BIOS

•Desabilitar a inicialização a partir de dispostivos como

disquete, cdrom, drive usb e rede

– Impedir que pessoas indesejadas tentem iniciar o

sistema a partir de um disco especial de boot

– Proteger contra mudanças nas características da

BIOS

• Reinicializar a máquina e mudar a sequência de

boot para Hard Drive ONLY

• Incluir uma senha para a BIOS.

Page 9: Unidade IV -Hardening Linux

[email protected]

Hardening: BIOS

•Desabilitar a inicialização a partir de dispostivos como

disquete, cdrom, drive usb e rede

– Impedir que pessoas indesejadas tentem iniciar o

sistema a partir de um disco especial de boot

– Proteger contra mudanças nas características da

BIOS

• Reinicializar a máquina e mudar a sequência de

boot para Hard Drive ONLY

• Incluir uma senha para a BIOS.

Page 10: Unidade IV -Hardening Linux

[email protected]

INSTALAÇÃO SEGURA DO SISTEMA

Page 11: Unidade IV -Hardening Linux

[email protected]

Instalação Segura do Sistema

•Dê preferências para Sistemas Operacionais que:

– Já utilizados no ambiente ou empresa;

– Equipe técnica já possui conhecimento e prática;

– Existe versão atual e estável (nem sempre a versão mais nova é

a melhor escolha)

– Tenham sido avaliados, principalmente nas funcionalidades

desejadas e nos quesitos estabilidade e segurança;

– Suporte a atualizações.

Page 12: Unidade IV -Hardening Linux

[email protected]

Instalação Segura do Sistema (2)

•Procure baixar os arquivos de instalação do repositório

oficial da distribuição;

•Após baixas as imagens (ISO), verificar a integridade das

mesmas (calculo do hash)

•Ainda na instalação selecione uma senha forte, de

preferência que contenha letras maiúsculas, minúsculas,

números e caracteres especiais para o usuário “root”.

•Planeje conexões e endereços de rede do servidor;

•Finalmente, documente todo o processo de instalação.

Page 13: Unidade IV -Hardening Linux

[email protected]

Personalize sua Instalação

• Instalações Padrão são inseguras por padrão

• Escolha cuidadosamente os pacotes que deverão ser instalados

• Não instale Servidores Web, Banco de Dados, News Server a

menos que seja realmente necessário

•Estabeleça senhas difíceis para o root e para os usuários

– Não opere o sistema como root o tempo inteiro

– Menos é mais!!

Page 14: Unidade IV -Hardening Linux

[email protected]

Personalize sua Instalação

•As boas práticas de instalações nos aconselham a particionar o disco

e colocar os principais diretórios em partições separadas. Isso nos

proporciona maior proteção, pois cada partição tem sua tabela

separada.

Sist. Arq. Tam Usad Disp Uso% Montado em

/dev/sda3 1,2G 492M 579M 46% /

/dev/sda5 19G 428M 17G 3% /var

/dev/sda6 19G 3,0G 15G 17% /usr

/dev/sda8 8,3G 169M 7,7G 3% /tmp

/dev/sda9 74G 6,5G 64G 10% /home

Page 15: Unidade IV -Hardening Linux

[email protected]

CONTROLE DE ACESSO EM SISTEMAS DE

ARQUIVOS

Page 16: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos

•Conforme a norma ABNT NBR ISO/IEC 27001:2006, deve-se

proteger a integridade do software e a informação

•Dessa maneira, recomenda-se a utilização de opções de

restrição do comando mount para a segurança do sistema de

arquivos

Page 17: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (2)

•Nosuid – faz com que binários com permissão Suid bit não surtam efeito na

partição na qual está definido.Um exemplo, adicione um usuario:

# adduser teste

•Faça uma cópia das shells do seu sistema para o diretório home desse

usuário e atribua às shells a permissao de Suid bit.

# cp /bin/*sh* /home/teste

# chmod 4755 /home/teste/*sh*

•Logue-se em outro terminal com o usuário que você criou e tente executar

uma dessas shells.

$ cd /home/teste; ./sh; $ id

Page 18: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (3)

•Para resolvermos isso, vamos remontar a partição onde está

montado o /home, mas agora com a opção nosuid que tinha

comentado no slide anterior.

# mount -o remount,rw,nosuid /home

# mount

•Com a opção nosuid, façamos o teste novamente e veja que as

shells continuam com o Suid bit ativado, porem, quando forem

executadas não poderam ter mais o acesso no nível de root.

Page 19: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (4)

•Outra opção seria utilizar o noexec que não deixa e execução de binários ou

arquivos executáveis dentro da partição na qual essa opção está ativada.

•Ela pode ser aplicada em todos diretórios mas é muito comum ser aplicado

nos diretórios /home e /tmp.

•Crackers se aproveitatam desses diretórios que por padrão qualquer usuário

pode pôr backdoors ou qualquer outro programa malicioso para ter acesso

completo ao sistema.

•Para isso só precisamos remontar a partição com a opção noexec ativada.

# mount -o remount,rw,noexec /home

# mount

Page 20: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (5)

•Há também a opção noatime que não é uma opção de

segurança mas sim de performance porque faz com que o kernel

execute uma tarefa a menos quando noatime está definido e

destinado à atualizações do tempo de acesso de arquivo.

•Para vermos um exemplo disso, primeiro iremos ver o comando stat que é usado para verificar o status de um arquivo ou de um

sistema de arquivos.

Page 21: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (6)

•A saida desse comando nos retorna informações importantes, mas as

principais aqui que serão vistas são as opções Acess (atime), Modify (mtime) e

Change (ctime)

•Exemplo: Criaremos dois arquivos em partições diferentes

# touch /root/teste1

# touch /tmp/teste2

• Depois veremos seus status

# stat /root/teste1

# stat /tmp/teste2

•Guardemos as informações obtidas e prestem atenção nas 3 opções citadas

acima Access, Modify e Change.

Page 22: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (7)

•Depois disso iremos visualizar o conteúdo deles

# cat /root/teste1

# cat /tmp/teste2

• e de novo verificaremos o status deles

# stat /root/teste1

# stat /tmp/teste2

•Percebam que os Access dos arquivos estão diferentes. Quando

visualizamos seu conteúdo, modificamos o tempo de acesso

deles.

Page 23: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (8)

•Faremos a mesma coisa com alterando agora as permissões

deles.

# chmod 777 /root/teste1

# chmod 777 /tmp/teste2

• e de novo verificaremos o status deles

# stat /root/teste1

# stat /tmp/teste2

•Vejam que o Access agora não foi alterado mas o Change foi.

Sempre que mudamos as permissões de um arquivo, o Change

será mudado, registrando a ultima data e hora da mudança.

Page 24: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (9)

•Agora iremos inserir um conteúdo nesses arquivos

# echo cet > /root/teste1

# echo cet > /tmp/teste2

• verificaremos o status deles

# stat /root/teste1

# stat /tmp/teste2

•E podemos ver que o Change foi alterado novamente, mas junto a ele

o Modify. Porque agora não ocorreu só um acesso mas também uma

alteração no conteúdo do arquivo.

Page 25: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (10)

•Com isso podemos agora remontar nossa partição que está montada

no diretório /tmp com a opção noatime (para que haja uma melhora na

performance)

# mount -o remount,rw,noatime /tmp

•Com a partição remontada com a opção noatime iremos repetir os

testes que fizemos antes.

# cat /root/teste1

# cat /root/teste2

# stat /root/teste1

# stat /tmp/teste2

•Vejam que agora o Access (atime) dos arquivos dentro do /tmp não foi

modificado por causa da opção noatime que definimos anteriormente .

Page 26: Unidade IV -Hardening Linux

[email protected]

Hardening Sistemas de Arquivos (11)

•Eis as principais opções do comando mount

– defaults: permite tudo

– noquota: não ajustar quotas para usuários

– nosuid: não permitir SUID/SGID

– nodev: não permitir acesso a dispositivos especiais ou de caractere

– noexec: não permitir a execução de nenhum binário

– quota: permitir uso de quotas por usuário

– ro: permitir para somente-leitura

– rw: permitir para leitura-escrita

– suid: permitir acessos SUID/SGID

Page 27: Unidade IV -Hardening Linux

[email protected]

Resumo do Controle do Sistema de Arquivos

Page 28: Unidade IV -Hardening Linux

[email protected]

Resumo do Controle do Sistema de Arquivos (2)

# vi /etc/fstab

/dev/hda1

/boot ext3 defaults,nosuid 0 2

/dev/hda3 / ext3 defaults 0 1

/dev/hda4 /home ext3 defaults,nosuid,noexec 0 2

/dev/hda5 /usr ext3 defaults,nosuid 0 2

/dev/hda6 /tmp ext3 defaults,nosuid,noexec 0 2

/dev/hda7 /var ext3 defaults,nosuid,noexec 0 2

/dev/hda8 /var/log ext3

defaults,nosuid,noexec,noatime 0 2

/dev/hda2 none swap sw 0 0

/dev/hdb /media/cdrom0 iso9660

ro,user,noauto 0 0

Page 29: Unidade IV -Hardening Linux

[email protected]

Resumo do Controle do Sistema de Arquivos (3)

•Ajuste as permissões do arquivo /etc/fstab para somente leitura

# chmod 400 /etc/fstab

•Ajuste o bit de imutabilidade também

# chattr +i /etc/fstab

Page 30: Unidade IV -Hardening Linux

[email protected]

Hardening do Sistema de Arquivos: Considerações

•Há um inconveniente ao ter essas opções ativadas. Quando formos instalar um novo pacote com apt-get, dpkg ou

rpm. Esses utilitários executam e gravam informações nos

diretórios /var e /tmp que por sua vez setamos a opção

noexec nas partições onde estão montada esses diretórios.

Precisaremos criar um script simples com os comandos para

remontar essas partições e poder instalar os pacotes.

Page 31: Unidade IV -Hardening Linux

[email protected]

Hardening do Sistema de Arquivos: Considerações

(2)

# vim /root/noexec

#!/bin/bash

case $1 in

start)

mount -o remount,rw,noexec /var

mount -o remount,rw,noexec /tmp

mount

echo “Partições SEM permissão de execução”

;;

....

cont.

stop)

mount -o remount,rw,exec /var

mount -o remount,rw,exec /tmp

mount

echo “Partições COM permissões de execução”

;;

*) echo “erro use $0 {start|stop}”

exit 0

;;

esac

exit 1

Page 32: Unidade IV -Hardening Linux

[email protected]

Hardening do Sistema de Arquivos: Considerações(3)

•Depois toda vez que executar:

# ./noexec start

•o script vai deixar as partições sem permissão de execução

# ./noexec stop

•Vai permitir novamente que possa ser executado alo dentro das partições

definidas no script, podendo agora instalar pacotes apt e dpkg.

•Para maior comodidade podemos copiar esse script para um diretório PATH

do root, por exemplo o /sbin, assim podemos executar o script de qualquer

diretório do sistema.

Page 33: Unidade IV -Hardening Linux

[email protected]

Hardening do Sistema de Arquivos: Considerações(3)

•Depois toda vez que executar:

# ./noexec start

•o script vai deixar as partições sem permissão de execução

# ./noexec stop

•Vai permitir novamente que possa ser executado alo dentro das partições

definidas no script, podendo agora instalar pacotes apt e dpkg.

•Para maior comodidade podemos copiar esse script para um diretório PATH

do root, por exemplo o /sbin, assim podemos executar o script de qualquer

diretório do sistema.

Page 34: Unidade IV -Hardening Linux

[email protected]

Quota do usuário

•Para controlar a utilização do sistema de arquivos, pode-

se fazer uso de quotas, que devem ser especificadas para

partições e não para diretórios.

•O primeiro passo é incluir as opções usrquota e grpquota

no arquivo /etc/fstab, na partição em que se deseja utilizar

# vi /etc/fstab

/dev/hda9 /home ext3 defaults,usrquota,grpquota 0 2

•Há dois padrões para o uso de quotas, quota1 e quota2,

sendo que para cada um deve-se carregar o módulo

específico no kernel, quota_v1 e quota_v2

Page 35: Unidade IV -Hardening Linux

[email protected]

Quota do usuário (2)

•Trabalharemos com o padrão de quota2. Deve-se criar

dois arquivos de controle de quota

– aquota.user – gerencia quotas de usuários

– aquota.group – gerencia quotas de grupos

# cd /home

# touch aquota.user aquota.group

Somente o root deve ter permissão para leitura e escrita sobre eles

# chmod 600 aquota.user

# chmod 600 aquota.group

•Deve-se remontar o sistemas de arquivos, mas, como

geralmente este está sempre ocupado, recomenda-se

salvar aplicações e reiniciar o sistema.

Page 36: Unidade IV -Hardening Linux

[email protected]

Quota do usuário (3)

•Após a inicialização, consultar o status de quota para a

partição

# repquota -v -a

•Agora, pode-se definir quanto cara usuário poderá utilizar

#edquota -u teste

•Teremos:

– O sistema de arquivos onde a quota está habilitada

– Limites soft e hard para o número máximo de blocos

– Limites soft e hard para o número máximo de inodes

Page 37: Unidade IV -Hardening Linux

[email protected]

Quota do usuário (4)

•Para consultar a quota de um usuário

# quota -u usuario

•Para verificar mais detalhes sobre o uso das quotas nas

partições

#quotastats

•Desativar a quota da partição

#quotaoff -v /home

•Para fazer uma checagem na partição e verificar se está

tudo OK

#quotacheck -vcug /home

•Ativar a quota da partição

#quotaon -v /home

Page 38: Unidade IV -Hardening Linux

[email protected]

Ajuste finos sobre arquivos

•Permissões de Arquivos umask

# umask 022

•Arquivos com permissão de escrita por todos

# find / -perm -2 -type f –ls

•Arquivos sem “dono”

# find / -nouser –o -nogroup –ls

•Arquivos com bit SUID ativado

# find / -type f \( -perm -04000 -o -perm -02000 \) -ls

•Ajustando o Sticky Bit para diretório públicos

# chmod 1777 <diretorio_publico>

Page 39: Unidade IV -Hardening Linux

[email protected]

Ajuste finos sobre arquivos (2)

•Sugere-se fazer uma checagem detalhada desse

arquivos, deixando com bit Suid apenas alguns poucos

programas necessários como su, ping, passwd:

# find / -type f \( -perm -04000 -o -

perm -02000 \) > /root/lista.suid

Page 40: Unidade IV -Hardening Linux

[email protected]

Ajuste finos sobre arquivos (3)

•Vamos retirar todas as permissões de Suid bit dos

binários

# chmod -s -Rv /

•Onde:

• s – retira a permissão de Suid bit

• R – é recursivo, do / (raiz) para baixo

• V – é o modo verbose (mostra o que está sendo feito pelo comando)

•Depois, coloque a permissão de Suid bit apenas para o que julgar necessário

# chmod +s /usr/bin/passwd

Page 41: Unidade IV -Hardening Linux

[email protected]

Sudo

•Com o sudo, pode-se definir que comandos cada

usuário comum pode executar como se fosse root

# apt-get install sudo

•O arquivo de configuração do sudo é /etc/sudoers

•Exemplo de configuração:

teste ALL=/sbin/ifconfig, /sbin/iptables

•Define que o usuário teste pode executar os

comandos ifconfig e iptables, sendo solicitada a senha

de root

Page 42: Unidade IV -Hardening Linux

[email protected]

Sudo (2)

•Exemplo de configuração:

teste ALL=NOPASSWD: /bin/reboot, /bin/halt

•Define que o usuário teste pode executar os

comandos reboot e halt, sem que seja solicitada a

senha de root

•Exemplo de configuração:

teste ALL=/sbin/passwd [A-Z]*,!/usr/bin/passwd root

•Define que o usuário teste pode alterar a senha de

qualquer usuário cujo login estiver no intervalo de A-Z,

exceto a senha de root

Page 43: Unidade IV -Hardening Linux

[email protected]

PROCEDIMENTOS PÓS-INSTALAÇÃO

Page 44: Unidade IV -Hardening Linux

[email protected]

Gerenciados de inicialização - GRUB

•Arquivo de edição do GRUB é: /etc/default/grub

•Incluir/alterar a variável timeout=0, para não mostrar

menu

•Arquivo de configuração gerado através do comando “update-grub”: /boot/grub/grub.cfg

•Proteger o arquivo /boot/grub/menu.lst

– chmod 600 /boot/grub/grub.cfg

– chattr +i /boot/grub/grub.cfg

Page 45: Unidade IV -Hardening Linux

[email protected]

Desabilitar Ctrl+Alt+Delete

•Sabemos que pressionando Ctrl-Alt-Delete

reiniciamos o sistema

•Prevenir que a máquina seja reinicializada

•Editar o arquivo /etc/inittab e comentar a seguinte

linha:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r

now

Page 46: Unidade IV -Hardening Linux

[email protected]

Removendo programas desnecessários

•Após instalação do sistema linux devemos nos preocupar se

todos os programas são realmente necessários. Lembre-se

um servidor não deve conter programas clientes.

•Verificar pacotes instalados:

– No Debian

dpkg -l

– Red Hat:

Rpm -qa

Page 47: Unidade IV -Hardening Linux

[email protected]

Removendo programas desnecessários (2)

•Exemplos:

– No Debian

apt-get --purge remove wget

apt-get --purge remove portmap

apt-get --purge remove exim*

Page 48: Unidade IV -Hardening Linux

[email protected]

Check-list nos serviços dos sistema

•Deve-se verificar os status dos serviços, ou seja, se esta funcionando

corretamente e endereços e portas no qual aceitam conexões.

•Primeiramente devemos saber a qual porta determinado serviço esta

associado:

# cat /etc/services

ssh 22/tcp

ssh 22/udp

• Somente ao root deve ser permitido realizar alterações nesse arquivo

• Portanto, deve-se torná-lo imutável:

# chattr +i /etc/services

Page 49: Unidade IV -Hardening Linux

[email protected]

Check-list nos serviços dos sistema (2)

•Informações sobre serviços ativos no sistema:

# netstat -ntl

Proto Recv-Q Send-Q Endereço Local Endereço Remoto

Estado

tcp 0 0 0.0.0.0:22 0.0.0.0:* OUÇA

tcp 0 0 127.0.0.1:631 0.0.0.0:* OUÇA

Page 50: Unidade IV -Hardening Linux

[email protected]

Check-list nos serviços dos sistema (3)

•Para verificar se as portas corretas estão abertas, pode usar

o nmap

•Usado também para verificar o que está aberto em

um servidor

• # nmap -sS -P0 -O maquina-destino

– sS - realiza um stealth scan , a verificaçao ocorre

pelo modo half-open connection.

– P0 - realiza o portscan sem pingar.

– O - Tenta advinhar o sistema operacional remoto

Page 51: Unidade IV -Hardening Linux

[email protected]

Check-list nos serviços dos sistema (4)

•Outros exemplos

# nmap -sS 192.168.1.150

• exibe as portas abertas ou em uso ou # nmap -sF <ip> -p 1-65535

# nmap -sF 192.168.1.2 -p 1-65535

• pega todas as portas em uso. # nmap -p 1-65000 localhost

Page 52: Unidade IV -Hardening Linux

[email protected]

Serviços de Rede

•Stand alone versus Inetd

•O modelo Inetd

– Network Super Daemon

– /etc/services : Mapeia o nome do serviço a número de porta

– /etc/inetd.conf : Main Configuration file for inetd. ftp stream tcp nowait root /usr/sbin/tcpd proftpd

•O modelo Xinetd

– Grande substituto para inetd

– Mais seguro e flexível com avançado mecanismo de controle de acesso

– /etc/xinetd.conf : Arquivo de Configuração principal do xinetd

– /etc/xinetd.d/ : Contém arquivos para serviços gerenciados pelo

xinetd

Page 53: Unidade IV -Hardening Linux

[email protected]

Serviços de Rede (2)

Gerenciamento de Serviços de Redes em Inetd e Xinetd

•Para Inetd : descomentar o correspondente serviço no arquivo inetd.conf

– Reiniciar o daemon Inetd

# pkill –HUP inetd

•Para Xinetd : Fazer mudanças em xinetd.conf e xinetd.d

– Mecanismos de controle de acesso para serviços pode ser especificados

# /etc/init.d/xinetd restart

•Típicos Serviços que devem ser bloqueados

– Finger, rwho, rsh , rlogin, rexec, echo, ntalk

– FTP, Telnet

– Recomenda-se ssh, scp, sftp

Page 54: Unidade IV -Hardening Linux

[email protected]

Hardening - Xinetd

•Super servidor que carregar serviços de rede baseado em

requisições a partir da rede

•/etc/xinetd.conf

– Portas a escutar

– Que servidor iniciar para cada porta

•Verifica que serviço oferecer – Negar outros

– Arquivos /etc/xinetd.d/*

– Alterar de disable = no para disable = yes

# chmod 600 /etc/xinetd.conf

Page 55: Unidade IV -Hardening Linux

[email protected]

Hardening - Xinetd

•stat /etc/xinetd.conf – garantir que o proprietário é o root

•chattr +i /etc/xinetd.conf – tornar o arquivo

“imutável”, não pode ser modificado, deletado ou renomeado and

nenhum link criado

•reiniciar o servidor xinetd após as mudanças

– /etc/init.d/xinetd reload # chattr +i /etc/xinetd.conf # chattr +i /etc/xinet.d/*

Page 56: Unidade IV -Hardening Linux

[email protected]

Gerenciando a inicialização dos serviços

•O diretório /etc/init.d/ guarda todos os scripts de inicialização de serviços dos

sistema

•O diretório /etc/rc.d/ guarda os links simbólicos para cada runlevel (nível de

execução) em diferentes diretórios, por exemplo

– /etc/rc1.d : Serviços que iniciam e param

no nível

– /etc/rc2.d/S10network : iniciar o serviço

de rede no runlevel 2

– /etc/rc2.d/K09smb : para o serviço smb

(samba)

•Estes scripts devem estar disponível para leitura apenas para o root

• # chmod -R 700 /etc/rc.d/init.d/*

Page 57: Unidade IV -Hardening Linux

[email protected]

Gerenciando a inicialização dos serviços (2)

•Debian:

• Habilita ou desabilita um serviço na inicialização do sistema. O

insserv lê o cabeçalho do script referente ao serviço especificado e

automaticamente configura outros serviços necessários, na ordem

de execução correta.

• Sintaxe:

Para adicionar um serviço:

#insserv nome-do-serviço

Para remover um serviço:

#insserv -r nome-do-serviço

Page 58: Unidade IV -Hardening Linux

[email protected]

Gerenciando a inicialização dos serviços (3) -

Runlevels

•0: desligar o sistema

•1: usuário único (super usuário)

•2: multiusuário sem serviço de rede

•3: multiusuário com serviço de rede

•4: livre (não definido, depende da distribuição)

•5: multiusuário com serviço de rede e login

gráfico

•6: reiniciar o sistema.

Page 59: Unidade IV -Hardening Linux

[email protected]

Gerenciando a inicialização dos serviços (4)

•RedHat:

# chkconfig servico on

Coloca serviço para iniciar sempre com o sistema.

# chkconfig servico off

Retira serviço da inicialização junto com o sistema.

Há outras opções para o chkconfig.

Page 60: Unidade IV -Hardening Linux

[email protected]

Gerenciando a inicialização dos serviços (5)

•Debian:

– Para inicializar/para/reiniciar serviços manualmente

#/etc/init.d/nome_servico start|stop|restart|reload

#invoke-rc.d nome_servico start|stop|restart|reload

•Red Hat:

– Para inicializar/para/reiniciar serviços manualmente

#/etc/init.d/nome_servico start|stop|restart|reload

#service nome_servico start|stop|restart|reload

Page 61: Unidade IV -Hardening Linux

[email protected]

Arquivo: /etc/host.conf

•Linux usa um arquivo para determinar de onde serão obtidos os

endereços IP corrrespondentes os nomes de máquinas

•Editar /etc/host.conf

order hosts, bind

– Indica ao ordem de utilização dos serviços de consulta de nomes nospoof on

– Não forja o IP da máquina – IP spoofing é uma forma de

exploração da segurança

Page 62: Unidade IV -Hardening Linux

[email protected]

Hardening: TCPWRAPPERS

•Segundo a norma NBR ISO/IEC 27001, em específico o item

9.4.1, que diz respeito à “Política de utilização dos serviços de

Rede”, é conveniente que os usuários possuam controles e

gerenciamento. E ainda, no item 9.4.7, que diz a respeito ao

“Controle de conexões de Rede” é recomendável que existam

controles que limitem a capacidade de conexão dos usuários.

•Pensando nas recomendações da norma, pode-se,

inicialmente, utilizar dois recursos para limitar o uso dos

serviços de rede, que seriam o TCPWRAPPERS (/etc/hosts.deny

e /etc/hosts.allow) combinado com limitações de conexão que

podemos fazer pelo PAM (/etc/pam.d e /etc/security) aliado à

uma política bem definida e com um estrutura de registro de

eventos Syslog, que iremos configurar posteriormente.

Page 63: Unidade IV -Hardening Linux

[email protected]

Hardening: TCPWRAPPERS (2)

•Nega qualquer acesso remoto dos serviços

vinculados aos Supers Deamon (xinet ou inetd).

–Sua configuração deve ser efetuada através dos arquivos

/etc/hosts.allow e /etc/hosts.deny

–Em /etc/hosts.deny são configuradas as regras para

negar serviços a determinados clientes, já em

/etc/hosts.allow configuram-se regras para permitir o

acesso a determinados clientes

Page 64: Unidade IV -Hardening Linux

[email protected]

Hardening: TCPWRAPPERS (3)

•As regras de controle de acesso, existentes nestes dois arquivos, têm o seguinte

formato:

lista_de_daemons : lista_de_clientes [: comando]

–lista_de_daemons: Lista de um ou mais nomes de daemons (como

especificados no /etc/inetd.conf), ou curingas.

–lista_de_clientes: Lista de um ou mais endereços ou nomes de máquinas,

padrões ou curingas utilizados para especificar quais clientes podem e quais não

podem acessar o serviço.

–comando (opcional): É possível executar um comando sempre que uma regra

casa com um padrão e é utilizada.

Page 65: Unidade IV -Hardening Linux

[email protected]

Hardening: TCPWRAPPERS (4)

•Curingas podem ser utilizados tanto na lista de

daemons quanto na lista de clientes.

–ALL

•Significa todos os serviços ou todos os clientes, dependendo apenas

do campo em que se encontra.

–LOCAL

•Este curinga casa com qualquer nome de máquina que não contenha

um caractere ponto “.”, isto é, uma máquina local.

–PARANOID

•Casa com qualquer nome de máquina que não case com seu

endereço. Isto geralmente ocorre quando algum servidor DNS está mal

configurado ou quando alguma máquina está tentando se passar por

outra.

Page 66: Unidade IV -Hardening Linux

[email protected]

PAM – Módulo de Autenticação Plugável

● O PAM possui métodos que podem auxiliar os métodos de

autenticações tradicionais, possibilitando que executem novas

funções. Ex: controle de horário em que o usuário possa logar-se.

● Crie uma política que não possibilite o uso de “su”, exceto pelos

usuários do grupo root.

# vi /etc/pam.d/su

auth required pam_wheel.so

Page 67: Unidade IV -Hardening Linux

[email protected]

PAM – Módulo de Autenticação Plugável (2)

● Possibilite ssh no horário das 7:30 às 19:00.

# vi /etc/security/time.conf

sshd;*;*;Al0730-1900

# vi /etc/pam.d/sshd

account required pam_time.so

Page 68: Unidade IV -Hardening Linux

[email protected]

PAM – Módulo de Autenticação Plugável (3)

•Desative a possibilidade de login do root através do PAM e o

arquivo time.conf:

# vi /etc/pam.d/login

account requisite pam_time.so

# vi /etc/security/time.conf

login;*;root;!Al0000-2359

Page 69: Unidade IV -Hardening Linux

[email protected]

PAM – Módulo de Autenticação Plugável (4)

•Onde:

login – indica o serviço

tty* – indica os terminas onde a política será

aplicada

root – determina que a política será aplicada ao

usuário root

!Al0000-2359 – indica o horário permitido, sendo que

“!” estabelece que horário não é permitido

Sintaxe: servicos;ttys;usuarios;tempos

Page 70: Unidade IV -Hardening Linux

[email protected]

Impor Limites e Recursos

•/etc/security/limits.conf – importante ajustar os

limites,para prevenir ataques DoS

•Acrescentar ou modificar as seguintes linhas em limits.conf para:

hard core 0 # proibir arquivos core

hard rrs 5000 # uso da memória 5M

hard nproc 20 # número de processos

•Editar /etc/pam.d/login e acrescentar session required /lib/security/pam_limits.so

•Evitar :(){ :|: &}; :

Page 71: Unidade IV -Hardening Linux

[email protected]

Segurança no Terminal: Limitar o uso de terminal de

texto

•Não é interessante deixar o login habilitado em

todos os terminais de texto. Para bloquear o

terminais 4,5 e 6, por exemplo, deve-se editar o

arquivo /etc/inittab e comentar as seguintes

linhas:

# vi /etc/inittab #4:23:respawn:/sbin/getty 38400 tty4 #5:23:respawn:/sbin/getty 38400 tty5 #6:23:respawn:/sbin/getty 38400 tty6

Page 72: Unidade IV -Hardening Linux

[email protected]

Bloquear login de root nos terminais de texto

# vi /etc/securetty

#tty1

#tty2

#tty3

#tty4

#tty5

#tty6

#tty7

#tty8

#tty9

#tty10

#tty11

#tty12

Page 73: Unidade IV -Hardening Linux

[email protected]

Bloquear o terminal com a variável TMOUT

•A variável TMOUT é que controla em quanto tempo

o terminal será deslogado em caso de desuso. Não

vem setada por padrão em sistemas Linux.Podemos

setá-la provisoria e manualmente:

# TMOUT=15

•Ou, definitivamente, inserido-a ao final do arquivo

/etc/profile

# vi /etc/profile

fi

fi

TMOUT=180

Page 74: Unidade IV -Hardening Linux

[email protected]

Remover shells válidas de certos usuários

•Deve-se remover as shells válidas de todos os usuários

que não vão executar oficialmente login no sistema, através

de terminal local (tty) ou via ssh. Executando o script

/root/invalidos.sh. Combinado a isso, crie um usuário

estratégico pertencente ao grupo root que terá validade

para que você possa utilizá-lo para realização de login e

posteriormente usar o “su” para tornar-se root.

# useradd -g root nome_usuario

# passwd nome_usuario

# vi /root/invalidos.sh

Page 75: Unidade IV -Hardening Linux

[email protected]

Remover shells válidas de certos usuários (2)

•Script /root/invalidos.sh

#!/bin/bash

for USER in $(cat /etc/passwd| cut -f 1 -d “:” | \

grep -v root | grep -v nome_usuario)

do chsh -s /bin/false $USER

done

Page 76: Unidade IV -Hardening Linux

[email protected]

Remover shells válidas de certos usuários (3)

•Para adotar essa política sempre que se criar um

novo usuário, é necessário editar os seguintes

arquivos.

•No Debian:

# vi /etc/adduser.conf

•Nesse arquivo, pode-se mudar a variável DSHELL

para um shell inválida

DSHELL=/bin/false

•No Red Hat:

# vi /etc/default/useradd

Page 77: Unidade IV -Hardening Linux

[email protected]

Log do Shell

•O shell bash armazenas os últimos comandos no

arquivo ~/.bash_history

•Todo usuário tem seu próprio arquivo .bash_history

•Reduzindo o número de comandos armazenados no

arquivo .bash_history pode manter protegidas as

senhas casualmente digitadas em linha de comando

•Assim, deve-se ajustar as variáveis HISTFILESIZE e

HISTSIZE que estão no arquivo /etc/profile para:

HISTFILESIZE = 20 HISTSIZE = 20

Page 78: Unidade IV -Hardening Linux

[email protected]

CONTROLE DE ACESSO DE USUÁRIOS

Page 79: Unidade IV -Hardening Linux

[email protected]

Removendo usuários desnecessários

•O arquivo /etc/passwd armazena os usuários ativos no sistema,

portanto, devemos deixar ativos os usuários que realmente

devam ter acesso, principalmente usuários que não necessitem de shell, substituir o /bin/bash ou /bin/sh por

/bin/false:

root:x:0:0:root:/root:/bin/bash

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

man:x:6:12:man:/var/cache/man:/bin/sh

lp:x:7:7:lp:/var/spool/lpd:/bin/sh

mail:x:8:8:mail:/var/mail:/bin/sh

news:x:9:9:news:/var/spool/news:/bin/sh

uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh

Page 80: Unidade IV -Hardening Linux

[email protected]

Data de expiração para conta de usuário

•Para tanto, utiliza-se o comando chage, que

modifica parâmetros do arquivo /etc/shadow

# chage -l teste

•Fazendo algumas modificações para o usuário

# chage -M 30 -W 5 -I 2 teste

# chage -l teste

•Onde:

-M é o tempo máximo de validade da conta

-W é o tempo de aviso

-I é o tempo antes de a conta ser desativada

Page 81: Unidade IV -Hardening Linux

[email protected]

Contas especiais

•Desabilitar todas as contas especiais

padrão do sistema, por exemplo, news,

games, ...

–Para apagar um usuário - userdel usuario

–Para apagar um grupo - groupdel usuario

–Tornar imutáveis os arquivos de contas # chattr +i /etc/shadow

# chattr +i /etc/passwd

# chattr +i /etc/group

# chattr +i /etc/gshadow

Page 82: Unidade IV -Hardening Linux

[email protected]

Políticas de senhas

•Alterar as configurações de login padrão:

- No arquivo /etc/login.defs PASS_MAX_DAYS 100

PASS_MIN_LENGTH 8

PASS_WARN_AG 10

•Limpar todas as informações de sistema

–/etc/motd

–/etc/issue & /etc/issue.net

Page 83: Unidade IV -Hardening Linux

[email protected]

Políticas de senhas (2)

•Algo muito importante, frequentemente

negligenciado

•Ajustar os valores corretos em /etc/login.defs

–Alterar PASS_MIN_LEN 5

–para PASS_MIN_LEN 8

–Alterar PASS_MAX_DAY 99999

–Alterar PASS_MAX_DAY 63

•apg – Automatic password generator

–http://www.adel.nursat.kz/apg/

Page 84: Unidade IV -Hardening Linux

[email protected]

Políticas de senhas (2)

•Algo muito importante, frequentemente

negligenciado

•Ajustar os valores corretos em /etc/login.defs

–Alterar PASS_MIN_LEN 5

–para PASS_MIN_LEN 8

–Alterar PASS_MAX_DAY 99999

–Alterar PASS_MAX_DAY 63

•apg – Automatic password generator

–http://www.adel.nursat.kz/apg/

Page 85: Unidade IV -Hardening Linux

[email protected]

Procurar por senhas fracas

•Pode-se usar o John The Ripper, que é uma

ferramenta de bruteforce, para descobrir senhas

fracas e desabilitar usuário.

# apt-get install john

# scp root@IP_servidor:/etc/shadow /root

# john /root/shadow

•Caso se queira fazer uma nova verificação, deve-se apagar o arquivo

john.spot

Page 86: Unidade IV -Hardening Linux

[email protected]

Hardening - SSH

•O serviço SSH é, atualmente, um dos

mais úteis para administradores de

sistemas

–Permite acesso remoto a máquinas

–Confidencialidade

–Autenticidade (para os que souberem usar)

–Automatização de atividades

Page 87: Unidade IV -Hardening Linux

[email protected]

Hardening – SSH (2)

•Configuração:

–Os arquivos de configuração normalmente ficam em:

/etc/ssh

–Normalmente temos estes arquivos moduli

sshd_config

ssh_host_dsa_key.pub

ssh_host_key.pub

ssh_host_rsa_key.pub

ssh_config

ssh_host_dsa_key

ssh_host_key

ssh_host_rsa_key

Page 88: Unidade IV -Hardening Linux

[email protected]

Hardening – SSH (3)

•Arquivo: /etc/ssh/sshd_config

•Configurações:

–Desabilitar login como root PermitRootLogin no

– Usar a separação de privilégios (neste caso

apenas algumas atividades são feitas com o

usuário root e as demais com outro usuário

do sistema)

•UsePrivilegeSeparation yes

Page 89: Unidade IV -Hardening Linux

[email protected]

Hardening – SSH (4)

•Checar as permissões dos arquivos e o donos do

mesmo StrictModes yes

•Desabilitar o sftp, comentando-o #Subsystem sftp /usr/lib/misc/sftp-server

Page 90: Unidade IV -Hardening Linux

[email protected]

Hardening – SSH (5)

•Desabilitar as autenticações baseadas em

confiança entre os hosts IgnoreRhosts yes

HostbasedAuthentication no

RhostsRSAAuthentication no

Page 91: Unidade IV -Hardening Linux

[email protected]

Hardening – SSH (6)

•Possibilite ssh no horário das 7:30 às 19:00.

# vi /etc/security/time.conf

ssh;*;*;Al0730-1900

# vi /etc/pam.d/ssh

account required pam_time.so

Page 92: Unidade IV -Hardening Linux

[email protected]

AJUSTANDO O KERNEL

Page 93: Unidade IV -Hardening Linux

[email protected]

Parâmetros de Tunning do Kernel

•Parâmetros pode ser ajustados em /etc/sysctl.conf

– editar /etc/sysctl.conf e acrescentar

net.ipv4.icmp.echo.ignore.all =1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

• Recusa a responder requisições de broadcast

net.ipv4.icmp.echo.ignore.broadcasts =1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

Page 94: Unidade IV -Hardening Linux

[email protected]

Parâmetros de Tunning do Kernel (2)

•Desabilitar redirecionamentos de ICMP

– editar /etc/sysctl.conf e acrescentar

net.ipv4.conf.all.accept_source_route =0

Reiniciar a rede digitando:

/etc/init.d/networking restart

• Ativar proteção TCP SYN Cookie (o recurso syncookies é

utilizado pelo sistema toda vez que fila de syn excede o valor

máximo)

net.ipv4.tcp_syncookies =1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

Page 95: Unidade IV -Hardening Linux

[email protected]

Parâmetros de Tunning do Kernel (3)

•Desabilitar redirecionamentos de ICMP

– editar /etc/sysctl.conf e acrescentar

net.ipv4.conf.all.accepts_redirects=0

• Reiniciar a rede digitando:

/etc/init.d/networking restart

• Ativar proteção contra fragmentação/desfragmentação

net.ipv4.ip_always_defrag=1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

Page 96: Unidade IV -Hardening Linux

[email protected]

Parâmetros de Tunning do Kernel (4)

•Ativar proteção contra mensagens inválidas bad-error

(roteadores que enviam broadcast frames com respostas

inválidas)

•editar /etc/sysctl.conf e acrescentar

net.ipv4.icmp_ignore_bogus_error_responses =1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

• Ativar proteção contra IP spoofing, ajuda a certificar que os

pacotes usam endereços de origem legítimos

net.ipv4.conf.all.rp_filter =1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

Page 97: Unidade IV -Hardening Linux

[email protected]

Parâmetros de Tunning do Kernel (5)

•Logar quaisquer pacotes de origem suspeita, forjados

ou redirecionados

– editar /etc/sysctl.conf e acrescentar

net.ipv4.conf.all.log_martians =1

• Reiniciar a rede digitando:

/etc/init.d/networking restart

Page 98: Unidade IV -Hardening Linux

[email protected]

REGISTROS DE LOGS NO SISTEMA

Page 99: Unidade IV -Hardening Linux

[email protected]

Servidor de Logs

• A necessidade de registro das atividades dos usuários e

serviços dos sistemas é, notoriamente, muito importante

para os administradores. A importância é tanta, que na

norma NBR ISO/IEC 17799,recomenda-se no item 9.7.1,

que diz respeito ao “Registro (log) de eventos”, ser

também prioridade uma política de segurança onde os

registros de logs devam atender às seguintes

características:

– Identificação dos usuários;

– Datas e horários de entrada (login, logout);

– Identidade do terminal, nome da máquina ou IP;

– Registro das tentativas de acesso aos aceitos e rejeitados;

– Registro das tentativas de acesso a outros recursos e dados

aceitos e rejeitados.

Page 100: Unidade IV -Hardening Linux

[email protected]

Syslog-ng

• O syslog-ng é um novo sistema de logs de

extrema facilidade de configuração e possui

grandes recursos.

• Para instalar basta executar:

# apt­get install syslog­ng

• Iremos configurar o Servidor e os Clientes para

enviarem seus logs para o Log Server

Page 101: Unidade IV -Hardening Linux

[email protected]

Syslog-ng (2)

• Estes são os passos mais importantes, configurar a

origem (source), destino (destination) e o filtro

(filter).

No filtro pode-se utilizar de algumas funções como:

facility() - Ex. facility(mail);

level() - Ex. level(notice);

program() - Ex. program(”^mysqld”);

Page 102: Unidade IV -Hardening Linux

[email protected]

Syslog-ng: Servidor

• Configuração do Servidor

# vi /etc/syslog­ng/syslog­ng.conf

Opções de Origem, Máquinas Remotas

source servremotos { udp();};

• Opções de Filtro

## Filtro para o Servidor Remote 1

filter f_servremoto1 {host(“192.168.0.1”);};

## Filtro para o Servidor Remote 2

filter f_servremoto2 {host(“192.168.0.2”);};

Page 103: Unidade IV -Hardening Linux

[email protected]

Syslog-ng: Servidor (2)

Configuração do Servidor

• Opções de Destino

# Destino do Logs do Servidor Remote 1

destination servremoto1{

file(“/var/logserver/servremoto1.log”

owner(“root”) group(“root”) perm(0640));};

# Destino do Logs do Servidor Remote 2

destination servremoto2{

file(“/var/logserver/servremoto2.log”

owner(“root”) group(“root”) perm(0640));};

Page 104: Unidade IV -Hardening Linux

[email protected]

Syslog-ng: Servidor (3)

Configuração do Servidor

• Opções de Log (Montagem do Log)

# Logs do Servidor Remote 1

log{source(servremotos);

filter(f_servremoto1);

destination(servremoto1);};

# Logs do Servidor Remote 2

log{source(servremotos);

filter(f_servremoto2);destination(servremoto2);};

• Reiniciar o Syslog-NG

# /etc/init.d/syslog­ng restart

Page 105: Unidade IV -Hardening Linux

[email protected]

Syslog-ng: Cliente

Configuração do Cliente (Servidor Remoto)

# vi /etc/syslog­ng/syslog­ng.conf

• Opções de Destino

destination servlog{ udp(“192.168.0.8” port(514));};

• Opções de Log (Montagem do Log)

# Registro dos Logs no Servidor

log{source(src); destination(servlog);};

source src { unix-dgram("/dev/log"); internal(); };

• Reiniciar o Syslog-NG

# /etc/init.d/syslog­ng restart

Page 106: Unidade IV -Hardening Linux

[email protected]

Rotacionamento de Logs

• Como os logs crescem muito rapidamente, deve-se

definir um política de logs e utiliza o recurso de

rotacionamento de logs nativo do sistema, o

LogRotate.

• O arquivo de configuração do rotacionamento no Debian é /etc/logrotate.conf e no Red Hat é

o /etc/rotate.conf

Page 107: Unidade IV -Hardening Linux

[email protected]

Rotacionamento de Logs (2)

Algumas opções do LogRotate

• weekly

Essa opção faz com os logs sejam rotacionados

semanalmente, mas também pode ser diariamente (daily)

• rotate 4

Define que serão mantidos os 4 últimos rotacionamentos

para não perder o controle

• mail root

Define, em que casos de erros de não tem existências de

logos,eles sejam enviados para o root

Page 108: Unidade IV -Hardening Linux

[email protected]

Rotacionamento de Logs (3)

Algumas opções do LogRotate

• create

Essa opção determina que sejam criados novos

arquivos de log(vazios), após os antigos rodarem

• compress

Essa opção determina que as cópias de logs

sejam compactadas, mantendo sempre o

último rodado descompactado

• Pode-se definir uma estrutura personalizada para

cada arquivo de log, como no exemplo mostrado ao final do arquivo

logrotate.conf

Page 109: Unidade IV -Hardening Linux

[email protected]

Rotacionamento de Logs (4)

• Mesmo o rotacionamento sendo determinado pelo arquivo de configuração logrotate.conf,

pode-se forçar a rodá-lo a qualquer momento,

manualmente, por meio do comando:

# logrotate /etc/logrotate.conf

• O controle das ações de rotacionamente é feito

por meio do contrab, o que pode ser observado

em:

# cat /etc/crontab

Page 110: Unidade IV -Hardening Linux

[email protected]

Perguntas? Dúvidas?