So installierst und konfigurierst du die Config Server Firewall (CSF) unter Rocky Linux 9
Config Server Security and Firewall (CSF) ist eine iptables-basierte Firewall, die ein hohes Maß an Sicherheit für das Linux-System bietet. Dazu führt sie eine Stateful Packet Inspection (SPI) durch.
Sie verfügt über zahlreiche Funktionen wie IP-Blockierung, Port-Blockierung und DDoS-Schutz. Außerdem unterstützt es Ratenbegrenzung, Verbindungsverfolgung und SSH-Login-Erkennung. Außerdem enthält es Tools zur Überprüfung der System- und Dateiintegrität. Die Software verfügt über ein GUI-Dashboard, über das du die Einstellungen verwalten kannst. Du kannst CSF auch in Control Panels wie DirectAdmin, cPanel, Cyberpanel, Vesta und Webmin integrieren.
In diesem Lernprogramm lernst du, wie du CSF auf einem Rocky Linux 9 Server installierst und verwaltest.
Voraussetzungen
- Ein Server mit Rocky Linux 9 und mindestens 1 GB RAM.
- Ein Nicht-Root-Benutzer mit sudo-Rechten.
- Ein Fully Qualified Domain Name (FQDN) wie
csf.example.com
, der auf deinen Server zeigt. - Alles ist auf dem neuesten Stand.
$ sudo dnf update
- Ein paar wichtige Pakete werden benötigt, damit das Tutorial und das Craft CMS laufen. Einige davon befinden sich bereits auf deinem Server.
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
Schritt 1 – Deaktiviere die Firewalld Firewall
Rocky Linux verwendet standardmäßig die Firewalld Firewall. Wir müssen sie zuerst deaktivieren, damit sie die CSF nicht beeinträchtigt.
Überprüfe zuerst den Status der Firewalld-Firewall.
$ sudo systemctl status firewalld ? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled) Active: active (running) since Tue 2023-12-05 07:00:53 UTC; 40s ago Docs: man:firewalld(1) Main PID: 58756 (firewalld) Tasks: 2 (limit: 4424) Memory: 25.9M CPU: 496ms CGroup: /system.slice/firewalld.service ??58756 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid Dec 05 07:00:52 csf.example.com systemd[1]: Starting firewalld - dynamic firewall daemon... Dec 05 07:00:53 csf.example.com systemd[1]: Started firewalld - dynamic firewall daemon.
Stoppe und deaktiviere den Firewalld-Dienst.
$ sudo systemctl stop firewalld $ sudo systemctl disable firewalld
Schritt 2 – Erforderliche Perl-Module installieren
Der CSF benötigt bestimmte Perl-Module, um zu laufen. Aber zuerst brauchen wir das EPEL-Repository. Installiere sie.
$ sudo dnf install epel-release
Installiere sie mit dem folgenden Befehl.
$ sudo dnf install perl-core perl-libwww-perl.noarch perl-LWP-Protocol-https.noarch perl-GDGraph -y
Schritt 3 – CSF herunterladen und installieren
CSF ist nicht im Rocky Linux Repository verfügbar. Daher müssen wir es manuell installieren.
Lade die neueste Version des CSF-Archivs von der Website herunter.
$ wget https://download.configserver.com/csf.tgz
Entpacke das Archiv.
$ tar xzf csf.tgz
Wechsle in das entpackte Verzeichnis.
$ cd csf
Installiere CSF, indem du das Installer-Skript aufrufst.
$ sudo ./install.sh
Du solltest die folgende Ausgabe erhalten.
............... Don't forget to: 1. Configure the following options in the csf configuration to suite your server: TCP_*, UDP_* 2. Restart csf and lfd 3. Set TESTING to 0 once you're happy with the firewall, lfd will not run until you do so 'lfd.service' -> '/usr/lib/systemd/system/lfd.service' 'csf.service' -> '/usr/lib/systemd/system/csf.service' Created symlink /etc/systemd/system/multi-user.target.wants/csf.service ? /usr/lib/systemd/system/csf.service. Created symlink /etc/systemd/system/multi-user.target.wants/lfd.service ? /usr/lib/systemd/system/lfd.service. Unit /etc/systemd/system/firewalld.service is masked, ignoring. The unit files have no installation config (WantedBy=, RequiredBy=, Also=, Alias= settings in the [Install] section, and DefaultInstance= for template units). This means they are not meant to be enabled or disabled using systemctl. Possible reasons for having this kind of units are: • A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory. • A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it. • A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...). • In case of template units, the unit is meant to be enabled with some instance name specified. '/etc/csf/csfwebmin.tgz' -> '/usr/local/csf/csfwebmin.tgz' Installation Completed
Prüfe, ob die erforderlichen iptables-Module verfügbar sind.
$ sudo perl /usr/local/csf/bin/csftest.pl
Du solltest die folgende Ausgabe sehen.
Testing ip_tables/iptable_filter...OK Testing ipt_LOG...OK Testing ipt_multiport/xt_multiport...OK Testing ipt_REJECT...OK Testing ipt_state/xt_state...OK Testing ipt_limit/xt_limit...OK Testing ipt_recent...OK Testing xt_connlimit...OK Testing ipt_owner/xt_owner...OK Testing iptable_nat/ipt_REDIRECT...OK Testing iptable_nat/ipt_DNAT...OK RESULT: csf should function on this server
Überprüfe die CSF-Version.
$ sudo csf -v csf: v14.20 (generic) *WARNING* TESTING mode is enabled - do not forget to disable it in the configuration
Schritt 4 – CSF konfigurieren
CSF speichert seine Konfiguration in der Datei /etc/csf/csf.conf
. Öffne die Datei zur Bearbeitung.
$ sudo nano /etc/csf/csf.conf
Der erste Schritt besteht darin, den Testmodus zu deaktivieren. Ändere den Wert der Variable TESTING
von 1
in 0
.
TESTING = "0"
Suche die Zeile RESTRICT_SYSLOG = "0"
und ändere ihren Wert auf 3. Das bedeutet, dass nur Mitglieder der RESTRICT_SYSLOG_GROUP
auf die syslog/rsyslog
Dateien zugreifen können. Die RESTRICT_SYSLOG_GROUP
enthält standardmäßig die Benutzer root
, mysql
, rpc
, daemon
, dbus
und mehrere cPanel und DirectAdmin Benutzer. Du kannst weitere Benutzer hinzufügen, indem du die Datei /etc/csf/csf.syslogusers
bearbeitest.
Schritt 5 – Ports konfigurieren
CSF hält standardmäßig die folgenden Ports offen.
# 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"
Die Dienste, die diese Ports nutzen, sind:
- Port 20: FTP-Datenübertragung
- Port 21: FTP-Kontrolle
- Port 22: Sichere Shell (SSH)
- Port 25: Einfaches Mail-Übertragungsprotokoll (SMTP)
- Port 53: Domain Name System (DNS)
- Anschluss 80: Hypertext-Übertragungsprotokoll (HTTP)
- Anschluss 110: Post Office Protocol v3 (POP3)
- Anschluss 113: Authentifizierungsdienst/Identifizierungsprotokoll
- Anschluss 123: Netzwerkzeitprotokoll (NTP)
- Port 143: Internet Message Access Protocol (IMAP)
- Port 443: Hypertext-Übertragungsprotokoll über SSL/TLS (HTTPS)
- Anschluss 465: URL Rendezvous-Verzeichnis für SSM (Cisco)
- Anschluss 587: Übermittlung von E-Mail-Nachrichten (SMTP)
- Port 993: Internet Message Access Protocol über SSL (IMAPS)
- Anschluss 995: Post Office Protocol 3 über TLS/SSL (POP3S)
Wenn du nicht alle diese Ports offen haben musst, kannst du einige von ihnen entfernen, um die Sicherheit zu erhöhen. Wenn du IPv6 für deine Dienste verwendest, musst du die Ports TCP6_IN
, TCP6_OUT
, UDP6_IN
und UDP6_OUT
wie gezeigt konfigurieren.
# Allow incoming IPv6 TCP ports TCP6_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995" # Allow outgoing IPv6 TCP ports TCP6_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995" # Allow incoming IPv6 UDP ports UDP6_IN = "20,21,53,853,80,443" # Allow outgoing IPv6 UDP ports # To allow outgoing traceroute add 33434:33523 to this list UDP6_OUT = "20,21,53,853,113,123"
Ändere die Ports entsprechend deinen Anforderungen.
Schritt 6 – Zusätzliche CSF-Einstellungen
Es gibt eine Menge Einstellungen zu konfigurieren. Gehen wir einige der am häufigsten verwendeten Einstellungen durch.
ICMP_IN – Wenn du diese Variable auf 1 setzt, werden Pings an deinen Server zugelassen, während 0 solche Anfragen abweist. Es wird empfohlen, ICMP-Anfragen zuzulassen, wenn du öffentliche Dienste hostest, damit festgestellt werden kann, ob dein Dienst verfügbar ist.
ICMP_IN_LIMIT – legt die Anzahl der Anfragen fest, die von einer einzelnen IP-Adresse innerhalb einer bestimmten Zeitspanne zugelassen werden. Es wird empfohlen, den Wert unverändert zu lassen.
DENY_IP_LIMIT – schränkt die Anzahl der IP-Adressen ein, die vom CSF blockiert werden. Wenn die Anzahl der gesperrten IPs diese Zahl übersteigt, hebt der CSF die Sperrung der ältesten IP auf, die der erste Eintrag in der Datei /etc/csf/csf.deny
ist. Wenn du diese Zahl zu hoch ansetzt, kann der Server langsamer werden. Wähle die Zahl entsprechend den Ressourcen deines Servers.
DENY_TEMP_IP_LIMIT – dasselbe wie oben, aber für temporäre IP-Adresssperren.
PACKET_FILTER – filtert ungültige, unerwünschte und illegale Datenpakete.
CONNLIMIT – begrenzt die Anzahl der gleichzeitigen aktiven Verbindungen, die auf einem einzelnen Port erlaubt sind. Du kannst ihn wie folgt einstellen.
CONNLIMIT = "22;5;443;20"
Der obige Wert bedeutet, dass nur 5 gleichzeitige Verbindungen auf Port 22 pro IP-Adresse und nur 20 gleichzeitige Verbindungen auf Port 443 pro IP-Adresse erlaubt sind.
PORTFLOOD – begrenzt die Anzahl der Verbindungen pro Zeitintervall, in dem neue Verbindungen zu bestimmten Ports hergestellt werden können. Du kannst ihn wie folgt einstellen.
PORTFLOOD = "22;tcp;5;250"
Der obige Wert blockiert die IP-Adresse, wenn innerhalb von 250 Sekunden mehr als 5 Verbindungen über das TCP-Protokoll auf Port 22 aufgebaut werden. Die Sperre wird nach 250 Sekunden wieder aufgehoben. Du kannst weitere Ports hinzufügen, indem du Kommas setzt.
PORTFLOOD = "22;tcp;5;250,80;tcp;10;300"
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Starte und aktiviere die Dienste CSF und LFD.
$ sudo systemctl start csf lfd $ sudo systemctl enable csf lfd
Überprüfe den Status des CSF-Dienstes.
$ sudo systemctl status csf ? csf.service - ConfigServer Firewall & Security - csf Loaded: loaded (/usr/lib/systemd/system/csf.service; enabled; preset: disabled) Active: active (exited) since Tue 2023-12-05 13:57:59 UTC; 2min 7s ago Main PID: 11050 (code=exited, status=0/SUCCESS) CPU: 1.192s Dec 05 13:57:59 csf.example.com csf[11050]: ACCEPT all opt in * out lo ::/0 -> ::/0 Dec 05 13:57:59 csf.example.com csf[11050]: LOGDROPOUT all opt in * out !lo ::/0 -> ::/0 Dec 05 13:57:59 csf.example.com csf[11050]: LOGDROPIN all opt in !lo out * ::/0 -> ::/0 Dec 05 13:57:59 csf.example.com csf[11050]: csf: FASTSTART loading DNS (IPv4) Dec 05 13:57:59 csf.example.com csf[11050]: csf: FASTSTART loading DNS (IPv6) Dec 05 13:57:59 csf.example.com csf[11050]: LOCALOUTPUT all opt -- in * out !lo 0.0.0.0/0 -> 0.0.0.0/0 Dec 05 13:57:59 csf.example.com csf[11050]: LOCALINPUT all opt -- in !lo out * 0.0.0.0/0 -> 0.0.0.0/0 Dec 05 13:57:59 csf.example.com csf[11050]: LOCALOUTPUT all opt in * out !lo ::/0 -> ::/0 Dec 05 13:57:59 csf.example.com csf[11050]: LOCALINPUT all opt in !lo out * ::/0 -> ::/0 Dec 05 13:57:59 csf.example.com systemd[1]: Finished ConfigServer Firewall & Security - csf.
Überprüfe die offenen Ports, wenn der CSF-Dienst läuft.
$ sudo csf -p Ports listening for external connections and the executables running behind them: Port/Proto Open Conn PID/User Command Line Executable 22/tcp 4/6 2 (863/root) sshd: /usr/sbin/sshd -D [listener] 0... /usr/sbin/sshd 111/tcp -/- - (1/root) /usr/lib/systemd/systemd --switched-... /usr/lib/systemd/systemd 111/tcp -/- - (642/rpc) /usr/bin/rpcbind -w -f /usr/bin/rpcbind 111/udp -/- - (1/root) /usr/lib/systemd/systemd --switched-... /usr/lib/systemd/systemd 111/udp -/- - (642/rpc) /usr/bin/rpcbind -w -f /usr/bin/rpcbind 323/udp -/- - (679/chrony) /usr/sbin/chronyd -F 2 /usr/sbin/chronyd
AUTO_UPDATES – Der Wert 0
deaktiviert die automatischen Updates. Ändere ihn in 1
, wenn du automatische Aktualisierungen möchtest. Dadurch wird ein Cron-Job erstellt, der einmal am Tag läuft, um automatische Aktualisierungen durchzuführen und die Dienste csf
und lfd
neu zu starten.
ETH_DEVICE – Standardmäßig filtert der CSF den Datenverkehr auf allen Netzwerkkarten, mit Ausnahme der Loopback-Karte. Wenn du möchtest, dass die Regeln nur für die eth0
Karte gelten, dann setze den Wert auf eth0
.
LF_DAEMON – setze den Wert auf 1, um die Funktion zur Erkennung von Login-Fehlern im CSF zu aktivieren.
LF_CSF – setze den Wert auf 1, um die Funktion für den automatischen Neustart des CSF zu aktivieren. Sie wartet alle 300 Sekunden, um die Prüfung durchzuführen.
LF_SELECT – setzt den Wert auf 1, wenn die IP-Adresse gegen die LFD-Regeln verstößt, wird nur der Datenverkehr zu dem Dienst blockiert, bei dem die IP-Anmeldung fehlschlägt, anstatt den gesamten Datenverkehr zu blockieren.
LF_SSHD – legt die Anzahl der Male fest, nach denen die falsche SSH-Verbindung blockiert wird.
CT_LIMIT – begrenzt die Anzahl der Verbindungen von einer einzelnen IP-Adresse zum Server. Wenn die Anzahl der Verbindungen den eingestellten Wert überschreitet, wird die IP-Adresse vorübergehend blockiert.
Schritt 7 – IP-Adressen zulassen und blockieren
Das Sperren und Zulassen von IP-Adressen ist eine der grundlegendsten Fähigkeiten einer Firewall. Im CSF kannst du IP-Adressen mit Hilfe der Konfigurationsdateien csf.deny, csf.allow und csf.ignore sperren (Blacklist), zulassen (Whitelist) oder ignorieren.
Öffne die Datei csf.deny
zur Bearbeitung.
$ sudo nano /etc/csf/csf.deny
Gesperrte IP-Adressen oder Bereiche müssen in einer Zeile hinzugefügt werden. Wenn du zum Beispiel die IP-Adresse 1.2.3.4
und den Bereich 2.3.*.*
sperren willst, füge sie wie folgt hinzu.
1.2.3.4 2.3.0.0/16
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Die erlaubten IP-Adressen müssen in der Datei csf.allow
konfiguriert werden. Die erlaubten IP-Adressen sind auch dann erlaubt, wenn sie in der Datei csf.deny
blockiert sind, also musst du darauf achten.
Öffne die Datei csf.allow
zur Bearbeitung.
$ sudo nano /etc/csf/csf.allow
Die IP-Adressen müssen auf dieselbe Weise hinzugefügt werden wie in der Sperrdatei.
Ignorierte IP-Adressen sind von den Firewall-Filtern ausgeschlossen. Sie können nur blockiert werden, wenn sie in der Datei csf.deny
aufgeführt sind. Öffne die Datei csf.ignore
zur Bearbeitung.
$ sudo nano /etc/csf/csf.ignore
Wenn du alle notwendigen Änderungen vorgenommen hast, musst du die Firewall neu starten. Verwende dazu den folgenden Befehl.
$ sudo csf -r
Schritt 8 – Schutz vor DDoS-Angriffen
Wir wollen uns ansehen, wie die CSF zum Schutz vor Distributed Denial of Service (DDoS)-Angriffen beitragen kann, indem wir die folgenden Konfigurationen vornehmen.
SYN Flood-Schutz
Dies ist eine Art von DDoS-Angriff, bei dem ein Angreifer eine große Anzahl von SYN-Paketen an einen Server sendet. Um den Schutz vor solchen Angriffen zu aktivieren, aktiviere die folgenden Einstellungen in der Datei /etc/csf/csf.conf
.
SYNFLOOD = "1" SYNFLOOD_RATE = "100/s" SYNFLOOD_BURST = "150"
Dadurch wird der SYN-Flood-Schutz aktiviert und die Raten- und Burst-Grenzen für eingehende Angriffe konfiguriert. Diese Optionen sollten nur aktiviert werden, wenn du von einem SYN-Angriff betroffen bist, weil dadurch alle neuen Verbindungen von jeder IP-Adresse verlangsamt werden.
Blocklisten
CSF lässt sich in verschiedene IP-basierte Blocklisten integrieren, um zu verhindern, dass sich bösartige IP-Adressen mit dem Server verbinden. CSF speichert bereits die Konfiguration für beliebte Blocklisten wie Spamhaus, Project Honey Pot, BruteForceBlocker, Blocklist.de, Stop Forum Spam, etc. in der Datei /etc/csf/csf.blocklists
. Öffne die Datei zur Bearbeitung.
$ sudo nano /etc/csf/csf.blocklists
Hebe die Kommentare in den folgenden Abschnitten auf, um die Spamhaus-Blocklisten zu aktivieren.
# 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
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Du kannst auch deine Blockliste hinzufügen. Das Format für das Hinzufügen einer neuen Liste ist wie folgt.
NAME|INTERVAL|MAX|URL
NAME – ist der Name der Liste mit allen Großbuchstaben und ohne Leerzeichen und maximal 25 Zeichen.
INTERVALL – Aktualisierungsintervall zum Herunterladen der Liste. Es sollte mindestens 3600 Sekunden betragen.
MAX – maximale Anzahl der IP-Adressen, die aus der Liste verwendet werden sollen. Ein Wert von 0 bedeutet alle IP-Adressen.
URL – die URL, von der die Liste heruntergeladen werden soll.
Sperrung auf Länderebene
Mit CSF kannst du den Zugriff aus bestimmten Ländern blockieren. Das kann nützlich sein, wenn du den Zugang aus Ländern einschränken willst, die dafür bekannt sind, DDoS-Angriffe zu starten. Es gibt zwei Methoden für CSF, um IP-Adressen mit Ländern abzugleichen. Die Standardmethode verwendet DB-IP, ipdeny.com und iptoasn.com als Quellen. Sie sind kostenlos und erfordern keinen Lizenzschlüssel, können aber unzuverlässig sein. Wenn du eine genaue Blockierung willst, brauchst du einen MaxMind-Lizenzschlüssel. MaxMind bietet ebenfalls eine kostenlose Lizenz an. Du kannst sie benutzen. Sobald du den Lizenzschlüssel hast, konfiguriere die folgenden zwei Einstellungen in der Datei /etc/csf/csf.conf
.
MM_LICENSE_KEY = "XXXXXXXXXXX" CC_SRC = "1"
Sobald du das konfiguriert hast, verwende die folgende Konfiguration, um IP-Adressen aus Russland zu blockieren.
CC_DENY = "RU"
Mit der folgenden Einstellung kannst du Verbindungen nur aus bestimmten Ländern zulassen.
CC_ALLOW_FILTER = "IN,GB"
Mit dieser Einstellung werden nur Verbindungen aus Indien und dem Vereinigten Königreich (UK) zugelassen. Speichere und schließe die Datei, wenn du fertig bist.
Starte die Firewall neu, sobald du die Konfiguration abgeschlossen hast.
$ sudo csf -r
Es gibt noch andere Möglichkeiten, DDoS-Angriffe zu verhindern, wie z. B. Port Flooding und Verbindungsbegrenzung, die wir bereits in Schritt 6 besprochen haben.
Schritt 9 – Häufig verwendete CSF-Befehle
Aktiviert und startet CSF.
$ sudo csf -e
Deaktiviert CSF.
$ sudo csf -x
Startet die Firewall-Regeln.
$ sudo csf -s
Flush/Stopp der Firewall-Regeln.
$ sudo csf -f
Startet die Firewall neu.
$ sudo csf -r
Fügt die IP-Adresse zur temporären Verbotsliste hinzu. (/var/lib/csf/csf.tempban
)
$ sudo csf -td 1.2.3.4
Entfernt die IP-Adresse aus der temporären Verbotsliste.
$ sudo csf -tr 1.2.3.4
Löscht alle IP-Adressen aus den temporären Einträgen.
$ sudo csf -tf
Fügt die IP-Adresse zur Deny-Liste hinzu.
$ sudo csf -d 1.2.3.4
Entfernt die IP-Adresse aus der Verweigerungsliste.
$ sudo csf -dr 1.2.3.4
Entfernt alle IP-Adressen aus der Verweigerungsliste.
$ sudo csf -dr
Erlaubt eine IP-Adresse.
$ sudo csf -a 1.2.3.4
Entfernt eine IP-Adresse aus der allow-Liste.
$ sudo csf -ar 1.2.3.4
Durchsucht die iptables- und ip6tables-Regeln nach einer IP-Adresse, CIDR und Portnummer.
$ sudo csf -g 1.2.3.4 $ sudo csf -g 80
Schritt 10 – Aktivieren der CSF-GUI
Die CSF verfügt über eine webbasierte Oberfläche zur Verwaltung der Firewall. Sie ist standardmäßig deaktiviert. Bevor wir die GUI aktivieren, müssen wir noch ein paar Perl-Module installieren.
$ sudo dnf install perl-IO-Socket-SSL.noarch perl-Net-SSLeay perl-IO-Socket-INET6 perl-Socket6 -y
Öffne die CSF-Konfigurationsdatei.
$ sudo nano /etc/csf/csf.conf
Suche die Zeile UI = "0"
und ändere den Wert wie unten angegeben.
UI = "1"
Ändere den Port, über den das Webpanel erreichbar ist. CSF verwendet standardmäßig Port 6666, der aber vom Chrome-Browser als unsicherer Port blockiert wird. Deshalb müssen wir seinen Wert ändern. Wähle einen Port, der größer als 1024 ist. Für unser Tutorial werden wir Port 1037 verwenden.
UI_PORT = "1037"
Verwende die folgende Variable, um nur ausgewählten IP-Adressen zu erlauben, sich mit dem Webpanel zu verbinden. Lass sie leer, um alle IP-Adressen auf dem Server zu verbinden.
UI_IP = "1.2.3.4"
Konfiguriere die Anmeldedaten für das Webpanel.
UI_USER = "username" UI_PASS = "password"
Standardmäßig erlaubt CSF den Zugriff auf das Web-Panel nur von den IP-Adressen, die in der Datei /etc/csf/ui/ui.allow
aufgeführt sind. Wenn du möchtest, dass es von allen IP-Adressen aus zugänglich ist, setze die Variable UI_ALLOW
auf 0
.
UI_ALLOW = "0"
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Auch die gesperrten IP-Adressen müssen der Datei /etc/csf/ui/ui.ban
hinzugefügt werden.
Das CSF-Webpanel verwendet selbstsignierte Zertifikate. Du kannst dafür auch Let’s Encrypt SSL-Zertifikate verwenden.
Schritt 11 – Let’s Encrypt SSL installieren und konfigurieren
Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen. Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installierst du den Snapd-Installer. Er benötigt das EPEL (Extra Packages for Enterprise Linux) Repository, um zu funktionieren. Da wir es aber bereits in Schritt 2 installiert haben, können wir direkt fortfahren.
Installiere Snapd.
$ sudo dnf install -y snapd
Aktiviere und starte den Snap-Dienst.
$ sudo systemctl enable snapd --now
Installiere das Snap-Kernpaket und vergewissere dich, dass deine Snapd-Version auf dem neuesten Stand ist.
$ sudo snap install core && sudo snap refresh core
Erstelle die notwendigen Links, damit Snapd funktioniert.
$ sudo ln -s /var/lib/snapd/snap /snap $ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Installiere Certbot.
$ sudo snap install --classic certbot
Stelle mit dem folgenden Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin
erstellst.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Überprüfe, ob Certbot richtig funktioniert.
$ certbot --version certbot 2.7.4
Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d csf.example.com
Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/csf.example.com
auf deinem Server heruntergeladen.
Benenne die alten selbstsignierten Zertifikate um.
$ sudo mv /etc/csf/ui/server.crt /etc/csf/ui/server.crt.old $ sudo mv /etc/csf/ui/server.key /etc/csf/ui/server.key.old
Kopiere die generierten SSL-Zertifikate in das Verzeichnis /etc/csf/ui
.
$ sudo cp /etc/letsencrypt/live/csf.example.com/fullchain.pem /etc/csf/ui/server.crt $ sudo cp /etc/letsencrypt/live/csf.example.com/privkey.pem /etc/csf/ui/server.key
Starte die Dienste CSF und LFD neu.
$ sudo systemctl restart csf lfd
Es gibt noch eine Sache, die wir konfigurieren müssen. Das SSL-Zertifikat wird alle 90 Tage automatisch erneuert, was bedeutet, dass du die Zertifikate manuell kopieren musst. Wir können dies jedoch automatisieren.
Erstelle die Datei /etc/csf/certcopy.sh
, um die Zertifikate nach jeder Erneuerung zu kopieren, und öffne sie zur Bearbeitung.
$ sudo nano /etc/csf/certcopy.sh
Füge den folgenden Code in die Datei ein.
#!/bin/sh cp -f /etc/letsencrypt/live/csf.example.com/fullchain.pem /etc/csf/ui/server.crt cp -f /etc/letsencrypt/live/csf.example.com/privkey.pem /etc/csf/ui/server.key
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Mache die Datei ausführbar.
$ sudo chmod +x /etc/csf/certcopy.sh
Öffne die Datei /etc/letsencrypt/renewal/csf.example.com.conf
zur Bearbeitung.
$ sudo nano /etc/letsencrypt/renewal/csf.example.com.conf
Füge die folgende Zeile am Ende der Datei ein.
post_hook = /etc/csf/certcopy.sh
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Mit der Option post_hook
wird das Skript certcopy.sh
nach jeder Erneuerung ausgeführt, sodass die Zertifikate nicht mehr manuell kopiert werden müssen.
Überprüfe den Certbot Erneuerungsdienst.
$ sudo systemctl list-timers
Dort findest du snap.certbot.renew.service
als einen der Dienste, die für die Ausführung vorgesehen sind.
NEXT LEFT LAST PASSED UNIT ACTIVATES --------------------------------------------------------------------------------------------------------------------------- Wed 2023-12-06 07:23:57 UTC 18min left Wed 2023-12-06 06:04:46 UTC 1h 0min ago dnf-makecache.timer dnf-makecache.service Wed 2023-12-06 07:24:15 UTC 40min left Wed 2023-12-06 00:00:01 UTC 6h ago logrotate.timer logrotate.service Wed 2023-12-06 18:39:00 UTC 10h left Wed 2023-12-06 03:25:07 UTC 2h 4min ago snap.certbot.renew.timer snap.certbot.renew.service
Führe einen Probelauf durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.
$ sudo certbot renew --dry-run
Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert. Die Zertifikate werden kopiert und du kannst sie überprüfen, indem du die Auflistung des Verzeichnisses /etc/csf/ui
überprüfst.
$ sudo ls /etc/csf/ui -al drw-------. 3 root root 130 Dec 6 05:57 . drw-------. 4 root root 4096 Dec 6 06:09 .. drw-------. 3 root root 4096 Dec 6 00:06 images -rw-r--r--. 1 root root 5242 Dec 6 06:09 server.crt -rw-------. 1 root root 1220 Jun 17 2020 server.crt.old -rw-------. 1 root root 241 Dec 6 06:09 server.key -rw-------. 1 root root 1704 Jun 17 2020 server.key.old -rw-------. 1 root root 15 Dec 5 23:34 ui.allow -rw-------. 1 root root 0 Feb 1 2013 ui.ban
Schritt 12 – Zugriff auf das CSF-Webpanel
Besuche die URL https://csf.example.com:1037
und du wirst von der folgenden Anmeldeseite begrüßt.
Gib deine Anmeldedaten ein und klicke auf die Eingabetaste, um dich einzuloggen und du erhältst die folgende Seite.
Es gibt sogar eine mobile Ansicht, zu der du über die Schaltfläche Mobile Ansicht wechseln kannst.
Im Webpanel kannst du alle Firewall-Einstellungen konfigurieren. Dieses Web-Panel lässt sich gut mit anderen Control Panels integrieren.
Schritt 13 – CSF deinstallieren
Wenn du CSF aus irgendeinem Grund entfernen möchtest, kannst du mit dem folgenden Befehl das Deinstallationsskript ausführen.
$ sudo sh /etc/csf/uninstall.sh
Aktiviere und starte die Firewalld Firewall.
$ sudo systemctl enable firewalld --now
Fazit
Damit ist der Lehrgang zur Installation und Konfiguration der Config Server Firewall (CSF) auf einem Rocky Linux 9 Server abgeschlossen. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.