Ves al contingut
Secret Knock

Per què una trucada de port no obre la porta

Una trucada o bé no arriba mai al servidor, o hi arriba amb un format que el dimoni no accepta, o obre la porta per a una adreça que no feu servir. Reviseu la llista des del principi: està ordenada segons la freqüència amb què apareix cada causa.

1. La porta s’ha obert per a una altra adreça

El tallafoc obre el port per a l’adreça d’origen que ha vist el servidor. Si heu trucat mitjançant IPv6 i SSH es connecta per IPv4 —o a l’inrevés—, la porta estarà oberta per a una adreça que no feu servir. Les dades mòbils, el NAT de l’operador i les VPN també poden canviar l’adreça.

Compareu l’adreça que Secret Knock mostra a la pantalla d’inici («Truqueu des de…») amb l’adreça del registre del servidor, i fixeu IPv4 o IPv6 per a la porta si són diferents.

2. Els paquets no arriben al servidor

Les xarxes d’hotels, oficines i dades mòbils de vegades bloquegen ports poc habituals, i un tallafoc al núvol davant del servidor descarta els paquets abans que knockd o fwknopd els vegi. Superviseu el trànsit al servidor mentre truqueu:

# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f

# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'

# fwknopd in the foreground with verbose output
sudo fwknopd -f -v
Al servidor

3. La seqüència arriba amb un format incorrecte

  1. 1SYN retransmesos: quan una trucada TCP no rep resposta, el sistema operatiu del client torna a enviar el mateix SYN. knockd 0.8 reinicia la seqüència amb aquesta repetició. Secret Knock envia cada trucada TCP com un únic SYN i atura l’intent immediatament; és possible que altres clients no ho facin.
  2. 2Temporització: tots els passos han d’arribar dins de seq_timeout i en ordre. Afegiu un retard breu abans d’un pas si un encaminador intermedi reordena els paquets.
  3. 3Protocol: un pas UDP s’ha d’enviar com a UDP i un pas TCP com a TCP; compareu cada pas amb knockd.conf.
  4. 4tcpflags = syn fa que knockd ignori els paquets TCP sense l’indicador SYN. Sense això, els altres paquets d’una connexió al mateix port també compten com a encerts i poden interrompre la seqüència.

4. fwknop: claus, rellotges i repeticions

  1. 1Les dues claus han de coincidir amb access.conf: la clau Rijndael i la Clau HMAC, amb el mateix resum (SHA-256 per defecte).
  2. 2fwknopd rebutja paquets amb una antiguitat superior a MAX_SPA_PACKET_AGE (120 segons per defecte), de manera que un rellotge del dispositiu molt desajustat fa que tots els paquets semblin antics.
  3. 3Cada paquet SPA només es pot utilitzar una vegada; fwknopd descarta deliberadament un paquet repetit.
  4. 4Si truqueu mitjançant HTTP, hi ha d’haver algun servei que accepti connexions TCP en aquest port; altrament, la sol·licitud no s’envia mai.

5. La porta s’obre, però SSH continua fallant

  1. 1Ordre de les regles: la regla que afegeix el dimoni ha d’anar abans de la regla que descarta els paquets destinats al port; iptables -A afegeix la regla després d’un DROP existent i, per tant, aquesta regla no arriba a coincidir amb cap paquet.
  2. 2La finestra: cmd_timeout o FW_ACCESS_TIMEOUT ha tancat la porta abans que SSH es connectés. Connecteu-vos dins de la finestra; les sessions establertes continuen funcionant si el tallafoc accepta connexions establertes.
  3. 3La comprovació de ports de Secret Knock després de la trucada indica si el port ha respost, independentment de l’autenticació SSH.

Tots els exemples a GitHub → Totes les configuracions d’aquesta pàgina, a punt per copiar: github.com/mobilcomm/secretknock-examples (domini públic).

Preguntes

Com puc veure què ha enviat realment l’app?

L’historial de la porta mostra cada trucada amb l’hora, el resultat i la família d’adreces, i l’editor mostra la mateixa trucada com una ordre de terminal que podeu executar des d’un ordinador per comparar-la.

Guies per a la vostra configuració