Segurança
Segurança em
em Servidores
Servidores Linux
Linux
Por Alessandro Silva
@alessssilva
Segurança em Servidores Linux
Sobre o palestrante
●
Bacharel em Informática e Especialista em TI Aplicada a Educação pelo NCE/UFRJ.
●
Pós-graduando em Gerência de Segurança da Informação – NCE/UFRJ
●
Mais de 10 anos na indústria de TI e 7 somente com Linux.
●
Certificações: LPIC-3, Red Hat Certified System Administrator, Novell CLA e DCTS,
Zabbix Certified Specialist e Zabbix for Large Enviroments.
●
Desde 2011 trabalhando com projetos de monitoração com Zabbix.
●
Principais interesses:
●
●
●
●
Linux e Certificações
Segurança
Zabbix
Drupal
@alessssilva
Segurança em Servidores Linux
Agenda
●
Hardening da Instalação
●
Mecanismos de proteção
●
Controle de acessos
●
Fortalecendo serviços
●
Soluções de segurança para Linux
●
Planejamento do ambiente seguro
●
Hardening de Kernel
●
Monitoramento
●
Planos de Contingência e Recuperação de Desastres
●
Certificações em Segurança para Linux
@alessssilva
Segurança em Servidores Linux
O que queremos proteger?
Disponibilidade
Confidencialidade
Integridade
@alessssilva
Segurança em Servidores Linux
Segurança na Instalação
@alessssilva
Segurança em Servidores Linux
Instalação
●
Se existe acesso físico à máquina, a segurança é inexistente!
●
Acesso ao servidor
–
Rack
–
Segurança física e controle de acesso
●
Fonte redundante
●
No-break
●
Desabilitar periféricos não usados no setup
●
Senha no setup
●
Implementar RAID para redundância
–
Preferencialmente por hardware (performance)
@alessssilva
Segurança em Servidores Linux
Instalação
●
Escolha sua distribuição!
–
Confiabilidade
–
Suporte
–
Atualização
–
Estabilidade
@alessssilva
Segurança em Servidores Linux
Instalação
●
Qual a fonte da imagem ISO?
–
●
Particionamento dos discos
–
●
Instalação Minimal/Netinstall
Planejamento do particionamento
●
Diminui o tempo de acesso aos dados
●
Facilita a recuperação de desastres
●
Minimiza problemas de indisponibilidade por espaço em disco
Swap
–
Prefira não usar. Se não tiver escolha, usar SSD!
@alessssilva
Segurança em Servidores Linux
Instalação
●
Particionamento dos discos
–
Para garantir extensibilidade, use
root@myserver [~]# df -h
Sist. Arq.
Tam
/dev/sda5
7,8G
/dev/sda8
383G
/dev/sda6
4,9G
/dev/sda3
25G
/dev/sda2
30G
/dev/sda1
996M
tmpfs
1009M
/dev/sdb1
459G
Usad Disp Uso%
1,1G 6,4G 14%
82G
282G
139M
4,5G
7,6G
16G
4,5G
24G
51M
894M
0
1009M
360G
76G
LVM!
Montado em
/
23%
/home
3%
/tmp
34%
/usr
17%
/var
6%
/boot
0%
/dev/shm
83%
/backup
@alessssilva
Segurança em Servidores Linux
Instalação
●
Instale apenas os pacotes necessários
●
Pacotes do sistema precisam vir de fonte segura
@alessssilva
Segurança em Servidores Linux
Instalação
●
Proteja o gerenciador de boot (Grub) com senha
@alessssilva
Segurança em Servidores Linux
Segurança no Acesso à Rede
●
Retirar a máquina da rede
●
Identificar os serviços com suporte
●
Alterar a configuração do sistema de modo que apenas os
serviços necessários estejam ativos
–
Dependência
●
Reinicializar o sistema
●
Verificar se serviços desnecessários estão sendo executados
●
Retornar a máquina à rede e verificar a conectividade
@alessssilva
Segurança em Servidores Linux
Fortalecimento pós-instalação
@alessssilva
Segurança em Servidores Linux
Configurações Pós-instalação
INITTAB
●
●
Controlando terminais
–
1:2345:respawn:/sbin/getty 38400 tty1
–
2:23:respawn:/sbin/getty 38400 tty2
–
3:23:respawn:/sbin/getty 38400 tty3
–
4:23:respawn:/sbin/getty 38400 tty4
–
5:23:respawn:/sbin/getty 38400 tty5
–
6:23:respawn:/sbin/getty 38400 tty6
Alterando comportamento
–
●
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Definir o RunLevel default
@alessssilva
Segurança em Servidores Linux
Ativando e desativando serviços
●
●
Debian
–
rcconf
–
chkconfig
Red Hat
–
ntsysv
–
chkconfig
root@thinktoy:/home/alessandro# chkconfig --list apache2
apache2
0:off 1:off 2:on 3:on 4:on 5:on 6:off
@alessssilva
Segurança em Servidores Linux
Ativando e desativando serviços
HTOP ( Hisham's Top) – Criado por um brasileiro
●
●
●
●
NMON
netstat
ps
top, htop, nmon
lsof, pgrep
@alessssilva
Segurança em Servidores Linux
Ativando e desativando serviços
TCP
root@myserver [~]# netstat -tnap
Conexões Internet Ativas (servidores e estabelecidas)
Proto Recv-Q Send-Q Local Address
Foreign Address
tcp
0
0 0.0.0.0:40001
0.0.0.0:*
tcp
0
0 0.0.0.0:1
0.0.0.0:*
tcp
0
0 0.0.0.0:993
0.0.0.0:*
tcp
0
0 0.0.0.0:10050
0.0.0.0:*
tcp
0
0 0.0.0.0:80
0.0.0.0:*
tcp
0
0 0.0.0.0:995
0.0.0.0:*
State
OUÇA
OUÇA
OUÇA
OUÇA
OUÇA
OUÇA
PID/Program name
6041/java
4904/portsentry
4332/dovecot
4017/zabbix_agentd
2412/httpd
4332/dovecot
UDP
root@myserver [~]# netstat -napu
Conexões Internet Ativas (servidores e estabelecidas)
Proto Recv-Q Send-Q Local Address
Foreign Address
udp
0
0 184.172.190.78:53
0.0.0.0:*
udp
0
0 184.172.190.79:53
0.0.0.0:*
udp
0
0 184.172.190.80:53
0.0.0.0:*
@alessssilva
State
PID/Program name
3561/named
3561/named
3561/named
Segurança em Servidores Linux
Limitando os recursos
●
Limitando o acesso root aos terminais
–
●
/etc/securetty
Forçar logout para o usuário
–
.bashrc ou /etc/profile
●
●
TMOUT=360
Limitando o acesso aos recursos
–
/etc/security/limits.conf
–
Evite o forkbomb
●
:(){ :|: &};:
@alessssilva
Segurança em Servidores Linux
Limitando os recursos
●
Máximo de processos executados simultaneamente
root@thinktoy:/home/alessandro# ulimit -u
46601
●
Tempo máximo de utilização da CPU
root@thinktoy:/home/alessandro# ulimit -t
Unlimited
●
Máximo de arquivos que podem ser criados pelo usuário
root@thinktoy:/home/alessandro# ulimit -f
unlimited
@alessssilva
Segurança em Servidores Linux
Firewalls e Filtros
●
Servir como separação entre sua rede e a Internet
●
Permitir o uso legítimo da rede
●
Impedir tráfego indevido ao servidor (malicioso)
●
Iptables
–
Avaliação
–
Busca de regras existentes
●
# iptables -nL
–
Identificação das necessidades de proteção
–
Definição da estratégia
@alessssilva
Segurança em Servidores Linux
Firewalls e Filtros
Ferramenta de administração do Firewall no Red Hat
@alessssilva
Segurança em Servidores Linux
Firewalls e Filtros
●
Endian
●
ClearOS
●
Smoothwall
●
Untangle
●
BrasilFW
●
PFSense (Free BSD)
●
Vyatta
@alessssilva
Segurança em Servidores Linux
Firewalls e Filtros
●
Utilização de Proxy
–
Performance
–
Controle de acesso
●
Autenticação e autorização
●
Filtro de conteúdo (por página, por usuário...)
●
Relatórios de acessos com SARG
@alessssilva
Segurança em Servidores Linux
TCP Wrappers
●
TCP Wrapers
–
Ferramenta para autorizar ou negar acesso aos serviços.
–
Utiliza a biblioteca Libwrap
–
Para fins de controle utiliza os arquivos:
–
●
/etc/hosts.allow
●
/etc/hosts.deny
Pode ser utilizada em conjunto com firewall
@alessssilva
Segurança em Servidores Linux
Controle de Acessos
●
●
●
MAC (Mandatory Access Control)
–
SELINUX (Security-Enhanced Linux)
–
Padrão no Red Hat Enterprise Linux
DAC (Discricionary Access Control)
–
Chmod
–
Chattr
ACL (Access Control List)
–
Filesystem
@alessssilva
Segurança em Servidores Linux
Controle de Acessos
●
Permissões
●
Permissões especiais
–
●
Atributos
–
●
SUID, SGID e Stick bit
chattr, lsattr
Revisão nos controles de acesso
root@thinktoy:/home/alessandro# find / -type d -perm -1000 -ls
6422529 4 drwxrwxrwt 20 root root
4096 Jun 13 12:20 /tmp
6438915 4 drwxrwxrwt 2 root root
4096 Jun 13 12:19 /tmp/.ICE-unix
●
SUDO
@alessssilva
Segurança em Servidores Linux
Auditoria
●
●
Visualizando os últimos comandos
–
apt-get install Acct
–
lastcomm
Registrando todos os comandos
–
apt-get install snoopy
–
tail -f /var/log/auth
root@thinktoy:~# lastcomm root
ls
root pts/2
cat
root
pts/2
bash
F
root
pts/2
ifconfig
root
pts/2
apt-get
root
pts/2
dpkg
root
pts/2
0.00 secs Sat Jun 22 13:30
0.00 secs Sat Jun 22 13:30
0.00 secs Sat Jun 22 13:30
0.00 secs Sat Jun 22 13:29
2.03 secs Sat Jun 22 13:29
0.00 secs Sat Jun 22 13:29
@alessssilva
Segurança em Servidores Linux
Auditoria
Política de senhas
root@thinktoy:/home/alessandro# chage -l alessandro
Última mudança de senha
: Mar 16, 2013
Senha expira
: nunca
Senha inativa
: nunca
Conta expira
: nunca
Número mínimo de dias entre troca de senhas
:0
Número máximo de dias entre troca de senhas
: 99999
Número de dias de avisos antes da expiração da senha : 7
/etc/login.defs
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
LOGIN_RETRIES
5
LOGIN_TIMEOUT
60
LOGIN_TIMEOUT
60
@alessssilva
Segurança em Servidores Linux
Auditoria
Who
root@espiritolivre [~]# who
root pts/0
2013-06-29 12:53 (186.241.100.67)
root pts/1
2013-06-29 12:08 (200.97.200.182)
Last
root@espiritolivre [~]# last
root pts/0
186.241.219.201 Sat Jun 29 12:53 still logged in
root pts/1
200.97.237.48 Sat Jun 29 12:08 still logged in
root pts/0
146.164.2.145 Wed Jun 26 10:37 - 11:45 (01:07)
root pts/0
173.193.65.163 Tue Jun 25 16:23 - 16:26 (00:03)
@alessssilva
Segurança em Servidores Linux
Segurança no Armazenamento de Dados
●
OpenSSL
●
GPG
–
●
Útil para validar a autenticidade e integridade dos pacotes
Criptografia do Filesystem
–
Um notebook do EB foi esquecido em um taxi com informações
confidenciais. E agora?
puppy# gpg --verify gnupg-1.2.4.tar.bz2.sig
gpg: Signature made Wed 24 Dec 2003 07:24:58 EST using DSA key ID 57548DCD
gpg: Good signature from "Werner Koch (gnupg sig) <[email protected]>"
gpg: checking the trustdb
gpg: no ultimately trusted keys found
gpg: WARNING: This key is not certified with a trusted signature!
There is no indication that the signature belongs to the owner.
Fingerprint: 6BD9 050F D8FC 941B 4341 2DCC 68B7 AB89 5754 8DCD
@alessssilva
Segurança em Servidores Linux
Segurança no Armazenamento de Dados
●
Backup
●
Estratégia de backup
–
Storage, fita …
–
Rotina de backup
–
Software para backup
●
Bacula
●
Amanda
@alessssilva
Segurança em Servidores Linux
Autenticação de usuários e grupos
●
PAM
●
OpenLDAP
●
Politica de controle de acesso
–
●
●
Existe processo para desabilitar um usuário desligado da empresa?
Política de senhas
–
Senhas seguras com letras, números e caracteres especiais
–
Evitar senhas do tipo: empresa@2013, 123qwe, 123456, etc.
–
Senhas conhecidas por constarem em wordlists
Engenharia social
@alessssilva
Segurança em Servidores Linux
Serviços – Alguns dos riscos
●
Serviços inseguros
–
Denial of Service Attack (DoS)
–
Distributed Denial of Service Attack (DDoS)
–
Script Vunerability Attacks
–
Buffer Overflow Attacks
@alessssilva
Segurança em Servidores Linux
Serviços – SSH
●
Manter atualizado!
●
Acesso remoto ao shell dos servidores
●
Tráfego criptografado
●
Faz tunelamento com segurança
●
Autenticação por senha ou certificado
●
Indispensável para SysAdmins Linux
@alessssilva
Segurança em Servidores Linux
Serviços – SSH
●
/etc/ssh/sshd_config
Port 22
Protocol 2
PermitRootLogin yes
LoginGraceTime 60
PermitEmptyPasswords no
Allow users tux linus
Banner /etc/issue
●
USE CHAVES!!!
@alessssilva
Segurança em Servidores Linux
Serviços – SSH
●
Banner de boas-vindas
–
/etc/issue e /etc/issue.net
root@APPTDO43SPOAS:~# cat /etc/issue.net
Debian GNU/Linux 6.0
●
Configure no SSH
–
/etc/ssh/sshd_config
Banner /etc/issue
●
Conceito deve ser aplicado a outros serviços
@alessssilva
Segurança em Servidores Linux
FTP - VSFTPD
●
VSFTPD (Very Secure FTP Daemon)
●
Existem várias soluções
–
ProFTPD, Pure-Ftpd, etc.
●
Performance
●
Estabilidade
●
Amplamente utilizado
●
Manter atualizado!
●
Enjaular (CHROOT)
@alessssilva
Segurança em Servidores Linux
FTP - VSFTPD
●
ftpd_banner=FTP Server
–
●
anonymous_enable=NO
–
●
Permite que o usuário grave informações
userlist_enable=YES
–
●
Desabilita o login anônimo
write_enable=YES
–
●
Esconder banner
userlist_file=/etc/vsftpd.allowed_users
chroot_local_user=YES
–
Enjaule usuários
@alessssilva
Segurança em Servidores Linux
FTP - VSFTPD
●
Controle de acesso
–
●
●
/etc/ftpusers
Prevenindo ataques de DoS
–
ls_recurse_enable=NO
–
max_clients=200
–
max_per_ip=4
FTP com SSL
@alessssilva
Segurança em Servidores Linux
Web Server
●
Manter o software atualizado!
●
Adicionar suporte a conexões criptografadas
●
Observar os módulos de segurança disponíveis
–
Mod_security, mod_evasive, mod_access, mod_authz
●
Ajuste das configurações adequadamente
●
Diretórios restritos
–
●
.htaccess e htpasswd
Testar as configurações antes de aplicar em produção
–
apachectl configtest
–
apachectl graceful!
@alessssilva
Segurança em Servidores Linux
Syslog Centralizado
E-mail
Servidor de Syslog
@alessssilva
SysAdmin
Segurança em Servidores Linux
Tunando o Kernel
●
/proc/sys/net/ipv4/tcp_syncookies
–
●
/proc/sys/net/ipv4/ip_default_ttl
–
●
Bloqueio de pacotes ICMP
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
–
●
Engana o “OS guessing” em scans
/proc/sys/net/ipv4/icmp_echo_ignore_all
–
●
Tenta evitar SYN ATACK que causa uma negação de serviço
Ignora mensagens enviadas para brodcast
/proc/sys/net/ipv6/conf/all/disable_ipv6
–
Desabilita IPV6
@alessssilva
Segurança em Servidores Linux
Software de apoio a Hardening
●
Fortalecimento da instalação
–
Bastile
–
Harden
@alessssilva
Segurança em Servidores Linux
Gestão de Atualizações
●
Aplicar atualizações
–
A maior parte dos ataques bem-sucedidos ocorrem em softwares não
atualizados
●
Monitoramento após a aplicação
●
Gestão de mudanças
●
Viabilidade
@alessssilva
Segurança em Servidores Linux
Monitoramento da Infraestrutura
●
Possíveis Modelos
- Versões enterprise e community
- Tudo incluído
●
Open Source de verdade
●
Sem add-ons proprietários
●
Sem versões enterprise ou demo
@alessssilva
Segurança em Servidores Linux
Monitoramento
Dispositivos monitorados
Notificações
ração
Monito
Controle
Centralizado
SNMP
Dispositivos de rede
Monitoração com agente
Monit
oraçã
o
com p
ing e
po
Configuração
Status
Checagens
Servidores com
Agente Zabbix
rta
Servidores sem
Agente Zabbix
@alessssilva
Segurança em Servidores Linux
Soluções de Segurança para Linux
●
TCPDUMP
●
Netcat
●
Wireshark
●
Nmap
●
Ngrep
●
John the Ripper
●
Ethereal
●
OpenVAS
●
Snort
●
CHKRootkit
●
Tripwire
●
OpenVPN
●
Aide
●
Backtrack Linux
@alessssilva
Segurança em Servidores Linux
BIA - Business Impact Analisys
●
Quanto tempo pode ficar parado em caso de um incidente?
●
Qual o impacto da indisponibilidade no negócio?
●
Quais os requisitos mínimos para retorno a normalidade?
●
Há contingência?
●
Em caso de um desastre, qual o tempo necessário para
retorno a normalidade?
@alessssilva
Segurança em Servidores Linux
Planejamento do ambiente
●
Quais serviços serão hospedados?
●
Qual os níveis de acesso?
●
Quantos usuários terão acesso?
–
●
Quantos simultâneos?
Qual a criticidade do servidor?
@alessssilva
Segurança em Servidores Linux
PCO – Plano de Contingência
●
●
Quais os componentes mínimos para manutenção dos
serviços do servidor até o retorno a normalidade?
Contingência não significa 100% de funcionamento
–
100% significa redundância!
●
Contingência pode ser “não fazer nada”
●
Contingência pode ser ...
@alessssilva
Segurança em Servidores Linux
PRD – Plano de Recuperação de Desastres
●
Aplicado ao componente
●
Construir ou não um kernel personalizado?
●
Kickstart
●
Clonezilla
@alessssilva
Segurança em Servidores Linux
Especialista em Segurança - Linux
Certificação LPI
Security Speciaslist
LPIC-3
(Especialização)
Prova 303
LPIC-1
LPIC-2
LPIC-3
Provas 101 e 102
Provas 201 e 202
Prova 301 (core)
@alessssilva
Segurança em Servidores Linux
Certificação em Segurança - Linux
Certificação Red Hat
Network Services
RH333
Directory Services
RH423
SELINUX
RH429
RHCE
RHCSA
@alessssilva
Segurança em Servidores Linux
Referências
●
Hardening Linux – Packet Publisher
●
Segurança para Linux, Mc Grall Hill
●
Backtrack Linux – Auditora de teste de invasão, CM
●
Guia de Segurança do RHEL
●
Palestra: Certificação em Linux: O que é e como se certificar
●
Palestra: Monitoramento de Infraestrutura com Zabbix
@alessssilva
Segurança em Servidores Linux
Obrigado!
Alessandro Silva
E-mail: [email protected]
Facebook: http://alessandrosillva.info/facebook
Twitter: http://alessandrosilva.info/twitter
Linkedin: http://alessandrosilva.info/linkedin
@alessssilva
Download

Segurança em Servidores Linux