Firewall på Linux spiller en afgørende rolle i sikringen af et computersystem. Det fungerer som en barriere, kontrollerer og filtrerer netværkstrafikken for at beskytte systemet mod uautoriseret adgang, angreb og andre trusler. Uden en korrekt konfigureret firewall kan serveren være sårbar over for forskellige typer cyberangreb, hvilket fører til alvorlige konsekvenser for datasikkerhed og fortrolighed.
I denne artikel vil vi se på to hovedværktøjer til konfiguration af Linux Firewall: firewalld og iptables. Vi vil foretage en komparativ analyse af deres funktioner, funktionalitet og fordele. Derudover vil vi give detaljerede instruktioner til opsætning og brug af hvert af disse værktøjer, samt diskutere bedste praksis for at sikre dit system med en firewall på Linux-platformen. Alle handlinger vil blive demonstreret på en virtuel server med root-adgang.
Konfiguration af firewalld på Linux
Firewalld (Firewall Daemon) er et program til styring af firewallen i Linux-operativsystemer. Det giver en brugergrænseflade til at konfigurere firewall-regler, tillade eller blokere forbindelser til netværksapplikationer. Det er som standard forudinstalleret i de fleste serverdistributioner. Hvis Firewalld ikke er forudinstalleret, kan den installeres uafhængigt af distributionens officielle arkiver.
For Red Hat-systemer (såsom RHEL, CentOS, Fedora) udføres installationen med kommandoen:
yum install firewalld
Til Debian/Ubuntu:
apt-get install firewalld
Efter installationen kan den startes og aktiveres med det samme med kommandoen:
systemctl start firewalld
Dernæst skal du tilføje tjenesten til opstart:
systemctl enable firewalld
På dette tidspunkt anbefaler vi at deaktivere ufw, da samtidig brug af dette værktøj med firewalld eller iptables ikke anbefales. Tjek status:
systemctl status ufw
For at stoppe det, indtast kommandoen:
systemctl stop ufw
For fuldstændig deaktivering:
ufw disable
Efter disse handlinger kan du fortsætte med at konfigurere firewalld.
For det første er det nødvendigt at definere tillidszoner. Firewalld bruger begrebet zoner til at bestemme tillidsniveauet for netværksgrænseflader. Hver grænseflade er tildelt én zone, og firewall-regler anvendes baseret på zonen. Listen over alle tilgængelige zoner åbnes med kommandoen:
firewall-cmd --get-zones
Typisk bruges 4 hovedzoner:
- offentlige: Denne zone er til netværk, som du anser for usikre;
- Privat: Gælder for hjemmenetværk eller andre betroede netværksforbindelser;
- Intern: Bruges til interne netværk, såsom dem inden for en organisation eller virksomhedsnetværk;
- DMZ: Denne zone er, hvor servere normalt placeres, som skal være tilgængelige fra internettet.
Dette er dog kun ét eksempel. Du kan tilføje din egen zone ved hjælp af kommandoen:
firewall-cmd --permanent --new-zone=nameyourzone
Efter tilføjelse kræves en genindlæsning:
firewall-cmd --reload
For at slette en zone bruges en lignende metode
firewall-cmd --permanent --delete-zone=nameyourzone
Efter at have defineret zoner, er det nødvendigt at tillade trafik for de nødvendige tjenester og havne. For at tillade en bestemt tjeneste, brug kommandoen:
firewall-cmd --zone=public --add-service=name
Hvor navn er navnet på tjenesten. For eksempel, for at tillade trafik for Apache:
firewall-cmd --zone=public --add-service=http
For at definere tilladte porte skal du bruge kommandoen:
firewall-cmd --zone=public --add-port=number/protocol
For eksempel ville standard 22-porten til SSH se sådan ud:
firewall-cmd --zone=public --add-port=22/tcp
På dette stadium er hovedreglerne allerede oprettet. Dernæst skal du bestemme, hvordan trafikken vil blive behandlet afhængigt af kilden, destinationen, porten og andre kriterier. For at tilføje en regel (ved hjælp af offentlige zone som et eksempel):
firewall-cmd --zone=public rule
For at tillade indgående trafik fra enhver kilde til port 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Sådan fjerner du en regel:
firewall-cmd --permanent --remove-rule=rule_specification
Hvor regere er regeltypen (f.eks. havn, service, rig-regel osv.), og regelspecifikation er specifikationen af selve reglen.
Efter at have foretaget ændringer i Firewalld-konfigurationen, er det nødvendigt at gemme og anvende dem. For at gemme ændringer, brug kommandoen:
firewall-cmd --runtime-to-permanent
Sådan anvender du ændringer:
firewall-cmd --reload
Når du har gennemført opsætningen, kan du verificere de valgte parametre ved at åbne listen over alle regler:
firewall-cmd --list-all
Hvis der opstår problemer, skal du kontrollere Firewalld-logfilerne med kommandoen:
journalctl -u firewalld
Bemærk: Vi har kun dækket den generelle algoritme til opsætning af forbindelsen. Værktøjet har omfattende funktionalitet. For fuldstændig information om alle tilgængelige muligheder kan du bruge officiel dokumentation eller åben hjælp:
firewall-cmd --help
Konfiguration af iptables på Linux
I modsætning til Firewalld er iptables et ældre, men stadig meget brugt værktøj i Linux til styring af firewallen. Det giver en mere direkte og fleksibel tilgang til pakkefiltreringsregler på Linux-kerneniveau. Men iptables kræver mere avanceret viden og erfaring sammenlignet med Firewalld, hvilket gør det mindre tilgængeligt for begyndere. Tjek den forudinstallerede version af værktøjet med kommandoen:
iptables -V
Hvis værktøjet ikke er installeret, skal det installeres. Kommandoen til installation på Ubuntu, Debian:
apt install iptables
For Red Hat-systemer (f.eks. CentOS, Fedora):
yum install iptables
Kommandoen til aktivering efter installation:
systemctl start iptables
For at tilføje til opstart skal du udføre:
systemctl enable iptables
Før du starter iptables-konfigurationen, er det vigtigt at forstå, hvordan det fungerer. Dette er hjulpet af programmets syntaks. Det ser ud som følger:
iptables -t table action chain additional_parameters
Lad os dykke dybere ned i hvert emne.
Iptables har fire hovedtabeller: filter, nat, mangle og rå. Hver er designet til at behandle visse typer pakker og har sine egne kæder af regler:
- filtrere: Dette er den mest brugte tabel, der indeholder pakkefiltreringsregler. Det bruges til at træffe beslutninger om, hvorvidt pakker skal tillades eller afvises.
- NAT: Denne tabel bruges til at ændre netværksadresser og porte i pakker. Det bruges ofte til opsætning af masquerading (NAT).
- mangle: I denne tabel kan du ændre pakkeoverskrifter. Det bruges til specialiserede pakkeoperationer, såsom markering.
- rå: Denne tabel bruges til at konfigurere regler, der gælder, før de går gennem forbindelsessporingssystemet. Det bruges typisk til at opsætte regler, der ikke bør ændres af sporingssystemet, såsom at droppe pakker fra bestemte adresser.
Hvert bord indeholder et sæt kæder. Kæder er en sekvens af regler, der kontrolleres sekventielt. Der er tre foruddefinerede kæder:
- INPUT (indgående). Reglerne i denne kæde bestemmer, hvad der skal gøres med indgående pakker.
- OUTPUT (udgående). Denne kæde gælder for alle pakker, din computer sender til andre enheder eller computere på netværket.
- FORWARD (videresendelse). Reglerne i denne kæde angiver, hvad der skal gøres med videresendte pakker.
Endelig har hver kæde en eller anden handling (mål). I praksis bruges 5 hovedhandlinger:
- ACCEPTER: Lad pakken passere gennem firewallen.
- DROP: Afvis pakken og kasser den uden noget svar.
- AFVIS: Afvis pakken og send afsenderen en ICMP-fejlmeddelelse.
- LOG: Log pakken i systemloggen og udfør en anden handling (f.eks. ACCEPT eller DROP).
- RETURN: Stop med at tjekke reglerne i den aktuelle kæde og vend tilbage til opkaldskæden (hvis relevant).
For at starte opsætningen skal du åbne listen over eksisterende regler med kommandoen:
iptables -L
Som en guide til konfiguration af Iptables, lad os se på praktiske eksempler på de mest almindeligt anvendte kommandoer. For nemheds skyld opdeler vi eksemplerne i 3 grupper, afhængigt af den specifikke kæde.
Kæde INPUT:
- Tillad indgående trafik via TCP-protokol på port 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Tillad indgående trafik via UDP-protokol på port 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Bloker indgående trafik fra en bestemt IP-adresse:
iptables -A INPUT -s 192.168.1.100 -j DROP
Kæde PRODUKTION:
- Tillad udgående trafik via TCP-protokol på port 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Tillad udgående trafik via UDP-protokol på port 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Bloker udgående trafik til en bestemt port (f.eks. 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Kæde FORWARD:
- Bloker videresendt trafik fra en bestemt række IP-adresser:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Bloker videresendelse af pakker fra en specifik netværksgrænseflade:
iptables -A FORWARD -i eth1 -j DROP
3. Begræns antallet af samtidige forbindelser for en specifik port (i dette eksempel 10 forbindelser pr. minut på port 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Som du kan se, bruges der i hvert enkelt tilfælde et ekstra argument (kommando). For at få en komplet liste over mulige argumenter og overordnet støtte til værktøjets funktionalitet skal du indtaste:
iptables -h
For at sikre, at indstillingerne er korrekte, skal du genindtaste kommandoen for at se listen over regler:
iptables -L
For at slette en bestemt regel, brug kommandoen:
iptables -D chain rule_number
For eksempel, hvis du vil slette regel nummer 1 fra INPUT-kæden, vil kommandoen se sådan ud:
iptables -D INPUT 1
For at slette alle regler med én kommando:
iptables -F
Vigtig bemærkning: iptables-regler gemmes ikke automatisk efter genstart af systemet eller tjenesten. For at gemme reglerne skal de tilføjes til en konfigurationsfil og gendannes efter genstart. De iptables-gem og iptables-gendannelse forsyningsselskaber kan hjælpe med dette. Indtast kommandoen for at gemme reglerne:
iptables-save > /etc/iptables/rules.v4
Dette gemmer de aktuelle iptables-regler i filen rules.v4. For at gendanne efter genstart skal du indtaste:
iptables-restore < /etc/iptables/rules.v4
Denne kommando gendanner reglerne fra filen rules.v4.
Konklusion
Konfiguration af Firewall på Linux ved hjælp af firewalld eller iptables er et vigtigt aspekt af at sikre serversikkerhed. Begge værktøjer tilbyder pålidelige metoder til at styre netværkstrafik og beskytte systemet mod uautoriseret adgang og cyberangreb. Valget mellem firewalld og iptables afhænger af brugerens specifikke behov og præferencer i betragtning af deres forskellige funktionalitet og styrker.