Wie installiere ich CSF (Config Server Firewall) unter Debian 12

CSF oder Config Server Firewall ist eine Stateful Packet Inspection (SPI) Firewall, die auf IPtables und Perl basiert. Sie stellt einen Daemon-Prozess zur Verfügung, der deine Dienste auf fehlgeschlagene Authentifizierung überwacht und bietet außerdem eine Web-UI-Integration für die webbasierte Serververwaltung wie Webmin, cPanel und DirectAdmin.

In diesem Lernprogramm führen wir dich durch den Installationsprozess von CSF (Config Server Firewall) auf einem Debian 12 Server. Außerdem lernst du die Grundkonfiguration der CSF, das Blockieren von IP-Adressen mit zwei verschiedenen Methoden und die Einrichtung der CSF Web UI für eine einfache Verwaltung und Überwachung.

Voraussetzungen

Um mit diesem Lernprogramm zu beginnen, musst du folgende Voraussetzungen erfüllen:

  • Einen Debian 12 Server.
  • Einen Nicht-Root-Benutzer mit Administrator-Rechten.

System vorbereiten

Bevor du CSF installierst, musst du sicherstellen, dass alle Abhängigkeiten installiert sind. Dazu gehören Pakete wie Perl und iptables. Wenn du eine andere Firewall wie UFW (Uncomplicated Firewall) benutzt, musst du sie deaktivieren.

Um loszulegen, führe den folgenden Befehl aus, um dein Debian-Repository zu aktualisieren.

sudo apt update

Repo aktualisieren

Sobald das Repository aktualisiert ist, installierst du die folgenden Abhängigkeiten für CSF mit dem unten stehenden Befehl.

sudo apt install libio-socket-inet6-perl libsocket6-perl sendmail dnsutils unzip libio-socket-ssl-perl libcrypt-ssleay-perl git perl iptables libnet-libidn-perl libwww-perl liblwp-protocol-https-perl libgd-graph-perl

Gib Y ein und drücke ENTER, um fortzufahren.

Abhängigkeiten installieren

Zu guter Letzt musst du UFW deaktivieren, wenn du es auf deinem Debian-Server hast. CSF verwendet standardmäßig iptables als Firewall und Paketfilter.

sudo ufw disable

Herunterladen und Installieren von CSF

Im folgenden Abschnitt wirst du CSF (Config Server Firewall) manuell aus der Quelle herunterladen und installieren. Also, los geht’s.

Lade den CSF-Quellcode mit dem unten stehenden wget-Befehl herunter. Du wirst die Datei csf.tgz sehen.

wget http://download.configserver.com/csf.tgz

Entpacke die Datei csf.tgz mit dem unten stehenden tar-Befehl. Der CSF-Quellcode wird im Verzeichnis csf verfügbar sein.

sudo tar -xvzf csf.tgz

Wechsle dann in das csf-Verzeichnis und führe das Skript install.sh aus, um die Installation zu starten.

cd csf; sh install.sh

Wenn die Installation gestartet wird, solltest du folgendes sehen:

CSF-Aufbau-Prozess

Wenn der Prozess abgeschlossen ist, solltest du die Ausgabe „Installation Completed“ erhalten.

Installation beendet

Überprüfe nun die Installation von CSF mit dem unten stehenden Befehl.

perl /usr/local/csf/bin/csftest.pl

Vergewissere dich, dass die Ausgabe für jeden Funktionstest OK ist.

Merkmalstest OK

Führe abschließend den folgenden Befehl aus, um den Speicherort und die Version der CSF-Binärdatei zu überprüfen.

which csf
csf -v

In der folgenden Ausgabe siehst du, dass CSF v14.20 in /usr/sbin/csf installiert ist.

csf-Version prüfen

CSF konfigurieren

Nachdem du CSF installiert hast, lernst du einige grundlegende Konfigurationen von CSF (Config Server Firewall) kennen. Das Hauptkonfigurationsverzeichnis für CSF ist das Verzeichnis /etc/csf. Dort findest du die Hauptkonfigurationsdatei csf.conf.

