Brandväggar och Proxyservers HOWTO (Firewall HOWTO) Mark Grennan, markg@netplus.net. Svensk översättning av v0.4, 8 November 1996, Svensk version 15 Juni 1998 Detta dokument är designat för att lära ut grunderna i brandväggssystem och att ge dig lite detaljer om hur man konfigurerar både en filtrerande och proxy brandvägg på en Linuxbaserad PC. En (engelsk) HTML-version av detta dokument finns tillgänglig på http://okcforum.org/˜markg/Firewall-HOWTO.html Introduktion

Originalversionen av Firewall-HOWTO skrevs av David Rudder, drig@execpc.com. Jag skulle vilja tacka honom för att han tillät mig att uppdatera hans arbete. Brandväggar har fått stor uppmärksamhet som `det ultimata' i Internetsäkerhet den senaste tiden. Som med de flesta saker som får stor uppmärksamhet, så följer med detta missuppfattningar. Denna HOWTO kommer att ta upp grunderna om vad en brandvägg är för något, hur man sätter upp en, vad proxyservrar är, hur man sätter upp proxyservrar och applikationerna för denna teknik utanför säkerhetens sfär. Feedback

All feedback är väldigt välkommen. Min e-postadress är markg@netplus.net Disclaimer

JAG ÄR INTE ANSVARIG FÖR NÅGRA SKADOR SOM INTRÄFFAR PÅ GRUND AV AGERANDE SOM ÄR BASERAT PÅ DETTA DOKUMENT. Detta dokument är tänkt att vara en introduktion till hur brandväggar och proxyservrar fungerar. Jag är inte, och jag låtsas inte heller att vara, en säkerhetsexpert. Jag är bara en person som har läst för mycket och tycker om datorer mer än de flesta. Snälla, jag skriver detta för att hjälpa folk att bli bekanta med ämnet och jag är inte beredd att satsa mitt liv på att allt som finns i detta dokument är korrekt. Copyright Svensk version

Om inte annat anges, så är Linux HOWTO dokument kopieringsrättsskyddade av dess respektive författare. Linux HOWTO dokument får reproduceras och distribueras i sin helhet eller i delar i vilket medium som helst, fysiskt eller elektroniskt, så länge som denna kopieringsrättsnotis finns med i alla kopior. Komersiell distribution är tillåten och uppmuntrad; men, författaren skulle vilja bli informerad om en sådan distribution. Alla översättningar, härledda arbeten eller förenade arbeten som införlivar något Linux HOWTO dokument måste täckas under denna kopieringsrättsnotisen. Dvs att du får inte producera ett härleda ett arbete ur en HOWTO och sedan lägga till ytterligare restriktioner för dess distribution. Undantag för dessa regler kan tillåtas under särskilda förhållanden; var vänlig att kontakta koordinatorn för Linux HOWTOs. Kort sagt, vi vill gynna spridandet av denna information genom så många kanaler som möjligt. Men vi vill behålla kopieringsrätten på HOWTO-dokumenten och vill bli informerade om alla planer på att distribuera HOWTOs. Om du har några frågor, var vänlig kontakta Mark Grennan på <markg@netplus.net>. Engelsk version, oförändrad från originaldokumentet

Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs. If you have any questions, please contact Mark Grennan at <markg@netplus.net>. Anledningar till att jag skriver detta

Även om det har varit många diskussioner i Att göra

Ge lite instruktioner om hur man sätter upp klienterna. Hitta en bra UDP proxyserver som fungerar med Linux Ytterligare Läsning

NET-2 HOWTO (nuvarande NET-3-HOWTO (SvÖ)) Ethernet HOWTO Multiple Ethernet Mini HOWTO Networking with Linux PPP HOWTO TCP/IP Network Administrator's Guide av O'Reilly and Associates Dokumentation för TIS Firewall Toolkit Trusted Information Systems (TIS) www-sajt har en stor samling dokumentation om brandväggar och relaterat material. Dessutom så arbetar jag med ett säkerhetsprojekt som jag kallar för Secure Linux. På www-sajten för Secure Linux så samlar jag all information, dokumentation och program som man behöver för att skapa ett pålitligt Linuxsystem. E-posta mig om du vill ha information. Översättarens kommentarer

Jag kommer använda översättningen `Internet' i detta dokument, med vilket jag menar det allmänt kända Internet. Men informationen i detta dokument bör även gälla för vilket annat internätverk som helst, åtminstonde ett som använder samma protokoll som Internet. Jag har ändrat alla förekomster av `NET-2 HOWTO' till `NET-3 HOWTO' eftersom det är den versionen av det dokumentet som är aktuell för tillfället. De tillägg som jag har gjort i texten har jag markerat med `(SvÖ)'. Att förstå brandväggar

