Iptables com recent
Dica publicada em Linux / Segurança
Iptables com recent
Com a necessidade de se chegar a um grau de segurança maior, vou demonstrar abaixo um módulo do iptables, que é muito interessante.
Segue um dica para deixar as portas de alguns serviços em específico fechadas e abri-las quando bem entender, apenas para você. Essa dica se baseia no SSH (porta 22).
Fui alvo de grandes ataques de brute force no serviço de SSH, então desenvolvi um script que analisa o log e bloqueia o IP do atacante, mas como já existia um na net dei uma implementada para alcançar um funcionalidade maior. Mesmo assim, interminantemente novos IP vem querendo acessar o SSH sem permissão. Desta forma busquei um saída e achei o módulo "recent" no iptables. Com ele, você pode deixar uma porta fechada, e abri-la de acordo com uma regra específica.
Veja:
1)
Segue um dica para deixar as portas de alguns serviços em específico fechadas e abri-las quando bem entender, apenas para você. Essa dica se baseia no SSH (porta 22).
Fui alvo de grandes ataques de brute force no serviço de SSH, então desenvolvi um script que analisa o log e bloqueia o IP do atacante, mas como já existia um na net dei uma implementada para alcançar um funcionalidade maior. Mesmo assim, interminantemente novos IP vem querendo acessar o SSH sem permissão. Desta forma busquei um saída e achei o módulo "recent" no iptables. Com ele, você pode deixar uma porta fechada, e abri-la de acordo com uma regra específica.
Veja:
1)
iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --rcheck --name SSH --rsource --seconds 60 --hitcount 3 -j ACCEPT
1.1)
Libere para a lista (--name SSH) as tentativas de conexão que tentam acessar (destino) a porta 22 do protocolo tcp verificando no módulo recent (--rcheck) que tenham 3 ou mais entradas (--hitcount 3) na lista (--name SSH).
2)
iptables -A INPUT -p tcp -m tcp --dport 22323 -m state --state NEW -m recent --name SSH --remove -j DROP
2.1)
Negue as tentativas de novas conexões (-m state --state NEW) a porta (destino) 22323 e remova (--remove) da lista (--name SSH) o IP da tentativa de conexão.
3)
iptables -A INPUT -p tcp -m tcp --dport 22324 -m state --state NEW -m recent --set --name SSH --rsource -j DROP
3.1)
Negue a tentativa de novas conexões (-m state --state NEW) de acesso (destino) à porta 9837 e adicione (--set) o IP da tentativa (--rsource) a lista (--name SSH).
4)
iptables -A INPUT -p tcp -m tcp --dport 22325 -m state --state NEW -m recent --name SSH --remove -j DROP
4.1)
Negue as tentativas de novas conexões (-m state --state NEW) a porta (destino) 22323 e remova (--remove) da lista (--name SSH) o IP da tentativa de conexão.
Quando alguém tentar se conectar com o SSH, pela porta 22, o firewall irá negar a tentativa de conexão, agora se você der um telnet, ou melhor, enviar um pacote tcp com a flag syn setada (sinônimo de nova conexão) à porta 22324, o iptables irá colocar o seu IP em um arquivo, denominado SSH em /proc/net/ipt_recent, se neste arquivo o IP das tentativas estiver se repetindo 3 vezes em um período de tempo de 60 segundos, o iptables abrirá a porta 22 (SSH) para o IP. E quando o IP enviar um pacote com a flag syn setada (telnet por exemplo) para a porta 22323 ou 22325 o iptables retirará a regra que abre a porta e o IP da lista (/proc/net/ipt_recent/SSH).
Outra coisa interessante de se citar, é o fato de ter duas portas fechando e estarem antes e depois da porta que abre. Com esse esquema, se alguém der um nmap em seu firewall, ele passará pela porta 22323, como o IP não está na lista, o firewall não faz nada, e depois passa na porta 22324, aí sim o firewall adiciona o IP da máquina na lista, mas logo em seguida passa pela porta 22325 e o firewall o retira da lista, ficando assim muito difícil de alguém conseguir abrir a porta SSH do seu firewall, e ainda mais, ele tem que tentar três conexões na porta 22324 para o firewall poder abrir a 22. Eu particularmente acho "QUASE IMPOSSÍVEL" de alguém conseguir abrir a porta, mas você sabe né, segurança é cruel, quanto mais se tenta deixar seguro, sempre descobre algo novo!!!
Um abraço,
Ivan Santos.