Hvordan utføre pakkefiltrering, nettverksadresseoversettelse og angi kjernekjøringsparametere - del 2


Som lovet i Del 1 ("Oppsett statisk nettverksruting "), vil vi i denne artikkelen (Del 2 av RHCE-serien) begynne med å introdusere prinsippene for pakkefiltrering og nettverksadresseoversettelse (NAT) i Red Hat Enterprise Linux 7, før du går inn i å sette kjøretidskjerneparametere for å endre oppførselen til en kjørende kjerne hvis visse forhold endres eller behov oppstår.

Nettverkspakkefiltrering i RHEL 7

Når vi snakker om pakkefiltrering, refererer vi til en prosess utført av en brannmur der den leser overskriften til hver datapakke som prøver å passere gjennom den. Deretter filtrerer den pakken ved å utføre den nødvendige handlingen basert på regler som tidligere er definert av systemadministratoren.

Som du sikkert vet, begynner med RHEL 7, er standardtjenesten som administrerer brannmurregler brannmur. Som iptables snakker den med netfiltermodulen i Linux-kjernen for å undersøke og manipulere nettverkspakker. I motsetning til iptables, kan oppdateringer tre i kraft umiddelbart uten å forstyrre aktive tilkoblinger - du trenger ikke engang å starte tjenesten på nytt.

En annen fordel med brannmur er at den lar oss definere regler basert på forhåndskonfigurerte tjenestenavn (mer om det om et minutt).

I Del 1 brukte vi følgende scenario:

Du vil imidlertid huske at vi deaktiverte brannmuren på ruter #2 for å forenkle eksemplet siden vi ikke hadde dekket pakkefiltrering ennå. La oss se nå hvordan vi kan aktivere innkommende pakker destinert for en bestemt tjeneste eller port på destinasjonen.

La oss først legge til en permanent regel for å tillate innkommende trafikk i enp0s3 (192.168.0.19) til enp0s8 (10.0.0.18 sterk>):

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

Kommandoen ovenfor vil lagre regelen til /etc/firewalld/direct.xml:

cat /etc/firewalld/direct.xml

Aktiver deretter regelen for at den skal tre i kraft umiddelbart:

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

Nå kan du telnet til webserveren fra RHEL 7-boksen og kjøre tcpdump igjen for å overvåke TCP-trafikken mellom de to maskinene, denne gangen med brannmuren i ruter #2 aktivert.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

Hva om du bare vil tillate innkommende tilkoblinger til webserveren (port 80) fra 192.168.0.18 og blokkere tilkoblinger fra andre kilder i 192.168.0.0/ 24nettverk?

I nettserverens brannmur legger du til følgende regler:

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

Nå kan du sende HTTP-forespørsler til nettserveren, fra 192.168.0.18 og fra en annen maskin i 192.168.0.0/24. I det første tilfellet skal tilkoblingen fullføres, mens den i det andre til slutt vil avbrytes.

For å gjøre det, vil en av følgende kommandoer gjøre susen:

telnet 10.0.0.20 80
wget 10.0.0.20

Jeg anbefaler deg på det sterkeste å sjekke ut Firewalld Rich Language-dokumentasjonen i Fedora Project Wiki for ytterligere detaljer om rike regler.

Nettverksadresseoversettelse i RHEL 7

Nettverksadresseoversettelse (NAT) er prosessen der en gruppe datamaskiner (det kan også være bare én av dem) i et privat nettverk tildeles en unik offentlig IP-adresse. Som et resultat er de fortsatt unikt identifisert av sin egen private IP-adresse inne i nettverket, men på utsiden "ser" de alle ut.