După cum a promis în Partea 1 (“Configurați rutarea statică a rețelei"), în acest articol (Partea 2 de RHCE serie) vom începe prin introducerea principiilor de filtrare a pachetelor și de traducere a adreselor de rețea (NAT) în Red Hat Enterprise Linux 7, înainte de a vă scufunda în setarea parametrilor nucleului de execuție pentru a modifica comportamentul unui nucleu care rulează dacă se schimbă anumite condiții sau apar anumite nevoi.
Când vorbim despre filtrarea pachetelor, ne referim la un proces realizat de un firewall în care citește antetul fiecărui pachet de date care încearcă să treacă prin el. Apoi, filtrează pachetul luând acțiunea necesară pe baza regulilor care au fost definite anterior de administratorul de sistem.
După cum probabil știți, începând cu RHEL 7, serviciul implicit care gestionează regulile firewall-ului este firewalld. La fel ca iptables, vorbește cu modulul netfilter din kernel-ul Linux pentru a examina și manipula pachetele de rețea. Spre deosebire de iptables, actualizările pot avea efect imediat fără a întrerupe conexiunile active - nici măcar nu trebuie să reporniți serviciul.
Un alt avantaj al firewalld este că ne permite să definim reguli bazate pe nume de servicii preconfigurate (mai multe despre asta într-un minut).
În Partea 1, am folosit următorul scenariu:
Cu toate acestea, vă veți aminti că am dezactivat firewallul routerul nr. 2 pentru a simplifica exemplul, deoarece nu am acoperit încă filtrarea pachetelor. Să vedem acum cum putem activa pachetele primite destinate unui anumit serviciu sau port în destinație.
Mai întâi, să adăugăm o regulă permanentă pentru a permite traficul de intrare enp0s3 (192.168.0.19) la enp0s8 (10.0.0.18):
# firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT.
Comanda de mai sus va salva regula în /etc/firewalld/direct.xml:
# cat /etc/firewalld/direct.xml.
Apoi activați regula pentru ca aceasta să intre în vigoare imediat:
# firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT.
Acum puteți telnet către serverul web de pe RHEL 7 cutie și fugi tcpdump din nou pentru a monitoriza traficul TCP între cele două mașini, de data aceasta cu firewall-ul activat routerul nr. 2 activat.
# telnet 10.0.0.20 80. # tcpdump -qnnvvv -i enp0s3 gazdă 10.0.0.20.
Ce se întâmplă dacă doriți să permiteți doar conexiunile primite la serverul web (portul 80) din 192.168.0.18 și blocați conexiunile din alte surse din 192.168.0.0/24 reţea?
În firewall-ul serverului web, adăugați următoarele reguli:
# firewall-cmd --add-rich-rule 'rule family = "ipv4" address source = "192.168.0.18/24" service name = "http" accept' # firewall-cmd --add-rich-rule 'rule family = "ipv4" source source = "192.168.0.18/24" service name = "http" accept' --permanent. # firewall-cmd --add-rich-rule 'rule family = "ipv4" address source = "192.168.0.0/24" service name = "http" drop' # firewall-cmd --add-rich-rule 'rule family = "ipv4" address source = "192.168.0.0/24" service name = "http" drop' --permanent.
Acum puteți efectua cereri HTTP către serverul web, de la 192.168.0.18 și de la o altă mașină din 192.168.0.0/24. În primul caz, conexiunea ar trebui să se finalizeze cu succes, în timp ce în al doilea va expira în cele din urmă.
Pentru a face acest lucru, oricare dintre următoarele comenzi va face trucul:
# telnet 10.0.0.20 80. # wget 10.0.0.20.
Vă sfătuiesc cu tărie să verificați Limbaj bogat firewall documentație în Wiki Project Fedora pentru detalii suplimentare despre regulile bogate.
Traducere adresă de rețea (NAT) este procesul în care unui grup de computere (poate fi și unul dintre ele) dintr-o rețea privată li se atribuie o adresă IP publică unică. Drept urmare, acestea sunt încă identificate în mod unic prin propria adresă IP privată din interiorul rețelei, dar în exterior toate „par” la fel.