Miért nem nyitja ki a kopogás az ajtót?
A kopogás vagy el sem jut a szerverhez, olyan formában érkezik meg, amelyet a démon nem fogad el, vagy olyan cím számára nyitja ki az ajtót, amelyet nem használ. Haladjon végig a listán felülről lefelé — a sorrend azt mutatja, milyen gyakran fordulnak elő az egyes okok.
1. Az ajtó egy másik cím számára nyílt ki
A tűzfal ahhoz a forráscímhez nyitja meg a portot, amelyet a szerver látott. Ha IPv6-on kopogott, az SSH pedig IPv4-en csatlakozik — vagy fordítva —, az ajtó olyan cím számára nyílik ki, amelyet nem használ. A mobiladat-kapcsolat, a szolgáltatói NAT és a VPN-ek is megváltoztatják a címet.
Hasonlítsa össze a Secret Knock által az alkalmazás kezdőképernyőjén megjelenített címet („Kopogás innen: …”) a szerver naplójában szereplő címmel, és ha eltérnek, rögzítse az IPv4-et vagy az IPv6-ot az ajtóhoz.
2. A csomagok nem jutnak el a szerverhez
A szállodai, irodai és mobilhálózatok időnként blokkolják a szokatlan portokat, a szerver előtti felhős tűzfal pedig eldobhatja a csomagokat, mielőtt a knockd vagy a fwknopd látná őket. Kopogás közben figyelje a forgalmat a szerveren:
# 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 3. A sorozat nem megfelelő formában érkezik meg
- 1Újraküldött SYN-ek: ha egy TCP-kopogásra nincs válasz, az ügyfél operációs rendszere újraküldi ugyanazt a SYN-t. A knockd 0.8 ilyen ismétléskor alaphelyzetbe állítja a sorozatot. A Secret Knock minden TCP-kopogást egyetlen SYN-ként küld el, és azonnal leállítja a próbálkozást; más kliensek esetében ez nem feltétlenül így van.
- 2Időzítés: minden lépésnek a seq_timeout időn belül, sorrendben kell megérkeznie. Adjon rövid késleltetést egy lépés elé, ha egy köztes útválasztó átrendezi a csomagokat.
- 3Protokoll: egy UDP-lépést UDP-ként, egy TCP-lépést pedig TCP-ként kell elküldeni — ellenőrizze minden lépést a knockd.conf alapján.
- 4A tcpflags = syn miatt a knockd figyelmen kívül hagyja a SYN jelző nélküli TCP-csomagokat. Enélkül az ugyanazon portra irányuló kapcsolat többi csomagja is találatnak számít, és megszakíthatja a sorozatot.
4. fwknop: kulcsok, órák és ismétlések
- 1Mindkét kulcsnak egyeznie kell az access.conf fájlban szereplővel: a Rijndael-kulcsnak és a HMAC-kulcsnak is, azonos kivonatolással (alapértelmezés szerint SHA-256).
- 2A fwknopd elutasítja a MAX_SPA_PACKET_AGE értékénél régebbi csomagokat (alapértelmezés szerint 120 másodperc), ezért egy jelentősen pontatlan eszközóra miatt minden csomag réginek tűnik.
- 3Minden SPA-csomag csak egyszer használható fel; a fwknopd szándékosan eldobja az újrajátszott csomagokat.
- 4Ha HTTP-n kopog, valaminek fogadnia kell a TCP-kapcsolatokat azon a porton, különben a kérés el sem lesz küldve.
5. Az ajtó kinyílik, de az SSH továbbra sem működik
- 1Szabálysorrend: a démon által hozzáadott szabálynak a portot eldobó szabály előtt kell szerepelnie — egy iptables -A egy meglévő DROP után fűzi hozzá a szabályt, ezért az sosem illeszkedik.
- 2Az időablak: a cmd_timeout vagy a FW_ACCESS_TIMEOUT bezárta az ajtót, mielőtt az SSH csatlakozott volna. Az időablakon belül csatlakozzon; a már létrejött munkamenetek tovább működnek, ha a tűzfala elfogadja a létrejött kapcsolatokat.
- 3A Secret Knock kopogás utáni portellenőrzése jelzi, hogy a port egyáltalán válaszolt-e, az SSH-hitelesítéstől függetlenül.
Minden példa a GitHubon → Az oldal minden konfigurációja másolásra készen: github.com/mobilcomm/secretknock-examples (közkincs).
Kérdések
Hogyan nézhetem meg, mit küldött ténylegesen az app?
Az ajtó előzményei minden kopogást megjelenítenek az időpontjával, eredményével és címcsaládjával, a szerkesztő pedig ugyanazt a kopogást terminálparancsként mutatja, amelyet számítógépről futtatva összehasonlíthat.
Útmutatók a beállításához
- A port knocking ismertetése →
- knockd iPhone-on, iPaden és Macen →
- fwknop SPA iPhone-on, Macen és Apple Watchon →
- MikroTik portkopogtatás →
- DrayTek Vigor portkopogtatás →
- SSH elrejtése portkopogtatással →
- Portkopogtatás Apple Watchon →
- knockd.conf-példák →
- fwknop-kiszolgáló beállítása →
- Port knocking, VPN vagy fail2ban? →