Com quantas mancadas se perde um servidor?
Neste episódio a galera do Hack 'n' Cast conta com a presença ilustre do ouvinte Fabio Beneditto e da figurinha carimbada Everton Melo para falar de um tema pouco comentado: Os vacilos que damos ao colocar um servidor GNU/Linux na internet. Mas calma, não será um episódio sobre historinhas de como demos mancadas, mas sim uma aula de o que não fazer e as boas práticas para se ter um servidor GNU/Linux mínimamente seguro nessa nossa internet sem porteira.
Para não perder nenhum episódio siga-nos nas redes sociais (Twitter e Facebook) ou inscreva-se (Feed, Podflix, iTunes e Pocket Casts). Você quer colaborar com o Hack 'n' Cast? Sugira um tema, nos ajude a produzir uma pauta ou participe conosco! Basta entrar em contato por E-mail, Facebook ou Twitter. E agora temos a nossa lista de discussão no Google Groups!
Senhas
Usar senhas fortes:
$ openssl rand 32 -base64
sktC7CUIlhDQ13RX4W6GPRa9waxSM6mnBUXtUCNq7ak=
Forçar troca de senhas:
# -m Max days; -m min days; -W warning
$ chage -M 60 -m 7 -W 7 username
SSH - Secure Shell
Criar um usuário;
$ useradd username
$ passwd username
Instalar e configurar o sudo (Super User Do);
$ yum install sudo
$ aptitude install sudo
$ usermod -aG sudo username
Desabilitar login com usuário root;
$ vim /etc/ssh/sshd_config
"PermitRootLogin no"
Criar e distribuir chaves SSH para usuários;
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
$ ssh-copy-id username@servername
Desabilitar logon com senha;
$ vim /etc/ssh/sshd_config
"PasswordAuthentication no"
"PubkeyAuthentication yes"
Mudar porta do servidor SSH
$ vim /etc/ssh/sshd_config
"Port 666"
Forçar o uso do Protocolo 2
$ vim /etc/ssh/sshd_config
"Protocol 2"
Restringir usuário permitidos:
$ vim /etc/ssh/sshd_config
"AllowUsers gooduser1 gooduser2"
"DenyUsers baduser1 baduser2"
Iptables
Saídas somente de conexões já estabelecidas
$ iptables -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
Pacotes inválidos
$ iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
Novos pacotes que não sejam SYN
$ iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW -j DROP
Bloqueia pacotes com flags TCP inválidas
$ iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
$ iptables -A INPUT -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
$ iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$ iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$ iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
$ iptables -A INPUT -p tcp --tcp-flags FIN,ACK FIN -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROP
$ iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
Bloqueia redes privadas (spoofing)
$ iptables -A INPUT -s 224.0.0.0/3 -j DROP
$ iptables -A INPUT -s 169.254.0.0/16 -j DROP
$ iptables -A INPUT -s 172.16.0.0/12 -j DROP
$ iptables -A INPUT -s 192.0.2.0/24 -j DROP
$ iptables -A INPUT -s 192.168.0.0/16 -j DROP
$ iptables -A INPUT -s 10.0.0.0/8 -j DROP
$ iptables -A INPUT -s 0.0.0.0/8 -j DROP
$ iptables -A INPUT -s 240.0.0.0/5 -j DROP
$ iptables -A INPUT -s 127.0.0.0/8 ! -i lo -j DROP
Bloqueia ping
$ iptables -A INPUT -p icmp -j DROP
Limita novas conexões da mesma origem a 20/minuto
$ iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m limit --limit 60/s --limit-burst 20 -j ACCEPT
$ iptables -A INPUT -p tcp -m conntrack --ctstate NEW -j DROP
Demais Links Citados
- Fail2Ban - Detectar/Bloquear força bruta;
- Port Knocking;
- Serviços;
- SQL Injection o Que Como Detectar e Como Evitar;
- Bobby Tables;
- Desenvolvimento Seguro Identificando Possveis Vulnerabilidades de Paginas Web Com SQLMap;
- AIDE;
Músicas do Episódio
East of Tunesia - Kevin MacLeod (Creative Commons Attribution);
Orange - Topher Mohr and Alex Elena (Royalty Free);
Black Box - Silent Partner (Royalty Free);
- TRG Banks, Album 'Instrumental' (Royalty Free):
- David Hemmings;
- Cigar;
- Keith in 1987;
- Horse Ride 2;
- Packed Lunch;
- Monplaisir, album 'Free To Use' (Royalty Free):
- Free To Use 2;
- Free To Use 3;
- Free To Use 5;
- Free To Use 6;
- Monplaisir, album 'Fifty Seconds of Rain' (Royalty Free):
- This is Not a Rock Song;
- Narcissus smells like headache;
- TRG Banks, Album 'This Train Doesn't Stop at Rugby' (Royalty Free):
- This Train Doesn't Stop at Rugby
- Goodbye Earth
- Above the Earth
- First Stop
- Through the Gravitational Field
Edição por Daniel Capua.
Comments
comments powered by Disqus