Introduktion till brandväggsskydd

Brandväggsskydd för ett större nät

För att skydda en organisations interna nätverk bör en extern brandvägg användas. Med en extern brandvägg går det att styra nätverkstrafiken in till det interna nätverket och trafiken ut från det interna nätverket. Utgå från säkerhetspolicyn när du bestämmer vilka brandväggsregler som ska sättas upp. Ha inte för många brandväggsregler. För många regler gör att det blir svårt att överblicka och det är lättare att av misstag öppna upp säkerhetshål.

Ha mer preciserade regler först och generellare regler sist. Regler som används ofta av den dagliga trafiken bör ligga före reglerna som inte används lika ofta. Sätt upp regler som spärrar access till själva brandväggen. Låt inte interna användare få mer access till DMZ än omvärlden. Se till att datorer på DMZ inte får någon som helst access in till något internt nätverk. Lägg gärna in en regel som spärrar och loggar och varnar om någon försöker etablera kontakt från DMZ in till ett internt nätverk. Kommentera brandväggsreglerna och skriv in när en regel ändrades, lades till eller togs bort och av vem.

In till det interna nätverket bör den mesta nätverkstrafiken spärras. Ut från det interna nätverket är det bra att spärra SMB-trafik, portarna 137-139.

Var medveten om att en brandvägg bara är en liten del av säkerheten. En brandvägg ersätter inte allt annat säkerhetsarbete. Datorerna och nätverken bakom brandväggen måste också säkras upp. Uppgradera alltid alla servertjänster till senaste säkra versionen. Installera brandväggsskydd på alla datorer som är tillgängliga utifrån. Uppgradera nätverksutrustningen till senaste säkra versionen av mjukvaran. Installera filter i routrar. Utbilda personal så att de blir säkerhetsmedvetna.




DMZ

Om organisationen ska ha några externt tillgängliga servertjänster, t.ex. inkommande e-post, www-server etc. bör dessa inte sättas på det interna nätverket utan sättas på ett eget nät, DMZ. DMZ står för DeMilitariserad Zon. DMZ används för att inte behöva släppa in nätverkstrafik in till det interna nätverket.

DMZ-nät kan byggas på två sätt. Variant ett kräver två brandväggar där DMZ-nätet är nätet mellan de två brandväggarna.




I variant två används en brandvägg med tre eller fler nätverksanslutningar. DMZ-nätet är här ett eget nät.




DNS

Om organisationen har externt tillgängliga servertjänster och hanterar sin egen DNS (nameserver) bör externa och interna adresser och DNS-namn separeras och hanteras av två olika DNS-servrar. Den ena ska hantera enbart de publika adresserna och sitta på ett DMZ och den andra ska enbart hantera de interna adresserna och sitta på det interna nätet eller på ett eget DMZ. Den interna DNS-servern kan med fördel fråga den externa DNS-servern efter externa adresser som den interna inte känner till.




E-post

Om organisationen själv hanterar inkommande och utgående e-post bör den inkommande e-posten hanteras av en e-postserver på DMZ-nätet. Det är bra att sätta upp en enkel e-postserver som tar emot brev och skickar dem vidare till en intern e-postserver som kan vara mer avancerad. På så sätt skyddas den interna e-postservern från många typer av attacker. Utgående post kan antingen skickas ut direkt till omvärlden av den interna e-postservern eller reläas via den externa e-postservern.





Maskering (NAT)

Maskering eller NAT innebär att avsändaradresser på en sida brandväggen skrivs om så att det ser ut som att brandväggen skickar trafiken. Det här brukar användas främst för att maskera och dölja interna adresser på ett lokalt nätverk. Det gör att det med hjälp av privata IP-adresser går att få betydligt fler adresser än vad nätleverantören kan ge.

De privata näten som endast kan användas och får användas för internt bruk är:

