Schlagwort-Archive: GNU/Linux

Unixähnliche Mehrbenutzer-Betriebssysteme, die auf dem Linux-Kernel und wesentlich auf GNU-Software basieren. Wie CentOS, Debian, Ubuntu Fedora.

FTP-Server Installation mit VSFTPD

FTP-Server Installation mit VSFTPD und Absicherung mit Fail2ban

Very Secure File Transfer Protocol Deamon (VSFTPD), wie uns das gleichnamige Dienstprogramm verspricht, ist VSFTPD ein sicherer FTP-Daemon, dieser als Standard-FTP-Server von den meisten Linux Distributionen verwendet wird, so in Debian, Ubuntu, CentOS, Fedora, RHEL und weiteren mehr. VSFTPD ist ein stabiler FTP-Server dieser unter der GNU General Public License autorisiert ist. VSFTPD wurde entwickelt für eine sichere und einfache Unterstützung virtueller Clients mit PAM (Pluggable Authentication Modules). In diesem Tutorial wird gezeigt, wie man VSFTPD installiert und mit Fail2ban auf Debian 10 (buster) oder anderen Linux Versionen implementiert. Fail2ban ist ein in Python geschriebenes Intrusion Prevention System, das auf jedem Linux Betriebssystem läuft, dieses eine manipulierbare Firewall beinhaltet.

INSTALLATION

Unter Debian und Ubuntu wird VSFTPD mit dem apt Paket Manager aus dem Standard Repository installiert.

Bei CentOS und RHEL wird VSFTPD mit YUM installiert.

Nach der Installation geht’s zur Konfiguration von VSFTPD.

Bei CentOS / RHEL / Fedora ist vsftpd.conf unter /etc/vsftpd.

  Wer nicht mit VIM arbeitet, kann mit nano oder ne editieren.

Wir deaktivieren die anonyme Anmeldung und erlauben lokalen Benutzern zu schreiben.

chroot für FTP Benutzer

chroot steht für change root und ist eine Funktion für Unixoide Systeme, um das Rootverzeichnis zu ändern. chroot wirkt sich nur auf den aktuellen Prozess und seine Child-Prozesse aus, es ist ein einfacher Jail-Mechanismus in dem das FTP-Dienstprogramm verhindert das Benutzer auf Dateien ausserhalb seines Verzeichnisses zugreifen können. chroot bietet auch eine einfache Möglichkeit, nicht vertrauenswürdige Daten in eine Sandbox zu versetzen. Die chroot Einstellungen für VSFTPD Benutzer findet man in der Datei vsftpd.conf bei Zeile chroot_local_user und ändere dort auf YES, so auch bei chroot_list_enable.

Alle Benutzer werden chroot zugeteilt, bis auf einige die befreit sind, dazu wird die Datei /etc/vsftpd.chroot_list erstellt, diese Benutzer enthält, die von chroot ausgeschlossen werden.

  CentOS / RHEL Pfad /etc/vsftpd/vsftpd.chroot_list

Um für bestimmte Benutzer die Anmeldung ganz zu verweigern, fügen wir der Datei vsftpd.conf folgende Zeilen hinzu.

Erstelle eine Datei vsftpd.userlist und füge Benutzer hinzu diese abgeleht werden sollen. Abgelehnt werden sollten die Service Accounts, da diese gerne für Angriffe genutzt werden. Benutzer pro Zeile hinzufügen, Beispiel: vsftpd.userlist

SFTP verschlüsselte Authentifizierung

Damit Passwörter nicht im Klartext gesendet werden, diese Optionen zur Konfigurationsdatei hinzufügen, einige davon sind bereits verhanden, überprüfe diese und ändere ggf. die Optionen.

Anmerkung: Wird der SSH Server auf dem System ausgeführt, muss beachtet werden, das per Standard SFTP durch den SSH Daemon bereits ausgeführt wird, deshalb die Datei /etc/ssh/sshd_config überprüfen.

TIP! Weitere empfohlene VSFTPD Einstellungen

VSFTPD Schutz mit Fail2ban

Um den FTP-Server vor Brute-Force Angriffe zu schützen, wird Fail2ban (Fehlschlag führt zum Bann) für VSFTPD aktiviert. Bei einer definierten Anzahl fehlgeschlagener Anmeldeversuche, wird der verdächtige Host für eine bestimmte Zeit gesperrt. Fail2ban liest die Anmeldeversuche aus den Logdateien. Hierzu wird Fail2ban auf dem FTP-Server installiert.

