Com realitzar el filtratge de paquets, la traducció d'adreces de xarxa i establir els paràmetres d'execució del nucli - Part 2


Tal com es va prometre a la part 1 (Configuració de l'encaminament de xarxa estàtica), en aquest article (part 2 de la sèrie RHCE) començarem introduint els principis de filtratge de paquets i traducció d'adreces de xarxa (NAT) a Red Hat Enterprise Linux 7, abans submergir-se en la configuració dels paràmetres del nucli en temps d'execució per modificar el comportament d'un nucli en execució si canvien determinades condicions o sorgeixen necessitats.

Filtret de paquets de xarxa a RHEL 7

Quan parlem de filtratge de paquets, ens referim a un procés realitzat per un tallafoc en el qual llegeix la capçalera de cada paquet de dades que intenta passar-hi. A continuació, filtra el paquet fent l'acció requerida en funció de les regles que l'administrador del sistema ha definit prèviament.

Com probablement sabreu, començant amb RHEL 7, el servei predeterminat que gestiona les regles del tallafoc és firewalld. Igual que iptables, parla amb el mòdul netfilter del nucli de Linux per examinar i manipular paquets de xarxa. A diferència d'iptables, les actualitzacions poden tenir efecte immediatament sense interrompre les connexions actives; ni tan sols cal que reinicieu el servei.

Un altre avantatge de firewalld és que ens permet definir regles basades en noms de serveis preconfigurats (més sobre això en un minut).

A la part 1, hem utilitzat el següent escenari:

Tanmateix, recordareu que vam desactivar el tallafoc a l'encaminador #2 per simplificar l'exemple, ja que encara no havíem cobert el filtratge de paquets. Vegem ara com podem habilitar els paquets entrants destinats a un servei o port concret a la destinació.

Primer, afegim una regla permanent per permetre el trànsit entrant a enp0s3 (192.168.0.19) a enp0s8 (10.0.0.18):

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

L'ordre anterior desarà la regla a /etc/firewalld/direct.xml:

# cat /etc/firewalld/direct.xml

A continuació, activeu la regla perquè tingui efecte immediatament:

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

Ara podeu telnet al servidor web des del quadre RHEL 7 i tornar a executar tcpdump per supervisar el trànsit TCP entre les dues màquines, aquesta vegada amb el tallafoc a l'encaminador #2 habilitat.

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

Què passa si només voleu permetre connexions entrants al servidor web (port 80) des de 192.168.0.18 i bloquejar connexions d'altres fonts a la xarxa 192.168.0.0/24?

Al tallafoc del servidor web, afegiu les regles següents:

# 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

Ara podeu fer sol·licituds HTTP al servidor web, des de 192.168.0.18 i des d'alguna altra màquina a 192.168.0.0/24. En el primer cas, la connexió s'hauria de completar correctament, mentre que en el segon acabarà esgotant el temps d'espera.

Per fer-ho, qualsevol de les ordres següents farà el truc:

# telnet 10.0.0.20 80
# wget 10.0.0.20

Us recomano fermament que consulteu la documentació de Firewalld Rich Language a la Viqui del projecte Fedora per obtenir més detalls sobre les regles riques.

Traducció d'adreces de xarxa a RHEL 7

La traducció d'adreces de xarxa (NAT) és el procés on un grup d'ordinadors (també pot ser només un d'ells) d'una xarxa privada se'ls assigna una adreça IP pública única. Com a resultat, encara s'identifiquen de manera única per la seva pròpia adreça IP privada dins de la xarxa, però a l'exterior tots semblan iguals.