NätFrånTill
10/810.0.0.010.255.255.255
172.16/12172.16.0.0172.31.255.255
192.168/16192.168.0.0192.168.255.255
Se RFC 1918 för mer detaljer.

Om du använder privata adresser internt inom en organisation som sitter bakom en maskerande brandvägg måste du se till att ha med dessa adresser i din DNS (nameserver) så att det går att slå upp ett domännamn från en sådan IP-adress. Om du inte gör det kommer alla dina DNS-frågor om dessa adresser att i onödan belasta Internet och de nameservrar som finns på Internet.

Kör du DNS-servern bind på Linux eller någon annan Unix ska du stoppa in en rad i /etc/named.conf för de adresser du använder. Exempel:
zone "168.192.in-addr.arpa" { type master; file "blackhole.zone"; };
Notera att IP-adressen skrivs baklänges. I filen blackhole.zone (typiskt /var/named/blackhole.zone) stoppar du sedan in:

$TTL 1D
@       1D IN SOA local. root.local. (
                                      2002010100  ; serial
                                      3H       ; refresh
                                      1H       ; retry
                                      1W       ; expiry
                                      1D )     ; minimum
        IN NS ns.dindomän.

0.0     IN PTR foo-0.0.localdomain.
1.0     IN PTR foo-0.1.localdomain.
2.0     IN PTR foo-0.2.localdomain.


0.1     IN PTR foo-1.0.localdomain.
1.1     IN PTR foo-1.1.localdomain.
2.1     IN PTR foo-1.2.localdomain.
3.1     IN PTR foo-1.3.localdomain.
4.1     IN PTR foo-1.4.localdomain.


0.2     IN PTR foo-2.0.localdomain.
1.2     IN PTR foo-2.1.localdomain.
2.2     IN PTR foo-2.2.localdomain.
3.2     IN PTR foo-2.3.localdomain.


0.17    IN PTR foo-17.0.localdomain.
1.17    IN PTR foo-17.1.localdomain.
2.17    IN PTR foo-17.2.localdomain.
3.17    IN PTR foo-17.3.localdomain.


Och så vidare för alla adresser.

Alternativt kan du spara följande program som är gjort för Python2 och köra det. Kom ihåg att göra det körbart med chmod a+x create-zone.py. Därefter kan du köra det med ./create-zone.py

Programmet skapar två zonfiler och talar om vad du ska skriva in i /etc/named.conf .


Brandväggsskydd på en linuxdator

För att skydda en server extra är det bra att sätta upp brandväggsskydd på datorn. Detta bör göras oavsett om den sitter skyddad bakom en extern brandvägg eller ej.

Det första du bör titta på är vilka servertjänster du har på din maskin. Stäng av alla tjänster som inte absolut måste vara igång.

Radera alla användarkonton som inte ska finnas. Kontona root, bin, daemon, adm, lp, sync, halt, mail, news, uucp, operator, shutdown bör vara kvar men sätt en * som lösenord för alla utom för root. Se till så att det inte finns några konton utan lösenord, dvs konton där lösenordsfält är tomt ( user::12:13:Nisse användare:/home/user:/bin/bash). Kör regelbundet något lösenordknäckarprogram (till exempel crack) för att kontrollera så att användarna inte har för enkla lösenord. Dela inte ut användarkonton till någon som du inte känner någorlunda väl. Du får, om du är ansluten till Internet via något nät som ligger under .liu.se inte, enligt liu-policy, dela ut konton till några utanför .liu.se.

Brandväggsstöd i Linux

För att få brandväggsstöd måste du kompilera in brandväggsstöd i din Linuxkärna eller använda en färdig kärna med brandväggsstöd inkompilerat. När detta är gjort och du har bootat om med den nya kärnan kan du börja använda ipfwadm eller ipchains. Ipfwadm används i 2.0-kärnor och ipchains i 2.1 och 2.2-kärnor. I 2.4-kärnor används iptables.

