Ta objava poskuša nekoliko pojasniti, kako delujejo omrežja in kako našo opremo Linux spremeniti v usmerjevalnik, ki naredi naše omrežje nekoliko bolj varno, bodisi doma ali celo v poslu. Pojdimo torej k poslu:
Usmerjanje in filtriranje
Za pogovor in razumevanje usmerjanja lahko najprej določimo, kakšna je funkcija usmerjevalnika? Za to lahko rečemo, da ima usmerjevalnik poleg tega, da ustvarja omrežje in omogoča povezavo z drugo opremo (vedoč, da lahko to storimo z dostopno točko, stikalom, zvezdiščem ali drugimi), zmožnost medsebojnega povezovanja dveh različnih omrežij.
Kot lahko vidimo na sliki, obstaja lokalno omrežje "10.0.1.0", ki ga ustvari usmerjevalnik in doseže enega od njegovih dveh vmesnikov. Nato ima usmerjevalnik na drugem vmesniku drugo omrežje z javnim IP-jem, s katerim se lahko poveže z internetom. Funkcija usmerjanja v bistvu služi kot posrednik med tema dvema omrežjema, tako da lahko komunicirajo.
Linux kot usmerjevalnik.
Seveda ima jedro Linuxa možnost »posredovanja«, vendar je privzeto onemogočeno, zato, če želimo, da to opravi naš Linux, moramo iti do datoteke.
/proc/sys/net/ipv4/ip_forward
Tam bomo ugotovili, da gre za datoteko, ki vsebuje samo ničlo "0". Za aktiviranje tega vedenja jo moramo spremeniti v eno "1". To se na žalost izbriše ob ponovnem zagonu računalnika, če ga želimo privzeto aktivirati, moramo uporabiti ukaz
sysctl net.ipv4.ip_forward=1
Ali pa ga uredite neposredno v datoteki /etc/sysctl.conf. Glede na distribucijo je lahko ta konfiguracija tudi v datoteki v /etc/sysctl.d/.
Naš Linux mora imeti privzeto usmerjevalno tabelo, ki je običajno konfiguracija našega omrežja LAN in povezava z usmerjevalnikom. Če želimo videti to usmeritev, lahko uporabimo dva ukaza:
route -n
o
netstat -nr
Oba ukaza morata vrniti enako.
Na splošno je ta konfiguracija dovolj, da vaš Linux služi kot prehod in drugi računalniki lahko krmilijo po našem računalniku. Če želimo, da naš Linux na primer poveže dve ali več omrežij, naj bo lokalna ali ne, lahko uporabimo statične poti.
Recimo, da ima moj Linux dva omrežna vmesnika, prvi ima internetno povezavo, katerega omrežje je 172.26.0.0, drugi pa (10.0.0.0) nekaj računalnikov iz drugega lokalnega omrežja. Če želimo pakete usmeriti v drugo omrežje, lahko uporabimo:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
Na splošno je:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
če damo route -n ne glede na to, ali to omrežje obstaja ali ne, bo to usmerjanje določeno v naši tabeli.
Če želimo omenjeno usmeritev odpraviti, jo lahko uporabimo
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
V bistvu iptables se uporablja za filtriranje paketov, odhodnih, dohodnih ali drugih, zato je odlično orodje za upravljanje našega omrežnega prometa. No, iptables, tako kot nam omogoča filtriranje prometa iz istega računalnika, omogoča tudi filtriranje prometa, ki gre skozi njega. (Posredovanje). Iptable lahko razdelimo na tabele, nize in akcije.
- Plošče: v bistvu sta lahko dve tabeli, filtri, za filtriranje paketov in nat za prevajanje naslovov, torej za prehod iz enega omrežja v drugega.
- Verige: Veriga se nanaša na vrsto prometa, ki ga želimo filtrirati ali preplavati, torej na kateri promet bomo uporabili tabele? in so lahko: INPUT: Dohodni promet, IZHOD: odhodni promet oz NAPREJ: Promet, ki poteka po njem, ni pa lastna povezava.
- Lahko se tudi pojavi POSTROUTIRANJE, ki se uporablja za obdelavo paketa na določen način po preusmeritvi.
- Dejanja: Dejanja so v bistvu dejanja, ki jih je treba izvesti z verigo. To dejanje je lahko PAD, ki samo uniči ta promet oz SPREJEM. ki omogoča prometu takšno dejanje.
Pravila IPTABLES se shranijo in izvedejo v vrstnem redu, kot so bila ustvarjena, in če pravilo izbriše prejšnje pravilo, se vedno uporabi zadnje pravilo v vrstnem redu.
Politike požarnega zidu.
Na splošno požarni zidovi delujejo na dva načina:
- Dovoli ves promet razen ali
- Ne dovoli nobenega prometa, razen ...
Za uporabo pravilnikov uporabite IPTABLE - P AKCIJSKA VERIGA
Kjer niz predstavlja vrsto prometa (INPUT, OUTPUT, FORWARD, POSTROUTING ...) in je dejanje DROP OR ACCEPT.
Oglejmo si primer.
Tu vidimo, da sem sprva lahko pingal, nato pa povedal IPTABLES, da je ves izhodni promet PADAL ali ni dovoljen. Potem sem IPTABLES rekel, naj to sprejme.
Če želimo požarni zid graditi iz nič, moramo vedno uporabiti pravila (Ne dovoli nobenega prometa razen ... Za to potem uporabimo pravila
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P NAPRED PAD
Za vrnitev napišemo enako in DROP nadomestimo s ACCEPT.
Na tej točki, ker je ves promet zavrnjen, začnemo svojim IPTABLAM povedati, kakšen promet lahko ima.
Sintaksa je:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
Kje:
Niz = VHOD, IZHOD ali NAPRED
izvor_ip = Izvor paketov, to je lahko en IP ali omrežje in v tem primeru moramo določiti masko).
cilj_ip = kam gredo paketi. to je lahko en IP ali omrežje in v tem primeru moramo določiti masko).
protokol = označuje protokol, ki ga uporabljajo paketi (icmp, tcp, udp ...)
vrata = ciljno pristanišče prometa.
dejanje = POPUST ali SPREJEM.
Primer:
Veljajo VSE omejene politike.
Nato dodamo pravila, ki omogočajo promet prek vrat 80 HTTP in 443 HTTPS s protokolom TCP. Nato vrata 53 Za odjemalca DNS se uporablja za reševanje domen, sicer ne boste krmarili. To deluje s protokolom udp.
Linija:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
To je posledica naslednjega: Ko na primer zahtevate HTTP, se povežete z vrati 80 strežnika, vendar mora strežnik, da vrne informacije, povezati z vami prek katerega koli porta. (Na splošno večje od 1024).
Ker so vsa naša vrata zaprta, tega ne bomo dosegli, če ne odpremo vseh vrat, višjih od 1024 (slaba ideja). To pove, da je ves dohodni promet, ki prihaja iz povezave, ki sem jo vzpostavil sam, sprejet. Mislim, povezavo, ki sem jo načeloma začel.
Upam, da so vam bile te informacije všeč. V naslednjem bom govoril o NAT-u, proxyju in skriptih za Firewal.
To je osnova, ki si jo mnogi podjetniki izdelujejo za izdelavo lastnih požarnih zidov, zato je na trgu toliko blagovnih znamk požarnih zidov z vdelanim Linuxom, nekatere dobre in druge ne toliko.
Odličen članek. Veselim se drugega dela.
Zelo dobra razlaga, pomagala mi je razumeti proxy mojega dela. Hvala vam
Pozdravljeni Jlcmux,
Odlično, res mi je bilo všeč, kdaj bo na voljo druga stranka?
Lep pozdrav in hvala za delitev
Hvala za komentar.
Drugi del sem poslal včeraj, tekom dneva pa mislim, da ga bodo objavili.
Lep pozdrav.
Zelo dober članek, prijatelj @ Jlcmux, res sem se naučil z njim, saj je razjasnil nekaj dvomov, ki sem jih imel že nekaj časa, mimogrede ne bi imel nič proti, če bi delil knjigo vira članka, Sébastiena BOBILLIERJA, pa slau2s in zdaj glej 2. del, salu2s.
Pozdravljeni, hvala za komentar Izraela.
Izkazalo se je, da imam knjigo v fizični obliki. Toda to povezavo sem našel v Google Knjigah. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
Mislim, da je popolna.
Zelo dober članek, dodam vprašanje: Kakšna bi bila prednost uporabe linuxa kot usmerjevalnika, če sploh obstaja, glede na strojno opremo, ki mu je namenjena? Ali pa samo za vadbo? Vem, da obstajajo namenski distributerji, vendar ne vem, ali bodo reševali stare osebne računalnike ali zagotavljali večjo prilagodljivost pri konfiguraciji.
No, mislim, da so prednosti in slabosti odvisne od scenarija, v katerem boste to izvedli. Zakaj zagotovo ne boste kupili UTM-ja ali česa podobnega za svojo hišo? In morda za majhno podjetje, ki si tega tudi ne more privoščiti. Dobra je tudi kot vaja, saj vam pomaga razumeti vso logiko tega in lahko bolje konfigurirate namenski zid FWall. Poleg tega imajo skoraj vse te naprave resnično vgrajen Linux.
Lep pozdrav.
Pozdravljeni, vprašanje, ali lahko v Linuxu ustvarite "umetni" vmesnik za podobno usmerjanje med omrežji? (slog sledilca paketov) za delo z virtualnimi stroji? npr. če imam eth0 (ker imam seveda eno kartico), ali lahko ustvarim eth1, da ustvarim drugo mrežo? Zelo dober mentor!
V Linuxu lahko seveda ustvarite navidezne vmesnike. Če imate eth0, lahko imate eth0: 0, eth0: 1, eth0: 2 ... itd
Tako dobro, hvala za skupno rabo