Kako izvesti filtriranje paketov, prevajanje omrežnih naslovov in nastavitev parametrov izvajanja jedra - 2. del


Kot smo obljubili v 1. delu (\ "Nastavitev statičnega omrežnega usmerjanja"), bomo v tem članku (2. del serije RHCE) začeli z uvajanjem načel filtriranja paketov in prevajanja omrežnih naslovov (NAT) v Red Hat Enterprise Linux 7, pred potapljanje v nastavitev parametrov jedra za izvajanje, da se spremeni vedenje delujočega jedra, če se določeni pogoji spremenijo ali se pojavijo potrebe.

Filtriranje omrežnih paketov v RHEL 7

Ko govorimo o filtriranju paketov, se sklicujemo na postopek, ki ga izvaja požarni zid, v katerem prebere glavo vsakega podatkovnega paketa, ki poskuša skozi njega. Nato paket filtrira tako, da izvede zahtevano dejanje na podlagi pravil, ki jih je predhodno določil skrbnik sistema.

Kot verjetno že veste, je pri RHEL 7 privzeta storitev, ki upravlja pravila požarnega zidu, požarni zid. Tako kot iptables se tudi on pogovarja z modulom netfilter v jedru Linuxa, da preuči in manipulira omrežne pakete. Za razliko od iptables lahko posodobitve začnejo veljati takoj, ne da bi prekinile aktivne povezave - storitve vam niti ni treba znova zagnati.

Druga prednost požarnega zidu je, da nam omogoča, da določimo pravila na podlagi vnaprej konfiguriranih imen storitev (več o tem v minuti).

V 1. delu smo uporabili naslednji scenarij:

Vendar se boste spomnili, da smo na usmerjevalniku št. 2 onemogočili požarni zid, da bi poenostavili primer, saj filtriranja paketov še nismo pokrivali. Poglejmo zdaj, kako lahko omogočimo dohodne pakete, namenjene za določeno storitev ali vrata na cilju.

Najprej dodajte trajno pravilo, ki dovoljuje vhodni promet v enp0s3 (192.168.0.19) do enp0s8 (10.0.0.18):

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

Zgornji ukaz bo pravilo shranil v /etc/firewalld/direct.xml:

# cat /etc/firewalld/direct.xml

Nato omogočite pravilo, da začne veljati takoj:

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

Zdaj lahko iz okenca RHEL 7 na telnet prikličete spletni strežnik in znova zaženete tcpdump za nadzor prometa TCP med obema računalnikoma, tokrat z omogočenim požarnim zidom v usmerjevalniku št.

# telnet 10.0.0.20 80
# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

Kaj, če želite dovoliti dohodne povezave s spletnim strežnikom (vrata 80) samo iz 192.168.0.18 in blokirati povezave iz drugih virov v omrežju 192.168.0.0/24?

V požarni zid spletnega strežnika dodajte naslednja 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

Zdaj lahko na spletni strežnik pošljete zahteve HTTP iz 192.168.0.18 in iz neke druge naprave v 192.168.0.0/24. V prvem primeru se mora povezava uspešno zaključiti, v drugem pa sčasoma poteče.

Če želite to narediti, bo trik naredil kateri koli od naslednjih ukazov:

# telnet 10.0.0.20 80
# wget 10.0.0.20

Toplo vam svetujem, da si ogledate dokumentacijo o obogatenem jeziku Firewalld v Wiki projektu Fedora, kjer najdete dodatne podrobnosti o bogatih pravilih.

Prevajanje omrežnih naslovov v RHEL 7

Prevajanje omrežnih naslovov (NAT) je postopek, pri katerem je skupini računalnikov (lahko tudi samo eden od njih) v zasebnem omrežju dodeljen edinstven javni naslov IP. Posledično so znotraj omrežja še vedno enolično prepoznavni po lastnem zasebnem naslovu IP, od zunaj pa se vsi zdijo enaki.