Ir al contenido
Secret Knock

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
Debian / Ubuntu

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
/etc/fwknop/access.conf

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;
/etc/fwknop/fwknopd.conf

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
iptables

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]
Desde un ordenador con fwknop-client
  1. 1En Secret Knock: Nueva puerta › Empezar con una plantilla › fwknop, introduce el host y pega la salida de fwknop --key-gen con Pegar claves.
  2. 2Llama; la puerta muestra Puerta entreabierta cuando el puerto 22 responde.
  3. 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