Opgave 21 - Tillad indgående trafik fra etablerede forbindelser¶
Information¶
Formålet med denne øvelse, er at vise hvordan en stateful firewall kan benyttes til at sikre svar på udadgående kommunikation.
Iptables er en "stateful" firewall. Det betyder, at den blandt andet kan holde styr på, hvilke forbindelser operativsystemet har oprettet til andre enheder på netværket. Dette gør det muligt for iptables at tillade svar på forbindelser, som din maskine selv har initieret, samtidig med at den blokerer al uautoriseret indgående trafik. I denne øvelse skal vi arbejde med netop dette.
I forrige øvelse blev alt indadgående trafik blokeret. Hvilket kan være en smule uhensigtmæssigt. Det bloker nemlig for alt trafik, heriblandt og for trafik på loopback interfacet, og det forhindre svar på de udadgående forbindelser vi forsøger at etablere. Så i denne øvelse, skal vi tillade den trafik vi ønsker
Instruktioner¶
-
Eksekver kommandoen
sudo iptables -F- Flusher (rydder) alle eksisterende iptables-regler, så vi starter fra en ren konfiguration.
-
Eksekver kommandoen
sudo iptables -A INPUT -i lo -j ACCEPT- Tillader trafik på loopback-interface (
lo), hvilket sikrer, at systemet kan kommunikere med sig selv.
- Tillader trafik på loopback-interface (
-
Eksekver kommandoen
sudo iptables -A OUTPUT -o lo -j ACCEPT- Tillader udgående trafik på loopback-interface, så interne processer fungerer korrekt.
-
Eksekver kommandoen
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT- Tillader udgående HTTP-trafik (port 80), som bruges til at hente websider via
curleller en browser.
- Tillader udgående HTTP-trafik (port 80), som bruges til at hente websider via
-
Eksekver kommandoen
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT- Tillader udgående HTTPS-trafik (port 443), som er nødvendig for sikre webforbindelser.
-
Eksekver kommandoen
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT- Tillader udgående DNS-opslag via UDP (port 53), hvilket er nødvendigt for at oversætte domænenavne til IP-adresser.
-
Eksekver kommandoen
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT- Tillader udgående DNS-opslag via TCP (port 53), som bruges til større DNS-forespørgsler.
-
Eksekver kommandoen
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT- Tillader indkommende pakker, der er en del af eksisterende eller relaterede forbindelser (så svar på forespørgsler kommer tilbage).
-
Eksekver kommandoen
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT- Tillader udgående pakker, der hører til allerede etablerede forbindelser.
-
Eksekver kommandoen
sudo iptables -A INPUT -j DROP- Blokerer al anden indgående trafik, hvilket øger sikkerheden ved at afvise uønskede forbindelser.
med -m conntrack (conntrack = connection tracking), ved iptables at der skal holdes styr på, hvilke forbindelser der er etableret, og hvem der har initieret dem. Med --ctstate ESTABLISHED,RELATED -j ACCEPT, tillades indadgående pakker fra servere, hvor klienten (OS) selv har oprettet forbindelsen.
Efter at have tilføjet reglen, vil iptables tillade indgående trafik fra eksterne servere, der er svar på forbindelser, din maskine selv har oprettet. Dette betyder, at du kan få svar på webanmodninger, SSH-forbindelser eller andre tjenester, som du selv har startet, mens indgående forbindelser udefra, som du ikke selv har initieret, vil blive blokeret.
i øvelsen har i indtil videre arbejdet udfra allow list tilgangen, hvor der specificeret konkret, hvornår der må etableres netværks forbindelser til og fra hosten.
Test med curl¶
Efter du har oprettet reglen, kan du teste dens funktionalitet ved at prøve at etablere en forbindelse til en tjeneste, såsom en webserver. Brug et værktøj som Curl til at sende en anmodning til en ekstern server (F.eks. www.google.com) og se, om svaret kommer igennem, mens en uautoriseret indgående forbindelse (f.eks. en ping) bliver afvist.
Du kan læse mere om iptables i forberedelsen til idag, eller ip tables man page
I næste øvelse bygges der videre på denne øvelse.