Configura un servidor fwknop
La Autorización de paquete único de fwknop mantiene SSH cerrado hasta que llega un paquete UDP cifrado y autenticado. Estos pasos lo configuran en un servidor Debian o Ubuntu; pruébalo primero desde un ordenador y, después, añade las mismas claves a Secret Knock.
1. Instala y genera las claves
Instala el servidor y el cliente y, a continuación, genera un par de claves. Conserva la salida: las mismas dos claves se incluyen en access.conf y en Secret Knock.
sudo apt install fwknop-server fwknop-client
fwknop --key-gen # prints KEY_BASE64 and HMAC_KEY_BASE64 2. Permite SSH para paquetes SPA
access.conf indica qué puede abrir un paquete válido y durante cuánto tiempo.
SOURCE ANY
OPEN_PORTS tcp/22
KEY_BASE64 <output of fwknop --key-gen>
HMAC_KEY_BASE64 <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT 30 3. Indica a fwknopd dónde escuchar
fwknopd captura paquetes en una interfaz; no necesita un puerto abierto. Configura la interfaz que utiliza tu servidor.
# /etc/fwknop/fwknopd.conf
PCAP_INTF eth0;
PCAP_FILTER udp port 62201;
MAX_SPA_PACKET_AGE 120; 4. Cierra SSH de forma predeterminada
Mantén una sesión SSH abierta mientras haces esto y realiza una prueba desde una segunda conexión antes de cerrar sesión. fwknopd inserta su propia cadena al principio de INPUT y añade allí una regla ACCEPT temporal para cada paquete válido.
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP 5. Haz una prueba y, después, añade la puerta
Reinicia fwknop-server, envía un paquete desde otro equipo y conéctate:
# from another machine: request SSH for the address the server sees (-R)
fwknop -A tcp/22 -R -D server.example.com \
--key-base64-rijndael "<KEY_BASE64>" --key-base64-hmac "<HMAC_KEY_BASE64>"
ssh [email protected] - 1En Secret Knock: Nueva puerta › Empezar con una plantilla › fwknop, introduce el host y pega la salida de fwknop --key-gen con Pegar claves.
- 2Llama; la puerta muestra Puerta entreabierta cuando el puerto 22 responde.
- 3Ejecuta fwknopd -f -v en el servidor si no es así; la guía de resolución de problemas enumera las causas habituales.
Todos los ejemplos en GitHub → Todas las configuraciones de esta página, listas para copiar: github.com/mobilcomm/secretknock-examples (dominio público).
Preguntas
¿Necesita fwknopd un puerto abierto?
No. Lee los paquetes desde la interfaz de red, por lo que el puerto SPA puede permanecer cerrado en el firewall; el paquete solo tiene que llegar al servidor.
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 →
- Ejemplos de knockd.conf →
- ¿Port knocking, VPN o fail2ban? →