Tänk på att brandväggsskydd inte är ett fullgott skydd. Du måste alltid se till att uppdatera dina servertjänster och skript så att de kör med senaste säkerhetsuppdaterade programversionen. Brandväggsskydd är endast en kugge för att få ett säkrare system.

För att få ännu bättre säkerhet bör en riktig brandvägg införskaffas. För privat bruk finns billiga små enkla brandväggar. Dessa har ofta inte så mycket funktionalitet och de har en relativt begränsad kapacitet men är i de flesta fall fullt tillräckliga för privatpersoner och små företag. För företag och organisationer med större behov av funktionalitet och bandbredd krävs en större brandvägg. Ett exempel på en sådan är den svenskutvecklade Ingate Firewall (före detta Fuego Firewall) från Ingate Systems AB.

Antal brandväggsregler

En bra tumregel är att inte ha fler än ca 30 brandväggsregler. Upp till ca 30 regler är brandväggsskyddet överblickbart. ca 30 - 50 regler kan fungera men är svårare att få en bra överblick över. Fler än 50 brandväggsregler blir ofta grötigt och svårt att hålla ordning på. Risken för fel är stor om antalet brandväggsregler är för stort. En felkonfigurerad brandvägg är värre än att inte ha en brandvägg eftersom det är lätt att tro att allt är som det ska och att man därmed invaggas i falsk trygghet.

Test av brandväggsregler

När brandväggen är konfigurerad ska den och dess inställningar testas. Börja med att titta på säkerhetspolicyn och vad det borde ge för brandväggsregler. Kontrollera att branväggen är väl inlåst och att endast behörig personal har tillgång till utrymmet där brandväggen står. Logga in på brandväggen och kontrollera att inga onödiga servertjänster kör. Helst ska inga servertjänster köra på brandväggen.

Nästa steg är att portscanna själva brandväggen från alla anslutna nätverk. Portscanna med TCP, UDP och scanna ICMP. Från alla anslutna nätverk portscanna de övriga nätverken förutom Internet genom brandväggen. Scanna med TCP och UDP. För TCP portscanna både med SYN-paket och med ACK-paket. UDP-portscanning är lite krångligare. För att testa om det fungerar behövs en dator med en UDP-portscanner på en sida brandväggen och en sniffer på andra sidan brandväggen som ser om UDP-trafiken kommer genom brandväggen. Ett bra exempel på en TCP- och UDP-scanner är nmap. En bra nätverkssniffer är tcpdump som följer med Linux.

En annan metod att kontrollera brandväggsreglerna för TCP och UDP är att sätta TTL (Time To Live) till ett. Om brandväggen filtrerar ges inget svar, om brandväggen släpper fram trafiken kommer TTL att bli 0 och därmed kommer brandväggen att skicka ett ICMP-paket som svar, ICMP typ 11 kod 0 (time-exceeded). Genom att titta på om det kommer ett ICMP-paket i retur vet vi om trafiken filtreras eller ej. Lämpligt är att i brandväggen lägga in en regel som spärrar all utgående ICMP typ 11 som kommer från brandväggen själv. För att testa brandväggsreglerna genom att sätta TTL kan programmet hping2 användas.

Kontrollera att krypterade tjänster fungerar som de ska. Provkör utan kryptering om det går och se om det fungerade eller ej. Testa krypteringen genom att sniffa på nätet med till exempel tcpdump och se att trafiken verkligen blir krypterad.

Om brandväggen kräver autentisiering för att någon form av trafik ska få passera provkör utan att autentisiera dig och se om det fungerar.

Om du har extraprogramvara installerad i brandväggen måste den också testas. Har du till exempel ett antivirusprogram i brandväggen testa det genom att skicka virusinfekterad trafik, exempelvis e-post med virus i. Likaså om du använder någon webfilterprogramvara, testkör den.

Copyright © 2010-2024 Kjell Enblom.
This document is covered by the GNU Free Documentation License, Version 1.3

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".