nat IP NAT
Wie bereits schon angedeutet ist IP NAT (Internet Protocol Network Address Translation),
ein Mechanismus um IP Adressen (meist auch die entspr. Ports) zu übersetzen, also
umzuwandeln und weiterzuleiten. Dies ist bspw. notwendig wenn mehrere PC über ein Modem in
das Internet geleitet werden sollen.
PC 1 \ +++++ +~~~~~~~~~~+
Laptop =======| NAT |====| Internet |
PC 2 / +++++ +~~~~~~~~~~+
Die beiden PC und der Laptop haben private Adressen aus dem Block 192.168.1/24, der NAT
Rechner eine oder mehrere Netzwerkkarten die nach innen gehen und ebenfalls private
Adressen haben. Ein externes Interface (Modem/ISDN/DSL Karte) ist mit dem Internet
verbunden und hat die vom Provider zugewiesene offizielle IP Adresse.
Der NAT Rechner bekommt die Anfragen der internen PCs und übersetzt deren Pakete auf die
externe Schnittstelle, welche dann ins Internet gesendet werden. Die Antworten aus dem
Internet werden dann entsprechend rückübersetzt und geroutet.
NetBSD benötigt zum Adressmapping das Pseudodevice IPFilter, welches in den Kernel
einkompiliert sein muss. Dies wird mit der Option
pseudo-device ipfilter # IP filter (firewall) and NAT
im Konfigurationsfile festgelegt. Desweiteren ist IP Forwarding (noch ein Begriff für NAT)
notwendig, sollte nach der Eingabe von
# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding = 1
geantwortet werden, ist GATEWAY im Kernel aktiviert. Standardmäßig ist dies in GENERIC
nicht der Fall, daher sollte man einen neuen Kernel kompilieren oder mit
# sysctl -w net.inet.ip.forwarding=1
IP NAT einschalten. Dieser Befehl kann übrigens in die /etc/rc.local eingefügt
werden, um beim Boot automatisch gesetzt zu werden. Trotzdem sollte man über einen
individuellen Kernel nachdenken, da meistens ältere Hardware eingesetzt wird und ein
verkleinerter Kernel Ressourcen schont (es sei nochmal darauf hingewiesen das NetBSD
komplett Crosscompilefähig ist, man kann den Kernel also auch auf einem anderen,
leistungsfähigeren Rechner bauen).
ipf Paketfilter
Unter NetBSD ist ipf der Standardpaketfilter. Es gab vor geraumer Zeit einige Kontroversen
um die ipf Lizenz, dies hat sich allerdings geklärt. Ein großer Vorteil von ipf ist, das er
ein Anwendungsprogramm und so nicht im Kernel eingebaut ist. Dies erhöht seine (schon sehr
hohe, NetBSD-bedingte) Portabilität auf andere OS wie z.B. SUN OS, Solaris, HP UX oder Digital
Unix. ipf ist einfach zu konfigurieren und vielseitig einsetzbar. Normalerweise wird in
/tc/ipf.conf der Regelsatz übergeben und beim starten automatisch gelesen.
ipf ist in der Lage nach Adressen, Ports, Status oder Protokollen zu filtern und zu loggen.
Dies geschieht mit Anweisungen, die in einer einfach strukturierten Syntax übergeben
werden:
block in quick on ex0 from 192.168.0.0/24 to any
blockiert sofort alle eingehenden Pakete die von einer privaten Adresse kommen
pass out quick on tun0 proto tcp from 20.20.20.1/32 port = 80 to any
Lässt alle TCP Verbindungen auf Port 80 von 20.20.20.1/32 rausgehen
und so weiter. Für die konkrete Konfiguration von ipf sei auf das englische und das
deutsche HOWTO verweisen.
ipf ermöglicht mit ipfstat die Ausgabe einer Statistik, die interessante
Daten zum Paketfilter enthält.
proxy Proxy
Ein Proxy ist ein Programm das bestimmte Anwendungen filtert, in dem es sich zwischen die
Verbindung von Programm und Server hängt. Dies geschieht nicht direkt auf Verbindungsebene
(obwohl einige Proxies dies unterstützen) sondern auf Anwendungsebene. Dies sei hier an
einem Beispiel näher erläutert, und zwar am Internet Junkbuster dem wahrscheinlich ältesten
www-Proxy. Der Junkbuster (ijb) läuft auf einem Rechner (lokal oder eben idealerweise
zentral auf dem Gateway) und bietet sich so an. Auf einem internen PC wird ein Internet Browser, z. B. Lynx
verwendet um damit im WWW zu surfen. Dies geschieht normalerweise direkt, in dem sich der
Browser mit dem Webserver verbindet und die Daten anfordert bzw. sendet. Nun wird der Lynx
so konfiguriert, das er statt dem WWW den ijb auf dem Gateway konnektiert. Der ijb arbeitet
für Lynx und Server zwar in diesem Falle transparent, so das der Server nichts von der Existenz
des Proxy mitbekommt, Lynx allerdings muss den Proxy kennen, da er ihn ja adressiert.
Ein Proxy kann allerdings auch wirklich transparent agieren, in dem er den zu bearbeitenden Verkehr
abfängt und dann entsprechend weiterleitet. Eine dritte Art von Proxy ist der generische
Proxy, welcher auf dem socksified TCP Stack basiert und das Socksprotokoll beherrscht. aus
diesem Grunde müssen auch Applikationen, die mit ihm kommunizieren wollen, socksified sein.
Lynx ====== Junkbuster ===== www.NetBSD.org
Der Proxy kann nun bestimmte Aufgaben übernehmen, die je nach eingesetztem Programm
unterschiedlich sind. Der hier beschriebene ijb kann beispielsweise den Referrer des Lynx
filtern und durch einen übergebenen String ersetzen oder Cookies sperren und Bilder von
bestimmten Adressen filtern (dies war der Ursprungszweck des ijb, das Filtern von Bildern
die von bestimmten Servern kamen, nämlich Werbebanner). Der Proxy kann die Sicherheit
erhöhen, in dem er eben bestimmte Verbindungsinhalte filtert und so z. B. Buffer
Overflows verhindert. Neben der Sicherheit hat ein Proxy noch weitere Vorteile, wie z. B. Erschwerung von Datensammlung zur
Profilbildung und regelrechte Anonymisierung (speziell der Anonproxy der TU
Dresden).
Auf dem NetBSD FTP-Server sind einige Proxies als Package verfügbar z. B. squid (www),
bnc (IRC), choparp (arp) oder dante (socks 4/5).
net-tex.de, Index
$Id: $
Autor: Stefan Schumacher,
stefan@net-tex.de, PGP-Key 0xB3FBAE33
für net-tex.de/cryptomancer.de
Bitte beachten Sie, das die Seite inhaltlich seit Ende 2007 nicht mehr gepflegt wird!
Aktuellere Informationen erhalten Sie auf Kaishakunin.com