Ovaj post pokušava malo pojasniti kako mreže funkcioniraju i kako našu Linux opremu pretvoriti u usmjerivač koji osigurava malo više naše mreže, bilo kod kuće ili čak u poslu. Pa krenimo na posao:
Usmjeravanje i filtriranje
Da bismo razgovarali i razumjeli usmjeravanje, prvo možemo definirati koja je funkcija usmjerivača? Za ovo možemo reći da usmjerivač, osim što stvara mrežu i omogućava povezivanje s drugom opremom (znajući da to možemo učiniti pomoću AP-a, Switch-a, Hub-a ili drugih), ima mogućnost povezivanja dvije različite mreže međusobno.
Kao što možemo vidjeti na slici, postoji lokalna mreža "10.0.1.0" koju kreira usmjerivač i dolazi do jednog od svoja dva sučelja. Tada usmjerivač na svom drugom sučelju ima drugu mrežu sa svojim javnim IP-om s kojim se može povezati na Internet. Funkcija usmjeravanja u osnovi služi kao posrednik između ove dvije mreže kako bi mogle komunicirati.
Linux kao usmjerivač.
Naravno, Linux kernel već ima mogućnost "prosljeđivanja", ali po defaultu je onemogućen, pa ako želimo da naš Linux radi ovaj posao, moramo ići na datoteku.
/proc/sys/net/ipv4/ip_forward
Tamo ćemo otkriti da se radi o datoteci koja sadrži samo nulu "0", ono što moramo učiniti je promijeniti je u jednu "1" da bismo aktivirali ovo ponašanje. Ovo se nažalost briše kada ponovo pokrenemo računar, da bismo ga ostavili aktiviranim po defaultu, moramo koristiti naredbu:
sysctl net.ipv4.ip_forward=1
Ili ga uredite direktno u datoteci /etc/sysctl.conf. Ovisno o distribuciji, ova konfiguracija može biti i u datoteci u /etc/sysctl.d/.
Prema zadanim postavkama naš Linux mora imati tablicu usmjeravanja, što je obično konfiguracija naše lan mreže i veza s usmjerivačem. Ako želimo vidjeti ovo usmjeravanje, možemo koristiti dvije naredbe:
route -n
o
netstat -nr
Obje naredbe trebaju vraćati isto.
Općenito, ova konfiguracija je dovoljna da vaš Linux posluži kao prolaz i da se drugi računari mogu kretati kroz naše računalo. Ako sada želimo da naš Linux poveže dvije ili više mreža, na primjer, lokalnu ili ne, možemo koristiti statičke rute.
Pretpostavimo da moj Linux ima dva mrežna sučelja, prvo ima internetsku vezu čija je mreža 172.26.0.0, a drugo (10.0.0.0) ima neke računare iz druge lokalne mreže. Ako želimo usmjeravati pakete na tu drugu mrežu, možemo koristiti:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
Općenito je:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
ako damo ruta -n bez obzira postoji li ova mreža ili ne, ovo usmjeravanje će biti fiksirano u našoj tablici.
Ako želimo ukloniti navedeno usmjeravanje, možemo koristiti
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
U osnovi se iptables koristi za filtriranje paketa, odlaznih, dolaznih ili drugih, što ga čini izvrsnim alatom za upravljanje našim mrežnim prometom. Pa, iptables, baš kao što nam omogućava filtriranje prometa sa istog računara, omogućava nam i filtriranje prometa koji prolazi kroz njega. (Prosljeđivanje). Iptable se mogu podijeliti na tablice, nizove i akcije.
- Odbori: u osnovi mogu biti dvije tablice, filteri, za filtriranje paketa i nat za prevođenje adresa, odnosno za prelazak sa jedne mreže na drugu.
- Lanci: Lanac se odnosi na vrstu prometa koji želimo filtrirati ili preplivati, odnosno na koji ćemo promet primijeniti tablice? a mogu biti: ULAZ: Dolazni promet, IZLAZ: odlazni promet ili NAPRED: Saobraćaj koji prolazi kroz njega, ali to nije ispravna veza.
- Može se i pojaviti NAKNADNIŠTVO, koja se koristi za tretiranje paketa na određeni način nakon što je usmjeren.
- Akcije: Akcije su u osnovi radnje koje treba izvesti s lancem. Ova akcija može biti ispustiti, koji samo uništava taj promet ili PRIHVATI. koji omogućava prometu da izvrši tu akciju.
IPTABLES pravila spremaju se i izvršavaju redoslijedom u kojem su kreirana, a ako pravilo izbriše prethodno pravilo, uvijek se primjenjuje posljednje pravilo u redoslijedu.
Pravila vatrozida.
Generalno, zaštitni zidovi prirodno rade na dva načina:
- Omogućiti sav promet osim ili
- Ne dopustite nikakav promet osim ...
Da biste primijenili politike, koristite IPTABLE - P AKCIJSKI LANAC
Gdje niz predstavlja vrstu prometa (INPUT, OUTPUT, FORWARD, POSTROUTING ...), a radnja je DROP ILI ACCEPT.
Pogledajmo primjer.
Ovdje vidimo da sam isprva uspio pingati, a zatim sam rekao IPTABLESU da je sav IZLAZNI saobraćaj DROP ili nije dozvoljen. Tada sam rekao IPTABLES-u da to prihvati.
Ako ćemo vatrozid graditi od nule, uvijek moramo primjenjivati pravila (Ne dopustiti nikakav promet osim ... Za to tada primjenjujemo pravila
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P NAPRED DROP
Da se vratimo, napišemo isto i zamijenimo DROP sa ACCEPT.
U ovom trenutku, budući da je sav promet odbijen, počinjemo svojim IPTABLAMAMA govoriti kakav promet može imati.
Sintaksa je:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
Gde:
Niz = ULAZ, IZLAZ ili NAPRIJED
origin_ip = Porijeklo paketa, ovo može biti pojedinačna IP adresa ili mreža i u ovom slučaju moramo navesti masku).
odredište_ip = kuda idu paketi. ovo može biti pojedinačna IP adresa ili mreža i u ovom slučaju moramo navesti masku).
protokol = označava protokol koji koriste paketi (icmp, tcp, udp ...)
port = odredišna luka prometa.
akcija = DROP ili ACCEPT.
Primjer:
Primjenjuju se SVA ograničena pravila.
Zatim dodajemo pravila kako bismo mogli imati promet preko porta 80 HTTP i 443 HTTPS, uz TCP protokol. Zatim port 53 Primjenjuje se za DNS klijenta za rješavanje domena, inače nećete navigirati. Ovo radi s udp protokolom.
Linija:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
To je zbog sljedećeg: Kada, na primjer, napravite HTTP zahtjev, povezujete se s portom 80 servera, ali server da bi vratio informacije mora se povezati s vama putem bilo kojeg porta. (Generalno veće od 1024).
Kako su sve naše luke zatvorene, to se neće postići ukoliko ne otvorimo sve luke veće od 1024 (Loša ideja). Ovo govori da je prihvaćen sav dolazni promet koji dolazi iz veze koju sam uspostavio. Mislim, vezu koju sam u principu započeo.
Nadam se da su vam se svidjele ove informacije. U sljedećem ću govoriti o NAT-u, proxyju i skriptama za Firewal.
To je osnova koju mnogi poduzetnici uzimaju za proizvodnju vlastitih zaštitnih zidova, zbog čega na tržištu postoji toliko marki zaštitnih zidova s ugrađenim linuxom, neki dobri, a drugi ne toliko.
Odličan članak. Radujem se drugom dijelu.
Vrlo dobro objašnjenje, pomoglo mi je da shvatim proxy svog rada. Hvala ti
Dobar dan Jlcmux,
Izvrsno, stvarno mi se svidjelo, kada će biti dostupna druga strana?
Pozdrav i hvala na podjeli
Hvala na komentaru.
Drugi dio poslao sam jučer, tokom dana mislim da će ga objaviti.
Pozdrav.
Vrlo dobar prijatelj s člankom @ Jlcmux, zaista sam naučio s njim jer je razjasnio neke sumnje koje sam imao neko vrijeme, usput vam ne bi smetalo da podijelite knjigu izvora članka, Sébastiena BOBILLIERA, pa slau2s i sada da vidite 2. dio, salu2s.
Pozdrav, hvala što ste komentirali Izrael.
Ispada da knjigu imam u fizičkom obliku. Ali pronašao sam ovaj link na Google Books. 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 kompletan.
Vrlo dobar članak, dodajem upit: Koja bi bila prednost korištenja linuxa kao usmjerivača, ako postoji, s obzirom na njemu posvećeni hardver? Ili je to samo za vježbanje? Znam da postoje namenski distributeri, ali ne znam hoće li oni spasiti stare računare ili pružiti veću fleksibilnost u konfiguraciji.
Pa, mislim da prednosti i nedostaci ovise o scenariju u kojem ćete to primijeniti. Zašto sigurno nećete kupiti UTM ili nešto slično za svoju kuću? A možda i za malu tvrtku koja si to ne može priuštiti. Dobra je i kao vježba, jer vam pomaže da razumijete svu logiku ovoga i možete bolje konfigurirati namjenski zid. Uz to, gotovo svi ovi uređaji zaista imaju ugrađeni Linux.
Pozdrav.
Pozdrav, pitanje, možete li stvoriti "umjetno" sučelje u Linuxu za slično usmjeravanje između mreža? (stil praćenja paketa) za rad sa virtualnim mašinama? npr. ako imam eth0 (jer naravno imam jednu karticu) mogu li stvoriti eth1 da napravim drugu mrežu? Vrlo dobar učitelj!
U Linuxu naravno možete kreirati virtualna sučelja. Ako imate eth0, možete imati eth0: 0, eth0: 1, eth0: 2 ... itd
Tako dobro, hvala na podjeli