iptables Konfiguration und Anwendung

Wie funktioniert iptables? so geht’s

iptables ist ein Userspace-Programm für die Linux-Kernel Firewall. Es dient zur Bearbeitung der Paketfilter und der Konfiguration der Linux Firewall, diese den Datenverkehr von und zum Server überwacht, mithilfe von Tabellen. Die Tabellen enthalten Regelsätze, Ketten genannt, die eingehende und ausgehende Datenpakete filtern.

Wenn ein Paket mit einer Regel übereinstimmt, wird es einem Ziel zugewiesen, das eine andere Kette oder einer dieser Werte sein kann:

  • ACCEPT – lässt das Paket passieren.
  • DROP – lässt das Paket nicht passieren.
  • RETURN – hindert das Paket daran, eine Kette zu durchlaufen, und weist es an, zur vorherigen Kette zurückzukehren.

In diesem Tutorial wird mit einer der Standardtabellen namens filter gearbeitet, bestehend aus drei Ketten:

  • INPUT – steuert eingehende Pakete zum Server.
  • FORWARD – filtert eingehende Pakete, die weitergeleitet werden.
  • OUTPUT – Filtern der Pakete, die vom Server ausgehen.

  iptables kann mit der Linux Uncomplicated Firewall (ufw), sowie mit firewalld genutzt werden. iptables-Regeln gelten nur für ipv4. Wird die Firewall für das IPv6-Protokoll genutzt, muss stattdessen ip6tables verwendet werden.

iptables Installation

Ein SSH-Terminal zum Server mit Root Zugriff herstellen, oder mit sudo Berechtigung root werden, mit sudo su - bei Ubuntu/Debian Linux.

iptables ist bei den meisten Linux-Distributionen vorinstalliert. Wenn es jedoch standardmäßig nicht vorliegt, sind bei einem Ubuntu/Debian-System folgende Schritte auszuführen.

$ sudo apt-get update
$ sudo apt-get install iptables

Überprüfe den Status der aktuellen iptables-Konfiguration, mit ausführen des nächsten Kommandos.

$ iptables -vnL

Hier wird die Option L verwendet, um alle Regeln aufzulisten, die numerische Ausgabe von Adressen und Ports mit -n, und -v  dient zum Anzeigen in einem detaillierteren Format. Wie bei dieser Beispielausgabe.

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in out   source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in out   source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in out   source destination

An diesem Punkt wird man feststellen, dass alle Ketten (Chain) auf ACCEPT gesetzt sind und keine Regeln definiert sind. Das System ist also nicht geschützt, da jedes Paket ohne Filterung durchkommt.

Keine Sorge! wie Regeln definiert werden, ist im nächsten Schritt dieses iptables-Tutorials zu erfahren.

Kettenregeln definieren

Eine Regel zu definieren bedeutet, sie an die Kette anzuhängen. Dazu muss die Option -A (Append) direkt nach dem Befehl iptables eingefügt werden.

iptables wird angewiesen eine neue Regel in die Kette einzufügen. Es können Optionen kombiniert angewendet werden.

iptables OptionBeschreibung
-i(interface) Die Netzwerkschnittstelle deren Datenverkehr man filtern möchte, zB. eth0, lo, ppp0 u.a.m.
-p(Protokoll) Das Netzwerkprotokoll in dem der Filterprozess stattfindet. Zulässig sind die Protokolle tcp, udp, udplite, icmp, sctp, icmpv6. Alternativ all für jedes Protokoll.
-s(Quelle) Die Adresse von der der Datenverkehr kommt. Hostnamen oder IP-Adressen verwenden.
–dport(Zielport) Die Zielportnummer eines Protokolls, zum
Beispiel: 22 (SSH), 443 (HTTPS) u.a.m.
-j(target) Der Zielname (ACCEPT / DROP / RETURN), bei jeder Regel immer am Ende anfügen.

Der iptable Befehl mit den Optionen setzt sich in dieser Reihenfolge wie folgt zusammen.

$ sudo iptables -A <Kette> -i <Schnittstelle> -p <Protokoll (tcp/udp) > -s <Quelle> --dport <Port-Nr.> -j <Ziel>

Sobald man mit der grundlegenden Syntax vertraut ist, kann man mit der Konfiguration der Firewall beginnen, um dem Server mehr Sicherheit zu verleihen. Hier verwenden wir die INPUT Kette im Beispiel.

