Nästa Föregående Innehållsförteckning

5. Att förbereda Linuxsystemet

5.1 Att kompilera kärnan

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'

  1. Under `General setup'
    1. Sätt på `Networking Support'
  2. Under `Networking Options'
    1. Sätt på `Network firewalls'
    2. Sätt på `TCP/IP Networking'
    3. Stäng av `IP forwarding/gatewaying' (OM DU INTE vill använda IP-filtrering)
    4. Sätt på `IP Firewalling'
    5. Sätt på `IP firewall packet logging' (detta är inte nödvändigt men det är en bra ide)
    6. Stäng av `IP: masquerading' (Jag täcker inte detta ämnet här.)
    7. Sätt på `IP: accounting'
    8. Stäng av `IP: tunneling'
    9. Stäng av `IP: aliasing'
    10. Stäng av `IP: PC/TCP compatibility mode'
    11. Stäng av `IP: Reverse ARP'
    12. Sätt på `Drop source routed frames'
  3. Under `Network device support'
    1. Sätt på `Network device support'
    2. Sätt på `Dummy net driver support'
    3. Sätt på `Ethernet (10 or 100Mbit)'
    4. Välj ditt nätverkskort

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.

5.2 Att konfigurera två nätverkskort

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"

5.3 Att konfigurera nätverksadresser

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.

5.4 Att testa ditt nätverk

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.

5.5 Att säkra brandväggen

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.


Nästa Föregående Innehållsförteckning