Zakaj pravilo za blokiranje odjemalca OpenVPN nikoli ne zadene FORWARD
Promet med odjemalci lahko ostane znotraj procesa OpenVPN in nikoli ne prečka verige FORWARD gostitelja, zato ničelni števec ničesar ne dokazuje.
Dva odjemalca na istem strežniku OpenVPN lahko dosežeta drug drugega, tudi potem ko ste za njun nabor dodali pravilo DROP. Pravilo sedi v verigi FORWARD, promet očitno teče, števec tega pravila pa ostaja na ničli. Naravni sklep je, da je požarni zid pokvarjen. Pogosteje paket v verigo sploh ni vstopil.
Obstajata dve poti, po katerih lahko paket partnerja potuje skozi strežnik OpenVPN, in o njih odloča konfiguracija, ne požarni zid. Znanje o tem, katera pot se uporablja, vam pove, ali je pravilo gostitelja sploh na pravem mestu.
Dve poti, po katerih lahko potuje paket partnerja
Ko je možnost notranjega posredovanja izklopljena, paket od odjemalca A prispe na vmesnik tunela s ciljem znotraj dodeljenega naslova odjemalca B. Usmerjevalna tabela strežnika ga pošlje nazaj skozi isti vmesnik tunela, ker pot do naslova B pripada strežniku. To je tok navznoter in navzven skozi gostitelja, in pot posredovanja IPv4 ga ovrednoti.
Ko je možnost notranjega posredovanja vklopljena, proces strežnika paket poveže s povezanim odjemalcem in ga zapiše nazaj neposredno temu odjemalcu. Paket se obdela znotraj demona in nikoli več ne vstopi v napravo tunela, zato se pot posredovanja gostitelja povsem preskoči. Priročnik OpenVPN 2.6 to možnost opisuje kot notranje posredovanje od odjemalca do odjemalca, in prav zato je pravilo požarnega zidu gostitelja ne more videti.
Obstaja še tretja različica v namestitvah, ki podatkovni kanal prenesejo v modul jedra. Odločitev o posredovanju in šifriranje zapustita uporabniški prostor, in ali netfilter tok vidi, je odvisno od tega, kako je zgrajena pot prenosa. Nikoli ne predpostavljajte, da se stari nabor pravil na prenesenem strežniku obnaša enako kot na strežniku v uporabniškem prostoru. Potrdite način iz delujoče konfiguracije, ne iz različice paketa.
Ko se števec nikoli ne premakne
Ničelni števec pomeni, da se paket na tej točki ni ujemal s tem pravilom, in razlogov je več. Prvi je obhod zgoraj: promet ni nikoli dosegel verige. Drugi je neujemanje v vmesniku, smeri, viru ali cilju, kar je običajno, ko je nabor preštevilčen, pravilo pa še vedno navaja stari predpono.
Tretji je položaj. Pravilo prej v verigi lahko sprejme tok, preden se ovrednoti vaš DROP, pravilo pozneje pa je lahko tisto, ki dejansko odloči o izidu. Berite verigo po vrsti z vidnimi števci, nato preverite, kateremu pravilu se ob ponovitvi preizkusa poveča število.
Izvedite eno nadzorovano izmenjavo med dvema odjemalcema, katerih resnične naslove ste potrdili iz stanja samega strežnika, ne iz najema, ki se ga spomnite. Če se ustrezni števec še vedno ne premakne, sumite na pot, preden prepišete ujemanje. Če se premakne, a povezava še vedno uspe, je spust pozneje prepisan in težava je v vrstnem redu. Ta odgovor odloči, ali je popravek sprememba pravila ali sprememba topologije, zato ga pridobite, preden karkoli uredite.
Izbira meje, ki lahko filtrira
Če mora politika živeti v požarnem zidu gostitelja, postavite promet tja, kjer ga požarni zid vidi. Izklop notranjega posredovanja je podprt način, da promet partnerjev prečka vmesnik tunela in pot posredovanja, za ceno pošiljanja vsakega paketa partnerja skozi sklad gostitelja.
Nato tok natančno povežite. Promet prispe na vmesnik tunela in odide z njega v obeh smereh, zato se pravila, ki upoštevajo samo fizični vmesnik, ne bodo ujemala. Pravila na podlagi naslovov potrebujejo trenutni nabor in morajo upoštevati povratno smer prav tako kot prednjo.
Mnogim namestitvam bolje služi filtriranje na ravni odjemalca ali skupine, kjer je identiteta znana in politika sledi uporabniku, ne pa naslovu, ki se ob ponovni povezavi spremeni. To je drugačen mehanizem od verige gostitelja in obeh ne bi smeli mešati brez jasnega razloga.
Ne prenašajte nabora pravil stare topologije skozi selitev nespremenjenega. Nabori naslovov, imena vmesnikov in načini posredovanja vsi vplivajo na to, ali se pravilo ujema, kopirano pravilo, ki je nekoč delovalo, pa je najbolj zavajajoča vrsta dokaza. Začnite s tokom, ki ga želite dovoliti, in napišite pravilo, ki se z njim ujema.
Preizkušanje izolacije namesto zaupanja pravilu
Preizkusite prepovedan primer in dovoljen primer v istem izvajanju. Zaženite novo povezavo z enega odjemalca na drugega in potrdite, da ne uspe, nato potrdite, da povezava, ki bi morala biti dovoljena, še deluje. Če se preizkusi samo prvo, je požarni zid, ki blokira vse, videti kot uspeh.
Ponovite po ponovnem nalaganju konfiguracije strežnika in po ponovni povezavi odjemalca, ker sta notranje posredovanje in dodeljevanje naborov stanje med izvajanjem. Preverite števce v obeh smereh, saj pravilo, ki se ujema z eno smerjo in ne z odgovorom, ustvari delno izolacijo, ki jo je v hitrem preizkusu težko opaziti.
Izolacija je opaženi rezultat na meji, ki tok dejansko nosi. Pravilo DROP nekje v gostitelju ni dokaz; spodletela povezava in premaknjen števec na pravilu, ki jo je povzročilo, sta.