AB 02 — Linux Firewall (iptables)
Einführung in die Linux Firewall
Abschnitt betitelt „Einführung in die Linux Firewall“Eine Linux-Firewall ist eine Sicherheitsvorrichtung oder Softwareanwendung, die in Linux-Betriebssystemen verwendet wird, um Netzwerke und Systeme vor unerwünschtem Datenverkehr und Bedrohungen aus dem Internet oder anderen Netzwerken zu schützen. Linux bietet verschiedene Möglichkeiten, eine Firewall zu implementieren, darunter eingebaute Firewall-Funktionen und Firewall-Software von Drittanbietern. Hier ist eine Einführung in die Linux-Firewall:
Netfilter/IptablesDas Netfilter-Framework und das Iptables-Tool sind integraler Bestandteil des Linux-Kernels und bieten eine leistungsstarke Firewall-Lösung. Iptables ermöglicht die Erstellung und Verwaltung von Firewall-Regeln, mit denen Sie den Datenverkehr steuern können. Sie können damit den Datenverkehr basierend auf IP-Adressen, Ports, Protokollen und anderen Eigenschaften filtern und steuern.FirewalldIn einigen modernen Linux-Distributionen, wie Fedora und CentOS, wird Firewalld als Firewall-Management-Tool eingesetzt. Es bietet eine einfachere und benutzerfreundlichere Schnittstelle als Iptables und ermöglicht die Verwaltung von Firewall-Regeln auf einer höheren Ebene, indem es Dienste und Zonen konfiguriert.Uncomplicated Firewall (UFW)UFW ist ein Frontend für Iptables, das eine einfachere Syntax und Konfiguration bietet. Es ist in erster Linie für Anfänger und Anwender mit weniger Erfahrung im Bereich der Linux-Firewall-Verwaltung gedacht.NftablesNftables ist ein neueres Framework, das Iptables allmählich ersetzen soll. Es ist leistungsstärker und flexibler und bietet eine verbesserte Syntax zur Erstellung von Firewall-Regeln. Der Übergang zu Nftables erfolgt schrittweise und hängt von der verwendeten Linux-Distribution ab.ZonenaufbauLinux-Firewalls ermöglichen in der Regel die Konfiguration von Sicherheitszonen (z. B. Öffentlich, Privat, DMZ), wodurch Sie den Datenverkehr zwischen diesen Zonen steuern können. Dies ist nützlich, um das interne Netzwerk vor externen Bedrohungen zu schützen und den Zugriff auf bestimmte Ressourcen zu steuern.Portfilterung und NAT (Network Address Translation)Mit einer Linux-Firewall können Sie den Datenverkehr auf bestimmte Ports oder Dienste beschränken oder Portweiterleitungen (Port Forwarding) für den Zugriff auf interne Dienste einrichten. Sie können auch NAT verwenden, um die internen IP-Adressen zu verbergen.Logging und ProtokollierungLinux-Firewalls können Ereignisse und Aktivitäten protokollieren, um Sicherheitsbedrohungen zu verfolgen und zu überwachen.Anpassbare RegelnSie können benutzerdefinierte Firewall-Regeln erstellen, um den Datenverkehr speziell für Ihre Anforderungen zu steuern und zu filtern. Dies ermöglicht eine granulare Kontrolle über den Netzwerkverkehr.Die Auswahl und Konfiguration einer Linux-Firewall hängen von Ihren spezifischen Anforderungen und Ihrem Kenntnisstand ab. Es ist wichtig, die Firewall ordnungsgemäß zu konfigurieren und regelmäßig zu überwachen, um die Netzwerksicherheit aufrechtzuerhalten. Linux-Firewalls sind ein entscheidender Bestandteil der Sicherheitsstrategie für Linux-Systeme und Netzwerke.
Standardverhalten von iptables
Abschnitt betitelt „Standardverhalten von iptables“iptables ist der Befehl, mit dem Sie Netfilter konfigurieren und verwenden können.
Das Standardverhalten der Richtlinienketten (Policy Chains) in iptables ist normalerweise “ACCEPT”, was bedeutet, dass der Datenverkehr standardmäßig akzeptiert wird, wenn er nicht explizit von einer Regel in der Kette abgelehnt oder erlaubt wird. Dies gilt für die INPUT-, OUTPUT- und FORWARD-Ketten.
Hier ist eine Erläuterung für jede der Richtlinienketten:
INPUT-KetteDiese Kette wird verwendet, um den Datenverkehr zu überprüfen, der in Ihr System eintrifft. Das Standardverhalten ist "ACCEPT", was bedeutet, dass eingehender Datenverkehr standardmäßig akzeptiert wird, es sei denn, Sie haben Regeln hinzugefügt, um bestimmte Arten von Datenverkehr abzulehnen oder zu blockieren.OUTPUT-KetteDiese Kette wird verwendet, um den Datenverkehr zu überprüfen, der Ihr System verlässt. Das Standardverhalten ist ebenfalls "ACCEPT", was bedeutet, dass ausgehender Datenverkehr standardmäßig akzeptiert wird, es sei denn, Sie haben Regeln hinzugefügt, um ihn abzulehnen oder zu blockieren.FORWARD-KetteDiese Kette wird verwendet, um den Datenverkehr zu überprüfen, der zwischen Netzwerkschnittstellen in Ihrem System weitergeleitet wird. Das Standardverhalten ist ebenfalls "ACCEPT". Wenn Ihr System jedoch nicht als Router fungiert oder keine Weiterleitung zwischen Netzwerkschnittstellen erforderlich ist, kann die FORWARD-Kette normalerweise leer bleiben oder deaktiviert werden.Es ist wichtig zu beachten, dass die Firewall-Richtlinienketten standardmäßig auf “ACCEPT” eingestellt sind, um den normalen Netzwerkverkehr nicht zu beeinträchtigen. Wenn Sie bestimmte Arten von Verkehr blockieren oder restriktive Sicherheitsrichtlinien durchsetzen müssen, sollten Sie spezifische Regeln hinzufügen, um den gewünschten Datenverkehr zu kontrollieren und zu erlauben oder zu blockieren.
Grundkenntnisse von iptables
Abschnitt betitelt „Grundkenntnisse von iptables“iptables ist der Befehl, mit dem Sie Netfilter konfigurieren und verwenden können.
iptables [tabelle][aktion][kriterien][ziel]- [tabelle]: Mit diesem Parameter kann festgelegt werden, auf welcher Tabelle die Konfiguration ausgeführt wird.
ParameterBeschreibung-t [Name der Tabelle: filter, nat, mangle]Gibt die Tabelle an, an der wir arbeiten werden (der Standardfilter wird verwendet).-t [Name der Tabelle: filter, nat, mangle]Beispiel:iptables -t filter -X-ZSetzt den Zähler von den byte-Paketen zurück, die durch die Tabellen durchlaufen.-ZBeispiel:iptables -t mangle -Z-F [PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING]Entfernt alle vordefinierten Regeln aus der angegebenen Zeichenfolge. Oder, wenn keine vordefinierte Zeichenfolge angegeben ist, werden alle vordefinierten Regeln aus der Tabelle gelöscht.-F [PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING]Beispiel:iptables -t filter -F FORWARD-X [Benutzerzeichenkette]Entfernt alle Regeln aus der angegebenen Benutzerzeichenkette. Oder, wenn kein Benutzer angegeben ist, werden alle Benutzerzeichenketten der Tabelle gelöscht.-X [Benutzerzeichenkette]Beispiel:iptables -t nat -X-L [name der Tabelle: filter, nat, mangle]Zeigt die Liste der Zeichenfolgen und Regeln in der angegebenen Tabelle an. Die Parameter -n und -v sind sehr nützlich für diesen Parameter.-L [name der Tabelle: filter, nat, mangle]Beispiel:iptables -t nat -L -n -v-N [neue_Benutzerkette]Erstellt eine neue Benutzerzeichenkette. Anschließend können Regeln zu diesen Strings hinzugefügt werden, dank des “-A” Parameters.-N [neue_Benutzerkette]Beispiel:iptables-A Name_der_ZeichenketteErstellt eine neue Regel am Ende der Zeichenkette mit dem Namen Name_der_Zeichenkette. Name_der_Zeichenkette kann eine vordefinierte Zeichenkette oder Benutzerzeichenkette sein.-A Name_der_ZeichenketteBeispiel:iptables -A INPUT -i lo -j ACCEPT-D PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING Zahl_der_ZeichenketteDer Befehl iptables -D OUTPUT 5 wird verwendet, um die fünfte Regel in der OUTPUT-Kette der iptables-Regeln zu löschen. Dies bedeutet, dass die Regel, die zuvor als fünfte in der Liste der OUTPUT-Regeln definiert wurde, entfernt wird.Bitte beachten Sie, dass die Nummerierung der Regeln in iptables bei 1 beginnt. Wenn Sie also die fünfte Regel löschen möchten, müssen Sie die Nummer 5 verwenden. Stellen Sie sicher, dass Sie die richtige Regelnummer verwenden, um die gewünschte Regel zu löschen, da das Löschen von Regeln Auswirkungen auf die Firewall-Konfiguration haben kann.-D PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING Zahl_der_ZeichenketteBeispiel:iptables -D OUTPUT 5-P Name_der_Zeichenkette ZielDer Befehl iptables -t filter -P INPUT DROP ändert die Standardrichtlinie (Policy) für die INPUT-Kette der "filter"-Tabelle in "DROP". Dies bedeutet, dass standardmäßig alle eingehenden Pakete verworfen (abgelehnt) werden, es sei denn, es gibt eine spezifische Regel, die den Datenverkehr erlaubt.Hier ist eine kurze Erklärung der einzelnen Teile des Befehls:iptables: Der Befehl zur Verwaltung der iptables-Firewall-Regeln.-t filter: Mit -t können Sie die Tabelle angeben, auf die Sie Ihre Änderungen anwenden möchten. In diesem Fall ist es die "filter"-Tabelle, die für die Standard-Firewall-Regeln verwendet wird.-P INPUT DROP: Dieser Teil des Befehls legt die Richtlinie für die INPUT-Kette auf "DROP" fest. Das bedeutet, dass alle eingehenden Pakete standardmäßig abgelehnt werden, es sei denn, Sie erstellen spezifische Regeln, die den Datenverkehr erlauben.Dies ist eine gängige Vorgehensweise, um die Sicherheit zu erhöhen und den Datenverkehr in Ihre Systeme sorgfältig zu kontrollieren. Beachten Sie jedoch, dass Sie nach dem Ausführen dieses Befehls spezifische Regeln hinzufügen müssen, um den gewünschten Datenverkehr zu erlauben (z. B. Portöffnungen für Dienste wie SSH oder HTTP), da sonst alle eingehenden Verbindungen standardmäßig blockiert werden.-P Name_der_Zeichenkette ZielBeispiel:iptables -t filter -P INPUT DROP-i NetzwerkschnittstelleDer Befehl iptables -A INPUT -i eth0 -j ACCEPT fügt eine Regel zur INPUT-Kette der iptables hinzu, um den Datenverkehr auf dem Netzwerkinterface "eth0" zu akzeptieren.Hier ist eine Erklärung der einzelnen Teile des Befehls:iptables: Der Befehl zur Verwaltung der iptables-Firewall-Regeln.-A INPUT: Dieser Teil des Befehls fügt eine Regel am Ende (Append) der INPUT-Kette hinzu. Dies bedeutet, dass die Regel den Datenverkehr überprüft, wenn er in den Computer eintrifft.-i eth0: Mit dieser Option wird das Eingangsnetzwerkinterface auf "eth0" beschränkt. Dies bedeutet, dass die Regel nur auf den Datenverkehr angewendet wird, der über das "eth0"-Netzwerkinterface kommt.-j ACCEPT: Diese Option legt die Aktion fest, die für den passenden Datenverkehr durchgeführt wird. In diesem Fall wird der Datenverkehr akzeptiert (ACCEPT), was bedeutet, dass er erlaubt ist.Mit diesem Befehl wird der Datenverkehr, der über das Netzwerkinterface "eth0" empfangen wird, standardmäßig akzeptiert. Dies kann nützlich sein, wenn Sie bestimmten Datenverkehr von diesem Interface erlauben möchten, während Sie den Rest des Datenverkehrs ablehnen möchten. Beachten Sie jedoch, dass Sie auch andere Regeln erstellen müssen, um den Datenverkehr zu steuern und zu erlauben oder zu blockieren, je nach Ihren spezifischen Anforderungen.-i NetzwerkschnittstelleBeispiel:iptables -A INPUT -i eth0 -j ACCEPT-o NetzwerkschnittstelleGibt die Netzwerkschnittstelle an, über welches das Paket herausgeht.-o NetzwerkschnittstelleBeispiel:iptables -A OUTPUT -o eth0 -j DROP-s IP-Adresse oder IP-BereichDer Befehl iptables -A INPUT -s 192.168.0.100 -j ACCEPT fügt eine Regel zur INPUT-Kette der iptables hinzu, um den Datenverkehr von der IP-Adresse 192.168.0.100 zu akzeptieren.-s IP-Adresse oder IP-BereichBeispiel:iptables -A INPUT -s 192.168.0.100 -j ACCEPT-d IP-Adresse oder IP-BereichGibt die Adresse oder den Bereich der IP-Adressen an, von wo die Pakete herausgehen. Wenn Sie den gesamten Datenverkehr blockieren möchten, der an ein bestimmtes IP-Adressbereichsziel gerichtet ist, der mit 10.0.0.0/255.0.0.0 beschrieben wird, müssten Sie die richtige CIDR-Notation verwenden. Wenn Sie den gesamten Bereich 10.0.0.0/8 blockieren möchten, würde der Befehl wie folgt lauten:-d IP-Adresse oder IP-BereichBeispiel:iptables -A FORWARD -d 10.0.0.0/8 -j REJECT-p ProtokollGib an, auf welchem Protokoll die Regel angewandt wird.-p ProtokollBeispiel:iptables -A INPUT -p icmp -j DROP--sport Port(s)Wird mit dem Parameter „-p“ benutzt. Diese Option definiert den Quellport von dem das IP-Paket stamm. Der Parameter Port(s) kann eine Zahl „80“, eine Reichenfolge von Ziffern sein „21, 53, 80“ oder ein Dienstnamen „ssh“.--sport Port(s)Beispiel:iptables -A INPUT -p tcp --sport 80 -j ACCEPT--dport Port(s)Wird mit dem Parameter „-p“ benutzt. Diese Option definiert den beabsichtigten Port von dem das IP-Paket stamm. Der Parameter Port(s) kann eine Zahl „80“, eine Reichenfolge von Ziffern sein „21, 53, 80“ oder ein Dienstnamen „ssh“.--dport Port(s)Beispiel:iptables -A OUTPUT -p tcp --dport 21,53,80 -j ACCEPT-m Name_des_ModulesDas Modul Name_des_Modules soll verwendet werden um Regel zu analysieren.Ein besonders interessantes Modul ist das „state“-Modul das eine Verbindungsverfolgung conntrack ermöglicht.Mit diesem Befehl fügen Sie eine Regel zur OUTPUT-Kette der iptables hinzu, um den ausgehenden TCP-Datenverkehr zu akzeptieren, sofern er sich nicht im Zustand "INVALID" befindet.-m Name_des_ModulesBeispiel:iptables -A OUTPUT -p tcp -m state --state ! INVALID -j ACCEPT--state [!] NEW, ESTABLISHED, RELATED, INVALIDIm Fall, wo das „state“-Modul verwendet wird, wird der Status des Frames angegeben um die Regel anzuwenden.Diese Regel kann nützlich sein, um bereits etablierte UDP-Verbindungen oder solche, die mit bereits etablierten Verbindungen in Verbindung stehen, zu akzeptieren. Beachten Sie jedoch, dass Sie je nach Ihren spezifischen Anforderungen und Sicherheitsrichtlinien zusätzliche Regeln hinzufügen oder anpassen müssen.--state [!] NEW, ESTABLISHED, RELATED, INVALIDBeispiel:iptables -I INPUT -p udp -m state --state ESTABLISHED, RELATED -j ACCEPT-j ACCEPT, DROP, REJECT, LOG, ULOG, etc.…Gib das Ziel an, wenn die Regel angewandt wird.Dieser Befehl fügt eine Regel zur OUTPUT-Kette der iptables hinzu, um den ausgehenden Datenverkehr über das Netzwerkinterface "eth0" zu akzeptieren.-j ACCEPT, DROP, REJECT, LOG, ULOG, etc.…Beispiel:iptables -A OUTPUT -o eth0 -j ACCEPT-
[kriterien]: ermöglicht es die Kriterien eines IP-Paketes zu definieren auf welche wir die Regeln anwenden.
-
[action]: Gib an was iptables machen soll
-
[ziel]: Gib an was Netfilter mit einem Paket machen soll, damit sie den Kriterien der Regel entspricht.
Arbeitsumgebung
Abschnitt betitelt „Arbeitsumgebung“Alle Aufgaben dieses Kurses werden wir in virtuellen Maschinen in VMware oder VirtualBox durchführen. Aus diesem Grund erstellen wir zunächst unsere Arbeitsumgebung für Linux.
Aufgaben
Abschnitt betitelt „Aufgaben“Wenn Sie noch keine bereit haben, erstellen Sie eine neue Linux-VM, wobei Netzwerkadapter 1 auf NAT eingestellt ist.
Falls iptables nicht auf Ihrem Linux-Computer installiert ist, beschreiben Sie die vollständigen Installationsschritte.
Was ist der aktuelle Firewall-Status? Was schlagen Sie vor? Listen Sie die aktuell konfigurierten iptables-Regeln auf.
Wie ist das Standardverhalten der Richtlinienkette?
Konfigurieren Sie Ihre Firewall so, dass der gesamte ein- und ausgehende Netzwerkverkehr blockiert wird.
Entfernen Sie die vorherigen Regeln und konfigurieren Sie Ihre Firewall so, dass alle eingehenden oder ausgehenden Ping-Anfragen blockiert werden.
Erlaube ausgehenden HTTP-Verkehr (Port 80) über das Netzwerkinterface enp0s3.
Nur DNS- und HTTPs-Zugriff auf das Internet sollten erlaubt sein. Verwenden Sie so wenige Befehle wie möglich.
Es sollte nur der DNS- und HTTPS-Zugriff auf foxi.ltam.lu erlaubt sein.
Der Zugriff auf 8.8.8.8 sollte gesperrt werden.
Verhindern Sie jede Verbindung zu foxi.ltam.lu mit einer einzigen Regel.
Löschen Sie die im vorherigen Punkt erstellte Regel.
Verhindern Sie SSH-Verbindungen zu foxi.ltam.lu.
Blockiere eingehenden UDP-Verkehr von einer bestimmten IP-Adresse (z.B., 192.168.1.100).
Erstelle für die obenstehende Fragen ein Word und PDF-Dokument. Überprüfen sie jeweils ob ihre Konfigurationen immer richtig funktioniert haben.