next up previous contents
Nästa: Om detta dokument ... Upp: 21. Nätverk Förra: 21.6 Nätverksdemonen

Delavsnitt

21.7 Ipfwadms underbara värld

ipfwadm är ett väldigt trevligt program som man använder för att konfigurera hur kärnan skall hantera diverse ip paket som korsar dess väg. ipfwadm är en förkortning på IP Firewall Administration.
Vi skall ta upp hur man använder ipfwadm för att koka ihop lite IP-maskerad och en brandvägg. Ipfwadm är ett program man använder för att konfigurera hur kärnan skall agera på diverse ip paket som korsar dess väg.
Du måste självklart ha ipfwadm programmet, ligger i (net/) katalogen på din Debian skiva. Givetvis måste du också ha en fungerande länk till Internet för att ha nån nytta av detta...

   
21.7.1 IP-masquerade

Om vi vänder tillbaka till nätverket i figur [*], och antar att fafner dessutom är ansluten till Internet tex via ett modem, så kan kan fixa så även fasolt kan använda Internet. Detta trots att fasolt inte har någon egen officiell adress på Internet. Denna underbara teknik kallas IP maskerad. Den är inte bara underbar för funktionalitet och pris utan även rent säkerhetsmässigt.

Priset för att koppla upp ett nätverk och ge alla datorer direkt tillgång till Internet är dyrt, det kräver att man har fast anslutning. Det kan även vara väldigt osäkert om man inte har en brandvägg som skyddar utifrån. Men med IP maskerad har man en dator i nätverket som har ett modem eller nätverkskort vilket används för att koppla upp datorn till Internet. Med rätt flaggor och argument till programmet ipfwadm kan man få denna dator att tillåta datorerna på det egna nätverket att nå Internet. Utifrån är det bara möjligt att nå maskinen som är direkt kopplad... Det är ett väldigt billigt alternativ för företag att ha en ISDN uppkoppling som kopplar upp automatiskt när det behövs istället för att använda fast uppkoppling.

IP-maskerad fungerar så att modemdatorn, fafner, tar emot anropen från fasolt när den vill hämta en sida. Då öronmärker fafner en port speciellt avsedd för fasolts sida. När fafner sedan skickar iväg förfrågningen till webservern i fråga kommer den att säga åt webservern att skicka tillbaka sidan till fasolts port på fafner. Då fafner upptäcker att det kommer data till fasolts port vidarebefodrar den det till fasolt.
Låter det avancerat? Svarar du ja så svarar du fel. Det är en väldigt enkel och genial mekanism.

Det är nästan omöjligt att nå fasolt utifrån eftersom att fafner endast öppnar portar åt fasolt när fasolt själv säger till fafner. Att ta reda på vilken port fafner har öppen åt fasolt är inte speciellt enkelt. Utifrån ser det ut som att porten är öppen åt fafner själv. Dessa portar kan dessutom inte användas för ingående trafik, bara den webserver som är aktuell får skicka till den porten. Nåväl, nog med teori, nu skall vi dra upp skjortärmarna och koka ihop lite IP maskerad.

21.7.1.1 Konfiguration

Innan vi gör något annat måste vi fixa stöd i kärnan. Det krävs att du har en 1.3.x, senare desto bättre, med följande saker valda:
	CONFIG_MODULES,	behövs till speciella protokoll
	CONFIG_NET, Nätverksstöd behövs så klart
	CONFIG_FIREWALL, Nätverks brandvägg
	CONFIG_INET, TCP/IP stöd behövs
	CONFIG_IP_FORWARD, IP forwarding och gatewaying
	CONFIG_IP_MASQUERADE, ett måste
	CONFIG_IP_MASQUERADE, rekommenderad
	CONFIG_IP_ALWAYS_DEFRAG, rekommenderat

Som sagt ipfwadm används för att sätta upp IP maskerad och för att göra detta vill den ha en handfull argument och flaggor. Syntaxen för detta är som följer...

