Kako izvršiti filtriranje paketa, prevođenje mrežnih adresa i postavljanje parametara vremena izvođenja kernela - 2. dio


Kao što je obećano u 1. dijelu (“Postavljanje statičkog mrežnog usmjeravanja”), u ovom članku (2. dio serije RHCE) počet ćemo predstavljanjem principe filtriranja paketa i prevođenja mrežnih adresa (NAT) u Red Hat Enterprise Linux 7, prije nego što se upustimo u postavljanje parametara kernela vremena izvršavanja kako bi se modificiralo ponašanje kernela koji radi ako se određeni uvjeti promijene ili se pojave potrebe.

Filtriranje mrežnih paketa u RHEL 7

Kada govorimo o filtriranju paketa, mislimo na proces koji izvodi zaštitni zid u kojem čita zaglavlje svakog paketa podataka koji pokušava da prođe kroz njega. Zatim filtrira paket poduzimajući potrebnu akciju na osnovu pravila koja je prethodno definirao administrator sistema.

Kao što verovatno znate, počevši od RHEL 7, podrazumevana usluga koja upravlja pravilima zaštitnog zida je firewalld. Poput iptablesa, razgovara sa modulom netfilter u jezgru Linuxa kako bi ispitao i manipulirao mrežnim paketima. Za razliku od iptablesa, ažuriranja mogu odmah stupiti na snagu bez prekidanja aktivnih veza – ne morate čak ni da ponovo pokrećete uslugu.

Još jedna prednost firewalld-a je ta što nam omogućava da definiramo pravila na osnovu unaprijed konfiguriranih naziva usluga (više o tome za minut).

U 1. dijelu koristili smo sljedeći scenario:

Međutim, sjećate se da smo onemogućili zaštitni zid na ruteru #2 kako bismo pojednostavili primjer pošto još nismo pokrili filtriranje paketa. Pogledajmo sada kako možemo omogućiti dolazne pakete namijenjene određenoj usluzi ili portu na odredištu.

Prvo, dodajmo trajno pravilo za omogućavanje ulaznog saobraćaja u enp0s3 (192.168.0.19) do enp0s8 (10.0.0.18 jako>):

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

Gornja komanda će sačuvati pravilo u /etc/firewalld/direct.xml:

cat /etc/firewalld/direct.xml

Zatim omogućite pravilo da odmah stupi na snagu:

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

Sada možete telnet-om na web server iz RHEL 7 kutije i ponovo pokrenuti tcpdump da nadgledate TCP promet između dva računala, ovaj put sa firewall-om u ruteru #2 omogućeno.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

Šta ako želite da dozvolite samo dolazne veze na web server (port 80) sa 192.168.0.18 i blokirate veze iz drugih izvora u 192.168.0.0/ 24mreža?

U firewall web servera dodajte sljedeća pravila:

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent

Sada možete slati HTTP zahtjeve web serveru, sa 192.168.0.18 i sa neke druge mašine u 192.168.0.0/24. U prvom slučaju veza bi trebala biti uspješno završena, dok će u drugom na kraju isteći.

Da biste to učinili, bilo koja od sljedećih naredbi će učiniti trik:

telnet 10.0.0.20 80
wget 10.0.0.20

Preporučujem vam da pogledate dokumentaciju Firewalld Rich Language u Fedora Project Wiki za više detalja o bogatim pravilima.

Prevođenje mrežnih adresa u RHEL 7

Prevođenje mrežnih adresa (NAT) je proces u kojem se grupi računara (može biti i samo jedan od njih) u privatnoj mreži dodjeljuje jedinstvena javna IP adresa. Kao rezultat toga, oni su i dalje jedinstveno identificirani svojom privatnom IP adresom unutar mreže, ali izvana svi "izgledaju" isto.