Benutze den folgenden Befehl des nano-Editors, um die CSF-Konfigurationsdatei /etc/csf/csf.conf zu öffnen.

sudo nano /etc/csf/csf.conf

Verkehr über CSF zulassen

Suche die Optionen TCP_* und UDP_* und füge deine Ports hinzu.

# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995"

# Allow outgoing TCP ports
TCP_OUT = „20,21,22,25,53,853,80,110,113,443,587,993,995“

# Allow incoming UDP ports
UDP_IN = „20,21,53,853,80,443“

# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP_OUT = „20,21,53,853,113,123“

Verkehr hereinlassen hinaus

Detaillierte Optionen:

  • TCP_IN: erlaube eingehenden Verkehr an TCP-Ports.
  • TCP_OUT: erlaube ausgehenden Datenverkehr zu bestimmten TCP-Ports.
  • UDP_IN: erlaube eingehenden Datenverkehr an UDP-Ports.
  • UDP_OUT: erlaube ausgehenden Datenverkehr zu bestimmten UDP-Ports.

Ping- oder ICMP-Anfragen zulassen/verweigern

Wenn du Ping oder ICMP ‚IN und OUT‘ wirklich deaktivieren musst, verwende die folgenden Optionen. ICMP_IN = 1′ bedeutet, dass Ping zugelassen wird, und ICMP_OUT = 1 bedeutet, dass der Server Pings an ein anderes Netzwerk senden kann.

# Allow incoming PING. Disabling PING will likely break external uptime
# monitoring
ICMP_IN = "1"
...
# Allow outgoing PING
#
# Unless there is a specific reason, this option should NOT be disabled as it
# could break OS functionality
ICMP_OUT = "1"

ping zulassen

Synflood-Schutz

Aktiviere diese OptionNUR bei Bedarf, z.B. gegen DOS-Angriffe auf deinen Server.

###############################################################################
# SECTION:Port Flood Settings
###############################################################################
# Enable SYN Flood Protection. This option configures iptables to offer some
# protection from tcp SYN packet DOS attempts. 
...
SYNFLOOD = "0"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"

Schutz vor Überschwemmungen

Gleichzeitige Verbindungen einschränken

Als Nächstes kannst du mit der Option ‚CONNLIMIT‘ die Anzahl der gleichzeitigen Verbindungen für bestimmte Ports begrenzen. Das Format ist„PORT;LIMIT„, d.h., wenn du z.B.„22;5“ einstellst, wird der SSH-Port auf 5 gleichzeitige Verbindungen beschränkt.

# Connection Limit Protection. This option configures iptables to offer more
# protection from DOS attacks against specific ports. It can also be used as a
# way to simply limit resource usage by IP address to specific server services.
# Note: Run /etc/csf/csftest.pl to check whether this option will function on
# this server
CONNLIMIT = "22;5,21;10"

Verbindungslimit

Deaktiviere den Testmodus und schränke den Zugang zum Syslog ein

Wenn du nun alles konfiguriert und deine Ports hinzugefügt hast, ändere„TESTING“ in„1“ und schränke den Zugang zu den Syslog-Sockets mit„RESTRICT_SYSLOG= „3““ ein.

# lfd will not start while this is enabled
TESTING = "0"


# 0 = Allow those options listed above to be used and configured
# 1 = Disable all the options listed above and prevent them from being used
# 2 = Disable only alerts about this feature and do nothing else
# 3 = Restrict syslog/rsyslog access to RESTRICT_SYSLOG_GROUP ** RECOMMENDED **
RESTRICT_SYSLOG = „3“


Wenn alles fertig ist, speichere die Datei und beende den Editor.

Testmodus deaktivieren

Testen und Starten des CSF-Dienstes

Führe nun den folgenden csf-Befehl aus, um deine Konfiguration zu überprüfen. Wenn du den CSF richtig konfiguriert hast, siehst du die CSF-Ausgabe. Im Gegensatz dazu siehst du eine detaillierte Fehlermeldung, wenn deine Konfiguration nicht korrekt ist.