En brandvägg är en term som används för en bildel. I bilar så är brandväggar fysiska objekt som separerar motorn från passagerarna. De är till för att skydda passageraren ifall bilens motor fattar eld medans den fortfarande låter föraren använda motorns kontroller. En brandvägg i en dator är en enhet som skyddar ett privat nätverk från den publika delen (Internet som helhet). Brandväggsdatorn, från och med nu kallad &dquot;brandväggen&dquot;, kan nå både det skyddade nätverket och Internet. Det skyddade nätverket kan inte nå Internet och Internet kan inte nå det skyddade nätverket. För att någon skall kunna nå Internet från insidan av det skyddade nätverket, så måste de göra en telnetanslutning till brandväggen och använda Internet därifrån. Den enklaste formen av branvägg är ett `dual homed' system (ett system med två nätverksanslutningar). Om du kan LITA på ALLA dina användare, så kan du helt enkelt sätta upp ett Linuxsystem (kompilera med IP forwarding/gatewaying avstängt) och ge alla användare konton till den. De kan sedan logga in på detta system och använda telnet, FTP, läsa e-post och andra tjänster som du erbjudit. Med denna inställning så är brandväggen den enda dator på ditt privata nätverk som vet någonting om världen utanför. De andra systemen på ditt skyddade nätverk behöver inte ens någon Nackdelar med brandväggar

Det finns två typer av brandväggar. IP Filtrerande Brandväggar - som blockerar all nätverkstrafik utom viss utvald trafik. Proxyservrar - som gör nätverksanslutningarna åt dig. IP Filtrerande Brandväggar

En IP filtrerande brandvägg arbetar på paketnivån. Den är designad för att kontrollera flödet av paket baserat på källan, destinationen, porten och pakettypen som finns lagrade i varje paket. Denna typ av brandvägg är väldigt säker men den saknar all form av användbara loggningsfunktioner. Den kan hindra personer från att komma åt privata system men den kommer inte att tala om vem som accessade dina publika system eller vem som accessade Internet från insidan. Filtrerande brandväggar är absoluta filter. Även om du vill ge någon access till dina privata servrar från utsidan så kan du inte göra detta utan att ge alla access till servrarna. Linux innehåller mjukvara för paketfiltrering i kärnan från och med version 1.3.x. Proxyservrar

Proxyservrar tillåter indirekt access till Internet genom brandväggen. Det bästa exemplet på hur detta fungerar är en person som telnettar till ett system och sedan telnettar därifrån till ytterligare ett system. Men med en proxyserver så görs detta automatiskt. När du ansluter till en proxyserver med din klientprogramvara så startar proxyservern sin klientprogramvara och skickar informationen till dig. Eftersom proxyservrar duplicerar all kommunikation så kan de logga allt de gör. Den stora fördelen med proxyservrar är att de är helt säkra, när de är korrekt konfigurerade. De tillåter inte några anslutningar igenom dem. Det finns inga direkta IP-routes. Att konfigurera brandväggen Hårdvarukrav

I vårt exempel så är datorn en 486-DX66 med 16Mb minne och en 500Mb Linuxpartition. Detta systemet har två nätverkskort, ett anslutet till vårt privata LAN och det andra anslutet till ett LAN som vi kallar för den de-militariserade zonen (DMZ). DMZ är ansluten till en router som i sin tur är ansluten till Internet. Detta är en ganska typisk konfiguration för ett företag. Man skulle kunna använda ett nätverkskort och ett modem med en PPP-länk till Internet. Poängen är att brandväggen måste ha två IP-adresser. Jag vet många personer som har små LANs hemma med två eller tre datorer anslutna. Något som man skulle kunna tänka sig då är att koppla alla sina modem till en Linuxburk (kanske en gammal 386:a) och ansluta dem till Internet med lastbalansering. Med denna konfiguration kan man fördubbla genomströmmningen om endast en person tog hem data från Internet. :-) Programvara för brandväggar Tillgängliga paket

Om allt du vill ha är en filtrerande brandvägg, så behöver du endast Linux och de grundläggande nätverkspaketen. Ett paket som kanske inte följer med din distribution är IP Firewall Administration tool, . Om du vill sätta upp en proxyserver så behöver du ett av följande paket. SOCKS TIS Firewall Toolkit (FWTK) TIS Firewall Toolkit eller SOCKS

har gjort en samling program som är designade för brandväggar. Programmen gör i stort sett samma sak som SOCKS-paketet, men med en annan designstrategi. Där SOCKS har ett program som täcker alla Internettransaktioner, så har TIS ett program för varje tjänst som önskar använda brandväggen. För att jämföra de båda, låt oss använda exemplet med Att förbereda Linuxsystemet 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' Under `General setup' Sätt på `Networking Support' Under `Networking Options' Sätt på `Network firewalls' Sätt på `TCP/IP Networking' Stäng av `IP forwarding/gatewaying' (OM DU INTE vill använda IP-filtrering) Sätt på `IP Firewalling' Sätt på `IP firewall packet logging' (detta är inte nödvändigt men det är en bra ide) Stäng av `IP: masquerading' (Jag täcker inte detta ämnet här.) Sätt på `IP: accounting' Stäng av `IP: tunneling' Stäng av `IP: aliasing' Stäng av `IP: PC/TCP compatibility mode' Stäng av `IP: Reverse ARP' Sätt på `Drop source routed frames' Under `Network device support' Sätt på `Network device support' Sätt på `Dummy net driver support' Sätt på `Ethernet (10 or 100Mbit)' 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. 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=&dquot;ether=12,0x300,eth0 ether=15,0x340,eth1&dquot; 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 &dquot;riktiga&dquot; 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 /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 #!/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 Att testa ditt nätverk

