Bloqueio de repetidas tentativas de login ao seu Linux
Esse artigo mostra como implementar um sistema de segurança para bloqueio de ataques brute-force em seu servidor SSH. Ao mesmo tempo também mostra como criar um esquema para permitir acesso remoto (para manutenção) a partir de qualquer IP da internet.
Parte 7: Afinando o seu sistema....
1. hosts.deny, hosts.allow
Algumas pessoas em listas da internet recomendam que nos arquivos /etc/hosts.deny e /etc/hosts.allow fossem bloqueados domínios como cz, cn, net.cn, cn.com, ar, cl...
Mas depois de 1 mês analisando os logs, não achei nenhuma tentativa de acesso destes domínios.
Também achei referências dos acessos ao sshd via endereçamento ipv6 não serem bloqueados via tcpwrappers.
Para fazer com que o SSH somente seja acessível pelo ipv4, edite o seu /etc/ssh/sshd_config e na opção "ListenAddress", somente deixe o endereçamento no estilo ipv4:
Algumas pessoas em listas da internet recomendam que nos arquivos /etc/hosts.deny e /etc/hosts.allow fossem bloqueados domínios como cz, cn, net.cn, cn.com, ar, cl...
Mas depois de 1 mês analisando os logs, não achei nenhuma tentativa de acesso destes domínios.
Também achei referências dos acessos ao sshd via endereçamento ipv6 não serem bloqueados via tcpwrappers.
Para fazer com que o SSH somente seja acessível pelo ipv4, edite o seu /etc/ssh/sshd_config e na opção "ListenAddress", somente deixe o endereçamento no estilo ipv4:
ListenAddress 0.0.0.0
A menos que você seja um feliz usuário do ipv6!
se porventura a linha abaixo estiver descomentada, comente-a!
#ListenAddress ::
Isso vai impedir o sshd responda a endereços ipv6.
Bem, como o seguro morreu de velho, eu restringi o acesso ao daemon sshd apenas aos domínios .com e .br (imagino que nenhum de nós irá acessar da Finlândia por exemplo).
Ficou assim a minha configuração nos arquivos /etc/hosts.deny:
sshd: PARANOID ALL EXCEPT .com .br UNKNOWN
/etc/hosts.allow:
sshd: 172.24.12. 127.0.0.1 .com .br UNKNOWN : spawn (echo | /usr/bin/mail -s "[ SSH ] - %c - %u %h %s" root) &
Explicações a respeito do PARANOID e do UNKNOWN:
- PARANOID faz uma verificação para saber se provavelmente o acesso está sendo spoofado... por exemplo, um host que diz ter um IP, mas o reverso não bate... ou seja, altamente suspeito.
- UNKNOWN faz referência aos IPs que não possuem reverso definido... como por exemplo os acessos vindos de dial-ups do IG (a grande maioria dos nossos acessos são feitos a partir de provedores que não se preocupam minimamente com o reverso... fazer o quê, não é?).
- Diferente do Brasil e .com;
- Com reverso incorreto.
- A origem seja no Brasil ou .com;
- Sem reverso (provedores brasileiros, eca).
Alguém tinha me sugerido que fosse colocado no hosts.allow por faixa de IPs... mas é impraticável, as universidades públicas de SP usam a faixa 143.10x, a maioria dos provedores usam a faixa 200.x e agora estou vendo provedores usando a 201.x... ou seja, o risco de "esquecermos" alguém fica enorme e a chance de bloquearmos nós mesmos usando um provedor com IPs diferentes aumenta e muito.
Por fim, uma ótima prática de segurança consiste em editar o arquivo /etc/ssh/sshd_config e na tag "AllowUsers" colocar os usuários que possam realizar acesso via SSH.
Com a prática e a análise dos logs, é possível uma personalização maior com um aumento das regras de faixas de IPs bloqueados. Mas isso cabe a cada administrador pesar na sua balança.
Não se esqueçam que este é um artigo escrito para quem precisa acessar o sistema remotamente dentro de um dado perímetro geográfico e geralmente em um estado de nervos que beira ao desespero!!! rs
Eu gostaria de citar outros dois softwares que utilizo para bloquear IP´s de atacantes em meu servidor:
APF Firewall
http://www.rfxnetworks.com/apf.php
Descrição: Firewall baseado em IPTables de fácil configuração e muito eficiente. A configuração é feita através de um .conf simples onde são informadas as portas a serem liberadas/bloqueadas, além de outras funcionalidades tanto para portas tcp como udp, além de bloquear ataques via ICMP (Denial of Service por exemplo) pois possui embutido um "anti-DOS". Utiliza a lista negras de IP´s que é atualizada frequentemente através do site www.dshiel.org (Distributed Intrusion Detection System), onde constam os IP´s utilizados com maior frequência para fins ilícitos.
-------------------------------------------
BFD - Brute Force Detect
http://www.rfxnetworks.com/bfd.php
Descrição: Em conjunto com o APF Firewall, detecta tentativas de acesso não autorizada a serviços como SSH, Apache, EXIM, FTP, etc. Após 5 tentativas de acesso sem sucesso, o IP de origem é "dropado" no IpTables e o administrador do servidor pode ser avisado por e-mail.
Ambos são desenvolvidos pelo RFX Networks e são free e de uso irrestrito. Não é preciso manjar de IpTables, basta saber quais portais você quer liberar/fechar e eles fazem o trabalho.
É isso ai!
Abraço, Fernando.