csf -v

Als Nächstes führst du den Befehl systemctl aus, um die Dienste csf und lfd zu starten.

sudo systemctl start csf lfd

Konfiguration verifizieren

Sobald der csf-Dienst läuft, wird deine Verbindung zum Server automatisch getrennt. Du kannst dich wieder am Server anmelden und den csf- und lfd-Dienst mit dem folgenden Befehl überprüfen.

sudo systemctl status csf lfd

Du kannst sehen, dass der csf-Dienst läuft.

csf läuft

Außerdem kannst du sehen, dass der lfd-Dienst läuft.

lfd läuft

Blockieren über CSF

Jetzt hast du die grundlegende Konfiguration der CSF (Config Server Firewall) kennengelernt. Jetzt wollen wir uns das Blockieren von IP-Adressen über die CSF ansehen.

Blockieren von IP-Adressen über IP BLOCK-Listen

Öffne die Standardkonfiguration der IP BLOCk-Listen /etc/csf/csf.blocklists mit dem unten stehenden nano-Editor-Befehl.

sudo nano /etc/csf/csf.blocklists

Entferne die Kommentare in den folgenden Zeilen, um IP-Adressen aus der Spamhaus-Datenbank zu blockieren.

# Spamhaus Don't Route Or Peer List (DROP)
# Details: http://www.spamhaus.org/drop/
SPAMDROP|86400|0|http://www.spamhaus.org/drop/drop.txt
# Spamhaus IPv6 Don't Route Or Peer List (DROPv6)
# Details: http://www.spamhaus.org/drop/
SPAMDROPV6|86400|0|https://www.spamhaus.org/drop/dropv6.txt

# Spamhaus Extended DROP List (EDROP)
# Details: http://www.spamhaus.org/drop/
SPAMEDROP|86400|0|http://www.spamhaus.org/drop/edrop.txt

Speichere die Datei und beende den Editor, wenn du fertig bist.

Blocklisten csf

Im Folgenden findest du einige Detailoptionen:

  • SPAMDROP: Name des Blocks, der als iptables chan-Name verwendet wird. Verwende nur GROSSBUCHSTABEN mit maximal 25 Zeichen.
  • 86400: Aktualisierungsintervall zum Herunterladen und Erneuern der IP-Adressen der Blocklisten.
  • MAX: Maximale IP-Adressen, die aus der Liste verwendet werden. Ein Wert von 0 bedeutet, dass alle IPs einbezogen werden.
  • URL: die Download-URL der IP-Adressen der Sperrlisten.

IP-Adressen über GeoIP blockieren

Eine weitere Methode, um eine IP-Adresse zu blockieren, ist über GeoIP, mit der du eingehenden Datenverkehr aus einem bestimmten Land blockieren kannst.

Öffne mit dem folgenden nano-Editor-Befehl die CSF-Konfiguration„/etc/csf/csf.conf„.

sudo nano /etc/csf/csf.conf

Suche die Parameter CC_DENY und CC_ALLOW, um die Blockierung pro Land über GeoIP einzurichten.

# Each option is a comma-separated list of CC's, e.g. "US,GB,DE"
CC_DENY = "RU,CN"
CC_ALLOW = "US,GB,DE,NL,SG"

Standardmäßig verwendet CSF die GeoIP der Datenbank aus db-ip, ipdeny und iptoasn. Du kannst sie aber auch über die MaxMind GeoIP-Datenbank ändern. Um die MaxMind-Datenbank zu verwenden, ändere die Option„CC_SRC“ auf„1“ und gib dann deinen MaxMind-Lizenzschlüssel in die Option„MM_LICENSE_KEY“ ein.

# MaxMind License Key:
MM_LICENSE_KEY = ""
...

# Set the following to your preferred source:
#
# "1" - MaxMind
# "2" - db-ip, ipdeny, iptoasn
#
# The default is "2" on new installations of csf, or set to "1" to use the
# MaxMind databases after obtaining a license key
CC_SRC = "1"

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe nun den folgenden Befehl aus, um die CSF-Konfiguration zu überprüfen. Wenn kein Fehler auftritt, solltest du die CSF-Version erhalten.

