Einführung
In den vorherigen Labs haben Sie „Türen“ (Ports) für alle geöffnet und geschlossen. Aber was ist, wenn Sie eine Tür nur für einen Freund öffnen oder sie gezielt für einen bekannten Störenfried verriegeln möchten?
Hier kommen Rich Rules ins Spiel. Anstatt einen Dienst nur allgemein zu öffnen oder zu schließen, können Sie mit Rich Rules detailliertere Richtlinien formulieren, zum Beispiel anhand von Quelladressen, mit Protokollierung oder durch das Zurückweisen bestimmter Datenströme.
Das ist wichtig, weil Firewall-Richtlinien in der Praxis häufig Bedingungen berücksichtigen. Sicherheitsentscheidungen bestehen nur selten aus „Port offen“ oder „Port geschlossen“.
Hinweis zur Lab-Umgebung: Damit Sie sich nicht versehentlich vom Webterminal aussperren, verwenden wir standardmäßig die Zone trusted. In dieser Zone ist der gesamte Datenverkehr erlaubt, sofern wir ihn nicht ausdrücklich blockieren. In einer echten Produktionsumgebung würden Sie eine restriktivere Zone wie public oder drop verwenden.
In diesem Lab lernen Sie:
- Bestimmte Personen blockieren: Verbindungen von einer bestimmten IP-Adresse zurückweisen.
- Aufzeichnungen führen: Versuche protokollieren, damit Sie sehen können, wer Zugriff versucht hat.
- Zugriff einschränken: Eine Regel konfigurieren, die die Fernsteuerung (SSH) nur aus einem bestimmten Netzwerk erlaubt.
- Überprüfen: Ihre Regeln zur Kontrolle in einer Datei speichern.
Eine bestimmte IP-Adresse blockieren
In diesem Schritt lernen Sie zuerst, wie Sie einen bestimmten Angreifer blockieren. Angenommen, Sie stellen fest, dass der Computer unter 192.168.1.100 versucht, in Ihr System einzudringen. Sie möchten ihn vollständig blockieren.
Dazu verwenden Sie eine „Rich Rule“. Obwohl unsere Standardzone trusted (alles erlauben) lautet, hat eine bestimmte Reject-Regel für diese IP-Adresse Vorrang.
Rich Rules sind wichtig, weil Firewall-Richtlinien in der Praxis häufig Bedingungen berücksichtigen. Je nach Quelladresse, Dienst, Protokollierungsbedarf oder anderen Kriterien kann ein anderes Verhalten erforderlich sein. Mit einfachen Befehlen zum Öffnen oder Schließen lässt sich das nicht immer gut ausdrücken.
Die Syntax ähnelt dem Aufbau eines Satzes: rule family="ipv4" source address="192.168.1.100" reject
Führen Sie den folgenden Befehl aus, um diese Regel dauerhaft hinzuzufügen.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject'
Sehen wir uns diesen „Satz“ im Detail an:
rule family="ipv4": Die Regel bezieht sich auf standardmäßige IP-Adressen.source address="...": Das ist die Adresse des Angreifers.reject: Das ist die auszuführende Aktion.
Unterschied zwischen Reject und Drop:
- Reject ist höflich: Der Absender erhält die Rückmeldung „Gehen Sie weg, Sie sind nicht zugelassen.“
- Drop ist unhöflich: Der Absender wird vollständig ignoriert, als würde Ihr Computer nicht existieren.
Die Wahl zwischen beiden Varianten ist nicht nur eine Stilfrage. reject gibt legitimen Clients schneller Rückmeldung und erleichtert die Fehlersuche. drop kann einem Angreifer jedoch weniger Informationen preisgeben, aber zu längeren Timeouts führen.
Da Sie --permanent verwendet haben, ist die Regel gespeichert, aber noch nicht aktiv. Laden Sie die Firewall neu, um sie anzuwenden.
sudo firewall-cmd --reload
Überprüfen Sie nun, ob die Regel vorhanden ist.
sudo firewall-cmd --list-rich-rules
Die neue Regel sollte in der Ausgabe aufgeführt sein.
Verworfene Pakete protokollieren
Für diesen Schritt gilt: Jemanden einfach zu blockieren, ist sinnvoll. Manchmal benötigen Sie jedoch einen Nachweis. Sie können einer Regel eine „Protokollierung“ hinzufügen. Das ist vergleichbar mit einer Überwachungskamera, die jedes Auslösen der Regel aufzeichnet.
Diese Kombination aus Filtern und Protokollierung ist im Sicherheitsbetrieb üblich. Das Blockieren schützt das System, während die Protokollierung Beweise für eine spätere Untersuchung erstellt.
Blockieren Sie nun eine weitere IP-Adresse, 10.0.0.5. Dieses Mal protokollieren wir den Versuch, bevor wir ihn zurückweisen.
Führen Sie diesen Befehl aus:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" log prefix="BLOCKED_IP: " level="info" reject'
Was ist hier neu?
log: Aktiviert die „Kamera“.prefix="BLOCKED_IP: ": Beim Schreiben in die Systemprotokolle beginnt die Zeile mit diesem Text. Dadurch lassen sich diese Ereignisse später mit Suchwerkzeugen leicht finden.
Wenden Sie die Änderungen an.
sudo firewall-cmd --reload
Überprüfen Sie Ihre Arbeit.
sudo firewall-cmd --list-rich-rules
Jetzt sollten Sie zwei Regeln sehen: die erste Regel (einfache Zurückweisung) und die zweite Regel (Protokollierung und Zurückweisung).
Den Zugriff auf einen Dienst einschränken
In diesem Schritt betrachten Sie eine gehärtete Umgebung, in der Sie SSH für alle Quellen blockieren und nur aus einem vertrauenswürdigen Netzwerk, beispielsweise Ihrem VPN, zulassen würden.
Hinweis zum Lernziel: Da wir die Zone trusted verwenden, damit Ihre Verbindung bestehen bleibt, ist dieser Schritt teilweise symbolisch. Wenn bereits sämtlicher Datenverkehr erlaubt ist, ändert eine zusätzliche „Allow“-Regel das Verhalten nicht. Die Syntax ist jedoch wichtig, wenn Sie später mit restriktiven Zonen wie public oder drop arbeiten.
Das Ziel ist eine Regel mit der Aussage: „Erlaube SSH, wenn die Quelle 192.168.0.0/24 ist.“
Dies ist ein gutes Beispiel für das Prinzip der geringsten Berechtigung in Netzwerkrichtlinien. Statt den administrativen Zugriff für die ganze Welt offenzulegen, beschränken Sie ihn auf das Netzwerk, das den Server tatsächlich verwalten soll.
Entfernen Sie zuerst den allgemein aktivierten SSH-Dienst.
sudo firewall-cmd --permanent --remove-service=ssh
Hinweis: Möglicherweise sehen Sie eine Warnung wie Warning: NOT_ENABLED: ssh. Das ist normal und wird erwartet. Unsere Standardzone ist trusted. Sie erlaubt standardmäßig alles, enthält aber keine ausdrücklich aktivierten Dienste. Wenn Sie versuchen, einen Dienst zu entfernen, der nicht ausdrücklich aufgeführt ist, erscheint diese harmlose Warnung.
Fügen Sie anschließend die spezifische Rich Rule für das Subnetz hinzu.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" accept'
Laden Sie die Firewall neu, damit die Änderungen aktiv werden.
sudo firewall-cmd --reload
Überprüfen Sie nun das Ergebnis. Sehen Sie sich zuerst die Liste der Dienste an.
sudo firewall-cmd --list-services
ssh sollte hier NICHT mehr angezeigt werden, weil der Dienst aus der allgemeinen Diensteliste entfernt wurde.
Prüfen Sie anschließend die Rich Rules.
sudo firewall-cmd --list-rich-rules
Sie sollten eine Regel sehen, die service name="ssh" für die angegebene Quelle akzeptiert.
Ihre Regeln überprüfen
Für diesen Schritt gilt: In einer Produktionsumgebung gehört es zu den bewährten Vorgehensweisen, die Firewall-Regeln abschließend zu überprüfen und vor dem Beenden der Sitzung zu sichern. So stellen Sie sicher, dass die Regeln in der richtigen Reihenfolge angewendet werden und Ihnen eine Wiederherstellungsdatei zur Verfügung steht.
In diesem Schritt exportieren Sie Ihre Rich Rules zur Überprüfung in eine Textdatei.
Listen Sie zuerst alle Rich Rules auf und leiten Sie die Ausgabe in eine Datei namens rules_list.txt in Ihrem Projektordner um.
sudo firewall-cmd --list-rich-rules > ~/project/rules_list.txt
Lesen Sie die Datei nun ein, um zu bestätigen, dass ihr Inhalt korrekt ist.
cat ~/project/rules_list.txt
Sie sollten die Liste der Regeln sehen, die Sie in diesem Lab erstellt haben. Diese Datei dient nun als einfache Sicherung Ihrer Rich-Rule-Konfiguration.
Zusammenfassung
In diesem Lab haben Sie Ihre Firewall-Kenntnisse mit Rich Rules erweitert. Sie haben gelernt:
- Bestimmte IP-Adressen zu blockieren (die „Reject“-Regel).
- Sicherheitsereignisse zu protokollieren (die „Kamera“-Regel).
- Sensible Dienste wie SSH auf vertrauenswürdige Netzwerke zu beschränken.
- Ihre Konfiguration zu überprüfen, indem Sie Regeln in eine Datei exportieren.
Mit diesen fortgeschrittenen Techniken können Sie komplexe Umgebungen präzise absichern.