Für Fail2ban und VSFTPD die Datei jail.local erstellen, falls nicht bereits vorhanden.

  Weiter kann die Datei jail.conf kopiert werden, oder es werden einzelne Blöcke der Services in jail.local hinzugefügt.

Der Fail2ban Filter für VSFTPD enthält die Datei unter /etc/fail2ban/filter.d/vsftpd.conf

  Im Standard wird /var/log/vsftpd.log ausgelesen, was mit der Variable %(vsftpd_log)s vordefiniert ist.

Für die funktionsweise von Fail2ban sind die Logs von bedeutung. Der FTP-Server (VSFTPD) protokolliert in der Logdatei /var/log/vsftpd.log. Fail2ban ist flexibel und kann für die meisten Anforderungen angepasst werden, wird zusätzlich ein weiteres Diensprogramm eingesetzt, dieses xferlog voraussetzt, kann mit dual_log_enable=YES in beide Logdateien protokolliert werden.

Um änderungen von Fail2ban zu übernehmen, muss der Daemon neu gestartet werden.

Die von Fail2ban gesperrten IP Adressen können überprüft werden, hier als root mit folgendem fail2ban-client Kommando.

Alternative IP Adresse hinzufügen

Zusätzlich zweite IP-Adresse zu Netzwerk Interface hinzufügen

Wenn Netzwerk Geräte diese verwaltet werden sollen in unterschiedlichen Subnets sind, hilft das hinzufügen einer zweiten IP-Adresse zum Netzwerk Interface. Wie bei Windows Clients, unter Linux und für macOS alternative IP-Einstellungen vorgenommen werden, zeigt dieser Beitrag.

Alternative IPv4-Adresse bei Windows

Um Windows für ein zusätzliches Netzwerk zu konfigurieren, werden die alternativen IP-Einstellungen geöffnet.

Windows-Logo + R

Hierzu wie folgt mit drücken der Tasten, Windows-Logo + R das Fenster Ausführen öffnen.

Öffnen ncpa.cpl ausführen

In das Feld ncpa.cpl eingeben und OK klicken.

Die Einstellungen für Netzwerkverbindungen werden geöffnet.

Netzwerkverbindungen control panel

Im geöffneten Fenster Netzwerkverbindungen, über dem aktiven Netzwerkadapter mit Rechtsklick auf Eigenschaften gehen.

Internetprotokoll Version 4 Eigenschaften

Die Zeile Internetprotokoll Version 4 (TCP/IPv4) markieren und auf Eigenschaften klicken, dabei den Hacken nicht entfernen.

Eigenschaften von Internetprotokoll Version 4 (TCP/IPv4), Alternative Konfiguration

Im Abschnitt Alternative Konfiguration eine IP-Adresse eintragen, zB. 192.168.1.2 und die Subnetmaske 255.255.255.0. Die Eingabe mit Klick auf OK bestätigen, um die alternative IP-Adresse zu aktivieren.

Alternative IPv4-Adresse unter Linux

Unter Linux können mehrere IP-Adressen für Netzwerkschnittstellen konfiguriert werden. Wie man temporär eine weitere IP zu einem Netzwerk Interface (Netzwerkkarte) hinzufügt, zeigt folgender Befehl, als Root oder mit sudo in der Linux Shell.

Das Netzwerk Interface eth0 kann anders lauten, mit ip link und ip address, oder ifconfig werden die Netzwerkschnittstellen abgefragt. Dabei werden alle Links, wie das loopback Inetrface mit einer Index Nummer ausgegeben, je nachdem wie das System genutzt wird, können bei der verwendung von Docker oder Virtualbox auch virtuelle Links, wie virbr0 darunter sein, oder mit wlp2s0 ein WiFi Interface.

Bei modernen Linux Distributionen wie Debian 10 (buster) oder CentOS 7 und neuer, wird das Command ip address ausgeführt.

Alternative IP-Adresse bei macOS

In macOS Terminal zweite IP-Adresse zu Interface en0 hinzufügen.

Das Gerät kann nun mit Ping überprüft werden, und sofern möglich über SSH oder HTTP, beispielsweise zu 192.168.1.100 verbunden werden.

Bei Linux und macOS ist SSH built in und kann direkt aus dem Terminal genutzt werden.

Verdächtige IP mit Linux Firewall Daemon sperren

Brute-Force Angriffe mit Firewall Daemon blockieren aus Bash Script

Firewall Daemon für den Schutz vor laufenden Brute-Force Attacken, bei der Erkennung versuchter Angriffe auf den Linux Host. Um den Host permanent zu schützen, können verdächte Anfragen von angreifenden Quellen schnell gesperrt werden. Das folgende bash Script sperrt die IP, diese als Argument übergeben wird und von firewall-cmd auf reject gesetzt wird.

