IT-Security Teil 10: Echte Firewalls mit NAT



Ähnliche Dokumente
Architekturen für echte Firewalls I. (C) ist eine typische Architektur mit einer Bastion (D) Hat eine Mini-DMZ, die aus einem Crossover-Kabel (A)

Übersicht. Tipps und Tricks Testen von Firewalls Administration Echte Firewalls mit NAT. WIS SS Teil 11/Firewalls III

Teil 11: Firewall - Ergänzungen

Firewalls mit Iptables

Firewalling. Michael Mayer IAV0608 Seite 1 von 6

IPTables und Tripwire

Netzwerk Teil 2 Linux-Kurs der Unix-AG

Internet Security 2009W Protokoll Firewall

Firewall Implementierung unter Mac OS X

Grundlagen Firewall und NAT

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

Guide DynDNS und Portforwarding

OP-LOG

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Konfiguration von Exchange 2000 zum versenden und empfangen von Mails & Lösung des SEND after POP Problems

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

How-to: Webserver NAT. Securepoint Security System Version 2007nx

ICS-Addin. Benutzerhandbuch. Version: 1.0

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Scharl 2010 Dokument ist Urheberrechtlich geschützt. Port Forwarding via PuTTY und SSH. Was ist Port forwarding?

Technical Note ewon über DSL & VPN mit einander verbinden

Anleitung Grundsetup C3 Mail & SMS Gateway V

Anbindung des eibport an das Internet

Bridgefirewall eine transparente Lösung. Thomas Röhl 08. April 2005

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Netzwerk-Migration. Netzwerk-Migration IACBOX.COM. Version Deutsch

1 Mit einem Convision Videoserver über DSL oder ISDN Router ins Internet

Konfigurationsanleitung Network Address Translation (NAT) Funkwerk. Seite Copyright Stefan Dahler Oktober 2008 Version 1.

NAT und Firewalls. Jörn Stuphorn Universität Bielefeld Technische Fakultät

(Hinweis: Dieses ist eine Beispielanleitung anhand vom T-Sinus 154 Komfort, T-Sinus 154 DSL/DSL Basic (SE) ist identisch)

Konfiguration eines DNS-Servers

HTBVIEWER INBETRIEBNAHME

Routing und DHCP-Relayagent


WLAN Konfiguration. Michael Bukreus Seite 1

a.i.o. control AIO GATEWAY Einrichtung

DVG-2001S. Kurzinstallationsanleitung

Um DynDNS zu konfigurieren, muss ausschließlich folgendes Menü konfiguriert werden:

mit ssh auf Router connecten

Windows 2008R2 Server im Datennetz der LUH

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

#!/bin/tcsh. Das Skript wird in der Umgebung der tcsh Shell aufgerufen und ausgeführt.

Inhalt. Erreichbarkeit von VPN-Gateways hinter einem Genexis FTTH-Abschlussrouter

Voraussetzungen für die Nutzung der Format Rechenzentrumslösung (Hosting)

IT-Sicherheitsmanagement Teil 10: Implementierung von Firewalls

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Der Kalender im ipad

Stefan Dahler. 1. Remote ISDN Einwahl. 1.1 Einleitung

Hilfestellung. ALL500VDSL2 Rev.B & ALL02400N. Zugriff aus dem Internet / Portweiterleitung / Fernwartung. Router. Endgeräte. lokales.

Sicherheit unter Linux Workshop

Installationsanleitung. Installieren Sie an PC1 CESIO-Ladedaten einschl. dem Firebird Datenbankserver, wie in der Anleitung beschrieben.

ISA Server 2004 Erstellen eines neuen Netzwerkes - Von Marc Grote

ADNP/9200 mit E2U/ESL1: Web Interface Beispiele

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

Intrusion Prevention mit IPTables. Secure Linux Administration Conference, 6. / 7. Dec Dr. Michael Schwartzkopff. iptables_recent, SLAC 2007 / 1

Information über das Virtual Private Networks (VPNs)

How to install freesshd

Wie macht man einen Web- oder FTP-Server im lokalen Netzwerk für das Internet sichtbar?

Los geht s. aber Anhand meines Beispiels!

Seite Out-Of-Band-Authentifizierung (OOBA) 8.1 Einleitung

Abgesetzte Nebenstelle TECHNIK-TIPPS VON per VPN

DynDNS Router Betrieb

Updatehinweise für die Version forma 5.5.5

