Pse një rregull bllokimi i klientit OpenVPN nuk arrin kurrë në FORWARD
Trafiku klient-për-klient mund të mbetet brenda procesit OpenVPN dhe të mos kalojë kurrë zinxhirin FORWARD të hostit, prandaj një numërues zero nuk provon asgjë.
Dy klientë në të njëjtin server OpenVPN mund të arrijnë njëri-tjetrin edhe pasi keni shtuar një rregull DROP për grupin e tyre. Rregulli qëndron në zinxhirin FORWARD, trafiku rrjedh qartë, dhe numëruesi i atij rregulli mbetet në zero. Konkluzioni i natyrshëm është se firewalli është prishur. Më shpesh pakoja nuk ka hyrë fare në zinxhir.
Ka dy rrugë që një pako peer mund të ndjekë përmes një serveri OpenVPN, dhe ato përcaktohen nga konfigurimi, jo nga firewalli. Të dish se cila rrugë është në përdorim të tregon nëse një rregull i hostit është madje në vendin e duhur.
Dy rrugë që mund të ndjekë një pako peer
Kur opsioni i përcjelljes së brendshme është i çaktivizuar, një pako nga klienti A arrin në ndërfaqen e tunelit me një destinacion brenda adresës së caktuar të klientit B. Tabela e rrugëzimit e serverit e dërgon përsëri përmes të njëjtës ndërfaqe tuneli, sepse serveri zotëron rrugën drejt adresës së B. Ky është një rrjedhë hyrje-dhe-dalje përmes hostit, dhe rruga e përcjelljes IPv4 e vlerëson atë.
Kur opsioni i përcjelljes së brendshme është i aktivizuar, procesi i serverit e përputh pakon me një klient të lidhur dhe e shkruan përsëri drejt atij klienti. Pakoja trajtohet brenda daemon-it dhe nuk hyn kurrë më në pajisjen e tunelit, kështu që rruga e përcjelljes së hostit anashkalohet plotësisht. Manuali i OpenVPN 2.6 e përshkruan këtë opsion si përcjellje e brendshme klient-për-klient, dhe pikërisht për këtë një rregull i firewall-it të hostit nuk mund ta shohë atë.
Ekziston një variant i tretë në vendosjet që e transferojnë kanalin e të dhënave në një modul kerneli. Vendimi i përcjelljes dhe kriptimi dalin nga hapësira e përdoruesit, dhe nëse netfilter e sheh rrjedhën varet nga mënyra se si është ndërtuar rruga e transferimit. Kurrë mos supozoni se një grup i vjetër rregullash sillet në një server të transferuar njësoj si në një në hapësirën e përdoruesit. Konfirmo modalitetin nga konfigurimi që po ekzekutohet, jo nga versioni i paketës.
Kur numëruesi nuk lëviz kurrë
Një numërues zero do të thotë që pakoja nuk u përputh me atë rregull në atë pikë, dhe arsyet janë disa. E para është anashkalimi më sipër: trafiku nuk arriti kurrë në zinxhir. E dyta është një mospërputhje në ndërfaqe, drejtim, burim ose destinacion, gjë e zakonshme kur grupi është rinumëruar dhe rregulli vazhdon të përmendë prefiksin e vjetër.
E treta është pozicioni. Një rregull më herët në zinxhir mund ta pranojë rrjedhën para se DROP-i juaj të vlerësohet, dhe një rregull më vonë mund të jetë ai që vendos në të vërtetë rezultatin. Lexoni zinxhirin me radhë me numëruesit të dukshëm, pastaj kontrolloni cili rregull rritet kur përsëritni testin.
Kryeni një shkëmbim të kontrolluar midis dy klientëve, adresat e vërteta të të cilëve i keni konfirmuar nga gjendja e vetë serverit, jo nga një qira që e mbani mend. Nëse numëruesi përkatës ende nuk lëviz, dyshoni rrugën përpara se të rishkruani përputhjen. Nëse lëviz, por lidhja ende ka sukses, drop-i po mbivendoset më vonë dhe problemi është renditja. Ai përgjigje vendos nëse riparimi është ndryshim rregulli apo ndryshim topologjie, prandaj merreni para se të redaktoni çdo gjë.
Zgjedhja e një kufiri që mund të filtrojë
Nëse politika duhet të banojë në firewall-in e hostit, vendose trafikun atje ku firewall-i mund ta shohë. Çaktivizimi i përcjelljes së brendshme është mënyra e mbështetur për ta bërë trafikun e peer-ëve të kalojë përmes ndërfaqes së tunelit dhe rrugës së përcjelljes, me koston që çdo pako peer kalon përmes stivit të hostit.
Pastaj përputh rrjedhën me saktësi. Trafiku arrin në ndërfaqen e tunelit dhe del prej saj, në të dy drejtimet, prandaj rregullat që marrin parasysh vetëm ndërfaqen fizike nuk do të përputhen. Rregullat e bazuar në adresa kanë nevojë për grupin aktual, dhe duhet të marrin parasysh drejtimin e kthimit njësoj si atë përpara.
Shumë vendosje shërbehen më mirë duke filtruar në nivel klienti ose grupi, ku identiteti është i njohur dhe politika ndjek përdoruesin në vend të një adrese që ndryshon kur rilidhet. Ky është një mekanizëm i ndryshëm nga një zinxhir i hostit, dhe të dy nuk duhet të përzihen pa një arsye të qartë.
Mos e transporto të pandryshuar grupin e rregullave të një topologjie të vjetër përmes një migrimi. Grupet e adresave, emrat e ndërfaqeve dhe modalitetet e përcjelljes ndikojnë të gjitha nëse një rregull përputhet, dhe një rregull i kopjuar që dikur funksiononte është lloji më mashtrues i provës. Filloni nga rrjedha që dëshironi të lejoni dhe shkruani rregullin që përputhet me të.
Testimi i izolimit në vend të besimit te një rregull
Testoni rastin e ndaluar dhe rastin e lejuar në të njëjtin ekzekutim. Filloni një lidhje të re nga një klient te tjetri dhe konfirmoni që dështon, pastaj konfirmoni që një lidhje që duhet lejuar ende funksionon. Nëse testohet vetëm e para, një firewall që bllokon gjithçka duket si sukses.
Përsëriteni pasi të ringarkohet konfigurimi i serverit dhe pasi një klient të rilidhet, sepse përcjellja e brendshme dhe caktimet e grupeve janë gjendje e kohës së ekzekutimit. Kontrolloni numëruesit në të dy drejtimet, sepse një rregull që përputhet me një drejtim dhe jo me përgjigjen prodhon izolim të pjesshëm që është e vështirë të vihet re në një test të shpejtë.
Izolimi është rezultati i vëzhguar në kufirin që vërtet e mbart rrjedhën. Një rregull DROP diku në host nuk është provë; një lidhje e dështuar plus një numërues i lëvizur në rregullin që e shkaktoi është provë.