Zoeken op website

Hoe u pakketfiltering en netwerkadresvertaling uitvoert en kernelruntimeparameters instelt - Deel 2


Zoals beloofd in Deel 1 ("Statische netwerkroutering instellen"), beginnen we in dit artikel (Deel 2 van de RHCE-serie) met de introductie de principes van pakketfiltering en netwerkadresvertaling (NAT) in Red Hat Enterprise Linux 7, voordat we duiken in het instellen van runtime-kernelparameters om het gedrag van een actieve kernel te wijzigen als bepaalde omstandigheden veranderen of als er behoeften ontstaan.

Netwerkpakketfiltering in RHEL 7

Als we het hebben over pakketfiltering, verwijzen we naar een proces dat wordt uitgevoerd door een firewall, waarbij het de header leest van elk datapakket dat er doorheen probeert te gaan. Vervolgens filtert het het pakket door de vereiste actie te ondernemen op basis van regels die eerder door de systeembeheerder zijn gedefinieerd.

Zoals u waarschijnlijk weet, te beginnen met RHEL 7, is firewalld de standaardservice die de firewallregels beheert. Net als iptables praat het met de netfilter-module in de Linux-kernel om netwerkpakketten te onderzoeken en te manipuleren. In tegenstelling tot iptables kunnen updates onmiddellijk van kracht worden zonder actieve verbindingen te onderbreken – u hoeft de service niet eens opnieuw te starten.

Een ander voordeel van firewalld is dat we hiermee regels kunnen definiëren op basis van vooraf geconfigureerde servicenamen (daarover later meer).

In Deel 1 hebben we het volgende scenario gebruikt:

U zult zich echter herinneren dat we de firewall op router #2 hebben uitgeschakeld om het voorbeeld te vereenvoudigen, omdat we pakketfiltering nog niet hadden besproken. Laten we nu eens kijken hoe we inkomende pakketten kunnen inschakelen die bestemd zijn voor een specifieke dienst of poort op de bestemming.

Laten we eerst een permanente regel toevoegen om inkomend verkeer toe te staan van enp0s3 (192.168.0.19) naar enp0s8 (10.0.0.18 sterk>):

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

Met het bovenstaande commando wordt de regel opgeslagen in /etc/firewalld/direct.xml:

cat /etc/firewalld/direct.xml

Schakel vervolgens de regel in zodat deze onmiddellijk van kracht wordt:

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

Nu kunt u telneten naar de webserver vanuit het RHEL 7-vak en tcpdump opnieuw uitvoeren om het TCP-verkeer tussen de twee machines te controleren, dit keer met de firewall in router #2 ingeschakeld.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

Wat als u alleen inkomende verbindingen met de webserver (poort 80) van 192.168.0.18 wilt toestaan en verbindingen van andere bronnen wilt blokkeren in de 192.168.0.0/ 24 netwerk?

Voeg in de firewall van de webserver de volgende regels toe:

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

Nu kunt u HTTP-verzoeken doen aan de webserver, vanaf 192.168.0.18 en vanaf een andere machine in 192.168.0.0/24. In het eerste geval zou de verbinding succesvol moeten zijn, terwijl er in het tweede geval uiteindelijk een time-out optreedt.

Om dit te doen, is een van de volgende opdrachten voldoende:

telnet 10.0.0.20 80
wget 10.0.0.20

Ik raad je sterk aan om de Firewalld Rich Language-documentatie in de Fedora Project Wiki te bekijken voor meer details over rijke regels.

Netwerkadresvertaling in RHEL 7

Network Address Translation (NAT) is het proces waarbij aan een groep computers (het kan ook maar één van hen zijn) in een particulier netwerk een uniek openbaar IP-adres wordt toegewezen. Als gevolg hiervan worden ze binnen het netwerk nog steeds uniek geïdentificeerd door hun eigen privé-IP-adres, maar aan de buitenkant “lijken” ze allemaal hetzelfde.