Som lovet i Del 1 (“Oppsett Statisk nettverksruting"), i denne artikkelen (Del 2 av RHCE serie) vil vi begynne med å introdusere prinsippene for pakkefiltrering og oversettelse av nettverksadresse (NAT) i Red Hat Enterprise Linux 7, før du dykker ned i innstilling av kjøringstidsparametere for å endre oppførselen til en kjørende kjerne hvis visse forhold endres eller behov oppstår.
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 firewalld. Som iptables snakker den til netfilter -modulen i Linux -kjernen for å undersøke og manipulere nettverkspakker. I motsetning til iptables kan oppdateringer tre i kraft umiddelbart uten å avbryte aktive tilkoblinger - du trenger ikke engang starte tjenesten på nytt.
En annen fordel med firewalld er at den lar oss definere regler basert på forhåndskonfigurerte tjenestenavn (mer om det på et minutt).
I Del 1, brukte vi følgende scenario:
Du husker imidlertid at vi har deaktivert brannmuren ruter nr. 2 for å forenkle eksemplet siden vi ikke hadde dekket pakkefiltrering ennå. La oss se nå hvordan vi kan aktivere innkommende pakker bestemt for en bestemt tjeneste eller port i destinasjonen.
La oss først legge til en permanent regel for å tillate innkommende trafikk 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.
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 løp tcpdump igjen for å overvåke TCP -trafikken mellom de to maskinene, denne gangen med brannmuren inne ruter nr. 2 aktivert.
# telnet 10.0.0.20 80. # tcpdump -qnnvvv -i enp0s3 vert 10.0.0.20.
Hva om du bare vil tillate innkommende tilkoblinger til webserveren (port 80) fra 192.168.0.18 og blokker tilkoblinger fra andre kilder i 192.168.0.0/24 Nettverk?
I nettserverens brannmur legger du til følgende regler:
# firewall-cmd --add-rich-rule 'rule family = "ipv4" kildeadresse = "192.168.0.18/24" tjenestenavn = "http" godta' # 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" kildeadresse = "192.168.0.0/24" tjenestenavn = "http" drop' # firewall-cmd --add-rich-rule 'rule family = "ipv4" kildeadresse = "192.168.0.0/24" tjenestenavn = "http" drop'-permanent.
Nå kan du sende HTTP -forespørsler til webserveren, 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 vellykket, mens det i det andre til slutt vil timeout.
For å gjøre det, vil en av følgende kommandoer gjøre utslaget:
# telnet 10.0.0.20 80. # wget 10.0.0.20.
Jeg anbefaler deg på det sterkeste å sjekke ut Firewalld Rich Language dokumentasjon i Fedora Project Wiki for ytterligere detaljer om rike regler.
Oversettelse av nettverksadresse (NAT) er prosessen der en gruppe datamaskiner (det kan også bare være en av dem) i et privat nettverk får en unik offentlig IP -adresse. Som et resultat blir de fremdeles unikt identifisert av sin egen private IP -adresse inne i nettverket, men på utsiden ser de alle like ut.