Einrichten einer einfachen Firewall für Linux
Standardmäßig werden SSH-Verbindungen normalerweise über Port 22 (TCP) hergestellt. Der größte Vorteil der Verwendung des Standard-SSH-2-Protokolls (im Vergleich zu VNC) ist die verschlüsselte Verbindung mit einem AES-Algorithmus und einer Schlüssellänge von 128 Bit. Es wird daher allgemein empfohlen, SSH anstelle von VNC zu verwenden!
Unter Linux sollte man in Erwägung ziehen, das integrierte Softwarepaket „iptables“ zu verwenden, das bei den meisten Distributionen standardmäßig mit der Erstinstallation mitgeliefert wird.
Die Verwendung von iptables hat zwei Vorteile: Erstens ist das benötigte Softwarepaket bei den meisten Linux-Distributionen standardmäßig installiert. Außerdem ist es zu jeder Linux-Distribution (Ubuntu, Debian, CentOS usw.) ohne Einschränkungen kompatibel. Es steht dir auch frei, IPv4- und IPv6-Regeln zu definieren, die deinen eigenen Bedürfnissen entsprechen müssen.
Vor der Konfiguration unserer Firewall sind noch keine Regeln definiert. Um dies zu überprüfen, nutze diesen Befehl:
iptables -L
Die Ausgabe sieht ähnlich aus wie diese:
Wie Du sehen kannst, sind derzeit keine Regeln definiert. Die Software-Firewall wird nichts blockieren.
Um Firewall-Regeln hinzuzufügen, nutze die folgende Syntax:
iptables <ADD: -A> | <Chain: INPUT / Output> | <Source/Destination: -d / -s> | <action: -j> | <Art: ACCEPT>
Hier ein Beispiel für die Verwendung des iptables-Befehls, um eingehenden Verkehr an Port 80 zuzulassen
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Beispiel einer Firewall-Konfiguration für Linux
Hier ist ein Beispielskript, das die meistgenutzten Ports auf deinem Linux-Server öffnet:
#!/bin/bash
# Delete the current firewall setup:
iptables -F
# Define default rules for all chains:
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Allow incoming/outgoing localhost frames for tests (e.g. Webserver, Mailserver):
iptables -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
# Allow loopback frames for the internal process management:
iptables -A INPUT -i lo -j ACCEPT
# Allow incoming/outgoing related-established connections:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow incoming PING-Requests:
iptables -A INPUT -p icmp -j ACCEPT
# Allow incoming SSH connections:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allow incoming HTTP/HTTPS requests:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Allow incoming DNS requests:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Um dieses Skript zu verwenden, logge dich als root auf deinem Linux-Server ein und erstelle ein Shellskript mit diesem Befehl:
nano firewall.sh
Füge nun den oben gezeigten Inhalt ein.
Speichere die Datei mit [STRG] + O und beende den Editor mit [STRG] + X.
Mache das Skript mit diesem Befehl ausführbar:
chmod +x firewall.sh
Um das Skript ausführen zu können und die vom Skript bereitgestellten Ports zu öffnen, benutze den folgenden Befehl:
./firewall.sh
Bitte überprüfe alle Portnummern, die Du für Deine eigenen Bedürfnisse brauchst! Wenn du bestehende Regeln ändern oder weitere Regeln hinzufügen musst (z.B. Mail-Service oder FTP), kannst du diese gerne in das Skript einfügen.
Wenn du dein Bash-Skript an deine Bedürfnisse angepasst hast, kopiere es in eine normale Textdatei und speichere die Datei als „firewall.sh“. Anschließend mache das Skript ausführbar und führe es wie bereits gezeigt aus.
Wenn du unser Beispielskript verwendest, solltest du mit dem Befehl iptables -vL die folgende Ausgabe erhalten:
Bitte bedenke generell, dass auf diese Weise nicht alle Firewall-Regeln dauerhaft hinzugefügt werden! Nach einem Neustart des Servers müsste jede Regel erneut manuell gesetzt werden.
Um sie also dauerhaft zu setzen, führe je nach Betriebssystem die folgenden Befehle aus:
Permanente Firewall-Einstellungen
Permanente Einstellungen für CentOS 7 oder höher
yum install -y iptables-services
systemctl stop firewalld
systemctl mask firewalld
systemctl enable iptables.service
systemctl -t service | grep iptables
/usr/libexec/iptables/iptables.init save
Wenn du deine IPv4/IPv6-Firewall-Einrichtung aktualisieren musst, ändere bitte die folgenden Dateien:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables
Permanente Einstellungen für Debian/Ubuntu
apt-get install iptables-persistent netfilter-persistent
Wenn du deine IPv4/IPv6-Firewall-Einrichtung aktualisieren musst, ändere bitte die folgenden Dateien:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
Du kannst deine aktuell konfigurierten Firewall-Regeln auch mit diesem Befehl speichern, wenn du sie nicht in den oben genannten Dateien gespeichert hast:
iptables-save > /etc/iptables/rules.v4 && ip6tables-save > /etc/iptables/rules.v6
Bitte stelle auch sicher, dass die Standard-Netzwerkkennung (eth0) mit dem Netzwerkgerät des Systems übereinstimmt. Gegebenenfalls musst du die Netzwerkschnittstelle aktualisieren (z.B. Ubuntu 18 – Netplan-Umgebung).
Prüfen lässt sich das mit dem folgenden Befehl:
ip addr show
Wir empfehlen dringend, eine Sicherungskopie des aktuellen Firewall-Setups zu erstellen, um die vorherige Konfiguration (z. B. Verbindungssperren) sofort wiederherstellen zu können.
Um deine aktuelle IPv4/IPv6-Firewall-Konfiguration in einer Sicherungsdatei zu speichern, kannst du die folgenden Befehle verwenden:
iptables-save > /root/iptables_rules
ip6tables-save > /root/ip6tables_rules
Um die Sicherungsdateien wiederherzustellen, nutze die folgenden Befehle:
iptables-restore < /root/iptables_rules
iptables-restore < /root/ip6tables_rules
Wenn du dich aufgrund einer falsch konfigurierten Firewall erneut mit deinem Server verbinden musst, kannst du deine VNC-Verbindung für deinen VPS nutzen, um eine vorherige Konfiguration wiederherzustellen:
Weitere Informationen zur Verwendung von VNC findest Du in unserem VNC-Tutorial hier.
Wenn du einen Dedicated Server hast, ist es leider nicht möglich, den VNC-Zugang zu nutzen, so dass du deinen Server in das Linux Rescue System neu starten musst, um wieder Zugang zu erhalten.
Wenn Du Kunde bei Contabo bist, kannst Du dies im Customer Control Panel durchführen.
Nachfolgend findest du weitere Informationen zur Handhabung des Linux-Rettungsmodus:
Mehr Informationen über den Linux-Rettungsmodus findest du hier.
Einrichten einer einfachen Firewall für Windows
Die Windows-Firewall findest du in den Einstellungen des Server-Managers wie folgt:
Windows-Firewall -> Öffentlich: Ein-> Erweiterte Einstellungen
Nun kannst du deine Firewall-Regeln nach deinen eigenen Bedürfnissen anpassen.
Der größte Unterschied zwischen Linux und Windows besteht in der Tatsache, dass Windows standardmäßig eine grundlegende Firewall-Konfiguration bietet. In den meisten Fällen sollte es ausreichen, die Standardeinstellungen beizubehalten oder bestehende Regeln zu ändern.
Alle aktiven Firewall-Regeln sind mit einer grünen Markierung versehen. Die übrigen Regeln (ohne Tag) müssen bei Bedarf aktiviert werden. Passe die Firewall-Einstellungen nach Belieben an deine eigenen Bedürfnisse an.
Wenn du zum Beispiel deinen RDP-Port auf einen anderen als den Standard-Port „3389“ ändern möchtest, musst du die folgenden zwei Firewall-Regeln innerhalb der Kette „Eingehende Regel“ wie folgt ändern:
Remote Desktop - User Mode (TCP-In)
Remote Desktop - User Mode (UDP-In)
Anschließend muss der betroffene Windows-Registryeintrag auf den neuen Wert geändert werden. Um eine Fehlfunktion zu vermeiden, solltest Du jedoch vorher ein vollständiges Backup der Registry erstellen:
WINDOWS button + R (keyboard command)
regedit
File >> Export
Nun kannst du zu folgendem Pfad navigieren, um die neue RDP-Portnummer einzustellen:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber
Das wars auch schon! Jetzt weiß Du, wie man sowohl in Linux, als auch in Windows die wichtigsten Firewalleinstellungen tätigt!