Brannmur på Linux spiller en viktig rolle i å sikre et datasystem. Den fungerer som en barriere, kontrollerer og filtrerer nettverkstrafikk for å beskytte systemet mot uautorisert tilgang, angrep og andre trusler. Uten en riktig konfigurert brannmur kan serveren være sårbar for ulike typer nettangrep, noe som kan føre til alvorlige konsekvenser for datasikkerhet og konfidensialitet.
I denne artikkelen vil vi se på to hovedverktøy for å konfigurere Linux-brannmuren: brannmur og iptables. Vi vil gjennomføre en komparativ analyse av deres funksjoner, funksjonalitet og fordeler. I tillegg vil vi gi detaljerte instruksjoner for å sette opp og bruke hvert av disse verktøyene, samt diskutere beste praksis for å sikre systemet ditt med en brannmur på Linux-plattformen. Alle handlinger vil bli demonstrert på en virtuell server med rottilgang.
Konfigurerer brannmur på Linux
Firewalld (Firewall Daemon) er et program for å administrere brannmuren i Linux-operativsystemer. Det gir et brukergrensesnitt for å konfigurere brannmurregler, tillate eller blokkere tilkoblinger av nettverksapplikasjoner. Den er forhåndsinstallert som standard i de fleste serverdistribusjoner. Hvis Firewalld ikke er forhåndsinstallert, kan den installeres uavhengig av distribusjonens offisielle depoter.
For Red Hat-systemer (som RHEL, CentOS, Fedora) utføres installasjonen med kommandoen:
yum install firewalld
For Debian/Ubuntu:
apt-get install firewalld
Etter installasjonen kan den startes og aktiveres umiddelbart med kommandoen:
systemctl start firewalld
Deretter må du legge til tjenesten til oppstart:
systemctl enable firewalld
På dette tidspunktet anbefaler vi å deaktivere ufw, siden samtidig bruk av dette verktøyet med brannmur eller iptables ikke anbefales. Sjekk status:
systemctl status ufw
For å stoppe det, skriv inn kommandoen:
systemctl stop ufw
For fullstendig deaktivering:
ufw disable
Etter disse handlingene kan du fortsette å konfigurere brannmuren.
Først er det nødvendig å definere tillitssoner. Firewalld bruker konseptet med soner for å bestemme tillitsnivået for nettverksgrensesnitt. Hvert grensesnitt er tildelt én sone, og brannmurregler brukes basert på sonen. Listen over alle tilgjengelige soner åpnes med kommandoen:
firewall-cmd --get-zones
Vanligvis brukes 4 hovedsoner:
- offentlig: Denne sonen er for nettverk som du anser som usikre;
- Privat: Gjelder hjemmenettverk eller andre pålitelige nettverkstilkoblinger;
- Intern: Brukes for interne nettverk, for eksempel i en organisasjon eller bedriftsnettverk;
- DMZ: Denne sonen er hvor servere vanligvis plasseres som skal være tilgjengelige fra internett.
Dette er imidlertid bare ett eksempel. Du kan legge til din egen sone ved å bruke kommandoen:
firewall-cmd --permanent --new-zone=nameyourzone
Etter å ha lagt til, kreves en omlasting:
firewall-cmd --reload
For å slette en sone brukes en lignende metode
firewall-cmd --permanent --delete-zone=nameyourzone
Etter å ha definert soner, er det nødvendig å tillate trafikk for de nødvendige tjenestene og havnene. For å tillate en bestemt tjeneste, bruk kommandoen:
firewall-cmd --zone=public --add-service=name
Hvor navn er navnet på tjenesten. For eksempel, for å tillate trafikk for Apache:
firewall-cmd --zone=public --add-service=http
For å definere tillatte porter, bruk kommandoen:
firewall-cmd --zone=public --add-port=number/protocol
For eksempel vil standard 22-porten for SSH se slik ut:
firewall-cmd --zone=public --add-port=22/tcp
På dette stadiet er hovedreglene allerede opprettet. Deretter bestemmer du hvordan trafikken skal behandles avhengig av kilden, destinasjonen, porten og andre kriterier. For å legge til en regel (ved å bruke offentlig sone som et eksempel):
firewall-cmd --zone=public rule
For eksempel, for å tillate innkommende trafikk fra en hvilken som helst kilde til port 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Slik fjerner du en regel:
firewall-cmd --permanent --remove-rule=rule_specification
Hvor herske er typen regel (f.eks. havn, tjeneste, rik-regel, etc.), og regelspesifikasjon er spesifikasjonen av selve regelen.
Etter å ha gjort endringer i Firewalld-konfigurasjonen, er det nødvendig å lagre og bruke dem. For å lagre endringer, bruk kommandoen:
firewall-cmd --runtime-to-permanent
Slik bruker du endringer:
firewall-cmd --reload
Når du har fullført oppsettet, kan du bekrefte de valgte parameterne ved å åpne listen over alle regler:
firewall-cmd --list-all
Hvis det oppstår problemer, sjekk Firewalld-loggene med kommandoen:
journalctl -u firewalld
Merk: Vi har bare dekket den generelle algoritmen for å sette opp tilkoblingen. Verktøyet har omfattende funksjonalitet. For full informasjon om alle tilgjengelige alternativer, kan du bruke offisiell dokumentasjon eller åpne hjelp:
firewall-cmd --help
Konfigurere iptables på Linux
I motsetning til Firewalld er iptables et eldre, men fortsatt mye brukt verktøy i Linux for å administrere brannmuren. Det gir en mer direkte og fleksibel tilnærming til pakkefiltreringsregler på Linux-kjernenivå. Imidlertid krever iptables mer avansert kunnskap og erfaring sammenlignet med Firewalld, noe som gjør det mindre tilgjengelig for nybegynnere. Sjekk den forhåndsinstallerte versjonen av verktøyet med kommandoen:
iptables -V
Hvis verktøyet ikke er installert, må det installeres. Kommandoen for installasjon på Ubuntu, Debian:
apt install iptables
For Red Hat-systemer (f.eks. CentOS, Fedora):
yum install iptables
Kommandoen for aktivering etter installasjon:
systemctl start iptables
For å legge til oppstart, kjør:
systemctl enable iptables
Før du starter iptables-konfigurasjonen, er det viktig å forstå hvordan det fungerer. Dette blir hjulpet av syntaksen til programmet. Det ser ut som følger:
iptables -t table action chain additional_parameters
La oss gå dypere inn i hvert element.
Iptables har fire hovedtabeller: filter, nat, mangle og rå. Hver er designet for å behandle visse typer pakker og har sine egne kjeder med regler:
- filtrere: Dette er den mest brukte tabellen, som inneholder pakkefiltreringsregler. Den brukes til å ta beslutninger om å tillate eller nekte pakker.
- nat: Denne tabellen brukes til å endre nettverksadresser og porter i pakker. Det brukes ofte til å sette opp maskering (NAT).
- mangle: I denne tabellen kan du endre pakkehoder. Den brukes til spesialiserte pakkeoperasjoner, for eksempel merking.
- rå: Denne tabellen brukes til å konfigurere regler som gjelder før de går gjennom tilkoblingssporingssystemet. Det brukes vanligvis til å sette opp regler som ikke skal endres av sporingssystemet, for eksempel å slippe pakker fra bestemte adresser.
Hvert bord inneholder et sett med kjeder. Kjeder er en sekvens av regler som kontrolleres sekvensielt. Det er tre forhåndsdefinerte kjeder:
- INPUT (innkommende). Reglene i denne kjeden bestemmer hva som skal gjøres med innkommende pakker.
- OUTPUT (utgående). Denne kjeden gjelder for alle pakker datamaskinen din sender til andre enheter eller datamaskiner på nettverket.
- FORWARD (videresending). Reglene i denne kjeden spesifiserer hva som skal gjøres med videresendte pakker.
Til slutt har hver kjede en eller annen handling (mål). I praksis brukes 5 hovedhandlinger:
- ACCEPT: La pakken passere gjennom brannmuren.
- DROP: Avvis pakken og kast den uten svar.
- AVVIST: Avvis pakken og send avsenderen en ICMP-feilmelding.
- LOG: Logg pakken i systemloggen og utfør en annen handling (f.eks. ACCEPT eller DROP).
- KOMME TILBAKE: Slutt å sjekke reglene i gjeldende kjede og gå tilbake til ringekjeden (hvis aktuelt).
For å starte oppsettet, åpne listen over eksisterende regler med kommandoen:
iptables -L
Som en guide for å konfigurere Iptables, la oss se på praktiske eksempler på de mest brukte kommandoene. For enkelhets skyld deler vi eksemplene inn i 3 grupper, avhengig av den spesifikke kjeden.
Kjede INPUT:
- Tillat innkommende trafikk via TCP-protokoll på port 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Tillat innkommende trafikk via UDP-protokoll på port 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Blokker innkommende trafikk fra en bestemt IP-adresse:
iptables -A INPUT -s 192.168.1.100 -j DROP
Kjede UTGANG:
- Tillat utgående trafikk via TCP-protokoll på port 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Tillat utgående trafikk via UDP-protokoll på port 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Blokker utgående trafikk til en bestemt port (for eksempel 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Kjede FRAMOVER:
- Blokker videresendt trafikk fra et spesifikt utvalg av IP-adresser:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Blokker videresending av pakker fra et spesifikt nettverksgrensesnitt:
iptables -A FORWARD -i eth1 -j DROP
3. Begrens antall samtidige tilkoblinger for en spesifikk port (i dette eksemplet, 10 tilkoblinger per minutt på port 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Som du kan se, brukes et ekstra argument (kommando) i hvert enkelt tilfelle. For å få en fullstendig liste over mulige argumenter og generell støtte for verktøyets funksjonalitet, skriv inn:
iptables -h
For å sikre at innstillingene er riktige, skriv inn kommandoen på nytt for å se listen over regler:
iptables -L
For å slette en bestemt regel, bruk kommandoen:
iptables -D chain rule_number
For eksempel, hvis du ønsker å slette regel nummer 1 fra INPUT-kjeden, vil kommandoen se slik ut:
iptables -D INPUT 1
Slik sletter du alle regler med én kommando:
iptables -F
Viktig merknad: iptables-regler lagres ikke automatisk etter omstart av systemet eller tjenesten. For å lagre reglene må de legges til i en konfigurasjonsfil og gjenopprettes etter omstart. De iptables-lagre og iptables-restore verktøy kan hjelpe med dette. For å lagre reglene, skriv inn kommandoen:
iptables-save > /etc/iptables/rules.v4
Dette lagrer de gjeldende iptables-reglene i rules.v4-filen. For å gjenopprette etter omstart, skriv inn:
iptables-restore < /etc/iptables/rules.v4
Denne kommandoen gjenoppretter reglene fra filen rules.v4.
Konklusjon
Konfigurering av brannmur på Linux ved hjelp av brannmur eller iptables er et viktig aspekt for å sikre serversikkerhet. Begge verktøyene tilbyr pålitelige metoder for å administrere nettverkstrafikk og beskytte systemet mot uautorisert tilgang og nettangrep. Valget mellom brannmur og iptables avhenger av brukerens spesifikke behov og preferanser, med tanke på deres forskjellige funksjonalitet og styrker.