Beschreibung Regeln z.b. Abwesenheitsmeldung und Weiterleitung

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Technical Note 0404 ewon

Horstbox VoIP. Stefan Dahler. 1. HorstBox Konfiguration. 1.1 Einleitung

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

Konfigurationsanleitung IGMP Multicast - Video Streaming Funkwerk / Bintec. Copyright 5. September 2008 Neo-One Stefan Dahler Version 1.

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Urlaubsregel in David

Virtual Private Network

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Änderung des Portals zur MesseCard-Abrechnung

Registrierung eines VPN-Zuganges ins Hamnet

Was meinen die Leute eigentlich mit: Grexit?

Einrichtung des WS_FTP95 LE

Tutorial -

Enigmail Konfiguration

Schritt 1: Starten Sie Hidemyass, wählen Sie "IP: Port Proxies"

IPFW. Eine einfache Firewall mit FreeBSD erstellen. Martin 'Ventilator' Ebnöther mit viel Unterstützung von Fabian 'fab' Wenk

Netzwerkeinstellungen unter Mac OS X

Einrichten eines IMAP Kontos unter Outlook Express

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Anleitung zur Anmeldung mittels VPN

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

ADSL-Verbindungen über PPtP (Mac OS X 10.1)

Konfiguration des Fernzugriffes auf Eyseo-IP-Netzwerkkameras mittels dynamischer IP-Adresse

1. Einführung. 2. Die Abschlagsdefinition

Local Control Network Technische Dokumentation

Anleitung zum neuen Überaumbuchungssystem der Hochschule für Musik und Tanz Köln

Transkript:

IT-Security Teil 10: Echte Firewalls mit NAT 31.03.15 1

Übersicht Tipps und Tricks Architekturen Routing Packet-Filter NAT 2

Vollständiges Öffnen der Firewall iptables --policy INPUT ACCEPT iptables --policy OUTPUT ACCEPT iptables --policy FORWARD ACCEPT iptables -t nat --policy PREROUTING ACCEPT iptables -t nat --policy OUTPUT ACCEPT iptables -t nat --policy POSTROUTING ACCEPT iptables -t mangle --policy PREROUTING ACCEPT iptables -t mangle --policy OUTPUT ACCEPT iptables --flush iptables -t nat --flush iptables -t mangle --flush iptables --delete-chain iptables -t nat --delete-chain iptables -t mangle --delete-chain 3

Schnelles Schließen der Firewall (Panic-Knopf) I iptables --flush iptables -t nat --flush iptables -t mangle --flush iptables -A INPUT -i $LOOP_INT -j ACCEPT iptables -A OUTPUT -o $LOOP_INT -j ACCEPT iptables --policy INPUT DROP iptables --policy OUTPUT DROP iptables --policy FORWARD DROP iptables -t nat --policy PREROUTING DROP iptables -t nat --policy OUTPUT DROP iptables -t nat --policy POSTROUTING DROP iptables -t mangle --policy PREROUTING DROP iptables -t mangle --policy OUTPUT DROP iptables --delete-chain iptables -t nat --delete-chain iptables -t mangle --delete-chain 4

Schnelles Schließen der Firewall (Panic-Knopf) II Das Löschen der Chains führt nicht zum Aufheben der Policy, so dass ohne Policy-Änderung nur dann gesperrt wird, wenn vorher die Policy DROP definiert war. Wenn vorher die Policy ACCEPT war, muss die Reihenfolge der iptables geändert werden - jedenfalls wenn es um Millisekunden geht. Bei manueller Eingabe ist das aber eh egal... 5

Mehrere Server mit festen Adressen Häufig gibt es mehrere DNS-Server Für diese wird eine Liste in einer for-schleife durchlaufen: DNSLIST="196.3.10.200 26.0.0.100" for DNS in $DNSLIST do iptables... -d $DNS...... done 6

Bemerkungen I Bitte beachten, dass mindestens der erste DNS-Server per IP- Adresse definiert werden muss, da jede Auflösung von DNS- Namen einen DNS-Server benötigt. Das DNS-Auflösen mit /etc/hosts-einträgen ist nur für die lokalen DNS/Adressen sinnvoll, da diese per iptables nicht beschränkt zu werden brauchen. Nachdem iptables den ersten DNS-Server zugreifbar gemacht hat, können mit dem nächsten iptables-aufruf symbolische Namen benutzt werden, sofern der erste DNS-Server an erster Stelle in /etc/resolv.conf steht. Wenn ein lokale DNS-Cache-Server benutzt wird, wird dieser per 127.0.0.1 angesprochen und muss analog zu oben mit der ersten DNS-Server-Adresse arbeiten. 7

