Firewalling und Proxy Server
 J�rgen Steiner ([email protected])
 v0.1-2, 18. M�rz 1997

 Dieses Dokument wurde entwickelt, um die Grundlagen von Firewall-Sys�
 temen zu vermitteln und bietet einige Details zur Konfiguration von
 Filter- und Proxy-Firewalls auf einem PC-System, basierend auf Linux.


 1.  Einf�hrung

 Das original FIREWALL-HOWTO wurde von David Rudder geschrieben und von
 Mark Grennan erweitert. Diese erweiterte Version wurde von mir ins
 Deutsche �bersetzt.

 Firewall-Systeme haben einen gro�en Erfolg als das Ultimative in
 Internet-Sicherheit gewonnen. Wie die meisten Dinge die Erfolg haben,
 ist mit dem Erfolg auch ein falsches Verst�ndnis gekommen. Dieses
 Dokument wird die Grundlagen vermitteln, was Firewall und Proxy-Server
 sind und wie sie konfiguriert werden. Es werden auch Anwendungen
 au�erhalb des Sicherheitsbereiches vorgestellt.


 1.1.  Feedback

 Ich bitte mir jede Ungenauigkeit in diesem HOWTO zu berichten.
 Jeglicher Feedback ist willkommen.

 meine eMail-Adresse ist: [email protected]



 1.2.  Disclaimer

 Ich bin nicht verantwortlich f�r Folgen die durch die Anwendung dieses
 HOWTOs enstehen.

 Dieses Dokument ist als eine Einf�hrung in die Funktion von Firewall
 und Proxy-Servern gedacht. Ich bin kein Experte f�r Sicherheitsfragen
 und m�chte hier auch keine ultimative Anleitung f�r den Betrieb von
 Firewall und Proxy-Servern bieten.


 1.3.  Copyright

 Dieses Dokument ist urheberrechtlich gesch�tzt. Das Copyright f�r die
 englische Firewall HOWTO, auf der dieses Dokument basiert, liegt bei
 Mark Grennan. Das Copyright f�r die deutsche Version liegt bei J�rgen
 Steiner.

 Das Dokument darf gem�� der GNU General Public License verbreitet
 werden. Insbesondere bedeutet dieses, da� der Text sowohl �ber
 elektronische wie auch physikalische Medien ohne die Zahlung von
 Lizenzgeb�hren verbreitet werden darf, solange dieser Copyright
 Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
 und ausdr�cklich erw�nscht. Bei einer Publikation in Papierform ist
 das Deutsche Linux HOWTO Projekt hier�ber zu zu informieren.


 1.4.  Die Gr�nde f�r die Entstehung dieses HOWTO's

 Es gab eine Menge Diskussionen auf comp.os.linux.* in letzter Zeit
 �ber Firewalls. Und Informationen dar�ber einen Firewall zu
 administrieren, waren sehr d�rftig. Dieses HowTo soll den
 Wissenshungrigen zielgerecht an das Thema heranf�hren.


 2.  Allgemeine Einf�hrung

 2.1.  Vorbereitende Lekt�re als Empfehlung



 �  Das NET-3 HOWTO

 �  Das Ethernet HOWTO

 �  Das Mehrere Ethernetkarten mini HOWTO

 �  Networking with Linux

 �  Das PPP HOWTO

 �  TCP/IP Network Administrator's Guide by O'Reilly and Associates

 �  Die Dokumentation zum TIS Firewall Toolkit


 Die Trusted Information System's (TIS) Website hat eine gro�e Sammlung
 an Informationen, Dokumentationen und Programmen um ein sicheres
 Linux-System aufzubauen: http://www.tis.com/



 3.  Beschreibung des Firewalls

 Ein Firewall in Computern ist eine logische Vorrichtung, die ein
 privates Netz vor dem �ffentlichen Teil (Internet) sch�tzt.

 Funktionsprinzip:

 Ein Computer mit installierter Routing-Software und 2 Schnittstellen
 (z.B. serielle Schnittstellen, Ethernet, Token Ring, usw.).  Das
 Internet ist mit einer Schnittstelle verbunden, das zu sch�tzende
 private Netz mit der anderen Schnittstelle. Jetzt, haben Sie zwei
 verschiedene Netze, die sich einen Computer teilen.

 Der Firewall-Computer, von jetzt an �Firewall� genannt, kann beide
 Seiten erreichen, das gesch�tzte private Netz und das Internet.
 Niemand aus dem gesch�tzten Netz kann das Internet erreichen, und aus
 dem Internet kann niemand in das gesch�tzte Netz.

 Damit jemand das Internet vom gesch�tzten Netz aus erreichen kann, mu�
 er eine Telnet-Verbindung zum Firewall aufbauen und das Internet von
 dort aus benutzen.  Entsprechend, um eine Verbindung vom Internet aus
 in das gesch�tzte Netz zu bekommen, mu� man auch durch den Firewall
 gehen.

 Dieses stellt eine ausgezeichnete Sicherheit gegen Angriffe aus dem
 Internet dar.  Falls jemand einen Angriff gegen das gesch�tzte Netz
 machen will, mu� er zuerst durch den Firewall gehen. Ein 2-stufiger
 Zugang zum gesicherten Netz ist resistent gegen Angriffe.  Falls
 jemand das gesch�tzte Netz �ber eine gemeinere Methode angreifen will,
 wie z.B.  Mail-Bombe oder den ber�chtigten �Internet Wurm�, werden sie
 nicht in der Lage sein das gesch�tzte Netz zu erreichen.  Dies ist ein
 ausgezeichneter Schutz.


 4.  Nachteile eines Firewall

 Das gr��te Problem eines Firewalls ist, da� er den Zugang zum Internet
 von der Innenseite kommend stark hemmt.  Grunds�tzlich reduziert er
 den Gebrauch des Internets dahingehend, als ob man nur einen �Dialup
 Shell Zugang� haben w�rde.  Sich in den Firewall einloggen zu m�ssen
 um vollen Internet-Zugang zu haben ist eine starke Beeinschr�nkung.

 Programme wie Netscape, die eine direkte Internet-Verbindung
 ben�tigen, werden hinter einem Firewall nicht arbeiten.  Die Antwort
 zu diesem Problem hat ein Proxy-Server. Proxy-Server erlauben ein
 direktes Erreichen des Internets hinter einem Firewall.

 Um die M�glichkeit, von einem Computer im gesch�tzten Netz mit
 Netscape im Web zu lesen, anbieten zu k�nnen, setzt man einen Proxy-
 Server auf den Firewall auf. Der Proxy-Server w�rde so konfiguriert
 werden, da� ein Computer vom eigentlichen Port 80 des Firewalls zum
 Port 1080 des Proxy verbunden wird, um alle Verbindungen zu den
 richtigen Adressen umzuleiten.

 Der gro�e Vorteil von Proxy-Servern ist die absolute Sicherheit, wenn
 sie korrekt konfiguriert sind. Sie werden niemanden erlauben sie zu
 umgehen.  Der Proxy-Server ist vor allem eine Sicherheitsvorrichtung.
 Seine Benutzung f�r einen Internet-Zugang mit begrenzten IP-Adressen
 wird viele Nachteile haben.

 Ein Proxy-Server bietet Zugang von innerhalb des gesch�tztes Netzes
 zur Au�enseite, aber die Innenseite wird v�llig unerreichbar f�r die
 Au�enseite bleiben. Dieses bedeutet keine Server-, Talk- oder Archie-
 Verbindungen, oder direkte Emails zu den Computern im gesch�tzten
 Netz.  Diese Nachteile k�nnen gering erscheinen, aber bedenken sie:
 Es liegt ein Dokument auf Ihrem Computer innerhalb eines per Firewall
 gesch�tztem Netzes.

 FTP verursacht ein anderes Problem mit einem Proxy-Server. Beim
 Absenden des ls-Befehls, �ffnet der FTP-Server einen Port auf der
 Kundenmaschine und �bermittelt die Information. Ein Proxy-Server wird
 das nicht erlauben, somit arbeitet FTP nicht zuverl�ssig.  Proxy-
 Server arbeiten langsam.  Wegen dem gr��eren Protokollaufwandes werden
 fast alle anderen Mittel, um einen Internet-Zuganges zu bekommen,
 schneller sein.

 Grunds�tzlich, falls Sie ausreichend IP Adressen haben und ihnen macht
 die Sicherheit keine Sorgen, wird kein Firewall und/oder Proxy-Server
 benutzt.  Falls Sie zu wenig IP Adressen haben und ihnen macht die
 Sicherheit keine Sorgen, wird man eher einen IP-Emulator benutzen wie
 Term, Slirp oder TIA.  Diese Pakete arbeiten schneller, erlauben
 bessere Verbindungen, und stellen ein hochwertigen Zugang vom Internet
 zum gesch�tzten Netz bereit.

 Proxy-Server sind gut f�r jene Netzwerke mit vielen Hosts, welche
 einen transparenten Internetzugang wollen. Sie ben�tigen nur eine
 kleine Konfiguration und wenig Verwaltungsarbeit im laufenden Betrieb.



 5.  Funktion und Prinzip eines Firewalls

 5.1.  Firewall Varianten

 Es gibt zwei Arten von Firewalls.


 1. IP oder Filter Firewalls - die alles sperren bis auf ausgew�hlten
    Netzwerkverkehr

 2. Proxy-Server - die einem die Netzwerkverbindung �bernehmen



 5.1.1.  IP Filter Firewalls

 Ein IP Filter Firewall arbeitet auf Paket-Ebene, er ist so
 konstruiert, da� er den Datenstrom kontrolliert auf Grund von
 Ursprung, Ziel, Port und Paket-Typ-Information die in jedem Daten-
 Paket enthalten sind.

 Diese Art des Firewalls ist sehr sicher, aber es mangelt an einer
 brauchbaren Protokollierung. Er verbietet den Zugang zum privaten
 Netzwerk aber es wird nicht protokolliert wer auf das private Netzwerk
 zugreifen will oder wer vom privaten Netz Zugriff ins Internet haben
 will.

 Filter Firewalls sind absolute Filter. Gibt man einem von au�en den
 Zugriff auf das private Netz hat automatisch jeder Zugriff darauf.

 In Linux ist packet-filtering-software seit Kernel 1.2.13 enthalten


 5.1.2.  Proxy Server

 Proxy Server erlauben indirekten Zugang zum Internet durch den
 Firewall.  Als Beispiel zur Funktion startet man einen Telnet zu einem
 System um von dort aus einen Telnet zu einem anderen zu starten. Nur
 mit einem Proxy-Server kann man diesen Vorgang automatisieren. Wenn
 man mit einer Client-Software einen connect zum Proxy-Server macht,
 startet der automatisch seine Client(Proxy)-Software und reicht die
 Daten durch.

 Weil Proxy-Server ihre Kommunikation duplizieren, k�nnen sie alles
 mitprotokollieren was sie tun.

 Der gro�e Vorteil von Proxy-Server ist, sofern sie korrekt
 konfiguriert sind, da� sie absolut sicher sind. Sie erlauben keinem
 ein Durchkommen.  Sie haben keine direkten IP-Routen.


 6.  Firewall Konfiguration

 6.1.  Ben�tigte Hardware

 In diesem Beispiel ist der Computer ein 486-DX66 mit 16 MB RAM und
 einer 500 MB Linux Partition. Dieses System hat zwei Netzwerkkarten.
 Eine ist an das private LAN angeschlossen. Die Andere ist an ein LAN
 angeschlossen, das wir die �Demilitarisierte Zone� (DMZ) nennen
 wollen. An die DMZ ist ein Router angeschlossen mit Verbindung zum
 Internet.

 Das ist eine �bliche Standardkonfiguration f�r ein B�ro. Man kann auch
 nur eine Netzwerkkarte und daf�r ein Modem mit PPP nehmen. Hauptsache
 der Firewall hat zwei IP-Netzwerk-Adressen.

 Es gibt ein paar Leute mit kleinen LANs zuhause mit zwei oder drei
 Computern.  Manche k�nnten in Erw�gung ziehen alle Modems an eine
 Linux-Box (vielleicht ein verstaubter 386er) zu stecken um sie ans
 Internet anzubinden, vielleicht sogar mit Load-Balancing. Der
 Datendurchsatz von nur einer Person w�rde sich mit dieser
 Konfiguration glatt verdoppeln.


 7.  Firewall Software

 7.1.  Verf�gbare Pakete

 Wenn man nur einen Filter Firewall will, reicht Linux mit dem
 Standard-Netzwerk-Paket. Das �IP Firewall Administration Tool� kann
 m�glicherweise nicht bei allen Linux-Distributionen dabei sein.

 IPFWADM ist zu holen bei:

      http://www.xos.nl/linux/ipfwadm/


 Um einen Proxy-Server zu installieren ben�tigt man eines der beiden
 Packages:


 1. SOCKS

 2. TIS Firewall Toolkit (FWTK)


 7.2.  Der TIS Firewall Toolkit vs. SOCKS

 Trusted Information System (http://www.tis.com) ver�ffentlichte eine
 Kollektion von Programmen, die einem das �Firewalling� erleichtern.
 Die Programme haben grunds�tzlich die selbe Funktion wie das �SOCKS�
 Paket, haben aber eine unterschiedliche Strategie im Programmaufbau.
 SOCKS bedient mit nur einem Programm alle Internet-Transportaufgaben,
 wobei TIS f�r jedes Utility, welches den Firewall ben�tzen m�chte, ein
 eigenes Programm anbietet.

 Um die beiden zu vergleichen, nehmen wir als Beispiel eine WWW- und
 eine Telnet-Verbindung. Mit SOCKS mu� man nur eine Konfigurationsdatei
 anpassen und hat nur einen D�mon. Durch diese Datei und dem D�mon hat
 man die M�glichkeit f�r WWW und Telnet geschaffen, ebenso f�r alle
 anderen Dienste die nicht gesperrt sind.

 Mit dem TIS-Toolkit startet man f�r WWW und Telnet jeweils einen
 eigenen D�mon mit seiner eigenen Konfigurationsdatei. Jeder weitere
 Internetdienst ist solange nicht m�glich bis er explizit freigegeben
 wird. Wird ein D�mon f�r einen bestimmten Dienst nicht angeboten (z.B.
 TALK) gibt es einen �plug-in�  daemon, er ist aber dann weder
 flexibel, noch einfach zu konfigurieren wie die anderen Utilities.

 Das klingt vielleicht einfach, macht aber einen gro�en Unterschied.
 SOCKS erlaubt einem nachl�ssiger zu sein. Mit einem nachl�ssig
 installiertem SOCKS-Server kann ein Anwender aus dem LAN mehr Zugriff
 zum Internet erreichen als eigentlich beabsichtigt. Mit dem TIS-
 Toolkit haben die Anwender im LAN nur den Zugriff, den der System-
 Administrator erlaubt.

 SOCKS ist einfacher zu konfigurieren, einfacher zu kompilieren und
 erlaubt gr��ere Flexibilit�t. Das TIS-Toolkit ist weitaus sicherer
 wenn man die Anwender im gesch�tzten LAN regulieren will. Beide bieten
 absoluten Schutz vor der Au�enwelt.


 Eine M�glichkeit der Installation und Konfiguration beider Systeme
 wird in diesem HOWTO beschrieben.


 8.  Vorbereitung des Linux Systems

 8.1.  Kompilieren des Kernels

 Beste Voraussetzung ist eine saubere Linuxinstallation.(Die Beispiele
 hier sind auf einer RedHat 3.0.3 Distibution entstanden). Je weniger
 Software man installiert hat, desto weniger Schlupfl�cher,
 Hintert�rchen und/oder Fehler bilden die Grundlage f�r
 Sicherheitsprobleme in Ihrem System.  Idealerweise installiert man nur
 die unbedingt n�tigte Software.

 Als Kernel verwendet man einen bekannt Stabilen, wie z.B 2.0.14 (auf
 den sich die folgende Konfiguration abst�tzt).




 1. Under General setup

    a. Turn Networking Support ON

 2. Under Networking Options

    a. Turn Network firewalls ON

    b. Turn TCP/IP Networking ON

    c. Turn IP forwarding/gatewaying OFF (UNLESS you wish to use IP
       filtering)

    d. Turn IP Firewalling ON

    e. Turn IP firewall packet loggin ON (this is not required but it
       is a good idea)

    f. Turn IP: masquerading OFF (I am not covering this subject here.)

    g. Turn IP: accounting ON

    h. Turn IP: tunneling OFF

    i. Turn IP: aliasing OFF

    j. Turn IP: PC/TCP compatibility mode OFF

    k. Turn IP: Reverse ARP OFF

    l. Turn Drop source routed frames ON

 3. Under Network device support

    a. Turn Network device support ON

    b. Turn Dummy net driver support ON

    c. Turn Ethernet (10 or 100Mbit) ON

    d. Select your network card

 Nun kann man den Kernel neu kompilieren und installieren und Linux neu
 starten.  Die Netzwerkkarte sollte in den Boot-Meldungen erscheinen.
 Wenn nicht, nochmal einen Blick in die entsprechende HOWTOs werfen.


 8.2.  Konfiguration von zwei Netzwerkkarten

 Sind zwei Netzwerkkarten im Computer, kann man einen Zusatzeintrag in
 /etc/lilo.conf machen, der die IO-Adressen und die IRQ's der beiden
 Karten bekannt gibt.

 z.B.

     append="ether=12,0x300,eth0 ether=15,0x340,eth1"




 8.3.  Konfiguration der Netzwerkadressen


 Dies ist der interessante Teil, weil es ein paar Entscheidungen zu
 machen gilt.  Nachdem erw�nscht ist, da� aus dem Internet kein Zugriff
 auf irgendeinen Teil des LAN stattfindet, braucht man auch keine
 offiziellen Adressen f�r das LAN . Es gibt ein paar Adressen nur f�r
 den Gebrauch in privaten Netzwerken. Weil immer mehr Adressen
 gebraucht werden und diese private Adressen nicht geroutet werden,
 sind sie eine gute Wahl.

 Einer dieser Adressbereiche ist 192.168.2.x , der auch hier in diesem
 Beispiel ben�tzt wird.

 Der Beispiel-Proxy-Server hier ist ein Bestandteil in beiden
 Netzwerken und kann somit Daten von und ins private Netzwerk
 �bergeben.


             199.1.2.10   __________    192.168.2.1
       _  __  _        \ |          | /           _______________
      | \/  \/ |        \| Firewall |/           |               |
     / Internet \--------|  System  |------------| Workstation/s |
     \_/\_/\_/\_/        |__________|            |_______________|



 Will man einen �Filter Firewall� ben�tzen, kann man diese Adressen
 beibehalten.  Man mu� allerdings IP-Masquerading ben�tzen um dies zu
 erm�glichen. Mit diesem Zusatz wird der Firewall die Pakete weiter
 transportieren und dabei in �Offizielle� IP-Adressen umsetzen, um sie
 ins Internet zu schicken.

 Die Netzwerkkarte zum Internet mu� die offizielle IP-Adresse bekommen
 und die Karte zum LAN bekommt die 192.168.2.1 zugewiesen. Das wird die
 Proxy/Gateway-Adresse. Alle anderen Systeme im gesch�tzten LAN k�nnen
 Adressen aus dem Bereich 192.168.2.xxx bekommen (192.168.2.2 bis
 192.168.2.254).

 Bei RedHat kann man, um das Netzwerk beim starten von Linux zu
 konfigurieren, eine Datei in /etc/sysconfig/network-scripts
 hinzuf�gen.  Diese Datei wird beim starten gelesen und konfiguriert
 das Netzwerk und die Routing-Tabelle.

 Ein Beispiel f�r ifcfg-eth1:


     #!/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



 Man kann auch das Script dazu verwenden um per Modem automatisch eine
 Verbindung zum Provider aufzubauen. Als Beispiel kann das ipup-ppp
 Skript dienen.

 Bei Benutzung eines Modems f�r die Internetverbindung kann die IP-
 Adresse zum Internet vom Provider dynamisch beim Connect �bermittelt
 werden.




 8.4.  Testen des Netzwerkes

 Begonnen wird mit der Kontrolle von ifconfig und route. Bei zwei
 Netzwerkkarten kann ifconfig so aussehen:


   #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



 Und die Tabelle von route:


   #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



 Zur Erinnerung: 199.1.2.0 ist die Internetseite des Firewalls und
 192.168.2.0 ist die private Seite.

 Nun kann versucht werden vom Firewall einen ping zum Internet zu
 starten.  Ein guter Testpunkt w�re ns.nic.de. Es ist eigentlich ein
 guter Test, hat sich aber als nicht sehr zuverl�ssig herausgestellt.
 Falls der ping nicht funktioniert, einfach mal eine Adresse des
 Providers versuchen. Falls auch das nicht funktioniert, dann ist die
 IP-Verbindung nicht richtig konfiguriert und mu� mit Hilfe des NET-3
 HOWTOs berichtigt werden.

 Als n�chstes versucht man einen ping vom Firewall zu einem System
 innerhalb des gesch�tzten Netzwerkes. Falls dies auch nicht klappt,
 dann wiederum mit Hilfe des NET-3 HOWTOs das LAN neu konfigurieren.

 Dann versucht man von einem System innerhalb des LAN's eine Adresse
 au�erhalb des Firewalls anzupingen. (Dies sollte keine der
 192.168.2.xxx IP-Adressen sein)  Wenn das funktioniert, hat man IP-
 Forwarding nicht gesperrt. Man sollte sichergehen, da� dies gew�nscht
 ist. Ist es freigegeben, sollte man sich den IP-Filtering Absatz in
 diesem Dokument n�her ansehen.

 Am Besten versucht man jetzt eine Internetadresse von einem Rechner im
 LAN anzupingen. Idealerweise nimmt man die Adresse die schon beim Test
 am Firewall funktioniert hat (ns.nic.de). Nur zur Erinnerung, bei
 gesperrten IP-Forwarding funktioniert der Test nicht, nur wenn IP-
 Forwarding freigegeben ist.

 Wenn IP-Forwarding freigegeben ist und �Offizielle IP-Adressen� (keine
 192.168.2.*) verwendet werden, kann man das Internet nicht direkt
 anpingen, sondern nur die Internetseite des Firewalls. [*]

 Hat man als Adressen f�r das gesch�tzte LAN 192.168.2.* gew�hlt,
 k�nnen auch keine Datenpakete geroutet werden. Ausser IP-Masquerading
 ist installiert, dann ist der Test wiederum m�glich.

 Jetzt ist das Basis-System installiert.


 8.5.  IP-Filter Konfiguration (IPFWADM)


 Um zu beginnen soll IP-Forwarding im Kernel konfiguriert sein und das
 System sollte in der Lage sein, alle Pakete weiter zu schicken. Die
 Routing-Tabellen sollten passen und man soll in der Lage sein, vom LAN
 aus alle Zielsysteme im Internet zu erreichen und zur�ck.

 Da hier ein Firewall gebaut werden soll, ist es notwenig jeglichen
 freien Zugang zu sperren.

 Es ist n�tzlich ein paar Shell-Scripte zu schreiben die beim booten
 die Firewall-forwarding Regeln und das Accounting festlegen.

 Das IP-Forwarding im Kernel leitet unkonfiguriert alles weiter. Aus
 diesem Grund soll das Boot-Script beim Systemstart jeglichen Zugriff
 verbieten und jegliche ipfw-Regeln vom letzten Start l�schen. Ein
 Beispiel-Script soll dies erkl�ren:


   #
   # 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




 Das ist jetzt der ultimative Firewall. Keine Daten kommen jetzt durch.
 Um jetzt ein paar Internet-Dienste durchzulassen hier ein paar
 Beispiele:













   # Forward email to your server
   ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25

   # Forward email connections to outside email servers
   ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535

   # Forward Web connections to your Web Server
   /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 196.1.2.11 80

   # Forward Web connections to outside Web Server
   /sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0 1024:65535

   # Forward DNS traffic
   /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24




 Um eine �bersicht des Datenverkehrs zu erhalten, der durch den
 Firewall geht, hier ein Beispiel:



   # 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




 Wenn das gew�nschte ein Firewall-Filter war, dann ist hier das Ende.


 9.  Installation des TIS Proxy Servers



 9.1.  Beschaffung der Software

 Der TIS Firewall Tool Kit (FWTK) ist erh�ltlich bei ftp.tis.com

 Der FWTK wird von TIS in einem versteckten Verzeichnis auf ihrem
 Server bereitgehalten. TIS verlangt, da� eine  E-Mail an fwtk-
 [email protected] gesandt wird mit dem einzigen Wort SEND im Mailbody.
 Ein Subject wird nicht ben�tigt. TIS schickt eine E-Mail zur�ck mit
 dem Pfad zu dem Verzeichnis, wo man den FWTK herunter laden kann. Das
 Verzeichnis ist f�r ca. 12h zug�nglich.

 Zur Zeit ist die Version 2.0 beta vom FWTK aktuell, welche in diesem
 Beispiel hier auch verwendet wird. Wenn die endg�ltige Version
 ver�ffentlicht wird, gibt es auch eine neuere Version von diesem
 HOWTO.

 Um den FWTK zu installieren mu� man unter /usr/src ein Verzeichnis mit
 fwtk-2.0 anlegen. Danach das Archiv fwtk-2.0.tar.gz dort hin kopieren
 und mit tar auspacken.

 Der FWTK erlaubt keine SSL Web Dokumente aber es ist ein Zusatzmodul
 von Jean-Christophe Touvet entwickelt worden. Erh�ltlich unter


 ftp.edelweb.fr:/pub/contrib/fwtk/ssl-gw.tar.Z


 Touvet gibt aber keine Unterst�zung zu dem Modul.

 Es gibt aber eine modifizierte Version von Eric Wedel das Zugriff zu
 Netscapes �Secure News Server� erlaubt. Erh�ltlich unter

      mdi.meridian-data.com:/pub/tis.fwtl/ssl-gw/ssl-gw2.tar.Z


 In diesem Beispiel wird Eric Wedel's Version verwendet.

 Um es zu installieren, einfach im /usr/src/fwtk-2.0 Verzeichnis einen
 Ordner ssl-gw anlegen und die Dateien dort hinkopieren. Es braucht
 dann noch einige �nderungen damit es mit dem FWTK kompiliert.

 Die erste �nderung ist in der ssl-gw.c Datei, dort fehlt noch ein
 Include:


   #if defined(__linux)
   #include        <sys/ioctl.h>
   #endif



 Zweitens fehlt noch ein Makefile. Man kann eines von den anderen
 Gateway-Verzeichnissen kopieren und den original Gateway-Namen mit dem
 des ssl-gw �berschreiben.


 9.2.  Kompilieren des TIS FWTK

 Die Version 2.0 des FWTK kompiliert viel einfacher als die �lteren
 Versionen.  Es m�ssen aber noch einige �nderungen gemacht werden bis
 die Beta-Version sauber kompiliert.

 Zu Beginn mu� im /usr/src/fwtk/fwtk Verzeichnis das
 Makefile.config.linux �ber das originale Makefile.config kopiert
 werden.

 NICHT FIXMAKE BEN�TZEN. In der Anleitung steht es zwar, es zerst�rt
 aber die Makefile's in jedem Verzeichnis.

 Das sed-Skript f�gt ein '.' und '' zu der include-Zeile in jedem
 Makefile hinzu.  Dieses sed-Skript funktioniert:


   sed 's/^include[        ]*\([^  ].*\)/include \1/' $name .proto > $name



 Im Makefile.config m�ssen noch zwei �nderungen gemacht werden.

 Der Autor nahm sein Home-Verzeichnis als Source-Verzeichnis. Hier wird
 aber in /usr/src gearbeitet. Aus diesem Grund mu� die FWTKSRCDIR
 Variable umgesetzt werden.


   FWTKSRCDIR=/usr/src/fwtk/fwtk



 Weiterhin ben�tzen einige Linux-Systeme die gdbm Datenbank. Im
 Makefile.config steht dbm und mu� in diesem Fall auch umgesetzt
 werden:


   DBMLIB=-lgdbm



 Die letzte �nderung ist im x-gw.  Der Fehler in der BETA-Version ist
 in der socket.c. Um ihn zu beheben m�ssen folgende Zeilen gel�scht
 werden:


   #ifdef SCM_RIGHTS  /* 4.3BSD Reno and later */
                        + sizeof(un_name->sun_len) + 1
   #endif



 Wenn das ssl-gw ben�tzt wird, mu� man das Verzeichnis mit ins Makefile
 aufnehmen:


   DIRS=   smap smapd netacl plug-gw ftp-gw tn-gw rlogin-gw http-gw x-gw ssl-gw



 Jetzt kann man make starten.


 9.3.  Installation des TIS FWTK


 Jetzt beginnt der Spa� erst richtig! Man mu� jedem System mitteilen,
 da� es die neuen Dienste nutzen soll und es m�ssen Tabellen erstellt
 werden, um dies zu kontrollieren.

 Nun ein Beispiel f�r Einstellungen die erprobt sind.  Danach noch
 Beschreibungen der Probleme die dabei auftreten k�nnen und wie man sie
 beseitigt.

 Es gibt drei Dateien die die Kontrolltabellen enthalten:



 �  /etc/services

 �  Die Information f�r das System welcher Dienst auf welchem Port
    liegt


 �  /etc/inetd.conf

 �  Teilt dem inetd mit welches Programm zu starten ist wenn eine

 �  Verbindung an einem Port ansteht


 �  /usr/local/etc/netperm-table

 �  Teilt den FWTK Diensten mit, wem welcher Dienst erlaubt wird oder
    nicht.

 Um die Funktion des FWTK zu gew�hrleisten m�ssen diese Dateien von
 Grund auf neu erstellt werden. Ein falsche Einstellung in den drei
 Dateien kann das Netzwerk unerreichbar machen.

 9.3.1.  Die netperm-table Datei

 Diese Datei regelt wer Zugriff auf die Dienste des TIS FWTK hat. Man
 soll auch den Datenverkehr zu beiden Seiten des Firewalls im Auge
 behalten. Der Authentifizierungsabschnitt der netperm-table zeigt wo
 die Datenbank zu finden ist und wer Zugriff darauf hat.


   #
   # Proxy configuration table
   #
   # Authentication server and client rules
   authsrv:      database /usr/local/etc/fw-authdb
   authsrv:      permit-hosts localhost
   authsrv:      badsleep 1200
   authsrv:      nobogus true
   # Client Applications using the Authentication server
   *:            authserver 127.0.0.1 114




 Mit der permit-hosts Zeile kann es Probleme beim sperren des Zugriffs
 auf diesen Dienst geben. Eine m�gliche L�sung des Problems w�re
 folgende Zeile: authsrv: permit-hosts *

 Um die Datenbank zu initialisieren mu� man als root das Script
 ./authsrv in /var/local/etc starten um den �administrative user
 record� zu ertellen.

 In der FWTK-Dokumentation ist beschrieben wie man neue User und Groups
 hinzuf�gt.

 Ein Beispiel der Vorgehensweise:


     #
     # authsrv
     authsrv# list
     authsrv# adduser admin "Auth DB admin"
     ok - user added initially disabled
     authsrv# ena admin
     enabled
     authsrv# proto admin pass
     changed
     authsrv# pass admin "plugh"
     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
     #



 Die telnet-gateway (tn-gw) controls sind in einer Reihenfolge und der
 Erste ist zu konfigurieren.
 Im folgenden Beispiel ist es den Systemen im LAN erlaubt ohne
 Authentifikation den Firewall zu passieren.  (permit-hosts 19961.2.*
 -passok)

 Einem anderem System (196.1.2.202) wird der Zugang direkt zum Firewall
 gestattet ohne gleich durchgereicht zu werden. Die netacl-in.telnetd
 Zeile erlaubt dies.

 Der Telnet timeout sollte kurz gehalten werden.


   # 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



 Die r-commands arbeiten in der selben Weise wie der telnet.


   # 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



 Es sollte niemand Zugriff direkt auf den Firewall haben, wie es bei
 FTP der Fall ist. Somit darf kein FTP-Server auf dem Firewall
 installiert sein.

 Die permit-hosts Zeile erlaubt jedem im LAN den freien Zugriff ins
 Internet und alle anderen m�ssen sich authentisieren.  In den controls
 ist logging von jeder Datei, welche gesendet oder empfangen wird,
 integriert (-log { retr stor }).

 Der ftp timeout reguliert wie lange es dauert bis eine schlechte
 Verbindung beendet wird oder wie lange eine Verbindung ohne Aktivit�t
 gehalten wird.


   # 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 }



 FTP-Verbindungen mittels Web, Gopher oder Browser werden durch den
 http-gw umgesetzt. Die ersten beiden Zeilen im folgenden Beispiel
 erzeugen einen Ordner in dem die ftp-Dateien und Web-Dokumente, die
 den Firewall passieren, gespeichert werden. Der Datei- und Ordner-
 Zugriff sollte nur root gestattet sein.

 Die Web-Verbindung sollte kurz gehalten werden. Dies steuert, wie
 lange der Anwender bei einer schlechten Verbindung warten mu�.


   # 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      *



 Der ssl-gw ist ein Gateway der alles durchl��t, aus diesem Grund wird
 zur Vorsicht geraten. Im folgenden Beispiel wird jedem Anwender
 innerhalb des LANs erlaubt eine Vebindung zu allen Servern au�erhalb
 erlaubt au�er zu den Adressen 127.0.0.* und 192.1.1.* und auch nur auf
 den Ports 443 und 563. Diese Ports sind bekannte SSL-Ports.


   # 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      *



 Im folgendem Beispiel ist die Ben�tzung des plug-gw beschrieben um
 Verbindungen zu einem News-Server zu erlauben. In diesem Beispiel ist
 jedem Anwender im LAN nur die Verbindung zu einem System erlaubt und
 auch nur zum News-Port.

 Die zweite Zeile erlaubt dem Newsserver die Daten zur�ck zum LAN
 passieren zu lassen.

 Da die meisten News-Clients die Verbindung w�hrend dem News-Lesens
 bestehen lassen ist ein l�ngerer timeout f�r den Newsserver zu w�hlen.



   # 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



 Der finger-gateway ist sehr einfach. Jeder Anwender innerhalb des LANs
 mu� sich in den Firewall einloggen um den dortigen finger zu
 verwenden. Jeder andere bekommt einfach eine Meldung.


   # 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




 9.3.2.  Die inetd.conf Datei

 Das folgende Beispiel ist eine komplette /etc/inetd.conf Datei.  Alle
 unben�tigten Dienste sind auskommentiert. Es ist aus dem Grund
 komplett um zu zeigen was nicht ben�tigt wird und wie die neuen
 Dienste eingef�gt werden.
































































   #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 "boot servers." 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





 9.3.3.  Die /etc/services Datei

 Hier ist aller Anfang. Ein Client baut die Verbindung zu einem
 Firewall immer zu einem bekannten Port auf (unterhalb 1024), zum
 Beispiel der telnet auf Port 23. Der inet-D�mon bemerkt die Verbindung
 und sucht den Dienst in der /etc/services Datei.  Danach startet er
 das Programm, welches in der /etc/inetd.conf Datei dem Dienst
 zugewiesen ist.

 Einige der Dienste, die hier erstellt werden, sind �blicherweise nicht
 in der /etc/services Datei. Somit kann man einigen davon einen Port
 eigener Wahl zuweisen. Zum Beispiel kann man den telnet-Port vom
 Administrator (telnet-a) dem Port 24 zuweisen. Man kann ihn aber auch
 dem Port 2323 zuweisen, je nach Belieben. Damit sich der Administrator
 direkt zum Firewall verbinden kann mu� er einen telnet zum Port 24,
 und nicht zum Port 23, starten und wenn die netperm-table richtig
 aufgesetzt ist kann man dies nur von einem Systems innerhalb des
 gesch�tzten Netzwerkes tun.




   telnet-a        24/tcp
   ftp-gw          21/tcp             # this named changed
   auth            113/tcp   ident    # User Verification
   ssl-gw          443/tcp




 10.  Der SOCKS Proxy Server

 10.1.  Installation des Proxy Servers

 Der SOCKS Proxy Server ist hier erh�ltlich:


      metalab.unc.edu:/pub/Linux/system/Network/misc/socks-linux-src.tgz


 Im selben Verzeichnis ist auch eine Beispiel-Konfigurationsdatei mit
 folgendem Namen socks-conf.  Mit gzip und tar das Archiv auspacken und
 den Anweisungen im README folgen. Manche hatten Probleme beim
 kompilieren, einfach aufpassen ob die Makefiles passen.

 Unbedingt zu beachten ist, da� der Proxy Server in der /etc/inet.d
 Datei eingetragen wird:


   socks  stream  tcp  nowait  nobody  /usr/local/etc/sockd  sockd



 Damit wird der Server bei Anforderung gestartet.


 10.2.  Konfiguration des Proxy Servers

 Das SOCKS Programm ben�tigt zwei verschiedene Konfigurationsdateien.
 Eine um den Zugriff zu erlauben (access file) und eine um die
 Anforderungen zum betreffenden Proxy Server zu leiten (routing file).
 Die Access Datei soll im Server installiert sein und die Routing Datei
 auf jedem Unix-Rechner.  DOS-Rechner und MacIntosh-Rechner machen ihr
 eigenes Routing.


 10.2.1.  Die Access Datei

 Mit SOCKS 4.2 Beta wird die Access Datei  sockd.conf genannt.  Diese
 Datei soll zwei Zeilen enthalten: eine Erlaubnis- (permit) und eine
 Ablehnungs- (deny) Zeile.

 Jede Zeile hat drei Eintr�ge.


 �  Den Bezeichner            (identifier, permit/deny)

 �  Die IP Adresse            (address)

 �  Den Adressen Modifizierer (modifier)

 Der Bezeichner ist entweder permit oder deny. Man soll beides haben,
 eine permit- und eine deny-Zeile.

 Die IP-Adresse enth�lt eine 4 Byte Adresse in typischer IP-Notation,
 z.B. 192.168.2.0.

 Der Adress-Modifizierer ist ebenso eine typische 4 Byte IP-Adresse.
 Sie arbeitet wie eine Netzmaske. Gehen wir davon aus, da� diese Zahl
 32 Bit (Einsen und Nullen) entspricht. Ist das Bit eine Eins mu� das
 entsprechende Bit der zu pr�fenden Adresse zum entsprechenden Bit des
 IP-Adre�-Feldes passen.

 Wenn zum Beispiel die Zeile so lautet:


     permit 192.168.2.23 255.255.255.255



 werden nur die IP-Adressen zugelassen, bei denen jedes einzelne Bit
 passen mu�. Bei 192.168.2.23 eben nur 192.168.2.23.

 Bei folgender Zeile


     permit 192.168.2.0 255.255.255.0



 wird jede Nummer innerhalb der Gruppe von 192.168.2.0 bis
 192.168.2.255 zugelassen, eben eines kompletten Klasse-C Bereiches.

 Folgende Zeile sollte man niemals zulassen:


     permit 192.168.2.0 0.0.0.0


 Damit bekommt ohne R�cksicht jeder die Zulassung.

 Aus diesem Grund wird nur jede Adresse durchgelassen die eine
 Erlaubnis hat, der Rest wird einfach abgewiesen. Damit jeder im
 Bereich 192.168.2.xxx zugelassen wird sind folgende Zeilen passend:


     permit 192.168.2.0 255.255.255.0
     deny 0.0.0.0 0.0.0.0



 Wenn man das erste �0.0.0.0� in der deny-Zeile betrachtet, ist zu
 beachten, da� bei einem Modifizierer von 0.0.0.0 die IP-Adresse nicht
 mehr wichtig ist. In diesem Fall ist 0.0.0.0 der Standard, da es
 einfacher zu tippen ist.

 Es ist auch mehr als eine Zeile mit den beiden M�glichkeiten erlaubt.

 Speziellen Anwendern kann der Zugriff erlaubt oder auch abgelehnt
 werden.  Dies geschieht mit der ident Authentifizierung. Nicht alle
 Systeme unterst�tzen ident, unter anderem Trumpet Winsock. Aus diesem
 Grund wird hier nicht n�her darauf eingegangen. Die Dokumentation zu
 SOCKS bietet hier selbst gute Unterst�tzung.


 10.2.2.  Die Routing Datei

 Die Routing Datei in SOCKS wird leider socks.conf genannt.  Warum wird
 sie �leider� so genannt? Sie unterscheidet sich kaum im Namen von der
 Access Datei und ist somit schnell verwechselt.

 Die Aufgabe der Routing Datei ist den SOCKS-Clients mitzuteilen wann
 SOCKS zu ben�tzen ist und wann nicht. Zum Beispiel wird bei einer
 Verbindung von 192.168.2.3 zu 192.168.2.1 der SOCKS Firewall nicht
 ben�tzt, es wird direkt �ber Ethernet verbunden. Der Loopback,
 127.0.0.1, wird automatisch definiert. Au�erdem ben�tigt man SOCKS bei
 einer Verbindung zu sich selber auch nicht. Es gibt drei Eintr�ge:



 �  deny

 �  direct

 �  sockd

 Mit deny wird SOCKS mitgeteilt wann eine Anforderung abgewiesen wird.
 Dieser Eintrag hat die selben drei Felder wie in sockd.conf:
 identifier, address und modifier. Da dies auch von sockd.conf, der
 Access-Datei, verwaltet wird, kann das modifier Feld 0.0.0.0 bleiben.
 Um sich selbst davon auszuschlie�en irgendeinen Rechner zu erreichen,
 kann man es hier tun.

 Der direct Eintrag nennt die Adressen die SOCKS nicht ben�tigen. Das
 sind alle Adressen die ohne den Proxy Server erreicht werden k�nnen.

 Im folgenden Beispiel


     direct 192.168.2.0 255.255.255.0



 kann jeder direkt den anderen rechner im gesch�tzten Netzwerk
 erreichen.
 Der folgende sockd - Eintrag zeigt dem Computer welcher Host den SOCKS
 Server D�mon installiert hat:


   sockd @=<serverlist> <IP address> <modifier>



 Zu beachten ist der @= Eintrag. Dies erlaubt die IP-Adressen einer
 Liste von Proxy-Servern einzutragen. In diesem Beispiel wird aber nur
 ein Proxy-Server verwendet. Man kann aber mehrere haben um die Last zu
 verteilen oder eine Sicherheits-Redundanz zu haben.

 Das IP-Adre� und modifier Feld hat die selbe Form wie im vorigen
 Beispiel.  Es m�ssen die Adressen bekannt gemacht werden die durch den
 Proxy-Server d�rfen.


 10.2.3.  DNS hinterhalb des Firewalls

 Einen Domain Name Service hinterhalb des Firewalls zu installieren ist
 eine einfache Aufgabe.  Man mu� lediglich den DNS auf dem Firewall-
 Computer installieren und alle Rechner hinterhalb des Firewalls diesen
 DNS benutzen lassen.


 10.3.  Arbeiten mit einem Proxy Server

 10.3.1.  Unix


 Damit die Applikationen mit dem Proxy-Server arbeiten, m�ssen sie
 �SOCKSifiziert� werden.  Man ben�tigt zwei verschiedene telnet, einen
 f�r direkte Kommunikation und einen f�r die Kommunikation mit dem
 Proxy-Server.  Socks enth�lt eine Anleitung wie man ein Programm
 SOCKSifiziert und ein paar fertigen SOCKSifizierten Programmen. Wenn
 man eine SOCKSifizierte Version eines Programmes verwendet um
 innerhalb des LANs eine Verbindung aufzubauen, lenkt SOCKS automatisch
 zur Version f�r direkte Kommunikation um.  Aus diesem Grund werden
 alle Programm im Netzwerk umbenannt und durch SOCKSifizierte Versionen
 ersetzt. finger wird zu finger.orig, telnet wird zu telnet.orig usw.
 Diese �nderungen m�ssen in die include/socks.h eingetragen werden.


 Manche Programmen f�hren das Routing und die SOCKSifizierung selber
 durch, wie z.B. NetScape. Man kann mit NetScape einen Proxy-Server
 verwenden indem man die IP-Adresse des Servers in dem entsprechenden
 Feld der Netzwerkeinstellungen eintr�gt (in diesem Beispiel
 192.168.2.1). Jede Applikation ben�tigt eine gewisse Umstellung,
 unabh�ngig davon wie es mit einen Proxy Server funktioniert.


 10.3.2.  MS Windows mit Trumpet Winsock


 Trumpet Winsock hat schon eingebaute Proxy-Server M�glichkeiten. Im
 �setup� Men� gibt man die IP-Adresse des Servers ein, ebenso alle
 Adressen der Rechner, die man direkt erreichen kann. Trumpet leitet
 dann alle Pakete weiter.


 10.3.3.  Konfiguration des Proxy Servers zur Unterst�tzung von UDP-
 Paketen


 Das SOCKS-Paket arbeitet nur mit TCP-Paketen, nicht mit UDP-Paketen.
 Das schr�nkt ein klein wenig den Nutzen ein. Viele n�tzliche
 Programme, wie talk und archie, ben�tzen UDP. Es gibt ein Paket das
 von Tom Fitzgerald ([email protected]) entwickelt wurde, um wie ein Proxy
 Server f�r UDP-Pakete zu funktionieren, genannt UDPrelay. Leider ist
 es zur Zeit nicht kompatibel zu Linux.


 10.4.  Nachteile mit Proxy Servern

 Ein Proxy Server ist vor allem eine Sicherheits Einheit. Die
 Benutzung, um den Internetzugang mit limitierten IP-Adressen zu
 erweitern, hat viele Nachteile. Ein Proxy Server bietet guten Zugriff
 von innerhalb des gesch�tzten Netzwerkes nach au�en und l��t das LAN
 f�r Anwender von Au�en komplett unerreichbar sein. Das bedeutet keine
 Server, Archie, Talk Verbindungen oder direktes Mailing zu den inneren
 Computern. Diese Nachteile k�nnen schwerwiegend sein, aber man soll
 folgendes beachten:


 �  Sie bearbeiten gerade einen Bericht auf einem Computer innerhalb
    des gesch�tzten Netzwerkes. Zuhause kommt der Wunsch auf, den
    Bericht nochmals zu �berarbeiten. Sie haben aber keinen Zugriff auf
    Ihren B�rocomputer, da er hinter einer Firewall ist. Sie versuchen
    eine Verbindung zum Firewall aufzubauen, aber es wurde vers�umt
    Ihnen einen Zugang zum Firewall einzurichten.



 �  Ihre Tochter geht zur Uni. Sie wollen ihr eine E-Mail schicken.
    Sie haben wirklich private Themen mit ihr zu besprechen und wollen
    die Antwort direkt auf Ihren Computer gesendet haben. Sie vertrauen
    dem System-Administrator aber es ist eben private Mail.



 �  Die fehlende M�glichkeit UDP zu ben�tzen, zeigt einen gro�en
    Nachteil von Proxy-Servern auf. Der Einsatz von UDP wird aber wohl
    bald m�glich sein.

 FTP bereitet ein weiteres Problem mit einem Proxy-Server. Bei Empfang
 oder Verwendung von ls �ffnet der FTP-Server einen Socket auf dem
 Client-Rechner und reicht die Informationen durch. Ein Proxy-Server
 wird das nicht erlauben, darum wird FTP nicht sonderlich gut
 funktionieren.

 Aufgrund des gr��eren Overheads arbeiten Proxy-Server relativ langsam.
 Die Allgemeinheit ist der Meinung da� sich das zuk�nftig �ndert.

 Grunds�tzlich, wenn man IP-Adressen hat und die Sicherheit ist nicht
 das wichtigste, dann sollte man Proxy-Server und Firewalls nicht
 verwenden.  Wenn keine ausreichende Anzahl an IP-Adressen vorhanden
 ist und die Sicherheit immer noch keine gro�e Rolle spielt, dann ist
 ein IP-Emulator, wie Term, Slirp oder TIA, eine interessante Wahl.

 Term ist erh�ltlich bei: metalab.unc.edu und Slirp bei:
 blitzen.canberra.edu.au:/pub/slirp.  TIA gibts bei marketplace.com.

 Diese Pakete arbeiten schneller, erlauben bessere Verbindungen und
 bieten einen besseren Zugriff vom Internet ins private Netzwerk.
 Proxy-Server sind gut f�r Netzwerke mit vielen Computern die einen
 einfachen Zugriff zum Internet haben wollen mit nur einer einmaligen
 Konfiguration und mit wenig Arbeit im laufenden Betrieb.




 11.  Erweiterte Konfigurationen

 Das n�chste Beispiel zeigt eine erweiterte Konfiguration die vielen
 gen�gen wird und einige Fragen kl�rt.



 11.1.  Ein grosses Netzwerk mit Sicherheit als Schwerpunkt

 Als Beispiel sei angenommen ein Netzwerk mit 50 Computern und ein
 Subnetz von 32 IP-Adressen (5 Bits). Ben�tigt werden unterschiedliche
 Zugangsstufen und Teile des Netzwerkes sollen vom Rest gesch�tzt sein.

 Die Stufen w�ren:


 1. Die externe Zugangsstufe. Diese Stufe bekommt jeder zu sehen.

 2. Mitarbeiter. Dies ist die Stufe f�r alle die aus der externen Stufe
    aufgestiegen sind.

 3. Experten. Hier werden die wichtigsten Daten verwaltet.


 11.1.1.  Die Netzwerk Konfiguration

 Die IP-Adressen sind folgenderma�en eingeordnet:



 �  Die Adresse 192.168.2.255 (Broadcast Adresse) ist unben�tzbar.

 �  23 der 32 IP-Adressen werden 23 Computern mit Zugriff zum Internet
    zugewiesen.

 �  Eine Adresse wird dem Linux-Computer zugewiesen.

 �  Eine Adresse wird einem weiteren Linux-Computer im Netzwerk
    zugewiesen.

 �  2 Adressen bekommt der Router

 �  4 Adressen bleiben �brig und werden f�r zuk�nftige Aufgaben
    reserviert.

 �  Die gesch�tzten Netzwerke bekommen beide die Adressen 192.168.2.xxx

 Es werden au�er dem externen �ffentlichen noch 2 separate Netzwerke
 gebildet, jedes in verschiedenen R�umen.  Sie werden mit Ethernet
 verbunden.

 Diese Netzwerke werden jeweils an einen Linux-Computer mit eigener IP-
 Adresse angebunden.

 Ein Daten-Server wird mit beiden Netzwerke vebunden, damit einige aus
 der restlichen Mitarbeiter-Gruppe Zugriff auf die wichtigen Daten
 haben. Der Daten-Server hat die IP-Adressen 192.168.2.17 f�r das
 Mitarbeiter-Netzwerk und 192.168.2.23 f�r das Experten-Netzwerk. Er
 hat 2 IP-Adressen weil er 2 Ethernetkarten hat, eine jeweils f�r das
 Mitarbeiter- und das Experten-Netzwerk.  IP-Forwarding ist
 ausgeschaltet.

 IP-Forwarding ist auch an den Linux-Computern ausgeschaltet. Der
 Router wird keine IP-Pakete f�r 192.168.2.xxx weiterleiten, solange
 ihm das nicht erlaubt wird, somit kann niemand aus dem Internet rein.
 Der Grund f�r das Ausschalten von IP-Forwarding besteht darin, da�
 keine Daten-Pakete aus dem Mitarbeiter-Netzwerk in das Experten-
 Netzwerk geraten und ebenso umgekehrt.

 Der Daten-Server kann so konfiguriert werden um beide Netzwerke mit
 unterschiedlichen Daten zu bedienen. Mit symbolischen Verweisen kann
 man allgemeine Daten beiden Netzwerken zug�nglich machen.


 11.1.2.  Die Proxy-Konfiguration

 Alle 3 Stufen w�nschen eine �berwachung des Netzwerkes �ber eventuelle
 falsche Absichten. Das externe �ffentliche Netzwerk wird direkt mit
 dem Internet verbunden somit gibt es hier keine Probleme mit dem
 Proxy-Server.  Die Experten- und Mitarbeiter-Netzwerke sind hinter dem
 Firewall, somit ist es wichtig hier einen Proxy-Server zu
 installieren.

 Beide Netzwerke werden ungef�hr gleich konfiguriert. Beide bekommen
 die selbe IP-Adresse zugewiesen um es ein hier ein wenig interessanter
 zu machen.


 1. Keiner kann den Daten-Server f�r den Internet-Zugnang ben�tzen.
    Dies sch�tzt den Daten-Server vor Viren und anderen �blen Dingen
    und ist somit sehr wichtig.

 2. Den Mitarbeitern wird kein Zugriff aufs World Wide Web gestattet.

 Die sockd.conf Datei im Mitarbeiter-Linux-Computer hat folgenden
 Eintrag:


     deny 192.168.2.17 255.255.255.255



 Der Experten-Computer folgenden:


     deny 192.168.2.23 255.255.255.255



 Der Mitarbeiter-Linux-Computer hat noch diesen Eintrag:


     deny 0.0.0.0 0.0.0.0 eq 80



 Dies verbietet den Zugriff aller Computer auf den Port gleich (eq) 80,
 dem http Port. Es erlaubt jeden anderen Dienst, nur eben nicht den
 Web-Zugriff.

 Die Datei auf beiden Computern hat noch jenen Eintrag:


     permit 192.168.2.0 255.255.255.0



 damit allen Computern aus dem 192.168.2.xxx Netzwerk erlaubt wird den
 Proxy-Server zu ben�tzen au�er den schon Abgewiesenen (den Daten-
 Server und der Web-Zugriff aus dem Mitarbeiter-Netzwerk).


 Die Mitarbeiter sockd.conf sieht demnach so aus:


     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



 und die Experten sockd.conf so:


     deny 192.168.2.23 255.255.255.255
     permit 192.168.2.0 255.255.255.0



 Dies sollte alles korrekt konfigurieren. Jedes Netzwerk sollte
 entsprechend dem Ma� an Wichtigkeit isoliert sein.