Ejemplos de knockd.conf
knockd lee /etc/knockd.conf: una sección [options] y una sección por cada puerta. Cada sección tiene una secuencia, un límite de tiempo y el comando que se ejecutará para la dirección que llama, %IP%. Elige tus propios puertos; nunca reutilices los de los ejemplos.
Abrir SSH durante unos segundos
La configuración más habitual: una llamada abre SSH y knockd lo vuelve a cerrar después de cmd_timeout. Las sesiones que ya hayas abierto seguirán funcionando si el firewall acepta conexiones establecidas.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Secuencias independientes para abrir y cerrar
Sin temporizador, el puerto permanece abierto hasta que llames la secuencia de cierre. Es práctico, pero fácil de olvidar; es preferible usar la versión temporizada.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9133:udp,8822:tcp,7311:tcp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Secuencias de un solo uso
En lugar de una secuencia fija, knockd puede leer un archivo de secuencias y aceptar cada una una sola vez, para que no se pueda repetir una llamada grabada. Secret Knock conserva la misma lista y pasa a la siguiente secuencia después de una llamada que abrió la puerta.
[openSSH]
one_time_sequences = /etc/knockd/ssh_sequences
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp Con nftables
En sistemas con nftables, permite que knockd añada la dirección a un conjunto con un tiempo de espera; la guía para ocultar SSH muestra la tabla de nftables correspondiente.
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s } Después de editar
- 1En Debian y Ubuntu, configura la interfaz en la que escucha knockd en /etc/default/knockd (KNOCKD_OPTS="-i eth0") y reinicia knockd.
- 2Comprueba cómo funciona con journalctl -u knockd -f mientras llamas.
- 3En Secret Knock, + › Importar desde archivo convierte cada sección con una secuencia en una puerta; introduce a mano las listas de secuencias de un solo uso.
Todos los ejemplos en GitHub → Todas las configuraciones de esta página, listas para copiar: github.com/mobilcomm/secretknock-examples (dominio público).
Preguntas
¿Debo usar pasos TCP o UDP?
Ambos funcionan. Mezclarlos hace que una secuencia sea más difícil de adivinar a partir de un análisis de puertos. Los pasos UDP pueden incluir una carga útil en Secret Knock si tu configuración la comprueba.
Guías para tu configuración
- Port knocking explicado →
- knockd en iPhone, iPad y Mac →
- SPA de fwknop en iPhone, Mac y Apple Watch →
- Port knocking de MikroTik →
- Llamada a puertos de DrayTek Vigor →
- Oculta SSH tras llamadas a puertos →
- Port knocking en Apple Watch →
- Por qué una llamada no abre el puerto →
- configuración del servidor fwknop →
- ¿Port knocking, VPN o fail2ban? →