Bemerkungen II Das bedeutet aber auch, dass während der Abarbeitung des Skripts Netzverkehr abläuft! Diese "Parallelität" beachten! Bei anderen Diensten die Boot-Reihenfolge bzw. der Ablauf beim Aufbau von ISDN/DSL-Zugängen beachten! 8

eth1 eth0 eth1 eth1 Architekturen für echte Firewalls I (A) (C) ist eine typische Architektur mit einer Bastion (D) Hat eine Mini-DMZ, die aus einem Crossover-Kabel besteht PF = Packet Filter (B) 9

Architekturen für echte Firewalls II Um die Beispiele konkreter zu machen, werden bestimmte Konstellationen angenommen: Auf der Firewall laufen keine Server. Dies kann etwas aufgeweicht werden, wenn z.b. auf der Firewall ein Cache-DNS-Server läuft, ein NTP-Server läuft. Sie wird als statefull Packet-Filter konzipiert. Es gibt keine Web-, DHCP- und keinen FTP-Server im LAN, die Dienste nach außen erbringen. In der Konstellation (A) erhält die Firewall ihre IP-Adresse von Außen per DHCP (über PPPoE vom Provider, z.b.). In der Konstellation (B) hat die Firewall eine fest definierte IP- Adresse, denn für das Innennetz ist sie der Router. 10

Forward-Chain I - Wiederholung Packet-Filter Bereich Außen "outer space" eth0 Forward Forward eth1 Bereich Innen "inner space" Prozesse Kernel eth0 Forward-Chain eth1 11

Forward-Chain II - Wiederholung Wenn ein Packet innerhalb des Hosts geroutet wird, durchläuft es die Forward-Chain, verbleibt es im System die Input-Chain. 12

Bemerkung Routing hat zwei Bedeutungen Wegewahl für Transport zwischen verschiedenen Schnittstellen innerhalb des Systems Wegewahl für Transport zwischen Systemen innerhalb eines Netzes Für das Routing des 1. Falls gibt es folgende Möglichkeiten: Kernel anhand seiner Routing-Tabelle Benutzung von Proxies FORWARD-Regeln mit Setzen der Kernelvariablen ip_forward Für das Routing des 2. Falls gibt es üblicherweise die Möglichkeit der Benutzung der Routing-Tabelle(n) der betroffenen Router. 13

Routing I Im folgenden wird das Vorgehen bei einem Router mit optionalem NAT, der keine FORWARD-Regeln und auch keine Proxies benutzt, besprochen. M.a.W. das Folgende gilt nur für echte Router... 14

Routing II 15

Routing III - Tabelle für Router A Ziel Netzmaske Router Gateway Schnittstelle 10.0.3.0 255.255.255.0 - eth1 10.0.4.0 255.255.255.0 - eth0 10.0.5.0 255.255.255.0 10.0.4.3 eth0 10.0.2.0 255.255.255.0 - ppp0 0.0.0.0 0.0.0.0 10.0.2.1 ppp0 Der letzte Eintrag betrifft die Default-Route. 16

Routing IV Ablauf Ist es für den Router selbst bestimmt: INPUT-Chain Verlässt das Paket den Router: Ist der Router-Eintrag leer, wird mit ARP die MAC-Adresse im angrenzenden LAN gesucht und das Paket gesendet. Ist ein Router angegeben, wird die MAC-Adresse vom angegebenen Router zum Senden benutzt In beiden Fällen bleibt die Destination-Adresse unberührt. Bei Konflikten wird immer der Eintrag mit der spezielleren Adressangabe benutzt. 17

