Atualmente, posso pensar em três maneiras:
O primeiro é usar knockd
- meu favorito - ( link ) e configurar uma seqüência de portas somente você lembre-se e deixe knockd
abrir o SSH para o endereço IP do qual você está se referindo. knockd
está disponível em um pacote debian e uma configuração de amostra ( /etc/knockd.conf
) pode ser:
[options]
logfile = /var/log/knockd.log
[opencloseSSH]
sequence = 2221,2222,2223
seq_timeout = 5
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -i enp0s8 -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 15
stop_command = /usr/sbin/iptables -D INPUT -i enp0s8 -s %IP% -p tcp --dport 22 -j ACCEPT
Dessa forma, knockd
escutará uma sequência nas portas especificadas (elas podem até ser as mesmas) e abrirá a porta se a sequência for atingida dentro de 5 segundos. Após 15 segundos, a regra é removida novamente para que um login bem-sucedido seja iniciado dentro desses 15 segundos.
O segundo é baseado em DNS dinâmico combinado com a atualização de uma cadeia de iptables regularmente:
iptables -N SSH
iptables -A INPUT -p tcp -m tcp --dport 22 -j SSH
Programe um cronjob para executar o seguinte script, por exemplo, a cada minuto:
#!/bin/bash
iptables -F SSH
iptables -A SSH -s ddns-entry.com -j ACCEPT
Dessa forma, a cadeia SSH é liberada e recarregada a cada intervalo que você escolheu.
Alternativamente, você pode criar uma página web (protegida por senha) em seu host Debian 6, que permitirá que você digite um endereço IP que é salvo em /tmp/currip
, por exemplo. Agende um cron job para ser executado a cada minuto - ou, melhor ainda, use inotify / incron - e verifique o arquivo /tmp/currip
e altere a regra iptables
para usar o endereço listado no arquivo. Como isso depende muito do tipo de pilha da web que você está usando, eu não listo uma amostra aqui.