Firewall Implementierung unter Mac OS X
Mac OS X- Firewall: Allgemeines * 2 Firewall- Typen: * ipfw * programmorientierte Firewall * 3 Konfigurations- Möglichkeiten * Systemeinstellungen * Dritthersteller- Programme * Programm Terminal oder anderer Shell- Zugang
Systemeinstellungen: programmorientierte Firewall * regelt, welche Programme eingehende Datenverkehr empfangen dürfen * seit Mac OS X 10.5.0 vorhanden * Erstversion hatte schwere Sicherheitslücken à unter Mac OS X 10.5.1 wurden viele davon geschlossen * ausgehende Verbindungen können mittels des UI nicht überwacht werden à dafür wäre Zusatzsoftware nötig: Little Snitch, GlowWorm, TCPBlock
Systemeinstellungen: programmorientierte Firewall
ipfw * von FreeBSD * paketorientierte Firewall * seit Mac OS X 10.5 standardmäßig ungenutzt * grafisches UI (mit größerem Funktionsumfang) nur durch Zusatzsoftware: * WaterRoof * Flying Buttress * Frontend vorhanden (Systemeinstellungen à Freigaben)
* Regeln: 1. Freigeben von Ports für den Zugriff auf vorinstallierte lokale Server (z.b.: www- Server, Mail- Server). 2. Freigeben von Ports für den Zugriff auf selbstinstallierte Programme oder Dienste. ipfw- Frontend
ipfw manuelle Konfiguration * Firewall- Kommandos erfordern root- Rechte * 2 Arten Firewall zu konfigurieren: * liberal oder restriktiv * Regeln werden von oben nach unten abgearbeitet * spezifische Regeln stehen weiter oben, allgemeine weiter unten * Regeln für häufig benutzte Protokolle weiter oben ansiedeln, weniger häufige weiter unten * Bsp.: oben: http/pop/imap/smtp unten: ftp/ssh * Regeln werden nach dem Eintragen sofort wirksam
ipfw- Praxis * Aktuelle Einstellung der Firewall ausgeben ( rulelist ) * Alle Regeln entfernen
ipfw- Praxis * Überlegungen, um Regel erstellen zu können: * An welcher Stelle soll die Regel stehen? * Auf welche Protokolle soll diese ansprechen? * Welche action soll mit einem passenden Paket durchgeführt werden? * Zwischen welchen PCs soll die Kommunikation gefiltert werden? * Welche Ports sollen gefiltert werden? * In welchem Verbindungszustand (state) sollen die Datenpakete weitergeleitet oder geblockt werden?
ipfw- Praxis * Grundsyntax zum Erstellen von Regeln:
ipfw- Praxis - Beispiel 1 * Regeln, was das UI automatisch machen würde, selber anlegen: # ipfw add [number] [action] [protocol] from [source] to [target] [interface-spec]
ipfw- Praxis Beispiel 2 (restriktive Konfiguration) * Hinweis: die globale deny - Regel erst nach den ersten allow - Regeln am Ende hinzufügen # ipfw add 65534 deny ip from any to any * Angabe: * Man soll weiterhin Webseiten im Browser aufrufen können. * Übersicht: * Webbrowser: HTTP- Protokoll * Webbrowser (als Client) spricht Webserver auf Port 80 an # ipfw add 03000 allow ip from any to any 80 out * Antworten vom Webserver (Port 80) müssen erlaubt sein. # ipfw add 03010 allow ip from any 80 to any in
ipfw Praxis Beispiel 3 (restriktive Konfiguration) * Derzeitige Konfiguration: * 03000 und 03010 Datenverkehr mit IP- Protokoll wird erlaubt, Webserver verwenden aber nur TCP derzeit wird unnötiger Datenverkehr auf Port 80 UDP erlaubt.
ipfw Praxis Beispiel 3 (restriktive Konfiguration) * Port 80 nur TCP: # ipfw add 03000 allow tcp from any to any 80 out # ipfw add 03010 allow tcp from any 80 to any in à Problem: doppelte Nr. bei Regeln, neue Regeln kommen nie zum Einsatz à Reihenfolge wichtig! * Lösung: # ipfw delete 03000 # ipfw delete 03010 à die oberen Regeln 03000 & 03010 erneut anlegen
Firewall Implementierung unter Linux: NFTables
NFTables * Nachfolger von IPTables * Läuft in eigener VM * User- Space: Utility (nft) * Kernel- Space: NetFilter * Seit Kernel 3.13 im Mainline Tree * Keine Default Chains - > stattdessen Hooks
NFTables - Hooks * (Chains in IPTables) * INPUT * OUTPUT * FORWARD * PREROUTING * POSTROUTING
NFTables - Praxis table firewall { chain incoming { type filter hook input priority 0; ct state { established, related } accept ct state invalid drop iifname lo accept ip protocol icmp accept tcp dport { ssh, http } accept reject } }