ipfwadm -F -a m -S <källa>/<nätmasken> -D <destination>/<nätmasken>
-F betyder Forwarding
-a m betyder append masquerade
-S betyder source
-D destination
Källa är adressen till det nätverk eller den maskin som skall maskeras. Destination är adressen till de maskiner som den maskerade maskinen får komma åt. Oftast vill man ge tillgång till alla datoer på internet då använder man 0.0.0.0/0 som destinationsadress. Nätmasken, här skriver man nätmask adressen eller dess storlek i bitar.
Klass A, 255.0.0.0 resp 8 Klass B, 255.255.0.0 resp 16 Klass C, 255.255.255.0 resp 24
Det är väldigt viktigt att man specifikt specificerar det nätverk som skall maskeras, annars är det möjligt för illasinnade att gömma sig bakom din maskin för att göra dumheter, det blir du som får äta upp deras straff då... fafner och fasolt ligger som bekant på samma Klass C nätverk, för att få fafner att maskera fasolt behöver denna rad i någon start fil:
ipfwadm -F -a m -S fasolt -D 0.0.0.0/0
Förutsagt att fafner vet fasolts ipadress, vilket den gör iochmed filen /etc/hosts.
olympen.se använder sig också flitigt av ip maskerad. Det är maskinen zeus som tillhandahåller modem och Internetkoppling.
olympen.se är ett Klass A nätverk som dessutom innehåller fyra datorer som skall maskeras. Det är ganska smidigt att skriva in att hela nätverket skall maskeras så därför används denna kommandrad:
ipfwadm -F -a m -S olympen.se/8 -D 0.0.0.0/0
I filen /etc/networks står det att olympen.se har nätverksadressen 10.0.0.0 och nätmaskens storlek i bitar är 8. Vissa nätverksprotokoll kräver speciella rutiner för att fungera ordentligt. Dessa protokoll kräver att man laddar deras moduler som man har kompilerat. Till dessa protokoll hör FTP, IRC, QUAKE och Realaudio mfl. Det är tyvärr inte alla protokoll som fungerar...

På klienterna, fasolt och de andra maskinerna i olympen.se använder man fafner respektive zeus som default gateway.

route add default gw fafner
på fasolt som är en Linux maskin. Olympen.se ''klienterna'' är tråkigt nog win95 maskiner allihopa, där ställer man in default gateway i TCP/IPs egenskaper.

   
21.7.2 Brandvägg

Ordet brandvägg (eng, firewall) kommer ifrån bilen där man mellan passagerarutrymme och bensintank har en vägg för att skydda passagerare om bensintanken skulle explodera. En nätverksbrandvägg är väl inte riktigt samma grej men det är ett rätt häftigt namn iallafall... Brandväggen tittar igenom IP-paket, på IP-nivå, som kommer in eller som går ut genom ett givet nätverksgränssnitt innan något annat program gör det.

Om man har ett nätverk där man har diverse tjänster igång, t.ex NFS eller Samba vill man antagligen vara helt säker på att ingen kan komma åt dem utifrån via Internet.
En enkel lösning på detta är, helt oväntat en brandvägg. Precis som med IP maskerad använder man verktyget ipfwadm. Ipfwadm behöver, precis som i fallet med maskeraden, ett antal flaggor och argument. Det behövs massvis med extra flaggor och argument för att det skall bli något vettigt i slutändan. Därför tänkte jag ta lite exempel.
Säg att man har en server som förutom att den maskerar ett nätverk dessutom har en del tjänster igång som kan vara farliga om fel personer använder dem. Telnet är ett typexempel. För att förhindra obehöriga vill nu system administratören (dvs du) blockera telnet porten för alla som kommer från Internet.
Syntaxen för detta är som följer:

ipfwadm -I -a deny -P tcp -W ppp0 -S 0/0 -D 0/0 23

Fixar så att ingen som kommer via ppp0 kan upprätta en förbindelse med telnet porten.
En god ide kan vara att neka åtkomst på alla portar som ligger mellan 1 och 1000 plus de mellan 6000 och 6010. Portarna mellan 1 och 1000 används av demonerna som är startade av root. 6000-6010 används av X-servrar. Att neka åtkomst via alla portar mellan 1 och 1000 kan vara lite dumt då auth behövs ibland. Auth ligger på port 113.
Vi skall neka åtkomst för alla på Internet portarna mellan 1 och 1000 förutom 113 och mellan 6000-6010. Detta fixar man enkelt med att köra följande i den ordning de står:

ipfwadm -I -a accept -P tcp -W ppp0 -S 0/0 -D 0/0 auth 
ipfwadm -I -a deny -P tcp -W ppp0 -S 0/0 -D 0/0 1:1000 
ipfwadm -I -a deny -P tcp -W ppp0 -S 0/0 -D 0/0 6000:6010

Först accepterar den allt som går till auth porten, märk att man kan skriva auth istället för 113 (se /etc/services), sedan stänger vi allt mellan 1 och 1024 och slutligen allt mellan 6000 och 6010.
När du konfigurerat ipfwadm på rätt sätt, lägg in allt i /etc/init.d/network
Det finns fler flaggor och argument till ipfwadm än de som är uppräknade här, se man ipfwadm.


next up previous contents
Nästa: Om detta dokument ... Upp: 21. Nätverk Förra: 21.6 Nätverksdemonen
Goran Andersson
1999-03-08