Das Script wurde auf Debian 10 (buster) geschrieben, bei Debian muss firewalld erst installiert werden, wie auch unter Ubuntu 20. Bei RHEL und CentOS Linux 7+ und Fedora 30 oder höher ist firewalld im Standard und das Script ist gleich anwendbar.

Firewalld Installation auf Debian

Das firewalld-Paket ist in den offiziellen Debian 10 Repositorys verfügbar. Die Installation ist unschwer wie folgender Ablauf zeigt.

Bereitstellung von Firewalld im Terminal mit Root Privileg.

Wenn ufw aktiviert ist, muss die Uncomplicated Firewall (ufw) zur Verwaltung der Netfilter deaktiviert werden, um firewalld zur Standard-Firewall zu machen.

Den Firewall daemon starten und für den Systemstart aktivieren.

Ausführung und Erreichbarkeit überprüfen.

Laden der neuen Firewall-Regeln unter beibehalten des Status.

Erscheint bei Debian nach firewall-cmd –reload der Fehler:

Error: COMMAND_FAILED: ‚/usr/sbin/ip6tables-restore -w -n‘ failed: ip6tables-restore v1.8.2 (nf_tables:
line 4: RULE_REPLACE failed (no such file ordirectory): rule in chain OUTPUT

Ist die Lösung das Ausführen von update-alternatives, um Debian zu erzwingen, iptables anstelle von nftables zu verwenden.

Nach dem wechsel von nftables zu iptables den Linux Rechner mit reboot neu starten.

Firewalld Konfiguration

Firewalld ist eine Firewall-Verwaltungslösung als Frontend für das vom Linux-Kernel bereitgestellte iptables-Paketfiltersystem. firewall-cmd ist das Dienstprogramm zum Verwalten der Firewall-Konfiguration. Der firewalld Daemon verwaltet Gruppen von Regeln mithilfe von Entitäten, die als „Zonen“ bezeichnet werden. Zonen sind wie Regelsätze, die festlegen, welcher Datenverkehr zugelassen werden soll, anhand des Vertrauen der Netzwerke, mit denen der Computer verbunden ist. Den Netzwerkschnittstellen wird eine Zone zugewiesen, um das Verhalten festzulegen, das die Firewall zulassen soll.

Ein Netzwerk Interface zur Default Zone public zugewiesen, unter Verwendung des firewall-cmd Tools, mit dem Kommand zur Überprüfung von Zonen und den Interfaces.

Erscheint bei interfaces (bei Zeile 6) keine Netzwerk Schnittstelle, muss dieses der Zone noch zugeweisen werden, dazu mit ip oder ifconfig (net-tools) die Schnittstellen abfragen.

Hier bei unserem virtuellen Debian (buster) ist es Link 2 ens33.

Das Interface ens33 wird zur Default Zone public zugewiesen.

Das zur Zone zugewiesene Interface überprüfen mit der Ausgabe.

Das Interface ens33 ist mit der Zone verbunden.

Fail2ban und Firewalld Interaktion

Fail2ban (Fehlschlag führt zum Bann) ist ein in Python entwickeltes IPS und Framework zur Vorbeugung gegen Einbrüche, das auf allen Unixoiden OS läuft, die ein manipulierbares Paketfiltersystem oder eine Firewall besitzen wie iptables oder firewalld unter Linux.

Bei Zeile 13 im Script reject.sh (oben), wird falls vorhanden und ausgeführt, die von Fail2ban verbannten (banned) Adressen nach der manipulation von firewalld, den zuvor aktive Zustand wieder hergestellt. Wird Fail2ban nicht angewandt, können die Zeilen 12 – 14 gelöscht werden.

Script ausführen

Mit Übergabe der Source-IP wird das Script in der bash ausgeführt, um verdächtige Anfragen durch die Firewall abzulehnen.

Die abgelehnte IP-Adresse kann mit folgender Kommandozeile in der Shell wieder entfernt werden.

Die Regel mit firewall-cmd –remove wieder entfernen.

Mit firewall-cmd –reload wird die Änderung aktiviert.

Anwendung und Hilfe zu firewall-cmd

Ausgeben der geänderten und aktivierten Regel der Zone Public.

Aktuelle Firewall Regeln überprüfen mit folgenden Kommandos.

Standardzone für Verbindungen und Schnittstellen ausgeben.

Eine Zone zur Defaultzone festlegen.

Derzeit aktive Zonen ausgeben.

Vordefinierte Zonen ausgeben.

Hilfe und man page von firewall-cmd ausgeben.