Börja med med att kolla #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 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 &dquot;bad guy&dquot; 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 &dquot;super servern&dquot;. Den i sin tur kontrollerar en mängd andra serverdaemoner och startar dem när de efterfrågas. Stäng definitivt av &dquot;kill -HUP <pid>&dquot;, där <pid> är processnumret för Att konfigurera IP-filtrering ( Till att börja med så bör du ha IP-vidareskickning (IP Forwarding) påslagen i din kärna och ditt system skall vara igång och skicka vidare allt som du skickar till den. Dina routingtabeller skall vara på plats och du skall kunna ha tillgång till allt, både från insidan till utsidan och från utsidan till insidan. Men vi bygger en brandvägg så vi behöver börja begränsa vad som går att få tillgång till. I mitt system så skapade jag ett par script för att ställa in brandväggens vidareskickningspolicy och redovisningspolicy. Jag kör dessa script ifrån scripten i /etc/rc.d så att mitt system konfigureras vid uppstart. Med standardinställningarna så skickar Linuxkärnans system för IP-vidareskickning vidare allt. På grund av detta så bör din brandvägg börja med att neka access till allt och tömma alla # # setup IP packet Accounting and Forwarding # # Forwarding # # By default DENY all services ipfwadm -F -p deny # Flush all commands ipfwadm -F -f ipfwadm -I -f ipfwadm -O -f Nu har vi den ultimata brandväggen. Inget kan komma igenom. Du har utan tvekan några tjänster som du behöver skicka vidare genom brandväggen, så här kommer några exempel som kan vara användbara för dig: # Skicka vidare e-post till din server ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25 # Skicka vidare e-postanslutningar till utomstående e-postservrar ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535 # Skicka vidare www-anslutningar till din www-server /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80 # Skicka vidare www-anslutningar till utomstående www-server /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535 # Skicka vidare DNS-trafik /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24 Du kanske också är intresserad av att hålla reda på trafik som går igenom din brandvägg. Följande script kommer att räkna alla paket. Du kan lägga till en eller ett par rader för att hålla reda på paket till ett enskilt system. # Flush the current accounting rules ipfwadm -A -f # Accounting /sbin/ipfwadm -A -f /sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24 /sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0 /sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24 Om allt du ville ha var en filtrerande brandvägg så kan du sluta här. Ha skoj :-) Att installera TIS proxyserver

