Linux - Friheden til sikkerhed på internettet: Version 2.9.20060510 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 6. Firewall på Linux | næste |
Linux firewallen vil på et mindre lokalnet som regel have flere funktioner. Den skal kontrollere, hvilken trafik, der kan tillades, den skal sikre os mod angreb, og endelig kan den overvåge trafikmængder og for eksempel fortælle os, om et eller andet program begynder at udspy pakker på internettet. Det sker somme tider. Og måske er man bare almindeligt nysgerrig og ønsker at se, hvad der sker på maskinen. Endvidere vil vi også gerne kunne servicere maskiner, som ikke har et offentligt IP-nummer.
Kontrol af trafik-typer
Sikring mod indtrængen
Overvågning, logning
Servicering af maskiner uden offentligt IP-nummer
Data sendes igennem et netværk i form af datapakker. På internettet bruges IP-pakker. En IP-pakke består af en header med information om, hvor den skal hen, hvor den kommer fra, hvad den er for en slags samt eventuelt nogle data. Ved pakkefiltrering kigger man på informationen i headeren og bestemmer, hvad der skal ske med pakken: Om den skal afvises eller slippes igennem.
Ideen er så, at en firewall stopper alle de pakker, som man ikke har "inviteret". Kører man f. eks. en web-server, slipper man kun web-pakker igennem. En privat maskine med internetadgang kan godt stoppe alle udefra kommende forespørgsler samtidigt med, at alle de netværks-sessions, der startes af brugeren får lov til at køre som normalt, d.v.s. at svar-pakker fra det eksterne net får lov at komme igennem.
Man bør blokere:
Pakker fra services, der ikke skal bruges. Hvis en server f.eks. ikke tilbyder FTP, er det klogt at afvise alle forsøg på at etablere en FTP-forbindelse med det samme.
Pakker med mistænkelige bits sat som IP source routing (kan bruges til spoofing, hvilket betyder at udgive pakkerne for at komme fra et andet sted, end de egentlig kommer fra).
Pakker, der er til en lokal host, som ikke burde modtage pakker udefra. Det vil sige pakker, som er direkte addreseret til en maskine, som ikke har lov til at snakke med fremmede maskiner på internettet.
Hvis for eksempel Boligforeningen Xyzzy-42 ikke ønsker, at der skal være adgang til FTP-serveren fra maskiner udefra, men gerne vil se, hvor mange, der prøver at komme i forbindelse med serveren, så kan nedenstående kommando bruges.
[root@hven /]# iptables -A INPUT -p tcp --destination-port 21 -j DROP
For mere information om IP, TCP og netværk generelt se f.eks. "Introduktion til Netværk" af Geir Steen-Olsen & Arne Stalheim (IDG-bog til 69 kr.) eller "Linux - Friheden til til systemadministration" på www.linuxbog.dk. Den grundige gennemgang af IPtables begynder Afsnit 6.5.2
Firewallens vigtigste opgave er selvfølgelig at hindre uvedkommende at trænge ind på systemet. Det bedste er at spærre for alt og åbne for en positivliste, som kan bestå af de tilladte brugeres IP-numre. Hvis man derimod vil tillade bruger XYZ at komme ind gennem vores firewall, uanset hvilken maskine XYZ benytter, ses (let) at det ikke kan lade sig gøre ved hjælp af firewall-regler. Man kan ikke på netværksniveau eller transportniveau åbne for en bestemt loginkonto, men her kommer SSH, secure shell, protokollen heldigvis til undsætning og løser problemet elegant og sikkert på session-niveau.
Når man installerer en regel i kernens pakkefilter, holder kernen automatisk øje med, hvor mange pakker der falder ind under denne regel, og med -L (list) kommandoen få iptables til at vise tællerne (counters).
Et eksempel:
[root@hven /]# iptables -L INPUT -v
En router for et lokalnetværk har som regel flere opgaver end at sende pakker videre og stoppe uvedkommende pakker. I de fleste netværk bruger man adresser, som er reserveret til testformål, de såkaldte private adresser. De skal ompakkes til en rigtig IP-adresse, og hertil bruger routeren NAT, Network Address Translation.
NAT er en teknik, som minder om en transparent proxy. NAT-ing har vist sig at være en halv løsning på mangelen på IP-numre. IP-numre er 32 bit. Hvis man kunne udnytte alle 4,294,967,295 numre (4 mia.), så ville det stadig ikke være nok til at dække behovet. Der er ca. 0.5 mia adresser, som bliver brugt til specielle formål, men selv hvis man kunne inddrage dem til "almindelige" adresser, så ville der ikke være nok numre til at dække behovet for at hvert menneske havde et IP-nummer, for slet ikke at tale om, hvis vi skulle have IP-numre til arbejde og hjem, køleskab, cykel og fjernsyn.
Hvis to maskiner på et net udgiver sig for at have samme IP-nummer, så vil kommunikationen blive upålidelig for begge maskiner.
Da man jo ikke behøver at koble et lokalnet på det globale internet, behøver man heller ikke at få en adresse på det globale net fra InterNIC eller deres lokale repræsentant. Man kunne sådan set godt bruge de numre, man synes så pænest ud. Imidlertid viser det sig ofte, at folk alligevel gerne vil have deres separate TCP/IP-net tilsluttet det globale internet på et eller andet tidspunkt, og derfor indskærpes det overfor netværksadministratorer, at man skal bruge de "private adresser", selv om man ikke lige nu har tænkt sig at slutte maskinerne til det offentlige net. De private adresser får ikke lov til at passere en router, det er indbygget i routeren. På den måde kan man undgå uskyldige fejltagelser, hvor en maskine har fået et IP-nummer, som tilhører en anden.
De mest benyttede private adresser er intervallet 192.168.1.0 - 192.168.255.255. Man kan også bruge alle adresser, som begynder med 10, og adresser, som begynder med 172.16
Det er så routerens opgave at foretage en omskrivning af pakkerne og sende dem videre, som om de kom fra routerens eksterne, offentligt synlige IP-adresse. Lige så vigtigt er det, at den kan identificere svar-pakkerne, og sende dem til den rigtige maskine. Dertil bruges portnumrene som en forlængelse af IP-adressen. Denne funktion kaldes Network Address Translation eller NAT. En router, som kan det, kaldes somme tider en NATting router.
Den utålmodige læser kan nu springe frem til Afsnit 6.5.2, mens den grundige læser i de næste afsnit kan få meget mere at vide om, hvordan Linux fungerer.