Port knocking para SSH rápido e fácil com iptables | DeServ – Info
Lomadee, uma nova espcie na web. A maior plataforma de afiliados da Amrica Latina.

Port knocking para SSH rápido e fácil com iptables

By Flávio Silva

Port knocking funciona como um cadeado de segredo para ter acesso ao servidor, onde o usuário ou invasor terá que “bater” em um determinado número de portas com um limite de tempo também determinado para fazer a sequência para só assim liberar o ip que ele estiver usando também por um determinado tempo. O acesso a porta que queremos aqui no caso é a 22 (ssh).  

Vamos construir um cenário onde você queira primeiro liberar o acesso direto a alguns IPs sem precisar passar pelo segredo das portas, depois liberaremos todos os IPs (ou alguma rede específica) somente se acertarem a sequência das portas e por último bloquearemos todo o resto.

A configuração a seguir pode ser adicionada a seu script de firewall.

Como este é o primeiro tutorial que escrevo, tentarei ser o mais claro possível (espero que me perdoem se não conseguir):

####### Libera ssh para um determinado ip sem precisar passar pelo segredo ##############
####### xxx.xxx.xxx.xxx = IP que deseja liberar#######################
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx –dport ssh -j ACCEPT
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx –dport ssh -j ACCEPT
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx –dport ssh -j ACCEPT

####### A rede que você quer que tenha acesso ao segredo (aqui no caso está para qualquer uma)

HOST_IP=”0.0.0.0/0.0.0.0″

####### Fases do Segredo ##################################
/sbin/iptables -N INTO-FASE2
/sbin/iptables -A INTO-FASE2 -m recent –name FASE1 –remove
/sbin/iptables -A INTO-FASE2 -m recent –name FASE2 –set
/sbin/iptables -A INTO-FASE2 -j LOG –log-prefix “INTO FASE2: ”

/sbin/iptables -N INTO-FASE3
/sbin/iptables -A INTO-FASE3 -m recent –name FASE2 –remove
/sbin/iptables -A INTO-FASE3 -m recent –name FASE3 –set
/sbin/iptables -A INTO-FASE3 -j LOG –log-prefix “INTO FASE3: ”

/sbin/iptables -N INTO-FASE4
/sbin/iptables -A INTO-FASE4 -m recent –name FASE3 –remove
/sbin/iptables -A INTO-FASE4 -m recent –name FASE4 –set
/sbin/iptables -A INTO-FASE4 -j LOG –log-prefix “INTO FASE4: ”

/sbin/iptables -A INPUT -m recent –update –name FASE1

####### Aqui você determina o número das portas e o tempo que o ip ficará em cada uma das fazes aguardando a próxima porta ser digitada. Por ex.: Você terá 15 segundos para passar de cada fase, se o tempo se expirar na fase 3 terá que começar da fase1 novamente. ###########
####### Dica: não é aconselhável utilizar portas em sequências crescentes ou decrescentes como neste exemplo (100, 200, 300, 400) e sim intercalando os valores uma mais alta e uma mais baixa para evitar que algum scan consiga adivinhar a sequência. #######

/sbin/iptables -A INPUT -p tcp –dport 100 -m recent –set –name FASE1
/sbin/iptables -A INPUT -p tcp –dport 200 -m recent –rcheck –seconds 15 –name FASE1 -j INTO-FASE2
/sbin/iptables -A INPUT -p tcp –dport 300 -m recent –rcheck –seconds 15 –name FASE2 -j INTO-FASE3
/sbin/iptables -A INPUT -p tcp –dport 400 -m recent –rcheck –seconds 15 –name FASE3 -j INTO-FASE4

####### Aqui chegamos a FASE4, que é a última deste exemplo, onde será liberada a conexão com a porta 22 (ssh). O tempo aqui está setado para 3600 segundos (1 hora). Depois disso será fechada novamente para o ip em questão, lembrando que se ele ainda estiver logado não fará diferença, será fechada mesmo assim. Então aumente o tempo conforme desejado.####

/sbin/iptables -A INPUT -p tcp -s $HOST_IP –dport 22 -m recent –rcheck –seconds 3600 –name FASE4 -j ACCEPT

####### Por último fechamos todos acessos a porta 22 ########

/sbin/iptables -A INPUT -p tcp –dport 22 -j DROP

Testando:

A forma mais fácil que eu acho para testar é utilizando o telnet. Por ex.:

$ telnet IP_SERVIDOR 100
$ telnet IP_SERVIDOR 200
$ telnet IP_SERVIDOR 300
$ telnet IP_SERVIDOR 400

e agora é só entrar com ssh normalmente.

Por: Leandro Lanini
Fonte: http://www.vivaolinux.com.br

Posts Relacionados:

  1. iRedMail: Servidor de e-mails fácil e rápido Introdução O e-mail é a forma de comunicação mais utilizada...
  2. Atualizando VMWARE Esxi 4.0 para 4.1 Para quem tem o VMWare Esxi 4.0 aqui vão os...

Artigos parecidos fornecidos por Yet Another Related Posts Plugin.

Tags: , , , , ,

Uma Resposta to “Port knocking para SSH rápido e fácil com iptables”

  1. Flávio Silva

    Muito bom este recurso, e o mais interessante pode ser utilizado para outros serviços, como o FTP por exemplo.

    Current score: 1
    #130

Deixe uma Resposta