Linux-basierte Firewall Konzepte © 2001 Till Hänisch Linux basierte Firewall Konzepte Prinzip Konzepte Implementierung mit Linux basierte
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Prinzip Internet Jeder Rechner muß gegen Angriffe geschützt werden (aufwendig) LAN Firewall Der Firewall stellt einen zentralen Zugangs-/ Kontrollpunkt dar
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Warum Firewall statt host based security ? entscheidend ist der schwächste Punkt Einfach –Kontrollierte Umgebung, spez. Hard-/Software gestaffelte Verteidigung Nadelöhr (choke point) Ausfallsicherung Etablierung einer Sicherheitspolitik Security through obscurity
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Was ist ein Firewall If it's supposed to keep the bad guys out of your network, it's a firewall. If it succeeds in keeping the bad guys out, while still letting you happily use your network, it's a good firewall, if it doesn't, it's a bad firewall (Zwicky, Cooper, Chapman, Building Internet Firewalls, O'Reilly) A firewall is a form of protection that allows a network to connect to the Internet while maintaining a degree of security Ist ein Paketfilter ein Firewall ? Ein NAT-Router ? Ein Proxy ? Ein... ? Firewall kontrolliert/filtert Verkehr zwischen LAN und Internet Verschiedene Architekturen, Komponenten: Paketfilter und Proxy
Linux-basierte Firewall Konzepte © 2001 Till Hänisch dual homed host Internet dual homed host keine 'direkte' Verbindung zwischen den Netzen
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Router Internet Router leitet Pakete weiter, vom LAN ins Internet, vom Internet ins LAN Screening Router (Paketfilter) leitet nur Pakete weiter, die festgelegten Regeln gehorchen
Linux-basierte Firewall Konzepte © 2001 Till Hänisch (Paket-) Filter eingehende (IP) Pakete Regeln DENY ACCEPT REJECT
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Wer filtert was ? Bitübertragung (physikal. Verbindung) Zugriffs-Steuerung Sicherung (LLC) Internet-Protocol TCPUDP TFTP BOOT P DHCP DNS SMTP RloginFTP Telnet SNM P HTTP IEEE Paketfilter Proxy Paketfilter kann IP (und TCP,UDP) Informationen auswerten Proxy kann Applikationsinformationen (z.B. HTTP) auswerten Proxy versteht (typ.) nur ein Protokoll
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Paketfilter + Proxy Internet Router leitet nur Pakete vom/zum bastion host ins Internet weiter (z.B. http Proxy)
Linux-basierte Firewall Konzepte © 2001 Till Hänisch screened subnet (DMZ) Internet äußerer Router innerer Router bastion host DMZ
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Linux als Plattform für Firewalls Warum Linux ? –Open source –Umfangreiche, (relativ) performante TCP/IP-Unterstützung Beispiele mit SuSe Linux –Paketfilter im Kernel, Proxies separate Applikationen dual homed host Paketfilter –ipchains (2.2+ Kernel) –iptables (2.4+) Kernel (u.A. stateful inspection) Proxy –SQUID (HTTP) spezielle Distributionen –LRP,trinux
Linux-basierte Firewall Konzepte © 2001 Till Hänisch dual homed host Rechner mit zwei Netzwerkkarten (in untersch. Netzen) ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:50:FC:3A:43:72 inet addr: Bcast: Mask: ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:E0:7D:AA:3C:F3 inet addr: Bcast: Mask: Routing ausschalten IP_FORWARD="no" !! echo 0 > /proc/sys/net/ipv4/ip_forward Accounts bzw. Dienste einrichten, z.B. Account für jeden User http (Zugriffsrechte) ftp Server
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Proxy (Beipiel: SQUID) SQUID von runterladen, installieren Konfiguration: z.B. Spezielle Clients (IP) nur bestimmte Adressen (auch mit Paketfilter möglich) http_access allow Nur bestimmte User (proxy_auth) (Filter kennt nur IP-Adressen, keine User) acl proxy_auth till http_access allow URL's filtern (Filter weiss nichts von URL's) acl url_regex -i sex IP-Header TCP-Header GET / HTTP1.0 Host: Browser Proxy Internet Proxy untersucht HTTP und erzeugt neue Anfrage zum Webserver Browser schickt Anfrage an Proxy (d.h. Browser muß konfiguriert werden)
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Proxy contd. Transparent proxy vermeidet Client-Konfiguration, leitet allen http-Verkehr (portbezogen) auf Proxy um) oder direkt mit SQUID Komplexe protokollspezifische Filter, z.B. bei T.Rex Attachments mit best. Dateitypen nicht weiterleiten denyx from * to * ext = bat sequester denyx from * to * ext = com sequester denyx from * to * ext = eml sequester denyx from * to * ext = exe sequester Nachteile Proxy: Clients müssen konfiguriert werden Keiner will Proxy verwenden Vorteile Proxy: Versteht das jeweilige Protokoll, also Filterreglen auf Basis der Inhalte (z.B. URL, Attachment,...) zus. evtl. Beschleunigung (cache) Kennt Benutzer
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Paketfilter unter Linux Vorprüfunginput chaindemasquerade routing Prüfung forward chain Regellisten heißen "chain" (Kette von Regeln) DENYDENY/ REJECT ACCEPT/ REDIRECT output chain ACCEPT DENY/ REJECT lokal In jeder chain können Regeln definiert werden Häufig genügt eine (z.B. input), mehrere sinnvoll etwa bei mehreren Interfaces Regel enthält Source+Destination Adresse (und ggf. Port), Protokoll, Optionen und Ziel (benutzer-chain, ACCEPT, DENY, REJECT, MASQ, REDIRECT, RETURN) z.B. ipchains -A input -p tcp -s /24 -d /0 www -j ACCEPT
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Paketfilter (Beispiel) Rechner mit zwei Netzwerkkarten, z.B /24 intern, extern Regeln z.B. mit ipchains # Routing einschalten echo 1 > /proc/sys/net/ipv4/ip_forward # Chains leeren ipchains -F input... # Zugriff auf externe Webserver erlauben ipchains -A input -p tcp -s /24 -d /0 www -j ACCEPT # DNS erlauben ipchains -A input -p UDP -s /24 -d /0 domain -j ACCEPT # Alles andere verbieten ipchains -P input DENY # Antworten der Webserver erlauben ipchains -I input -p tcp -s /0 www -d /24 -j ACCEPT # DNS erlauben ipchains -I input -p UDP -s /0 domain -d /24 -j ACCEPT # eingehende TCP-Verbindungen verbieten ipchains -A INPUT -p tcp --syn -j DENY
Linux-basierte Firewall Konzepte © 2001 Till Hänisch User friendly (Checkpoint Visual Policy editor)
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Paketfilter + Proxy Internet WWW-Zugang ins Internet nur über Proxy: # Proxy darf ins Web ipchains -A input -p tcp -s /32 -d /0 www -j ACCEPT # allen anderen den Zugriff auf externe Webserver verbieten ipchains -A input -p tcp -s /24 -d /0 www -j DENY # DNS erlauben ipchains -A input -p UDP -s /24 -d /24 domain -j ACCEPT ipchains -A input -p UDP -s /0 domain -d /24 -j ACCEPT # Alles andere verbieten ipchains -P input DENY alternativ: REDIRECT Target CONFIG_IP_TRANSPARENT_PROXY Alle Pakete, für die die Regel zutrifft, werden auf einen anderen Port umgeleitet HTTP-Proxy auf Port 8080 ipchains -A input -p tcp -s /24 -d /0 www -j REDIRECT 8080
Linux-basierte Firewall Konzepte © 2001 Till Hänisch personal firewall, NAT # Nur ssh von einem Rechner iptables -A INPUT -p tcp --syn --destination-port 22 -s j ACCEPT # Zugriff auf Webserver iptables -A INPUT -p tcp --syn --destination-port 80 -j ACCEPT # Keine Verbindungen von aussen iptables -A INPUT -p tcp --syn -j DROP Network Address Translation (IP-Masquerading) private Adressen z.B Router hat intern private, extern öffentliche Adresse (z.B. durch PPP) Internet Private Adressen werden (im Internet) nicht geroutet, NAT-Router ersetzt in ausgehenden IP-Paketen die Absenderadresse durch seine öffentliche --> Von außen ist nur der Router sichtbar (Security by Obscurity) ipchains -A forward -i ppp0 -j MASQ
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Zusammenfassung Linux stellt eine leistungsfähige Plattform für Firewalls dar Wichtigste Werkzeuge: Paketfilter, proxies –open source, meist in Distributionen enthalten open ends –Absicherung des FW-Rechners Dienste, Fixes, Readonly/Write-Once Medien,... spezielle Distributionen –stateful inspection (Fragmentierung, RPC,...) –intrusion detection –QOS/Bandwidth management –kommerzielle Produkte/Appliances
Linux-basierte Firewall Konzepte © 2001 Till Hänisch Probleme Paketfilter und Fragmentierung –Der (TCP|UDP,...) Header ist nur im ersten Fragment --> stateful inspection iptables -A INPUT --fragment -j DROP –Problem: MTU Path discovery funktioniert nicht mehr besser: CONFIG_IP_ALWAYS_DEFRAG (in <=2.4) setzen Wie unterscheidet der Firewall zwischen Business und Angriff ? (insb. z.B. bei http) Denial of Service –z.B. TCP SYN Flood IP-Spoofing –Pakete mit internen Adressen auf dem externen Interface !!! ipchains -A input -s -d /0 -i -j DENY Viren –Proxy
Linux-basierte Firewall Konzepte © 2001 Till Hänisch NAT (Network Address Translation) Router Porttabelle Von: :1234 An: :80 Von: :2345 An: :21 Von: :3456 An: :80 Von: :4567 An: :80 Von: :5678 An: :32 Von: :6789 An: :80 Von: :80 An: :50000 Von: :21 An: :50001 Von: :80 An: :50002 Von: :80 An: :50003 Von: :32 An: :50004 Von: :80 An: : : : : : : : : : : : : :1234
Linux-basierte Firewall Konzepte © 2001 Till Hänisch IP -Header (V4) IP-Header Datenbereich OptionenPadding Empfängeradresse Senderadresse TransportKopfprüfsumme Lebensz. TTL IdentifikationFlagsFragment Abstand VersionLängeServicetypen(gesamte) Paketlänge
Linux-basierte Firewall Konzepte © 2001 Till Hänisch TCP-Header Datenbereich OptionenPadding Prioritätsanzeiger Prüfsumme OffsetRes.FlagsFensteranzeiger Acknowledgenummer Sequenzernummer ZielportQuellport