Die Firewall unter Linux spielt eine entscheidende Rolle bei der Sicherung eines Computersystems. Sie fungiert als Barriere, kontrolliert und filtert den Netzwerkverkehr und schützt das System so vor unbefugtem Zugriff, Angriffen und anderen Bedrohungen. Ohne eine ordnungsgemäß konfigurierte Firewall kann der Server anfällig für verschiedene Arten von Cyberangriffen sein, was schwerwiegende Folgen für die Datensicherheit und Vertraulichkeit haben kann.
In diesem Artikel betrachten wir zwei wichtige Tools zur Konfiguration der Linux-Firewall: firewalld und iptables. Wir vergleichen ihre Funktionen, Funktionalität und Vorteile. Darüber hinaus geben wir detaillierte Anweisungen zur Einrichtung und Nutzung der Tools und erläutern Best Practices zur Sicherung Ihres Systems mit einer Firewall auf der Linux-Plattform. Alle Aktionen werden auf einem virtuellen Server mit Root-Zugriff.
Konfigurieren von Firewalld unter Linux
Feuerland (Firewall Daemon) ist ein Programm zur Verwaltung der Firewall in Linux-Betriebssystemen. Es bietet eine Benutzeroberfläche zum Konfigurieren von Firewall-Regeln und zum Zulassen oder Blockieren von Verbindungen von Netzwerkanwendungen. Es ist in den meisten Serverdistributionen standardmäßig vorinstalliert. Falls Firewalld nicht vorinstalliert ist, kann es unabhängig von den offiziellen Repositories der Distribution installiert werden.
Bei Red Hat-Systemen (wie RHEL, CentOS, Fedora) erfolgt die Installation mit dem Befehl:
yum install firewalld
Für Debian/Ubuntu:
apt-get install firewalld
Nach der Installation kann es mit dem folgenden Befehl sofort gestartet und aktiviert werden:
systemctl start firewalld
Als nächstes müssen Sie den Dienst zum Start hinzufügen:
systemctl enable firewalld
An dieser Stelle empfehlen wir, ufw zu deaktivieren, da die gleichzeitige Verwendung dieses Tools mit firewalld oder iptables nicht empfohlen wird. Überprüfen Sie den Status:
systemctl status ufw
Um es zu stoppen, geben Sie den folgenden Befehl ein:
systemctl stop ufw
Zur vollständigen Deaktivierung:
ufw disable
Nach diesen Aktionen können Sie mit der Konfiguration von Firewalld fortfahren.
Zunächst müssen Vertrauenszonen definiert werden. Firewalld verwendet das Zonenkonzept, um die Vertrauensebene für Netzwerkschnittstellen zu bestimmen. Jeder Schnittstelle wird eine Zone zugewiesen, und die Firewall-Regeln werden entsprechend der Zone angewendet. Die Liste aller verfügbaren Zonen wird mit folgendem Befehl geöffnet:
firewall-cmd --get-zones
Typischerweise werden 4 Hauptzonen verwendet:
- Öffentliche: Diese Zone ist für Netzwerke, die Sie als unsicher erachten.
- Privat: Gilt für Heimnetzwerke oder andere vertrauenswürdige Netzwerkverbindungen;
- Intern: Wird für interne Netzwerke verwendet, beispielsweise innerhalb einer Organisation oder eines Unternehmensnetzwerks;
- DMZ: In dieser Zone werden normalerweise Server platziert, die vom Internet aus erreichbar sein sollen.
Dies ist jedoch nur ein Beispiel. Sie können Ihre eigene Zone mit dem folgenden Befehl hinzufügen:
firewall-cmd --permanent --new-zone=nameyourzone
Nach dem Hinzufügen ist ein Neuladen erforderlich:
firewall-cmd --reload
Um eine Zone zu löschen, wird eine ähnliche Methode verwendet
firewall-cmd --permanent --delete-zone=nameyourzone
Nach der Definition der Zonen ist es notwendig, den Datenverkehr für die benötigten Dienste und Ports zuzulassen. Um einen bestimmten Dienst zuzulassen, verwenden Sie den folgenden Befehl:
firewall-cmd --zone=public --add-service=name
COHO Expo bei der Name ist der Name des Dienstes. So lassen Sie beispielsweise Datenverkehr für Apache zu:
firewall-cmd --zone=public --add-service=http
Um zulässige Ports zu definieren, verwenden Sie den Befehl:
firewall-cmd --zone=public --add-port=number/protocol
Beispielsweise würde der Standardport 22 für SSH folgendermaßen aussehen:
firewall-cmd --zone=public --add-port=22/tcp
Die wichtigsten Regeln sind bereits erstellt. Legen Sie als Nächstes fest, wie der Datenverkehr je nach Quelle, Ziel, Port und anderen Kriterien verarbeitet wird. Um eine Regel hinzuzufügen (mithilfe der Öffentlichkeit Zone als Beispiel):
firewall-cmd --zone=public rule
Um beispielsweise eingehenden Datenverkehr von jeder Quelle an Port 80 (HTTP) zuzulassen:
firewall-cmd --zone=public --add-port=80/tcp --permanent
So entfernen Sie eine Regel:
firewall-cmd --permanent --remove-rule=rule_specification
COHO Expo bei der regieren ist der Regeltyp (z. B. Port, Service, Rich-Rule usw.) und Regelspezifikation ist die Spezifikation der Regel selbst.
Nachdem Sie Änderungen an der Firewalld-Konfiguration vorgenommen haben, müssen Sie diese speichern und anwenden. Verwenden Sie zum Speichern der Änderungen den folgenden Befehl:
firewall-cmd --runtime-to-permanent
So wenden Sie Änderungen an:
firewall-cmd --reload
Nach Abschluss der Einrichtung können Sie die ausgewählten Parameter überprüfen, indem Sie die Liste aller Regeln öffnen:
firewall-cmd --list-all
Wenn Probleme auftreten, überprüfen Sie die Firewalld-Protokolle mit dem folgenden Befehl:
journalctl -u firewalld
Hinweis: Wir haben nur den allgemeinen Algorithmus zum Verbindungsaufbau behandelt. Das Tool verfügt über umfangreiche Funktionen. Ausführliche Informationen zu allen verfügbaren Optionen finden Sie im offizielle Dokumentation oder Hilfe öffnen:
firewall-cmd --help
Konfigurieren von iptables unter Linux
Im Gegensatz zu Firewalld ist iptables ein älteres, aber immer noch weit verbreitetes Tool unter Linux zur Verwaltung der Firewall. Es bietet einen direkteren und flexibleren Ansatz für Paketfilterregeln auf Linux-Kernel-Ebene. Im Vergleich zu Firewalld erfordert iptables jedoch fortgeschrittenere Kenntnisse und Erfahrung und ist daher für Anfänger weniger geeignet. Überprüfen Sie die vorinstallierte Version des Tools mit dem folgenden Befehl:
iptables -V
Falls das Tool noch nicht installiert ist, muss es installiert werden. Der Befehl zur Installation unter Ubuntu, Debian:
apt install iptables
Für Red Hat-Systeme (z. B. CentOS, Fedora):
yum install iptables
Der Befehl zur Aktivierung nach der Installation:
systemctl start iptables
Um es zum Start hinzuzufügen, führen Sie Folgendes aus:
systemctl enable iptables
Bevor Sie mit der Konfiguration von iptables beginnen, ist es wichtig zu verstehen, wie es funktioniert. Die Syntax des Programms hilft Ihnen dabei. Sie sieht wie folgt aus:
iptables -t table action chain additional_parameters
Lassen Sie uns jeden Punkt genauer betrachten.
Iptables hat vier Haupttabellen: Filter, Nat, Mangle und Raw. Jedes ist für die Verarbeitung bestimmter Pakettypen konzipiert und verfügt über eigene Regelketten:
- Filter: Dies ist die am häufigsten verwendete Tabelle. Sie enthält Paketfilterregeln. Sie wird verwendet, um zu entscheiden, ob Pakete zugelassen oder abgelehnt werden.
- nat: Diese Tabelle dient zum Ändern von Netzwerkadressen und Ports in Paketen. Sie wird häufig zum Einrichten von Masquerading (NAT) verwendet.
- fehlt: In dieser Tabelle können Sie Paketheader ändern. Sie wird für spezielle Paketvorgänge wie z. B. das Markieren verwendet.
- roh: Diese Tabelle dient zum Konfigurieren von Regeln, die vor dem Durchlaufen des Verbindungsverfolgungssystems angewendet werden. Sie wird typischerweise zum Einrichten von Regeln verwendet, die vom Verfolgungssystem nicht geändert werden sollen, z. B. das Verwerfen von Paketen von bestimmten Adressen.
Jede Tabelle enthält einen Satz von Ketten. Ketten sind eine Abfolge von Regeln, die nacheinander überprüft werden. Es gibt drei vordefinierte Ketten:
- INPUT (eingehend)Die Regeln in dieser Kette bestimmen, was mit eingehenden Paketen geschehen soll.
- OUTPUT (ausgehend)Diese Kette gilt für alle Pakete, die Ihr Computer an andere Geräte oder Computer im Netzwerk sendet.
- FORWARD (Weiterleitung)Die Regeln in dieser Kette geben an, was mit weitergeleiteten Paketen geschehen soll.
Schließlich besitzt jede Kette eine Aktion (Ziel). In der Praxis werden 5 Hauptaktionen verwendet:
- Akzeptieren: Erlaubt dem Paket, die Firewall zu passieren.
- DROP: Das Paket ablehnen und ohne Antwort verwerfen.
- ABLEHNEN: Das Paket ablehnen und dem Absender eine ICMP-Fehlermeldung senden.
- LOG: Protokollieren Sie das Paket im Systemprotokoll und führen Sie eine andere Aktion aus (z. B. ACCEPT oder DROP).
- RÜCKKEHR: Beenden Sie die Überprüfung der Regeln in der aktuellen Kette und kehren Sie zur aufrufenden Kette zurück (falls zutreffend).
Um die Einrichtung zu starten, öffnen Sie die Liste der vorhandenen Regeln mit dem Befehl:
iptables -L
Als Leitfaden für die Konfiguration von Iptables sehen wir uns praktische Beispiele der am häufigsten verwendeten Befehle an. Der Einfachheit halber unterteilen wir die Beispiele je nach spezifischer Befehlskette in drei Gruppen.
Kette SPEISUNG:
- Erlauben Sie eingehenden Datenverkehr über das TCP-Protokoll auf Port 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Erlauben Sie eingehenden Datenverkehr über das UDP-Protokoll auf Port 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Blockieren Sie eingehenden Datenverkehr von einer bestimmten IP-Adresse:
iptables -A INPUT -s 192.168.1.100 -j DROP
Kette AUSGABE:
- Ausgehenden Datenverkehr über das TCP-Protokoll auf Port 443 zulassen:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Erlauben Sie ausgehenden Datenverkehr über das UDP-Protokoll auf Port 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Blockieren Sie ausgehenden Datenverkehr zu einem bestimmten Port (z. B. 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Kette FORWARD:
- Blockieren Sie weitergeleiteten Datenverkehr aus einem bestimmten IP-Adressbereich:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Blockieren Sie die Weiterleitung von Paketen von einer bestimmten Netzwerkschnittstelle:
iptables -A FORWARD -i eth1 -j DROP
3. Begrenzen Sie die Anzahl gleichzeitiger Verbindungen für einen bestimmten Port (in diesem Beispiel 10 Verbindungen pro Minute auf Port 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Wie Sie sehen, wird in jedem einzelnen Fall ein zusätzliches Argument (Befehl) verwendet. Um eine vollständige Liste der möglichen Argumente und die allgemeine Unterstützung der Tool-Funktionalität zu erhalten, geben Sie Folgendes ein:
iptables -h
Um sicherzustellen, dass die Einstellungen richtig sind, geben Sie den Befehl erneut ein, um die Liste der Regeln anzuzeigen:
iptables -L
Um eine bestimmte Regel zu löschen, verwenden Sie den folgenden Befehl:
iptables -D chain rule_number
Wenn Sie beispielsweise Regel Nummer 1 aus der INPUT-Kette löschen möchten, sieht der Befehl folgendermaßen aus:
iptables -D INPUT 1
So löschen Sie alle Regeln mit einem Befehl:
iptables -F
Wichtiger Hinweis: iptables-Regeln werden nach einem Neustart des Systems oder Dienstes nicht automatisch gespeichert. Um die Regeln zu speichern, müssen sie einer Konfigurationsdatei hinzugefügt und nach dem Neustart wiederhergestellt werden. Die iptables-save mit einem iptables-restore Dienstprogramme können dabei helfen. Um die Regeln zu speichern, geben Sie den folgenden Befehl ein:
iptables-save > /etc/iptables/rules.v4
Dadurch werden die aktuellen iptables-Regeln in der Datei rules.v4 gespeichert. Zum Wiederherstellen nach dem Neustart geben Sie Folgendes ein:
iptables-restore < /etc/iptables/rules.v4
Dieser Befehl stellt die Regeln aus der Datei rules.v4 wieder her.
Fazit
Die Konfiguration einer Firewall unter Linux mit firewalld oder iptables ist ein wichtiger Aspekt der Serversicherheit. Beide Tools bieten zuverlässige Möglichkeiten zur Verwaltung des Netzwerkverkehrs und zum Schutz des Systems vor unbefugtem Zugriff und Cyberangriffen. Die Wahl zwischen firewalld und iptables hängt von den spezifischen Bedürfnissen und Präferenzen des Benutzers ab und berücksichtigt die unterschiedlichen Funktionen und Stärken.