Packet-Filter I Im folgenden wird ein statefull Packetfilter mit Routing-Funktionen besprochen, d.h. keine Benutzung von Proxies. Die Nicht-Beachtung der Routing-Tabelle setzt voraus, dass die Weitergabe der Pakete nach Außen/Internet "automatisch" realisiert wird, z. B. über PPPoE bei DSL, also bei Konstellation (A). Ansonsten muss eine Default-Route eingetragen werden (Konstellation (B): route add default gw IPAdresse-des-nächsten-Routers 18

Packet-Filter II Es ist (fast) dasselbe Skript wie bei der Personal-Firewall, nur dass aus den beiden INPUT/OUTPUT-Regeln eine FORWARD-Regel mit zwei Angaben der Schnittstellen -i und -o werden. Allerdings müssen ein paar Beschränkungen bzgl. der Absenderadresse aufgehoben bzw. beachtet werden. Weiterhin müssen andere Kernelmodule geladen und andere Kernelparameter gesetzt werden: Kernelvariable ip_forward Erläuterung Einschalten des Routings mit FORWARD-Regeln Kernelmodul ip_conntrack_ftp ip_nat_ftp Erläuterung Passives FTP (und auch NAT) Aktives FTP und NAT Laden eines Kernelmoduls mit z.b. "modprobe ip_conntrack_ftp". 19

Einfaches Beispiel - DNS I iptables -A FORWARD -i $INNER -o $OUTER -p udp -s $INNERADDR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT iptables -A FORWARD -i $OUTER -o $INNER -p udp -s $NAMESERVER --sport 53 -d $INNERADDR --dport $OPEN_PORT -j ACCEPT Mit Makros $SEND und $RECEIVE: $SEND -p udp -s $INNERADDR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT $RECEIVE -p udp -s $NAMESERVER --sport 53 -d $INNERADDR --dport $OPEN_PORT -j ACCEPT 20

Makros Name Bedeutung SEND iptables -A FORWARD -i $INNER -o $OUTER RECEIVE iptables -A FORWARD -i $OUTER -o $INNER INNER Schnittstelle nach Innen: eth1 INNERNET 172.22.0.0 INNERNET_BROADCAST 172.22.255.255 INNERADDR 172.22.0.0/16 bzw. /12 OPEN_PORT "1024:65535" PRIVAT_PORT "0:1023" Die Makros INNER* beschreiben den Adressraum des inneren Netzes. 21

Einfaches Beispiel - DNS II zustandslose Version $SEND -p udp --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT $RECEIVE -p udp -s $NAMESERVER --sport 53 --dport $OPEN_PORT -j ACCEPT Das ist eventuell zu offen, daher: $SEND -p udp -s $INNERADR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT $RECEIVE -p udp -s $NAMESERVER --sport 53 -d $INNERADDR --dport $OPEN_PORT -j ACCEPT Wer allen DNS-Servern vertraut, lässt -d $NAMESERVER weg. 22

Das Packet-Filter Script I Im folgenden wird in Auszügen ein Packet-Filter-Script beschrieben, das vollkommen analog wie die Personal-Firewall aufgebaut ist. Die globalen Durchlassregeln für aufgebaute Verbindungen heißen nun: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $SEND -m state --state ESTABLISHED,RELATED -j ACCEPT $RECEIVE -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP $SEND -m state --state INVALID -j DROP $RECEIVE -m state --state INVALID -j DROP 23

Das Packet-Filter Script II iptables --policy INPUT DROP iptables --policy OUTPUT DROP iptables --policy FORWARD DROP iptables -t nat --policy PREROUTING ACCEPT iptables -t nat --policy OUTPUT ACCEPT iptables -t nat --policy POSTROUTING ACCEPT iptables -t mangle --policy PREROUTING ACCEPT iptables -t mangle --policy OUTPUT ACCEPT Für NAT-Tabellen ist ACCEPT die Policy! Die Mangle- Tabelle wird nicht benutzt Wie gehabt aber nun sind die Gründe anders. Bei der NAT-Tabelle wird mit Absicht eine andere Policy verwendet, während die Mangle-Tabelle nicht benutzt wird. 24

Ergänzung der Ketten (Chains) 25

Das Packet-Filter Script III Das Vorfiltern von Schrott und Scanns wird nun über die PREROUTING- Kette realisiert: $PREFILTER -p tcp --tcp-flags ALL NONE -j DROP $PREFILTER -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP $PREFILTER -p tcp --tcp-flags SYN,RST SYN,RST -j DROP $PREFILTER -p tcp --tcp-flags FIN,RST FIN,RST -j DROP $PREFILTER -p tcp --tcp-flags ACK,FIN FIN -j DROP $PREFILTER -p tcp --tcp-flags ACK,PSH PSH -j DROP $PREFILTER -p tcp --tcp-flags ACK,URG URG -j DROP Bei diesen Regeln gibt es keine Einschränkungen auf die Schnittstelle, so dass diese Regeln für alle gelten, d.h. an allen Schnittstellen gehen keine Scanns... Das Makro PREFILTER hat folgende Definition: PREFILTER="iptables -t nat -A PREROUTING" 26

Das Packet-Filter Script IV $PREFILTER -i $OUTER -s $CLASS_A -j DROP $PREFILTER -i $OUTER -s $CLASS_B -j DROP $PREFILTER -i $OUTER -s $CLASS_C -j DROP Das muss entsprechend den benutzten Netzen angepasst werden. $PREFILTER -i $OUTER -s $LOOPBACK -j DROP # Drop reserved addresses from outside $PREFILTER -i $OUTER -s $CLASS_E -j DROP $PREFILTER -i $OUTER -s 0.0.0.0/8 -j DROP $PREFILTER -i $OUTER -s 169.254.0.0/16 -j DROP $PREFILTER -i $OUTER -s 192.0.2.0/24 -j DROP Der rot gekennzeichnete Block fängt noch weitere unsinnige Pakete ab (als bei der Personal Firewall). 27

DNS I zustandsbehaftete Version $SEND -p udp -s $INNERADR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -m state --state NEW -j ACCEPT $SEND -p udp -s $INNERADR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT $RECEIVE -p udp -s $NAMESERVER --sport 53 -d $INNERADR --dport $OPEN_PORT -j ACCEPT Dies ist hier der Code aus dem obigen Beispiel. Der untere eingerahmte Bereich realisiert das Fall Back in den stateless mode, der vielleicht nicht erwünscht ist... 28

DNS II zustandsbehaftete Version # Das Ganze noch einmal für TCP $SEND -p tcp -s $INNERADR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -m state --state NEW -j ACCEPT $SEND -p tcp -s $INNERADR --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT $RECEIVE -p tcp -s $NAMESERVER --sport 53 -d $INNERADR --dport $OPEN_PORT -j ACCEPT Der eingerahmte Bereich realisiert das Fall Back in den stateless mode, der vielleicht nicht erwünscht ist... 29

DNS III Jetzt besteht noch das Problem, dass die Firewall selbst DNS benutzen möchte: Das wird dadurch gelöst, dass INPUT/OUTPUT-Regeln wie bei der Personal-Firewall benutzt werden, denn alle auf der Firewall laufenden Programme benutzen die INPUT/OUTPUT-Ketten. Weiterhin sollte nur der DNS-Server im eigenen lokalen Netz den Zugriff nach außen haben; bei den bisher angegebenen Regeln können alle Maschinen des LAN DNS-Requests senden. Dies wird dadurch erreicht, dass der DNS-Zugriff nur von einem Gerät mit einer festen IP-Adresse (nämlich die vom lokalen DNS- Server) erlaubt ist. Dazu wird ein weiteres Makro eingeführt, das diese IP-Adresse beinhaltet: $INNERDNS 30

DNS III $SEND -p udp -s $INNERDNS --sport $OPEN_PORT -d $NAMESERVER --dport 53 -m state --state NEW -j ACCEPT $SEND -p udp -s $INNERDNS --sport $OPEN_PORT -d $NAMESERVER --dport 53 -j ACCEPT $RECEIVE -p udp -s $NAMESERVER --sport 53 -d $INNERDNS --dport $OPEN_PORT -j ACCEPT Und dann noch einmal für TCP... So, jetzt fehlt nur noch die Schleife für das Generieren von Regeln für mehrere DNS-Server (siehe oben). 31

Vorgehen und Umgehen mit ICMP Nach diesem Schema wird Dienst für Dienst definiert entsprechend den Tabellen. Das Skript hat denselben Aufbau wie bei der Personal Firewall. Das Umgehen mit ICMP verläuft analog, z. B. #--Fragmentierte Pakete auf allen Schnittstellen iptables -A INPUT --fragment -p icmp -j LOG --log-prefix "Fragmented ICMP: " iptables -A INPUT --fragment -p icmp -j DROP iptables -A FORWARD --fragment -p icmp -j LOG --log-prefix "Forward Fragmented ICMP: " iptables -A FORWARD --fragment -p icmp -j DROP 32

NAT - Network Address Translation I Unidirektionales NAT Address -> Address (einfaches NAT) Address/Port -> Address/Port (NAPT) Masquerading (1 Öffentliche Adresse : N lokale Adressen) Bidirektionales NAT Öffentliche Adresse ist "Alias" für interne Adresse Doppeltes NAT Wenn äußerer und innerer Adressbereich sich überlappen Namen für iptables Übersetzung der Absender-Adresse SNAT Übersetzung der Ziel-Adresse DNAT 33

NAT - Network Address Translation II Es wird die NAT-Tabelle benutzt, die vollkommen getrennt von der Filter-Tabelle ist. Übersetzung der IP-Adressen erfolgt: Vor dem Routing: PREROUTING-Chain Nach dem Routing: POSTROUTING-Chain NAT für die Absenderadresse: POSTROUTING-Chain für geroutete Pakete OUTPUT-Chain für lokal erzeugte Pakete NAT für die Zieladresse: PREROUTING-Chain vor dem Routing Die OUTPUT-Chain der Filter- und der NAT-Tabelle sind unterschiedlich, obwohl sie denselben Namen haben. 34

Die Ketten (Chains) PREROUTING NAT für Ziel-Adresse Routing Forwardchain POSTROUTING NAT für Absender-Adresse Drop Outputchain Inputchain Prozesse Prozesse Prozesse Drop Drop 35

Wo wann welche Adresse? Zieladressen-NAT Regeln der PREROUTING-Chain benutzen die ursprünglichen Zieladressen (vor dem Routing) Regeln der INPUT/FORWARD-Chain benutzen die durch PREROUTING veränderten Zieldressen. Das gilt auch für die POSTROUTING-Chain. Absenderadressen-NAT Regeln der POSTROUTING-Chain benutzen die ursprünglichen Absenderadressen. Das Umsetzen der Absenderadresse erfolgt unmittelbar vor dem Verlassen des Systems. Das gilt auch für alle anderen Chains. 36

Masquerading (SNAT-Variante) iptables -t nat -A POSTROUTING -o $OUTER... -j MASQUERADE Als externe Adresse wird immer die aktuell gültige Adresse von $OUTER verwendet (über DHCP gesetzt). Weitere Bedingungen... schränken die Anwendbarkeit für NAT ein. Automatisch erfolgt die Adressumsetzung in der Gegenrichtung. Der Tabelleneintrag für NAT wird erst durch das erste Paket erzeugt. 37

Beispiel (Internetanbindung über PPP) iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT Das NAT wird natürlich nur in der Variante (A) benutzt. Eine Firewall zwischen zwei LANs benötigt dies nicht. 38

Proxy-Firewall Es werden Proxies installiert, die zwischen eth0 und eth1 die Daten kopieren und dabei protokollspezifisch Tests bzw. Modifikationen durchführen. Als Proxies kommen infrage: TIS Firewall Tool Kit (Proxies decken alles ab) Spezielle Proxies, z. B. squid Die Regeln der Personal Firewall werden auf die beiden Schnittstellen entsprechend den Diensten ausgerichtet. Die Proxies führen selbst NAT durch. Das Firewall-Skript beschränkt sich daher auf ICMP-Behandlung Kernel-Initialisierung Logging Portumleitung 39

Portumleitung Für den Fall, dass ein Proxy auf einem bestimmten Port auf der Firewall arbeitet, können durchlaufende Pakete an einen anderen Port ohne Änderung umgelenkt werden. Dann laufen die Pakete nicht durch die FORWARD-, sondern als lokal empfangene Pakte durch die INPUT-Chain. Beispiel für http-proxy SQUID: iptables -t nat -A PREROUTING -p tcp -i $INNER --dport http -j REDIRECT --to-port 3128 Das führt zu einem transparenten Proxy, d.h. die Clients arbeiten intern mit Port 80. 40

Was noch getan werden könnte... Weiterleiten von System-Log-Einträgen an benachbarte Maschinen, z.b. UDP auf Port 514. Hierzu müssten entsprechende OUTPUT-Regeln dies erlauben. Falls erwünscht kann ein in der Firewall laufender Cache-DNS- Server benutzt werden: dnsmasq Dieser kann auch DHCP, so dass DNS und DHCP von der Firewall abgedeckt werden. Dann müssen die DNS-Pakete von Innen nach Außen gesperrt werden, jedoch von der Firewall nach Außen erlaubt sein. Per DHCP wird dann die Firewall als Router und DNS-Server bekannt gemacht. 41

Nun wieder etwas entspannen... 42