RHCSA-serien: Grunnleggende brannmurer og nettverkstrafikkkontroll ved bruk av brannmurD og Iptables - del 11


Med enkle ord er en brannmur et sikkerhetssystem som kontrollerer innkommende og utgående trafikk i et nettverk basert på et sett med forhåndsdefinerte regler (som for eksempel pakkedestinasjonen/kilden eller typen trafikk) .

I denne artikkelen vil vi gå gjennom det grunnleggende om brannmur, standard dynamisk brannmurdemon i Red Hat Enterprise Linux 7, og iptables-tjenesten, arven brannmurtjeneste for Linux, som de fleste system- og nettverksadministratorer er godt kjent med, og som også er tilgjengelig i RHEL 7.

En sammenligning mellom FirewallD og Iptables

Under panseret snakker både brannmur og iptables-tjenesten til netfilter-rammeverket i kjernen gjennom det samme grensesnittet, ikke overraskende, kommandoen iptables . Imidlertid, i motsetning til iptables-tjenesten, kan brannmur endre innstillingene under normal systemdrift uten at eksisterende tilkoblinger går tapt.

Brannmur skal være installert som standard i RHEL-systemet ditt, selv om det kanskje ikke kjører. Du kan bekrefte med følgende kommandoer (firewall-config er konfigurasjonsverktøyet for brukergrensesnittet):


yum info firewalld firewall-config

og,


systemctl status -l firewalld.service

På den annen side er iptables-tjenesten ikke inkludert som standard, men kan installeres gjennom.


yum update && yum install iptables-services

Begge demonene kan startes og aktiveres for å starte ved oppstart med de vanlige systemd-kommandoene:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Les også: Nyttige kommandoer for å administrere systemtjenester

Når det gjelder konfigurasjonsfilene, bruker iptables-tjenesten /etc/sysconfig/iptables (som ikke vil eksistere hvis pakken ikke er installert i systemet ditt). På en RHEL 7-boks brukt som en klyngennode, ser denne filen ut som følger:

Mens brannmur lagrer konfigurasjonen i to kataloger, /usr/lib/firewalld og /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

Vi vil undersøke disse konfigurasjonsfilene videre senere i denne artikkelen, etter at vi har lagt til noen regler her og der. Nå er det nok å minne deg på at du alltid kan finne mer informasjon om begge verktøyene med.


man firewalld.conf
man firewall-cmd
man iptables

Annet enn det, husk å ta en titt på gjennomgang av essensielle kommandoer og systemdokumentasjon – del 1 av den nåværende serien, hvor jeg beskrev flere kilder hvor du kan få informasjon om pakkene installert på RHEL 7-systemet ditt .

Bruke Iptables for å kontrollere nettverkstrafikk

Det kan være lurt å se Konfigurer Iptables-brannmur – del 8 av serien Linux Foundation Certified Engineer (LFCE) for å friske opp hukommelsen om iptables internt. før du går videre. Dermed vil vi kunne hoppe rett inn i eksemplene.

Eksempel 1: Tillater både innkommende og utgående nettrafikk

TCP-portene 80 og 443 er standardportene som brukes av Apache-nettserveren for å håndtere normal (HTTP) og sikker (HTTPS<) nettrafikk. Du kan tillate innkommende og utgående nettrafikk gjennom begge portene på enp0s3-grensesnittet som følger:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Eksempel 2: Blokker alle (eller noen) innkommende tilkoblinger fra et spesifikt nettverk

Det kan hende du trenger å blokkere all (eller noen) type trafikk som kommer fra et spesifikt nettverk, for eksempel 192.168.1.0/24:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

vil droppe alle pakker som kommer fra 192.168.1.0/24-nettverket, mens,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

vil bare tillate innkommende trafikk gjennom port 22.

Eksempel 3: Omdiriger innkommende trafikk til en annen destinasjon

Hvis du bruker RHEL 7-boksen ikke bare som en programvarebrannmur, men også som den faktiske maskinvarebaserte, slik at den sitter mellom to forskjellige nettverk, må IP-videresending allerede være aktivert i systemet ditt . Hvis ikke, må du redigere /etc/sysctl.conf og sette verdien for net.ipv4.ip_forward til 1, som følger:


net.ipv4.ip_forward = 1

lagre deretter endringen, lukk tekstredigeringsprogrammet og kjør til slutt følgende kommando for å bruke endringen:


sysctl -p /etc/sysctl.conf

For eksempel kan du ha en skriver installert på en intern boks med IP 192.168.0.10, med CUPS-tjenesten som lytter på port 631 (begge på utskriftsserveren og på brannmuren). For å videresende utskriftsforespørsler fra klienter på den andre siden av brannmuren, bør du legge til følgende iptables-regel:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Vær oppmerksom på at iptables leser reglene sekvensielt, så sørg for at standardpolicyene eller senere regler ikke overstyrer de som er skissert i eksemplene ovenfor.

Komme i gang med FirewallD

En av endringene som ble introdusert med brannmur er soner. Dette konseptet gjør det mulig å skille nettverk i forskjellige soner tillitsnivået brukeren har bestemt seg for å plassere på enhetene og trafikken innenfor det nettverket.

Slik viser du de aktive sonene:


firewall-cmd --get-active-zones

I eksemplet nedenfor er den offentlige sonen aktiv, og grensesnittet enp0s3 er automatisk tilordnet den. Slik viser du all informasjon om en bestemt sone:


firewall-cmd --zone=public --list-all

Siden du kan lese mer om soner i RHEL 7-sikkerhetsguiden, vil vi bare liste noen spesifikke eksempler her.

Eksempel 4: Å tillate tjenester gjennom brannmuren

For å få en liste over de støttede tjenestene, bruk.


firewall-cmd --get-services

For å tillate http og https nettrafikk gjennom brannmuren, gjeldende umiddelbart og ved påfølgende oppstart:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Hvis kode>–zone er utelatt, brukes standardsonen (du kan sjekke med brannmur-cmd –get-default-zone).

For å fjerne regelen, erstatt ordet legg til med fjern i kommandoene ovenfor.

Eksempel 5: IP/Portvideresending

Først må du finne ut om maskering er aktivert for ønsket sone:


firewall-cmd --zone=MyZone --query-masquerade

På bildet nedenfor kan vi se at maskering er aktivert for den eksterne sonen, men ikke for offentlig:

Du kan enten aktivere maskering for offentlig:


firewall-cmd --zone=public --add-masquerade

eller bruk maskering i ekstern. Her er hva vi ville gjort for å replikere eksempel 3 med brannmur:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

Og ikke glem å laste inn brannmuren på nytt.

Du kan finne flere eksempler på del 9 av RHCSA-serien, der vi forklarte hvordan du tillater eller deaktiverer portene som vanligvis brukes av en webserver og en ftp-server, og hvordan du endrer den tilsvarende regelen når standardporten for disse tjenestene er endret. I tillegg kan det være lurt å referere til brannmur-wikien for ytterligere eksempler.

Les også: Nyttige brannmurD-eksempler for å konfigurere brannmur i RHEL 7

Konklusjon

I denne artikkelen har vi forklart hva en brannmur er, hvilke tjenester som er tilgjengelige for å implementere en i RHEL 7, og gitt noen eksempler som kan hjelpe deg med å komme i gang med dette oppgave. Hvis du har kommentarer, forslag eller spørsmål, kan du gjerne gi oss beskjed ved å bruke skjemaet nedenfor. Takk på forhånd!