Knockd
Se você prefere não ter uma porta administrativa óbvia para o seu firewall Iptables – mas precisa de uma secreta – a ténica do port knocking é uma opção interessante que pode evitar ataques baseados em scripts. Para o administrador ambicioso e paranóico, a ferramenta mais adequada é o Knockd.
O pacote inclui dois componentes: o knock é o cliente que envia sinais de batida nas portas, enquanto o daemon knockd os recebe.
BATIDA
Para monitorar o processo, o cliente precisa somente dos números das portas nas quais deve bater e da opção -v:
knock -v 10.0.0.42 7000 8000 9000
A ferramenta responde com a saída na linha de comando.
O arquivo de configuração /etc/knockd.conf permite que o administrador do sistema especifique a ação que o daemon deve realizar ao receber uma batida válida.
EXEMPLO 1: /etc/knockd.conf
01 [options]
02 logfile=/var/log/knockd.log
03 [openSSH]
04 sequence = 7000.8000.9000
05 seq_timeout = 5
06 command = /sbin/iptables -A IPUT -s %IP -p tcp – - dport 22 -j ACCEPT
07 tcpflags = syn
08 [closeSSH]
09 sequence = 9000.8000.7000
10 seq_timeout = 5
11 command = /sbin/iptables -D INPUT -s %IP -p tcp –dport 22 -j ACCEPT
12 tcpflags = syn
CÓDIGO MORSE
Se reconhecer o sinal, o knockd abre a porta 22 para o IP correto, que passa seu próprio IP.
Ao se bater nas portas na seqüência errada, o daemon interrompe o acesso SSH. Há ainda uma outra opção – o knockd.conf – que é mais ou menos assim:
start_command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp –syn –dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp –syn –dport 22 -j ACCEPT
Depois de bater, o daemon inicia o start_command e espera um número de minutos especificados em cmd_timeout antes de executar o stop_command.
Administradores de sistema realmente paranóicos vão adorar a opção de configurar um arquivo com sequência de portas. Cada sequência expira após ser usada.
Mais informações: http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki