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.
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 ForwardingKä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.
-a m betyder append masquerade
-S betyder source
-D destination
Klass A, 255.0.0.0 resp 8 Klass B, 255.255.0.0 resp 16 Klass C, 255.255.255.0 resp 24Det ä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/0Förutsagt att fafner vet fasolts ipadress, vilket den gör iochmed filen /etc/hosts.
ipfwadm -F -a m -S olympen.se/8 -D 0.0.0.0/0I 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 fafnerpå 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.
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.