iptables (iptables)

Port Knocking para acesso SSH

Categoria: Segurança

Software: iptables

[ Hits: 12.549 ]

Por: Gustavo Vasconcelos


Este arquivo (/etc/sysconfig/iptables no Fedora Core 3) bloqueia o acesso á sua máquina na rede, inclusive para SSH inicialmente. Para acessar é necessário um port knocking (bater na porta) na porta 1600 (que será descatado - DROP), que pode ser feito com um simples telnet para que a porta 22 se abra. Após a conexão via SSH outro knocking na porta 1599 ou 1601 torna a fechar (sem desconectar o cliente já logado).

Este método é ótimo para evitar port scanners (já que o método DROP evita qualquer envio de informações da máquina, ao contrário de um REJECT) e já que a porta que abrirá o SSH fica entre duas que fecham  qualquer port scan incremental/decremental vai tornar a fechar a porta após abrí-la.

(Este conf NÃO É DE MINHA AUTORIA, encontrei-o na Internet algum tempo atrás, em site que não mais recordo. Estou colocando-o aqui por ser um lugar seguro e sempre acessível a outros usuários.)


*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -s 10.0.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --rcheck --name SSH -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1599 -m recent --name SSH --remove -j DROP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1600 -m recent --name SSH --set -j DROP
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1601 -m recent --name SSH --remove -j DROP
-A RH-Firewall-1-INPUT -j DROP
COMMIT
  


Comentários
[1] Comentário enviado por isaacson em 01/05/2005 - 18:06h

é muito bom vou configurar na minha maquina para fazer os testes ok

[2] Comentário enviado por y2h4ck em 02/05/2005 - 09:54h

Caro Tango, estou tentando realizar alguns testes com essa configuraçao para
tenta coloca-la em desenvolvimento. Porem meus testes nao estão tendo muita produtividade. Sera que poderiamos conversar para que eu possa analisar algumas impressoes melhores sobre este script ?

Agradeço

[3] Comentário enviado por Tango em 02/05/2005 - 11:03h

Olá Anderson, claro que podemos. Aqui mesmo ou por algum IM de sua preferência. O email disponível no meu perfil também é meu username no MSN Messenger.

De antemão, porém, digo que não sou especialista em IPTables, e que apesar de entender seus arquivos de configuração não tenho aptidão para escrever um do zero. Como expliquei, este conf foi encontrado na iNet alguns meses atrás, e coloquei aqui por ser útil e para que nãoi "se perdesse" na rede.

[4] Comentário enviado por agk em 03/05/2005 - 21:35h

Realmente muito interessante essa dica, está de parabéns por tê-la compartilhado conosco.
Vou fazer alguns testes e se funcionar dentro do esperado vou começar a utilizar esse conceito.
Pelo parece precisa ter o módulo recent do iptables compilado.
Vlw.

[5] Comentário enviado por cvs em 06/05/2005 - 21:54h

<karnagge> isso inibe newbies que querem ser hackers
<karnagge> mais e se eu fizesse um script que fisesse assim
<karnagge> mandava um pacote e checava
<karnagge> em cada porta
<karnagge> e me desse um relatório?
<karnagge> entendeu?
<karnagge> eu mandaria na 1000 e checava todas as portas
<karnagge> ae mandaria na 1001 e checaria todas as portas
<karnagge> e ae eu tivesse esse relatorio :D
<karnagge> pronto resolvido
<karnagge> descobriria seu esquema :D
<karnagge> certo mano?

[6] Comentário enviado por Tango em 07/05/2005 - 01:07h

Okay, então você quer checar TODAS as portas após enviar um pacote para CADA UMA delas? Sim, é possível que isso acabe abrindo a porta do SSH e que seja possível acessá-la desta forma, mas se seu sistema está passível de um hacking neste nível (que dificilmente será executado por um bot) então é bom também implementar um sistema IDS e colocá-lo atrás de um roteador.

Além do que se você mudar a porta do SSH e colocar várias outras portas em DROP seu computador vai parecer invisível na rede, e o "script" teria que esperar o timeout para poder se certificar de que o pacote não foi rejeitado ou aceito.

Isso faria com que o tempo de verificar estas portas fosse extraordinariamente grande, tornando inviável este método.

[7] Comentário enviado por luizquovadis em 19/05/2005 - 06:52h

Caramba, essa configuração é 10. Fiz aqui e deu tudo certinho, na mais perfeita ordem. Esse Tango realmente bota muito quente. Valeu cara.


Contribuir com comentário

  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts