Tengo una configuración de puerto funcional para SSH en Linux usando solo reglas de iptables y el módulo "reciente" que sigue este tutorial:https://wiki.archlinux.org/index.php/Port_knocking#Port_knocking_with_iptables_only.
Ahora mi problema es que varias redes, como la de mi trabajo, bloquean el tráfico a puertos no estándar como 22, 80, 443, por lo que no puedo enviar mis paquetes knock. En cambio mi internet móvil me lo permite.
Como solución alternativa, me gustaría abrir el puerto SSH cada vez que se envíe la secuencia de llamada correcta desdecualquieranfitrión, no sólo el mismo anfitrión.
¿Hay alguna manera de lograr eso con iptables? Por ejemplo, podría imaginar un "interruptor de estado" o una variable global que pueda activarse mediante una regla y comprobarse mediante otra regla. Volvería a estar “apagado” después de un tiempo de espera.
Respuesta1
Sugeriría ir por la ruta noqueada. Es más sencillo de esta manera. Solo que en lugar de usar esta configuración predeterminada
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Usarías este (Nota -s %IP% eliminada)
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT