URL Knocking continuamente lendo o log do apache (ou outro servidor web) e se ele vir algum O URL (como https://example.com/TheSecretStringHere/
) que contornou a predefinição na cadeia "TheSecretStringHere" do servidor com a URL solicitada, simplesmente manipula as regras de firewall abrindo o acesso à porta do lado do servidor especificada. Esta solução pode ser usada sem qualquer software de terceiros, utilizando apenas comumente instalado por utilitários do sistema operacional.
A vantagem desse método é: - se você usa o protocolo https
, ele elimina os observadores man-in-a-middle, já que a URL real é invisível porque está criptografada. Outro - é fácil implementar sua própria solução com base em seu fluxo de trabalho.
Desvantagem - tudo com base na implementação.
No link que forneci, faça um script lendo continuamente o log do servidor da Web usando o recurso efetivo de% tail -f
(que utiliza a notificação do kernel inotify nas alterações do arquivo) e filtre a URL com grep
. Se a URL corresponder à sequência secreta, o script acionará alguma ação.
Há utilitários extras adicionais que podem ser usados no espaço do usuário, como inotifywait
, que podem efetivamente vigiar o log do servidor web e, se houver alguma alteração, iniciar uma ação (que pode não estar abrindo a porta). / p>
Port Knocking
, em contraste, geralmente são programas de terceiros dedicados e não são protegidos do intermediário, mas fazem o mesmo que URL Knocking
.
Como conclusão, se você configurar qualquer servidor da Web que possa criar arquivos de log e suportar https
, então IMO URL Knocking
é uma maneira mais segura de abrir portas sob demanda.
Exemplo de URL Knocking (do link acima):
#!/bin/sh
open_port() {
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
}
close_port() {
/sbin/iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT
}
tail -n0 --follow=name /var/log/apache2/access.log |
(while read line; do
if echo $line | grep "/SOME SECRET THING/"; then
echo OPEN
open_port
sleep 60
echo CLOSE
close_port
fi
done)
O crédito para o script vai para: Jason Spashett