Dva riadiace vstupy na jednom hostiteľovi, jeden služobný port a pravidlo politiky, ktoré malo pomôcť obom. Pravidlo zodpovedá zdrojovému portu 22, posiela vyhľadávanie do tabuľky, ktorá pozná len predvolenú hodnotu WAN, a VPN vstup prestane odpovedať na nové prihlásenia, kým priamy vstup funguje ďalej. Nič z toho nie je záhadné, keď sa selektor prečíta správne. Zdrojový port určuje službu, nie cestu, po ktorej spojenie prišlo.

Dva vstupy, jeden služobný port

Hostiteľ má adresu na strane LAN a adresu VPN a sshd počúva na oboch. Priama relácia a tunelová relácia preto zdieľajú služobný port a líšia sa len tým, ktorá miestna adresa spojenie prijme.

Tento rozdiel stačí na výber cesty odpovede a je to presne rozdiel, ktorý pravidlo založené na porte zahadzuje. Obe relácie vytvárajú odpovede so zdrojovým portom 22, takže pravidlo zodpovedajúce tomuto portu ich nemôže oddeliť. Posiela obe vyhľadávania do tej istej tabuľky a jedno z nich dostane odpoveď, ktorá nesedí. Oprava spočíva v zhode s atribútom, ktorý sa skutočne líši.

Dať každému vstupu vlastný port by tiež fungovalo a považovať to za požiadavku je dizajnová voľba, nie vlastnosť SSH.

Prečítajte pravidlo, potom tabuľku

Pravidlo politiky je usporiadaný selektor a prvé, ktoré vráti použiteľnú odpoveď, ukončí vyhľadávanie. Prečítajte zoznam poporiadku a všimnite si, ktoré pravidlo môže vyhrať.

Potom prečítajte tabuľku, na ktorú to pravidlo ukazuje, pretože pravidlo, ktoré sa úspešne vyrieši, nie je pravidlo, ktoré sa vyrieši užitočne. Tabuľka obsahujúca len predvolenú trasu pošle odpoveď s pôvodom VPN cez rozhranie WAN von. Konkrétnejšia trasa v neskoršej tabuľke sa nikdy nekonzultuje, a preto pridanie druhej tabuľky tak často nič nezmení. Vybraná tabuľka je to, čo treba preskúmať.

ip -4 rule show
ip route show table 100
ip route show table main

Tieto dva výstupy spolu vysvetľujú výsledok; každý sám o sebe nabáda na nesprávny záver.

Obmedzte pravidlo na tok, ktorý máte na mysli

Atribút, ktorý oddeľuje dva vstupy, je miestna zdrojová adresa. Pravidlo zodpovedajúce tejto adrese posiela do súkromnej tabuľky len tunelové relácie a priame relácie ponecháva v hlavnej tabuľke.

Toto pravidlo musí byť spárované s tabuľkou obsahujúcou súkromnú trasu a spätnú cestu pre túto podsieť. Obmedzte obe na riadiacu prevádzku, nie na každú službu na hostiteľovi. Pravidlo, ktoré zachytí všetku prevádzku z tejto adresy, presmeruje aj všetko ostatné, čo hostiteľ odtiaľ pošle. Úzke tu víťazí nad šikovným, pretože to musí prečítať ďalší človek.

sudo ip rule add from 10.90.0.1 lookup 100 priority 100
sudo ip route add 10.90.0.0/24 dev wg0 table 100
ip route get 10.90.5.20 from 10.90.0.1

Ak sa oba vstupy preložia na jednu miestnu adresu, tento rozdiel zmizne a dizajn namiesto toho potrebuje stav, ktorý pozná spojenie.

Držte poslucháč, oprávnenie a výber odpovede oddelene

Predtým, ako relácia začne fungovať, musia platiť tri oddelené veci: adresa existuje, služba na nej počúva a odpoveď nájde cestu späť. Zmena trasy opraví len tretiu.

Konfigurácia poslucháča je jej vlastný súbor a jej vlastné opätovné načítanie, a viac adries na počúvanie je normálnych. Overovanie je znovu tretie rozhodnutie a výnimka v smerovaní nikomu nepridelí prístup. Držte overenie kľúča hostiteľa, overovanie účtu a obmedzenia zdroja na oboch vstupoch a odolajte nutkaniu oslabiť ostatné kontroly tunela, aby jeden riadiaci tok fungoval.

Držte záchranný kanál, ktorý nezávisí od cesty, ktorú meníte, pretože chyba tu zablokuje samotnú opravu.

Dokážte to novou reláciou, nie starou

Zavedený terminál nič nedokazuje, pretože bol prijatý pred zmenou. Otvorte čerstvú reláciu cez každý zamýšľaný vstup.

ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30

Potom zopakujte opätovné pripojenie VPN a skúste znova, pretože trasa, ktorá prežije opätovné pripojenie, nie je to isté ako trasa pridaná do tabuľky, ktorú opätovné pripojenie vyčistí. Sledujte odmietnuté zdroje oddelene od povolených, aby sa zablokovaný pokus neskryl za fungujúcou reláciou. Uložte miestnu adresu, pravidlo a tabuľku vedľa výsledku. Ak namiesto toho rozdelíte porty, zaznamenajte to ako prevádzkové rozhodnutie, nie ako obmedzenie SSH.

Súvisiace články