Configuro el bloqueo de puertos usando primero este método usando knockd y luego intenté usar este método usa solo iptables directamente pero cuando ambos fallaron, pensé que revisaría un poco el problema.
Corríjame si me equivoco, pero parece que a pesar de que estoy llamando desde la misma IP, la ip "from" parece estar usando un puerto diferente cada vez y parece que la comparación de iptables toma en cuenta el puerto from ?
Para visualizar esto, sea x la dirección IP a la que estoy eliminando (el cliente) y y la dirección IP a la que estoy tratando de acceder (el servidor) Si mi patrón de detonación es y: 123, y: 124, y: 125, debería desbloquear un canal para x, pero no funciona.
Al revisar los registros de mi enrutador, se dice que x está golpeando las reglas correctas para golpear y, pero cada golpe parece provenir de un puerto aleatorio, por lo que x: 456 llama a y: 123, luego x: 357 llama a y: 124 y finalmente x: 532 llama a y: 125 y aunque la secuencia está completa, 22 permanece bloqueada.
Sin saber ninguna otra forma de verificar, asumo que es el puerto de cambio en x el que causa el problema, lo que me lleva a mi pregunta: ¿hay alguna forma de que iptables ignore el puerto cuando hace coincidir una dirección de origen? malinterpretando el problema y hay algo más que puedo verificar?)
Si ayuda, mi primera verificación de coincidencia es la siguiente:
-A GATE1 -p tcp -m tcp --dport 123 -m recent --set --name AUTH1 --mask 255.255.255.255 --rsource -j DROP
o para ser aún más específico, los comandos para configurar iptables fueron los siguientes (asumiendo que los puertos 123-125 serán eliminados):
sudo iptables -N GATE1
sudo iptables -N GATE2
sudo iptables -N GATE3
sudo iptables -N KNOCKING
sudo iptables -N PASSED
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -j KNOCKING
sudo iptables -A GATE1 -p tcp -m tcp --dport 123 -m recent --set --name AUTH1 --mask 255.255.255.255 --sudo iptables rsource -j DROP
sudo iptables -A GATE1 -j DROP
sudo iptables -A GATE2 -m recent --remove --name AUTH1 --mask 255.255.255.255 --rsource
sudo iptables -A GATE2 -p tcp -m tcp --dport 124 -m recent --set --name AUTH2 --mask 255.255.255.255 --sudo iptables rsource -j DROP
sudo iptables -A GATE2 -j GATE1
sudo iptables -A GATE3 -m recent --remove --name AUTH2 --mask 255.255.255.255 --rsource
sudo iptables -A GATE3 -p tcp -m tcp --dport 125 -m recent --set --name AUTH3 --mask 255.255.255.255 --sudo iptables rsource -j DROP
sudo iptables -A GATE3 -j GATE1
sudo iptables -A KNOCKING -m recent --rcheck --seconds 30 --name AUTH3 --mask 255.255.255.255 --rsource -j sudo iptables PASSED
sudo iptables -A KNOCKING -m recent --rcheck --seconds 10 --name AUTH2 --mask 255.255.255.255 --rsource -j sudo iptables GATE3
sudo iptables -A KNOCKING -m recent --rcheck --seconds 10 --name AUTH1 --mask 255.255.255.255 --rsource -j sudo iptables GATE2
sudo iptables -A KNOCKING -j GATE1
sudo iptables -A PASSED -m recent --remove --name AUTH3 --mask 255.255.255.255 --rsource
sudo iptables -A PASSED -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A PASSED -j GATE1
Por supuesto, nunca usarías estos puertos específicos, pero no pondrás mis puertos reales en línea, independientemente de la falta de detalles del servidor :)