Traffic auf Localhost akzeptieren

Für die meisten Anforderungen wird der localhost nicht eingeschränkt. Den Befehl ausführen um den Datenverkehr auf localhost zu erlauben.

$ sudo iptables -A INPUT -i lo -j ACCEPT

Die lo- oder Loopback-Schnittstelle wird für die gesamte Kommunikation auf dem localhost verwendet. Der obige Befehl stellt sicher, dass die Verbindungen zwischen einer Datenbank und einer Webanwendung auf demselben System ordnungsgemäß funktionieren.

Verbindungen auf HTTP, SSH, SSL Port akzeptieren

Als Nächstes möchten wir, dass die Verbindungen zu den Services HTTP (Port 80), HTTPS (Port 443) und SSH (Port 22) wie gewohnt funktionieren. Dazu müssen wir das Protokoll (-p) und den entsprechenden Port (–dport) übergeben. Die Befehle nacheinander ausführen.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Es ist nun Zeit zu überprüfen, ob die Regeln in iptables angehängt sind.

$ iptables -vnL

Die Anzeige der Regeln mit der Option List in etwa wie diese.

Chain INPUT (1 references)
 pkts bytes target     prot opt in     out    source         destination
2798K  156M ACCEPT     tcp  --  *      *      0.0.0.0/0      0.0.0.0/0       tcp dpt:22 ctstate NEW
 114K 5508K ACCEPT     tcp  --  *      *      0.0.0.0/0      0.0.0.0/0       tcp dpt:80 ctstate NEW
65438 2804K ACCEPT     tcp  --  *      *      0.0.0.0/0      0.0.0.0/0       tcp dpt:443 ctstate NEW

Pakete von Quellen Filtern

Mit iptables können Pakete basierend auf einer IP-Adresse oder einem Bereich von IP-Adressen gefiltert werden. Hierzu muss man die Option -s angebenUm beispielsweise Pakete von 192.168.2.4 zu akzeptieren, lautet der Befehl.

$ sudo iptables -A INPUT -s 192.168.2.4 -j ACCEPT

Es können auch Pakete von einer bestimmten IP-Adresse abgelehnt werden, indem man das Ziel ACCEPT durch DROP ersetzen.

$ sudo iptables -A INPUT -s 192.168.2.4 -j DROP

Sollen Pakete von einer Reihe von IP-Adressen verworfen werden, muss man die Option -m und das Modul iprange verwenden. Hierbei gibt man den IP-Adressbereich mit –src-range an. Daran denken, dass ein Bindestrich den Bereich der IP-Adressen ohne Leerzeichen trennen sollte, hier wie folgt.

$ sudo iptables -A INPUT -m iprange --src-range 192.168.8.80-192.168.8.90 -j DROP

Verwerfen der gesamten sonstigen Traffic

Es ist wichtig, DROP als Ziel für den gesamten restlichen Datenverkehr zu verwenden, nachdem die –dport Regeln definiert wurden. Dadurch wird verhindert, dass nicht autorisierte Verbindungen über andere offene Ports auf den Server zugreifen. Hierzu einfach Folgendes eingeben.

$ sudo iptables -A INPUT -j DROP

Jetzt werden die Verbindung nachfolgend der Filter abgelehnt.

iptables Regeln löschen

Möchte man alle Regeln entfernen und sauber beginnen, kann die Option -F (Flush) verwendet werden.

$ sudo iptables -F

Dieser Befehl löscht alle aktuellen Regeln. Um jedoch eine bestimmte Regel zu löschen, dient die Option -D. Hierbei werden zuerst alle verfügbaren Regeln anzgezeigt, wie folgender Befehl zeigt.

$ sudo iptables -nL --line-numbers

Es wird eine Liste von Regeln mit Nummern ausgegeben.

Chain INPUT (policy ACCEPT)
num  target     prot opt source           destination
1    ACCEPT     all -- 192.168.8.8        anywhere
2    ACCEPT     tcp -- anywhere           anywhere tcp dpt:https
3    ACCEPT     tcp -- anywhere           anywhere tcp dpt:http
4    ACCEPT     tcp -- anywhere           anywhere tcp dpt:ssh

