Kuidas Linuxi väljundit lukustada, et VPN-i kadudes midagi ei leki
Marsruutimine ja filtreerimine on eraldi otsused. Lukusta väljundkonks ja seejärel piira lõpp-punkti, DNS-i ja halduse erandeid, mida tunnel vajab taasühendumiseks.
Kujutage ette kodust ühendust kasutavat meediaboksi, mis peaks internetti jõudma ainult tunneli kaudu. Kui tunnel kaob, peaks rakendus seiskuma, mitte vaikselt füüsilise liidese kaudu jätkama. Selle käitumise saavutamine on tulemüüri, mitte marsruutimise probleem, ja vahe on oluline, sest marsruudi saab asendada deemonit taaskäivitades, samas kui filter jääb sinna, kuhu te selle panite. Järgnevalt vaatleme, kuidas paketi tee tegelikult otsustab, ja siis, kuidas piirata erandeid, mis hoiavad tunnelit taasühendumas.
Kohalik väljund on teine konks kui edasisaatmine
Pakett, mis lahkub masinas olevast rakendusest, läbib väljundkonksu; pakett, mille masin marsruudib teise hosti jaoks, läbib edasisaatmise. Poliitika, mis mainib ainult forward, piirab teist ja jätab esimese täiesti avatuks, mistõttu näib palju väljundlukke õigena ega tee midagi. Liidese sobitamine kuulub samasse reeglisse: oifname "tun0" accept laseb läbi liikluse, mis on juba tunneli kaudu marsruuditud. Marsruutimine ja filtreerimine jäävad samuti eraldi otsusteks, seega võib ühenduse marsruut eksisteerida, samal ajal kui filter paketi tagasi lükkab. Just sellele eraldusele te toetute.
Lüüs, mis saadab edasi teiste seadmete liiklust, vajab mõlemat konksu. Ainult väljundi lukustamine kaitseb masinat ennast ja jätab iga allpool oleva kliendi vabaks lekkima.
Kirjutage erandite nimekiri lõpp-punktist väljapoole
Alustage tunneli lõpp-punktist: üks sihtaadress või väike kinnitatud hulk, transpordiprotokoll ja sihtport, näiteks udp dport 1194 ip daddr 203.0.113.7 accept. Kui klient lahendab hostinime, vajab algne DNS-vahetus oma reeglit, mis on piiratud resolveri ja pordiga 53, mitte üldist luba selle resolveri aadressile. Iga erand peaks nimetama põhjuse, miks see olemas on. Luba kogu UDP-liiklusele VPN-i pordi suunas katab palju enamat kui üks autenditud teenus, mis teil silme ees oli.
Algne nimelahendus on koht, kus lukud tavaliselt mädanevad. Taimeriga värskendatav aadressihulk vajab määratletud käitumist, kui värskendamine ebaõnnestub, ja see käitumine ei saa olla ühenduse avamine seni, kuni see õnnestub. Värskendage tunneli kaudu, kui tunnel püsti on, ja vastasel juhul pöörduge tagasi viimase teadaoleva terve lõpp-punkti juurde.
Kohalik haldus vajab sama kohtlemist. Haldusalavõrk ei ole usaldusväärne ainult sellepärast, et selle aadressid on privaatsed, ja reegel, mis seda usaldab, kutsub lukust kõrvale teise tee.
Liidese sobitamine ei tõesta tervet tunnelit
Reeglid, mis aktsepteerivad kõike, mis väljub liidesest tun0, eeldavad, et selle liidese pakett tuli tunnelist. Liidesenimesid luuakse uuesti ja nimi ei ole krüptograafiline identiteet. Vastaspool võib samuti kaduda, samal ajal kui liides jääb püsti, mis muudab reegli väga veenvaks mittetegevuseks.
Ühenduste jälgimine lisab sellega seotud lõksu. Lai reegel loodud ühenduste jaoks kordab luba, mille voog varem sai, seega enne tunneli kadumist alanud sessioon jätkub pärast seda. Piirake olekupõhist aktsepteerimist liideste ja aadressidega, mida te tõesti mõtlete, muidu olete ehitanud luku, mis avaneb ise. Sisend- ja väljundreeglid vastavad ka erinevatele küsimustele ning ühe karastamine teise eiramise juures jätab masina kättesaadavaks suunas, mida te ei kaalunud.
Mis jääb deemon kokkujooksu üle
Filter, mille paigaldab skript, mis jookseb pärast tunneli tõusmist, kaob koos tunneliga, täpselt sel hetkel, kui seda vajati. Laadige lukk alglaadimisel ja laske deemonil hallata ainult oma erandeid.
Vaikimisi marsruudi kustutamine ei ole samuti asendus. Marsruut on olek, mida deemon omab ja ümber kirjutab, ning selle eemaldamine võib võtta ära taasühendumiseks vajaliku tee. IPv6 vajab oma plaani, sest naabrite avastamine ja ruuterite kuulutused on lingiteenused, mis peavad töötama edasi ka siis, kui tavaline liiklus on blokeeritud. DHCP kuulub samasse kategooriasse. Kirjutage need üles eranditega, millel on eesmärk, selle asemel et avastada neid hiljem katkestustena.
Taastetee enne kasutuselevõttu
Testige lukku nii, nagu see ebaõnnestub: alglaadimine ilma tunnelita, deemonit tappa, lõpp-punkti muutmine ja taasühendumine. Iga juhtum peaks rakendused seiskama ja taastekanali töös hoidma. Tehke seda konsoolilt, sest kaugkest on sessioon, mille teie enda reegel kõige tõenäolisemalt välja lukustab.
Seejärel kontrollige, kuhu tavaline rakendus veel pääseb, kasutades kahjutut sihtkohta ja päringut, mida saate kontrollida. Tulemus, mida soovite, on keeldumine ühendusel ja õnnestumine tunneli kaudu, mitte mitmetähenduslik aegumine, mis võib tähendada mõlemat. Hoidke reeglistik sama omaniku all nagu ülejäänud tulemüür, selle asemel et asendada kogu tabel kestaskriptist. Poliitika, kus iga luba suudab ennast õigustada, on väärt rohkem kui pikk reeglistik, mida keegi ei oska seletada.