Att få tag på programvaran

TIS FWTK finns på . Gör inte mistaget som jag gjorde. När du hämtar filer från TIS, LÄS README-filerna. TIS FWTK är inlåst i en gömd katalog på deras server. TIS kräver att du sickar ett e-postmeddelande till med endast ordet /usr/src katalog. Flytta din kopia av FWTK (. Touvet supportar inte denna koden. Jag använder en modifierad version som inkluderar access till Netscapes säkra nyhetsservrar som är skriven av Eric Wedel. Den finns tillgänglig på . I vårt exempel kommer jag att använda Eric Wedels version. För att installera, skapa en /usr/src/fwtk-2.0 katalog och lägg filerna i den. När jag installerade denna gatewayen så krävdes det lite ändringar innan den kunde kompileras tillsammans med resten av paketet. Den första ändringen skall göras i filen #if defined(__linux) #include #endif För det andra så följde det inte med någon Att kompilera TIS FWTK

Version 2.0 av FWTK kompilerar mycket lättare än någon av de tidigare versionerna. Jag hittade ett par saker som behövde ändras innan BETA-versionen kompilerade ordentligt. Förhoppningsvis så finns dessa ändringar i den slutgiltliga versionen. För att fixa till detta så börja med att byta till katalogen /usr/src/fwtk/fwtk och kopiera filen KÖR INTE FIXMAKE. Instruktionerna säger åt dig att köra den. Om du gör det så kommer den att förstöra sed 's/^include[ ]*\([^ ].*\)/include \1/' $name .proto > $name Efter detta måste vi editera filen /usr/src så du bör ändra variabeln FWTKSRCDIR=/usr/src/fwtk/fwtk Sedan, vissa Linuxsytem använder gdbm-databasen. DBMLIB=-lgdbm Sista fixen är i #ifdef SCM_RIGHTS /* 4.3BSD Reno and later */ + sizeof(un_name->sun_len) + 1 #endif Om du lade till DIRS= smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw x-gw ssl-gw Nu kan du köra . Att installera TIS FWTK

Kör . Standardkatalogen för installation är /usr/local/etc. Du kan ändra detta (jag gjorde det inte) till en säkrare katalog. Jag valde att ändra rättigheterna på denna katalogen till Att konfigurera TIS FWTK

Nu börjar det roliga. Vi måste lära systemet att använda dessa nya tjänster och skapa tabellerna för att kontrollera dem. Jag tänker inte försöka skriva om manualen för TIS FWTK här. Jag kommer att visa dig inställningarna som fungerade för mig och förklara de problem som jag sprang på och hur jag kom runt dem. Det finns tre filer som utgör dessa kontroller.

/etc/services Talar om för systemet vilka portar tjänsterna finns på. /etc/inetd.conf Talar om för /usr/local/etc/netperm-table Talar om för FWTK-tjänsterna vem som skall tillåtas och vem som skall nekas access till tjänster. För att få igång FWTK så bör du editera dessa filer nerifrån och upp. Att editera services utan att inetd.conf eller netperm-table är korrekt inställda kan göra ditt system oåtkomligt. Filen /usr/local/etc/netperm-table

Denna filen kontrollerar vem som får tillgång till tjänsterna i TIS FWTK. Du bör tänka på trafiken som använder brandväggen från båda sidor. Personer utanför ditt nätverk skall identifiera sig innan de får tillgång, men personer inuti ditt nätverk kan tillåtas att passera rakt igenom. Brandväggen använder ett program som heter authsrv: premit-hosts localhost om du kan få det att fungera. # # Proxy configuration table # # Authentication server and client rules authsrv: database /usr/local/etc/fw-authdb authsrv: permit-hosts * authsrv: badsleep 1200 authsrv: nobogus true # Client Applications using the Authentication server *: authserver 127.0.0.1 114 För att initialisera databasen, ./authsrv i katalogen /var/local/etc för att skapa administratörens användarprofil. Här följer en exempelsession. Läs dokumentationen för FWTK för att lära dig hur man lägger till användare och grupper. # # authsrv authsrv# list authsrv# adduser admin &dquot;Auth DB admin&dquot; ok - user added initially disabled authsrv# ena admin enabled authsrv# proto admin pass changed authsrv# pass admin &dquot;plugh&dquot; Password changed. authsrv# superwiz admin set wizard authsrv# list Report for users in database user group longname ok? proto last ------ ------ ------------------ ----- ------ ----- admin Auth DB admin ena passw never authsrv# display admin Report for user admin (Auth DB admin) Authentication protocol: password Flags: WIZARD authsrv# ^D EOT # Kontrollerna för # telnet gateway rules: tn-gw: denial-msg /usr/local/etc/tn-deny.txt tn-gw: welcome-msg /usr/local/etc/tn-welcome.txt tn-gw: help-msg /usr/local/etc/tn-help.txt tn-gw: timeout 90 tn-gw: permit-hosts 196.1.2.* -passok -xok tn-gw: permit-hosts * -auth # Only the Administrator can telnet directly to the Firewall via Port 24 netacl-in.telnetd: permit-hosts 196.1.2.202 -exec /usr/sbin/in.telnetd Det fungerar på samma sätt för # rlogin gateway rules: rlogin-gw: denial-msg /usr/local/etc/rlogin-deny.txt rlogin-gw: welcome-msg /usr/local/etc/rlogin-welcome.txt rlogin-gw: help-msg /usr/local/etc/rlogin-help.txt rlogin-gw: timeout 90 rlogin-gw: permit-hosts 196.1.2.* -passok -xok rlogin-gw: permit-hosts * -auth -xok # Only the Administrator can telnet directly to the Firewall via Port netacl-rlogind: permit-hosts 196.1.2.202 -exec /usr/libexec/rlogind -a Du bör inte låta någon få direkt tillgång till din brandvägg och det inkluderar FTP, så lägg inte en FTP-server på din brandvägg. Nu till # ftp gateway rules: ftp-gw: denial-msg /usr/local/etc/ftp-deny.txt ftp-gw: welcome-msg /usr/local/etc/ftp-welcome.txt ftp-gw: help-msg /usr/local/etc/ftp-help.txt ftp-gw: timeout 300 ftp-gw: permit-hosts 196.1.2.* -log { retr stor } ftp-gw: permit-hosts * -authall -log { retr stor } WWW, gopher och bläddrarbaserad FTP kontrolleras av # www and gopher gateway rules: http-gw: userid root http-gw: directory /jail http-gw: timeout 90 http-gw: default-httpd www.afs.net http-gw: hosts 196.1.2.* -log { read write ftp } http-gw: deny-hosts * # ssl gateway rules: ssl-gw: timeout 300 ssl-gw: hosts 196.1.2.* -dest { !127.0.0.* !192.1.1.* *:443:563 } ssl-gw: deny-hosts * Här är ett exempel på hur man använder # NetNews Pluged gateway plug-gw: timeout 3600 plug-gw: port nntp 196.1.2.* -plug-to 199.5.175.22 -port nntp plug-gw: port nntp 199.5.175.22 -plug-to 196.1.2.* -port nntp Gatewayen för # Enable finger service netacl-fingerd: permit-hosts 196.1.2.* -exec /usr/libexec/fingerd netacl-fingerd: permit-hosts * -exec /bin/cat /usr/local/etc/finger.txt Jag har inte satt upp Filen /etc/inetd.conf

Här följer en komplett /etc/inetd.conf fil. Alla onödiga tjänster har kommenterats bort. Jag har med hela filen för att visa vad som bör stängas av, såväl som för att visa hur man konfigurerar de nya tjänsterna för brandväggen. #echo stream tcp nowait root internal #echo dgram udp wait root internal #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #daytime dgram udp wait root internal #chargen stream tcp nowait root internal #chargen dgram udp wait root internal # FTP firewall gateway ftp-gw stream tcp nowait.400 root /usr/local/etc/ftp-gw ftp-gw # Telnet firewall gateway telnet stream tcp nowait root /usr/local/etc/tn-gw /usr/local/etc/tn-gw # local telnet services telnet-a stream tcp nowait root /usr/local/etc/netacl in.telnetd # Gopher firewall gateway gopher stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/http-gw # WWW firewall gateway http stream tcp nowait.400 root /usr/local/etc/http-gw /usr/local/etc/http-gw # SSL firewall gateway ssl-gw stream tcp nowait root /usr/local/etc/ssl-gw ssl-gw # NetNews firewall proxy (using plug-gw) nntp stream tcp nowait root /usr/local/etc/plug-gw plug-gw nntp #nntp stream tcp nowait root /usr/sbin/tcpd in.nntpd # SMTP (email) firewall gateway #smtp stream tcp nowait root /usr/local/etc/smap smap # # Shell, login, exec and talk are BSD protocols. # #shell stream tcp nowait root /usr/sbin/tcpd in.rshd #login stream tcp nowait root /usr/sbin/tcpd in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd in.rexecd #talk dgram udp wait root /usr/sbin/tcpd in.talkd #ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd #dtalk stream tcp waut nobody /usr/sbin/tcpd in.dtalkd # # Pop and imap mail services et al # #pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d #pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d #imap stream tcp nowait root /usr/sbin/tcpd imapd # # The Internet UUCP service. # #uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l # # Tftp service is provided primarily for booting. Most sites # run this only on machines acting as &dquot;boot servers.&dquot; Do not uncomment # this unless you *need* it. # #tftp dgram udp wait root /usr/sbin/tcpd in.tftpd #bootps dgram udp wait root /usr/sbin/tcpd bootpd # # Finger, systat and netstat give out user information which may be # valuable to potential "system crackers." Many sites choose to disable # some or all of these services to improve security. # # cfinger is for GNU finger, which is currently not in use in RHS Linux # finger stream tcp nowait root /usr/sbin/tcpd in.fingerd #cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd #systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx #netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet # # Time service is used for clock syncronization. # #time stream tcp nowait root /usr/sbin/tcpd in.timed #time dgram udp wait root /usr/sbin/tcpd in.timed # # Authentication # auth stream tcp wait root /usr/sbin/tcpd in.identd -w -t120 authsrv stream tcp nowait root /usr/local/etc/authsrv authsrv # # End of inetd.conf Filen /etc/services

Det är här allting börjar. När en klient ansluter till brandväggen så ansluter den till en känd port (mindre än 1024). Till exempel så ansluter /etc/services. Sedan startar den programmet som hör ihop med namnet i filen /etc/inetd.conf. Vissa av tjänsterna som vi skapar finns inte normalt i filen /etc/services. Du kan para ihop vissa av dem med vilken port du vill. Till exempel så har jag låtit administratörens telnet-a 24/tcp ftp-gw 21/tcp # this named changed auth 113/tcp ident # User Verification ssl-gw 443/tcp SOCKS Proxyserver Att installera proxyservern

SOCKS proxyserver finns att hämta ifrån . Det finns även ett exempel på en konfigurationsfil i den katalogen som heter socks stream tcp nowait nobody /usr/local/etc/sockd sockd så att servern kan köras då den efterfrågas. Att konfigurera proxyservern

SOCKS-programmet använder två konfigurationsfiler. En som beskriver vilken access som tillåts, och en som routar förfrågningar till den korrekta proxyservern. Access-filen skall finnas på servern och routing-filen skall finnas på alla Un*x-maskiner. DOS och Macintosh datorer gör sin egen routing. Accessfilen

Med socks4.2 Beta så heter accessfilen Identifieraren (permit/deny) IP-adressen Adressmodifieraren Identifieraren är antingen permit 192.168.2.23 255.255.255.255 så tillåter den endast den IP-adress där alla bitar är samma som i 192.168.2.23, dvs endast 192.168.2.23. Följande rad permit 192.168.2.0 255.255.255.0 tillåter alla adresser i gruppen 192.168.2.0 till 192.168.2.255, dvs hela klass C domänen. Man skall inte ha följande rad permit 192.168.2.0 0.0.0.0 eftersom den tillåter alla adresser, oavsett vilken det är. Så, tillåt först alla adresser som du vill tillåta och neka sedan resten. För att tillåta alla i domänen 192.168.2.xxx fungerar följande rader bra. permit 192.168.2.0 255.255.255.0 deny 0.0.0.0 0.0.0.0 Notera den första &dquot;0.0.0.0&dquot; i Routingfilen

Routingfilen i SOCKS är dåligt namnsatt till deny direct sockd direct 192.168.2.0 255.255.255.0 vilket ger direkt kontakt med alla datorer på vårt skyddade nätverk. Raden med sockd @= Notera `@='. Detta låter dig specificera IP-adresserna för en lista av proxyservrar. I vårt exempel så använder vi endast en proxyserver. Men man kan ha många, för att tillåta större belastning och för redundans i fall något går sönder. Fälten för IP-adress och modifierare fungerar som för de andra exemplena. Du specificerar vilka adresser som går vart genom dessa. DNS bakom en brandvägg

Att sätta upp en DNS innanför en brandvägg är en ganska enkel uppgift. Du behöver bara sätta upp en DNS på brandväggen och sedan låta alla maskiner bakom brandväggen använda denna. Att arbeta med en proxyserver Unix

För att dina applikationer skall fungera med proxyservern så måste de vara &dquot;sockifierade&dquot;. Du behöver två olika include/socks.h. Vissa program tar hand om routing och sockifiering själva. Netscape är ett av dessa. Du kan använda en proxyserver under Netscape genom att skriva in serverns adress (192.168.2.1 i vårt fall) i SOCKS-fältet under Proxies. Man måste iallafall pilla lite med alla applikationer oavsett hur de hanterar en proxyserver. MS Windows med Trumpet Winsock

Trumpet Winsock har inbyggt stöd för proxyserver. I &dquot;setup&dquot; menyn, skriv in IP-adressen för proxyservern och alla adresser som kan nås direkt. Trumpet hanterar sedan alla utgående paket. Att få proxyservern att fungera med UDP-paket

SOCKS-paketet fungerar endast med TCP-paket, inte UDP. Detta gör det lite mindre användbart. Många användbara program, som Nackdelar med proxyservrar

Proxyservern är, framför allt, en Du har lagt en rapport som du håller på att jobba med på din dator i ett brandväggsskyddat nätverk. Du är hemma och bestämmer dig för att du vill gå igenom den. Det kan du inte. Du kan inte nå din dator eftersom den är bakom brandväggen. Du försöker att logga in på brandväggen först, men eftersom alla har proxyserveraccess, så har ingen lagt upp ett konto åt dig på den.

Din dotter går på college. Du vill mäjla henne. Du har några privata saker att prata med henne om, och vill helst att hon skickar e-posten direkt till din maskin. Du litar helt och hållet på systemadministratören, men det är ju trots allt privat post. Men detta går inte.

Oförmågan att använda UDP-paket är en stor nackdel med proxyservrar. Jag föreställer mig att detta kommer att fungera snart. FTP skapar ett annat problem med en proxyserver. När man ger kommandot , och . Dessa paket är snabbare, tillåter bättre anslutningar och tillhandahåller bättre tillgänglighet till det privata nätverket från Internet. Proxyservrar är bra för de nätverk som har många datorer som vill ansluta till Internet `on the fly', med en inställning och lite arbete efter det. Avancerade Konfigurationer

Det finns en konfiguration som jag vill gå igenom innan jag avslutar detta dokumentet. Det som jag precis har gått igenom räcker antagligen för de flesta. Men det som följer kommer att visa en mer avancerad konfiguration och kan dessutom klara upp lite frågor. Om du har frågor om det som jag just gått igenom, eller bara är intresserad av mångsidigheten hos proxyservrar och brandväggar, läs vidare. Ett stort nätverk med tyngdpunkten på säkerhet

Antag till exempel att du är ledare för en milis och du vill ha ett nätverk. Du har 50 datorer och ett subnät med 32 (5 bitar) IP-adresser. Du behöver lite olika nivåer på access inom nätverket eftersom du säger olika saker till dina anhängare. Därför behöver du skydda vissa delar av nätverket från resten. Nivåerna är: Att sätta upp nätverket

IP-adresserna arrangeras som följer: En adress är 192.168.2.255, vilken är broadcastadressen och kan inte användas. 23 av de 32 IP-adresserna allokeras till 23 datorer som skall vara åtkomliga från Internet. En IP-adress går till en Linuxburk på det nätverket En går till en annan Linuxburk på det nätverket. Två IP-adresser går till routern. Fyra adresser blir över, men ges domännamnen paul, ringo, john och george, bara för att förvilla lite grann. De skyddade nätverken har båda adresserna 192.168.2.xxx Sedan byggs två separata nätverk i olika rum. De routas via infraröd Ethernet så de är helt osynliga utanför rummen. Lyckligtvis så fungerar infraröd Ethernet precis som vanlig Ethernet. Dessa båda nätverk kopplas till en av Linuxburkarna med en extra IP-adress. Det finns en filserver som kopplar ihop de två skyddade nätverken. Detta för att planerna för att ta över världen involverar några av de högre trupperna. Filservern har adressen 192.168.2.17 för `Troop'-nätverket och 192.168.2.23 för `Mercenary'-nätverket. Den måste ha två olika IP-adresser eftersom den har två nätverkskort. IP-vidareskickning är avstängt. IP-vidareskickning är även avstängt på de två Linuxburkarna. Routern kommer inte att skicka vidare paket ämnade för 192.168.2.xxx adresser om den inte explicit får sådana direktiv, så Internet kan inte komma in. Anledningen att vidareskickning skall vara avstängt här är att paket från `Troop'-nätverket inte skall kunna nå `Mercenary'-nätverket, och vice versa. NFS-servern kan även ställas in för att erbjuda olika filer till de olika nätverken. Detta kan bli användbart, och lite trixande med symboliska länkar gör så att vissa filer kan delas av alla. Denna inställning och ett extra nätverkskort gör att denna filservern kan användas av alla tre nätverken. Att sätta upp proxyservern

Eftersom alla tre nivåerna vill kunna ha koll på Internet för sina egna oärliga syften, så måste alla tre ha access till Internet. Det externa nätverket är direktkopplat till Internet så vi behöver inte anstränga oss med proxyservrar där. `Mercenary' och `Troop' nätverken är bakom brandväggar så vi behöver sätta upp proxyservrar där. Båda nätverken kommer att sättas upp likartat. Båda är tilldelade samma IP-adresser. Jag lägger in några extra parametrar, bara för att göra det lite mer intressant. Ingen kan använda filservern för access till Internet. Det skulle öppna filservern för virus och andra hemska saker, och den är hyfsat viktig, så den får inte användas mot Internet. Vi kommer inte tillåta att trupperna har tillgång till World Wide Web. De är under utbildning och den typen av informationshämtande kan vara skadlig. Så filen deny 192.168.2.17 255.255.255.255 Och på `Mercenary'-maskinen: deny 192.168.2.23 255.255.255.255 Och, `Troop'-Linuxburken har även en rad som denna: deny 0.0.0.0 0.0.0.0 eq 80 Detta säger att man skall neka alla maskiner som försöker komma åt port 80 (http porten). Det tillåter fortfarande alla andra tjänster, endast www-access nekas. Sedan så har båda filerna följande: permit 192.168.2.0 255.255.255.0 för att tillåta alla datorer på 192.168.2.xxx nätverket att använda denna proxyserver, förutom de som redan har blivit nekade (dvs filservern och www-access från `Troop'-nätverket).

Så filen deny 192.168.2.17 255.255.255.255 deny 0.0.0.0 0.0.0.0 eq 80 permit 192.168.2.0 255.255.255.0 och på `Mercenary'-nätverkets Linuxburk ser den ut så här: deny 192.168.2.23 255.255.255.255 permit 192.168.2.0 255.255.255.0 Detta borde konfigurera allting korrekt. Alla nätverk är isolerade med lagom mängd interaktion. Alla borde vara lyckliga. Nu, ta över världen!