Sådan udføres pakkefiltrering, oversættelse af netværksadresse og indstilling af parametre til kørsel af kerne - del 2


Som lovet i del 1 (“Setup Static Network Routing”), i denne artikel (del 2 i RHCE-serien) begynder vi med at introducere principperne for pakkefiltrering og netværksadresseoversættelse (NAT) i Red Hat Enterprise Linux 7, inden vi dykker til indstilling af runtime-kerneparametre for at ændre en kørende kernes opførsel, hvis visse betingelser ændres eller behov opstår.

Netværkspakkefiltrering i RHEL 7

Når vi taler om pakkefiltrering, henviser vi til en proces udført af en firewall, hvor den læser overskriften på hver datapakke, der forsøger at passere gennem den. Derefter filtrerer den pakken ved at tage den nødvendige handling baseret på regler, der tidligere er defineret af systemadministratoren.

Som du sikkert ved, startende med RHEL 7, er den standardtjeneste, der administrerer firewallregler firewallld. Ligesom iptables taler det til netfilter-modulet i Linux-kernen for at undersøge og manipulere netværkspakker. I modsætning til iptables kan opdateringer træde i kraft med det samme uden at afbryde aktive forbindelser - du behøver ikke engang at genstarte tjenesten.

En anden fordel ved firewalld er, at det giver os mulighed for at definere regler baseret på forudkonfigurerede servicenavne (mere om det på et minut).

I del 1 brugte vi følgende scenarie:

Du vil dog huske, at vi deaktiverede firewallen på router nr. 2 for at forenkle eksemplet, da vi endnu ikke havde dækket pakkefiltrering. Lad os nu se, hvordan vi kan aktivere indgående pakker, der er bestemt til en bestemt tjeneste eller havn i destinationen.

Lad os først tilføje en permanent regel for at tillade indgående trafik i enp0s3 (192.168.0.19) til enp0s8 (10.0.0.18):

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

Ovenstående kommando gemmer reglen i /etc/firewalld/direct.xml:

# cat /etc/firewalld/direct.xml

Aktiver derefter reglen for, at den kan træde i kraft med det samme:

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

Nu kan du telnet til webserveren fra RHEL 7-boksen og køre tcpdump igen for at overvåge TCP-trafikken mellem de to maskiner, denne gang med firewall i router nr. 2 aktiveret.

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

Hvad hvis du kun vil tillade indgående forbindelser til webserveren (port 80) fra 192.168.0.18 og blokere forbindelser fra andre kilder i 192.168.0.0/24-netværket?

Tilføj følgende regler i webserverens firewall:

# 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 kan du foretage HTTP-anmodninger til webserveren fra 192.168.0.18 og fra en anden maskine i 192.168.0.0/24. I det første tilfælde skal forbindelsen gennemføres med succes, mens det i det andet i sidste ende vil timeout.

For at gøre det vil en af følgende kommandoer gøre tricket:

# telnet 10.0.0.20 80
# wget 10.0.0.20

Jeg anbefaler dig stærkt at tjekke Firewalld Rich Language-dokumentationen i Fedora Project Wiki for yderligere detaljer om rige regler.

Netværksadresseoversættelse i RHEL 7

Network Address Translation (NAT) er den proces, hvor en gruppe computere (det kan også kun være en af dem) i et privat netværk tildeles en unik offentlig IP-adresse. Som et resultat identificeres de stadig entydigt af deres egen private IP-adresse inde i netværket, men udadtil "synes" de alle ens.