Um eine Regel zu löschen, füge die entsprechende Kette mit der Nummer aus der Liste ein. Nehmen wir an, wir wollen für dieses Beispiel die Regel Nummer eins (1) der INPUT Kette löschen. Der Befehl dazu wie folgt.

$ sudo iptables -D INPUT 1

Fazit

iptables ist ein leistungsstarkes Userspace-Utility für die Linux Firewall, um Linux-Server abzusichern. Ein Vorteil ist, dass sich verschiedene Regeln basierend auf eigenen Präferenzen definieren lassen.

In diesem iptables-Tutorial lernt man, wie das Tool installiert und verwendet wird. Wir hoffen, dass hierdurch eigene Regelsätze verwaltet werden können, um eingehende und ausgehende Pakete zu filtern.

Microsoft hat die Ausführung von Makros blockiert

Microsoft hat die Ausführung von Makros blockiert, da der Speicherort nicht vertrauenswürdig ist.

Microsoft hat die Ausführung von Makros blockiert, da die Quelle dieser Datei nicht vertrauenswürdig ist.

Makros wie sie mit Microsoft Office in Word und Excel ihre Anwendung finden, müssen signiert werden, damit diese von der Ausführung nicht blockiert werden. Eine digitale Signatur macht es dadurch sicherer, da diese automatisch entfernt wird, wenn der Inhalt geändert oder manipuliert wird. Darüber hinaus bestätigt der Signierende die Echtheit und Herkunft des signierten Inhalts. Die Authentizität, Integrität und Herkunft eines digital signierten Dokuments wird gemäss Microsoft sichergestellt.

Microsoft hat die Ausführung von Makros blockiert

Vertrauenswürdiger Speicherort hinzufügen

Wenn Makros vor deren Ausführung blockiert werden, wie Excel-Dateien mit nicht signierten Makros, kann es trotzdem ausgeführt werden. Dazu muss man einen vertrauenswürdigen Speicherort definieren. Hierfür geht man in Excel zum Trust Center und fügt einen Pfad hinzu der vertrauenswürdig ist. Die in diesem Pfad gespeicherten Excel-Dateien können dann Makros ausführen.

VORSICHT! Die Herkunft von Dokumenten mit Makros sollte bekannt und vertrauenswürdig sein. Makroviren sind Computerviren, die in Dokumente eingebettet sind und sich in Word- und Excel-Dateien verbreiten. Ein Makrovirus ist so programmiert, dass er sich selbst in andere Dokumente einnistet und so Schadsoftware aufruft, diese unbemerkt Dateien auf der Festplatte manipuliert.

Excel -  Datei

Excel öffnen und auf Datei klicken, im grünen Band unten zu Optionen gehen.

Excel-Datei-Optionen

Unten mit Klick auf Optionen dann das Trust Center öffnen.

Excel Trust Center

Rechts die Schaltfläche Einstellungen für das Trust Center klicken, und im neuen Fenster zu Vertrauenswürdige Speicherorte gehen.

Vertrauenswürdige Speicherorte für Makros

Hier kann man vertrauenswürdige Speicherorte hinzufügen. Klicke unter Zulässig auf die Schaltfläche Neuen Speicherort hinzufügen. Der Pfad zum gewünschten Ordner kann aus der Zwischenablage eingefügt werden, oder mit durchsuchen gewählt werden.

Das Kästchen bei Vertrauenswürdige Speicherorte im Netzwerk zulassen aktivieren, wenn es sich um ein Netzlaufwerk handelt.

Zone für lokales Intranet

Microsoft blockiert Makros bei der Ausführung. Für bestimmte Makros ist es erforderlich, den Speicherort zur Zone lokales Intranet zu machen, über die MMC-Konsole für Internet Optionen.

Windows-Logo + R

Mit drücken der Windows + R Tasten den Befehl „inetcpl.cpl“ ausführen.

In den geöffneten Internet Optionen zum Abschnitt Sicherheit gehen, hier auf das Symbol Lokales Intranet klicken, dann zu Sites und Erweitert gehen, wie in Schritt 1 bis 4 gezeigt.

Internet Optionen Zone Lokales Intranet

Die Website oder die Netzwerkfreigabe mit den Makros als IP-Adresse oder auflösbaren Server zur Zone lokales Intranet Websites hinzufügen.

Die Ausführung von Makros aus einem Vertrauenswürdigen Speicherort wird nicht mehr blockiert