Börja med en ren installation av din Linuxdistribution (jag använde RedHat 3.0.3 och exemplen här baseras på den distributionen). Ju mindre programvara du har installerad desto mindre säkerhetshål, bakdörrar och/eller buggar kommer det att finnas som inbringar säkerhetsproblem i ditt system. Så installera endast minimalt med applikationer.
Välj en stabil kärna. Jag använde Linux 2.0.14 kärnan till mitt system, så denna dokumentationen är baserad på dess inställningar.
Du kommer att behöva kompilera om Linuxkärnan med passande altenativ. Vid denna tidpunkten bör du titta i Kernel HOWTO, Ethernet HOWTO och NET-3 HOWTO om du inte redan gjort detta.
Här är de nätverksrelaterade inställningar som jag vet fungerar i `make config'
Nu kan du kompilera om och installera om kärnan och sedan starta om systemet. Dina nätverkskort skall nu dyka upp bland all text vid uppstarten. Om inte, gå igenom de andra HOWTOerna igen tills det fungerar.
Om du har två nätverkskort i din dator, så måste du med all sannolikhet lägga
till ett appenduttryck i din /etc/lilo.conf
-fil för att tala om IRQ
och I/O-adress för båda korten. Mitt appenduttryck ser ut så här:
append="ether=12,0x300,eth0 ether=15,0x340,eth1"
Detta är den riktigt intressanta delen. Nu har du några olika val att göra. Eftersom vi inte vill att Internet skall ha tillgång till någon del av det privata nätverket, så behöver vi inte använda riktiga adresser. Det finns ett antal intressanta adresser som är reserverade för privata nätverk. Eftersom alla behöver fler adresser och eftersom dessa adresserna inte kan nås över Internet så är de ett bra val.
Ibland dessa adresser så är tex 192.168.2.xxx reserverad och vi kommer att använda den i våra exempel.
Din proxybrandvägg kommer att vara medlem av båda nätverken och kan därför skicka igenom data till och från det privata nätverket.
199.1.2.10 __________ 192.168.2.1 _ __ _ \ | | / _______________ | \/ \/ | \| Firewall |/ | | / Internet \--------| System |------------| Workstation/s | \_/\_/\_/\_/ |__________| |_______________|
Om du skall använda en filtrerande brandvägg så kan du fortfarande använda de här adresserna. Du behöver använda IP-maskering (Masquerading) för att det skall fungera. Med IP-maskering så skickar brandväggen vidare alla paket och översätter dem till "riktiga" IP-paket så att de kan skickas på Internet.
Du måste tilldela den riktiga IP-adressen till nätverkskortet som är anslutet till Internetsidan (utsidan). Och tilldela 192.168.2.1 till Ethernet-kortet på insidan. Detta kommer att vara din proxy/gateway IP-adress. Du kan tilldela alla de andra maskinerna på det skyddade nätverket någon adress i området 192.168.2.2 till 192.168.2.254.
Eftersom jag använder RedHat Linux så konfigurerar jag nätverket vid uppstart genom
att lägga till en ifcfg-eth1
-fil i katalogen /etc/sysconfig/network-scripts
. Denna
filen läses under uppstarten för att konfigurera ditt nätverk och dina
routingtabeller.
Så här ser min ifcfg-eth1
ut:
#!/bin/sh #>>>Device type: ethernet #>>>Variable declarations: DEVICE=eth1 IPADDR=192.168.2.1 NETMASK=255.255.255.0 NETWORK=192.168.2.0 BROADCAST=192.168.2.255 GATEWAY=199.1.2.10 ONBOOT=yes #>>>End variable declarations
Du kan också använda dessa script för att automatiskt ansluta till Internet med
modem. Titta på scriptet ipup-ppp
.
Om du skall använda ett modem till din Internetanslutning så kommer din IP-adress på utsidan att tilldelas av din leverantör när du ansluter.
Börja med med att kolla ifconfig och route. Om du har två nätverkskort så bör din ifconfig se ut ungefär så här:
#ifconfig lo Link encap:Local Loopback inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:1620 errors:0 dropped:0 overruns:0 TX packets:1620 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55 inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:12 Base address:0x310 eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7 inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:0 errors:0 dropped:0 overruns:0 Interrupt:15 Base address:0x350
och din routingtabell ungefär så här:
#route -n Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface 199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0 192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1 127.0.0.0 * 255.0.0.0 U 3584 0 2 lo default 199.1.2.10 * UG 1500 0 72 eth0
Observera: 199.1.2.0 är Internet-sidan av denna brandväggen och 192.168.2.0 är den privata sidan.
Försök nu att pinga Internet från brandväggen. Jag brukade använda
nic.ddn.mil
som testpunkt. Det är fortfarande en bra test, men har visat
sig mindre pålitlig än jag hade hoppats. Om det inte fungerar med en gång,
försök med att pinga några andra ställen som inte är anslutna till ditt
LAN. Om detta inte fungerar så är din PPP felaktigt konfigurerad. Läs NET-3
HOWTO igen och försök sedan igen.
Försök nu pinga en dator på det skyddade nätverket från brandväggen. Alla datorer på det privata nätverket skall kunna pinga varandra. Om inte så försök med NET-3 HOWTO igen och jobba lite till på nätverket.
Försök nu att pinga brandväggens yttre IP-adress (observera att detta inte är en av 192.168.2.xxx adresserna) från en dator inne i det skyddade nätverket. Om detta fungerar så har du inte stängt av IP-vidareskickning (forwarding). Se till att vara säker på att detta är vad du vill i sådana fall. Om du låter den vara påslagen så måste du även läsa igenom avsnittet om IP-filtrering också.
Försök nu att pinga Internet ifrån det skyddade nätverket (dvs bakom brandväggen). Använd samma adress som fungerade när du gjorde detta från brandväggen (tex nic.ddn.mil). Återigen, om du har stängt av IP-vidareskickning så skall detta inte fungera men annars så skall det fungera.
Om du har IP-vidareskickning påslagen och använder "RIKTIGA" (inte 192.168.2.*) IP-adresser till ditt privata nätverk, och om du inte kan pinga Internet men du kan pinga Internet-sidan av din brandvägg, så kolla om nästa router `uppströms' routar paket för din privata nätverksadress (din leverantör kanske måste göra detta åt dig).
Om du har gett ditt nätverk reserverade adresser (192.168.2.*), så kan inga paket routas till det ändå. Om du har gått i förväg och redan har IP-maskering påslagen, så skall detta testet fungera.
Nu har du din grundläggande systemkonfiguration.
En brandvägg är inte till någon nytta om den lämnas vidöppen för attacker genom en oanvänd tjänst. En "bad guy" skulle kunna få tillgång till brandväggen och modifiera den så att den passar hans egna syften.
Börja med att stänga av alla tjänster som inte behövs. Titta på filen
/etc/inetd.conf
. Denna filen kontrollerar vad som kallas
"super servern". Den i sin tur kontrollerar en mängd andra
serverdaemoner och startar dem när de efterfrågas.
Stäng definitivt av netstat, systat, tftp, bootp och
finger. För att stänga av en tjänst, sätt ett # som första tecken på
raden som beskriver tjänsten. När du är färdig så skickar du en SIG-HUP signal
till inetd-processen genom att skriva "kill -HUP
<pid>", där <pid> är processnumret för inetd. Detta
gör att inetd läser om sin konfigurationsfil (inetd.conf
) och
återstartas.
Testa detta genom att telnetta till port 15 (porten för netstat) på brandväggen. Om du får en utskrift från netstat så har du inte återstartat inetd korrekt.