Vysvětlení port knockingu
Port knocking udržuje službu neviditelnou, dokud někdo neprokáže, že zná tajemství. Tento průvodce popisuje jeho fungování, dvě běžné implementace — knockd a fwknop — a proč zaklepání v praxi selhává.
Jak funguje port knocking
Firewall zahazuje každé připojení k chráněnému portu, takže skener nic neuvidí. Malý démon sleduje provoz, který dorazí k firewallu. Když jedna zdrojová adresa vytvoří očekávaný vzor, démon přidá pravidlo firewallu, které této adrese povolí přístup, obvykle na krátkou dobu.
Tímto vzorem je zaklepání. U knockd jde o sekvenci pokusů o připojení ke konkrétním portům v určitém pořadí a v časovém limitu. U fwknop jde o jeden šifrovaný paket.
knockd: sekvence zaklepání
knockd naslouchá na rozhraní a porovnává pokusy o připojení se sekvencemi v /etc/knockd.conf. Sekvence může kombinovat TCP a UDP porty. Při shodě knockd spustí příkaz — obvykle pravidlo iptables nebo nftables pro zaklepávající adresu (%IP%).
Tento příklad otevře SSH pro zaklepávající adresu a po 10 sekundách jej opět zavře. Existující relace SSH zůstanou funkční, pokud váš firewall přijímá navázaná připojení.
[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 Zvolte si vlastní porty; nikdy nepoužívejte znovu porty z publikovaných příkladů. tcpflags = syn zajistí, že knockd počítá jen pakety s příznakem SYN — první paket pokusu o připojení.
fwknop: Single Packet Authorization
fwknop nahrazuje sekvenci jedním UDP paketem, který je šifrovaný (AES) a ověřený (HMAC). Server fwknopd jej pasivně zachytí, ověří, zkontroluje, zda nejde o přehrání, a otevře požadovaný port pro adresu uvnitř paketu.
Vygenerujte klíče pomocí fwknop --key-gen a vložte je do access.conf na serveru. Secret Knock importuje klientskou část z vašeho .fwknoprc.
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 Protože povolená adresa putuje uvnitř šifrovaného paketu, může SPA otevřít port pro jinou adresu než pro adresu odesílající paket — což je užitečné, když zaklepáváte z telefonu na mobilních datech pro notebook někde jinde.
Proč zaklepání selhává
- IPv4 vs IPv6: zaklepání odešlo přes jednu rodinu adres a SSH se připojuje přes druhou. Firewall otevřel dveře pro adresu, kterou nepoužíváte.
- Jiná veřejná adresa: na mobilních datech, za NAT operátora nebo VPN server vidí jinou IP, než očekáváte. Zkontrolujte adresu, ze které zaklepáváte.
- Opakovaně odeslané pakety SYN: pokud TCP zaklepání nedostane odpověď, operační systém klienta znovu odešle stejný paket SYN. V našich testech knockd 0.8 při takto opakovaném paketu SYN resetoval sekvenci, proto klient musí každé zaklepání odeslat jen jednou a pokus rychle ukončit.
- Časování: zaklepání, která dorazí mimo seq_timeout nebo ve špatném pořadí, spustí sekvenci znovu.
- Prostřední síťové prvky: některé sítě blokují nebo přepisují provoz na neobvyklých portech, takže zaklepání, které funguje doma, může selhat v hotelové nebo kancelářské síti.
Je to bezpečné?
Sekvence knockd se odesílá nešifrovaně; kdokoli, kdo může sledovat váš provoz, ji může přehrát. Používejte ji ke skrytí služby před skenery, před SSH klíči — ne místo nich. fwknop SPA tuto mezeru řeší šifrováním, HMAC a ochranou před přehráním a je lepší volbou, pokud může být váš provoz sledován.
Zaklepávání z iPhonu, Macu a Apple Watch
Secret Knock odesílá sekvence knockd a pakety fwknop SPA z iPhonu, iPadu a Macu, ověří, že port odpovídá, a otevře vaši SSH aplikaci. Apple Watch zaklepávají přes spárovaný iPhone, protože watchOS nedovoluje aplikacím odesílat surové TCP nebo UDP pakety; mimo dosah iPhonu mohou odeslat SPA přes HTTP na servery, které to povolují.
Průvodci pro vaše nastavení
- knockd na iPhonu, iPadu a Macu →
- fwknop SPA na iPhonu, Macu a Apple Watch →
- Klepání na porty MikroTik →
- Port knocking pro DrayTek Vigor →
- Skryjte SSH za klepáním na porty →
- Port knocking na Apple Watch →
- Proč zaklepání na port neotevře dveře →
- Příklady knockd.conf →
- nastavení serveru fwknop →
- Port knocking, VPN nebo fail2ban? →
Nechte dveře zavřené. Mějte zaklepání u sebe.
Secret Knock již brzy v App Storu pro iPhone, iPad, Mac a Apple Watch.
Secret Knock →