sudo csf -v

Starte als Nächstes sowohl den csf- als auch den lfd-Dienst mit dem folgenden Befehl neu.

sudo csf -ra

Du solltest eine Ausgabe wie die folgende sehen:

csf verifizieren und neu starten

Um sicherzustellen, dass sowohl csf als auch lfs laufen, überprüfe beide Dienste mit dem folgenden Befehl.

sudo systemctl status csf lfd

Aktivieren der CSF Web UI

Im folgenden Abschnitt erfährst du, wie du die CSF Web UI für die Überwachung über einen Webbrowser aktivierst.

Öffne die CSF-Konfiguration mit dem folgenden nano-Editor.

sudo nano /etc/csf/csf.conf

Ändere die Option„UI“ auf„1“ und aktiviere CSF Web UI. Passe dann den UI_PORT, die UI_IP, den UI_USER und den UI_PASS mit deinen Angaben an.

#
# 1 to enable, 0 to disable
UI = "1"
...

# Do NOT enable access to this port in TCP_IN, instead only allow trusted IPs
# to the port using Advanced Allow Filters (see readme.txt)
UI_PORT = "1048"

...

# If the server is configured for IPv6 but the IP to bind to is IPv4, then the
# IP address MUST use the IPv6 representation. For example, 1.2.3.4 must use
# ::ffff:1.2.3.4
#
# Leave blank to bind to all IP addresses on the server
UI_IP = "127.0.0.1"

...

# This should be a secure, hard to guess username
#
# This must be changed from the default
UI_USER = "alice"
...
# numbers and non-alphanumeric characters
#
# This must be changed from the default
UI_PASS = "passw0rd"

Speichere die Datei und beende den Editor, wenn du fertig bist.

Finde nun deine öffentliche IP-Adresse mit dem folgenden Befehl.

curl https://ipinfo.io/

Füge deine IP-Adresse zu den Konfigurationen„/etc/csf/csf.allow“ und „/etc/csf/ui/ui.allow“ hinzu. Dadurch wird deine öffentliche IP-Adresse auf die Whitelist gesetzt und du kannst auf die CSF Web UI und den Server zugreifen.

# single ip
192.168.5.1
# subnet
192.168.5.0/24

Danach führst du den folgenden Befehl aus, um die CSF-Konfiguration zu überprüfen und die Dienste csf und lfd neu zu starten.

sudo csf -v
sudo csf -ra

Als Nächstes überprüfst du die Liste der Whitelist-IP-Adressen im CSF mit dem folgenden Befehl. Finde die iptables-Ketten ALLOWIN und ALLOWOUT und du solltest deine IP-Adressen auf der Whitelist sehen.

sudo csf -l

Überprüfe, ob die Kette in der Whitelist erlaubt ist

Öffne nun deinen Webbrowser und rufe die IP-Adresse des Servers auf, gefolgt von dem Port der CSF-Web-UI (z.B. https://192. 168.5.15:1048). Wenn deine Konfiguration erfolgreich war, solltest du die CSF-Anmeldeseite sehen.

Gib deinen Admin-Benutzer und dein Passwort ein und klicke dann auf ENTER.

csf-Anmeldung

Du solltest das CSF-Dashboard wie folgt sehen:

csf-Dashboard

Fazit

Herzlichen Glückwunsch! Du hast nun CSF (Config Server Firewall) erfolgreich auf dem Debian 12 Server installiert. Du hast auch gelernt, wie du CSF grundsätzlich verwendest, um Datenverkehr zu einem bestimmten Port zuzulassen, Ping oder ICMP zu deaktivieren und Verbindungslimits für Ports einzurichten.

Außerdem hast du gelernt, wie du mit CSF IP-Adressen mit Hilfe von IP-Sperrlisten und GeoIP blockieren kannst. Außerdem hast du die CSF Web UI aktiviert, um die Verwaltung und Überwachung deines CSF-Servers zu erleichtern.

Das könnte dich auch interessieren …