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!