Přejít na obsah
Secret Knock

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
/etc/knockd.conf — otevření SSH na 10 sekund

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
/etc/fwknop/access.conf — povolení SSH pomocí klíče SPA

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í

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 →