sábado, 13 de outubro de 2018

APLICANDO KNOCK SOBRE IPTABLES


Knock é um aplicativo mágico que dispara através de uma sequencia enviada por um comando remoto que pode executar tanto um comando como um script pré-configurado para fazer algo no seu sistema (usem a imaginação). 

Neste caso vou guiá-los para ativar ou desativar uma porta 22 no iptables e pra quê??? 

Imagine que você não use o SSH 24 horas por dia, então porque não desativá-lo até mesmo para evitar ataques ou portscaners? 

Debian como exemplo: 

# apt-get install knockd 

Depois de instalado configuraremos 2 arquivos, um para definir qual a interface, infelizmente só da pra fazer com uma. E o segundo para habilitar o que ele faz com qual sequência que você define. 

# vim /etc/default/knockd 

Os dois parâmetros a serem mudados, onde o primeiro deve ficar como 1 pois define Knock ativo, qualquer coisa diferente disso o serviço não sobe e o segundo está eth0, coloque sua placa de rede, caso seja diferente como no Debian 9, que é enp2s0 ou enp1s0. 

START_KNOCKD=1
KNOCKD_OPTS="-i eth0"

Segundo arquivo define o que o knock faz quando você manda uma sequência X para ele: 

# vim /etc/knockd.conf 

[options]
        logfile = /var/log/knockd.log # ARQUIVO DE LOG

[openSSH]
        sequence    = numeros das portas que serão chamadas 
        seq_timeout = 5
        command     = comando para fazer X ou local de um Script
        tcpflags    = syn

[closeSSH]
        sequence    = numeros das portas que serão chamadas
        seq_timeout = 5
        command     = comando para fazer Y ou local de um Script
        tcpflags    = syn

Exemplo 1 - usando comando: 

[options]
        logfile = /var/log/knockd.log

[openSSH]
        sequence    = 1 2 3
        seq_timeout = 5
        command     = iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT 
        tcpflags    = syn

[closeSSH]
        sequence    = 3 2 1
        seq_timeout = 5
        command     = iptables -D INPUT 1 # Remove a 1a linha do iptables 
        tcpflags    = syn 

Exemplo 2 - apontando para um script: 

[options]
        logfile = /var/log/knockd.log

[openSSH]
        sequence    = 1 2 3
        seq_timeout = 5
        command     = /sbin/script_habilite_a_porta.sh   
 # Não esquecer de dar permissão no script se for usar um.
        tcpflags    = syn

[closeSSH]
        sequence    = 3 2 1
        seq_timeout = 5
        command     = /sbin/script_desabilite_a_bendita_porta.sh
 # Não esquecer de dar permissão no script se for usar um.
        tcpflags    = syn 

Feito isso reinicie o knockd com o comando: 

# systemctl restart knockd 

ou 

# /etc/init.d/knockd restart 

Após isso, de uma estação com Knock instalado use o comando: 

# knock ip porta porta porta 

Exemplo: 

# knock 192.168.0.1 1 2 3 

Ele deve inserir uma linha no iptables ou fazer algo programado e para desativar a porta 22 use com a outra sequencia que você programou. Lembrando que as portas são selecionáveis e sim, faça MUUUUITOS testes, dá pra iniciar até um backup se tiver um script programado. Bom uso! 

Obs.: você pode escolher quais portas e se serão UDP ou TCP, consulte a documentação.