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
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.
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:
Wenn der Prozess abgeschlossen ist, solltest du die Ausgabe „Installation Completed“ erhalten.
Ü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.
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 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“
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"
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"
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"
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.
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
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.
Außerdem kannst du sehen, dass der lfd-Dienst 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.
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:
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
Ö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.
Du solltest das CSF-Dashboard wie folgt sehen:
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.