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.
Segundo arquivo define o que o knock faz quando você manda uma sequência X para ele:
# vim /etc/knockd.conf
Exemplo 1 - usando comando:
Exemplo 2 - apontando para um script:
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.
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"
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.