Warum ist der chroot_local_user von vsftpd unsicher?

20

Ich richte auf meinem VPS ein vsftpd ein und möchte nicht, dass Benutzer das FTP-Ausgangsverzeichnis verlassen. Ich verwende local_user ftp, nicht anonym, also fügte ich hinzu:

chroot_local_user = YES

Ich habe in vielen Forenbeiträgen gelesen, dass dies unsicher ist.

  1. Warum ist das unsicher?
  2. Wenn dies aufgrund der Verwendung von ssh zur Verbindung mit meinem VPS nicht sicher ist, kann ich diese Benutzer einfach von sshd ausschließen, oder?
  3. Gibt es eine andere Möglichkeit, dieses Verhalten von vsftpd zu erreichen? (Ich möchte nicht die Leseberechtigungen für alle Ordner / Dateien für "world" auf meinem System entfernen.)
p1100i
quelle

Antworten:

20

Hier finden Sie die FAQs zu VSFTPD, um die von Ihnen gesuchte Antwort zu finden. Unten ist der wichtige Auszug, von dem ich denke, dass er Ihre Frage beantworten wird.

F) Hilfe! Auf welche Sicherheitsrisiken wird in der Option "chroot_local_user" verwiesen?

A) Beachten Sie zunächst, dass andere FTP-Daemons die gleichen Auswirkungen haben. Es ist ein generisches Problem. Das Problem ist nicht allzu schwerwiegend, aber es ist das Folgende: Einige Leute haben FTP-Benutzerkonten, denen nicht der uneingeschränkte Shell-Zugriff vertraut wird. Wenn diese Konten auch Dateien hochladen können, besteht ein geringes Risiko. Ein fehlerhafter Benutzer hat nun die Kontrolle über das Dateisystem-Stammverzeichnis, das sein Ausgangsverzeichnis ist. Der FTP-Daemon kann dazu führen, dass einige Konfigurationsdateien gelesen werden - z. B. / etc / some_file. Mit chroot () steht diese Datei nun unter der Kontrolle des Benutzers. vsftpd ist in diesem Bereich vorsichtig. Möglicherweise möchte die libc des Systems jedoch Konfigurationsdateien für das Gebietsschema oder andere Einstellungen öffnen ...

Nic Young
quelle
Vielen Dank dafür, ich wusste das alles selbst nicht. Etwas gelernt! +1
Yanick Girouard
4
Eigentlich bin ich hierher gekommen, nachdem ich die FAQ gelesen habe, weil ich diese besorgniserregende Aussage nicht verstehe: "Der FTP - Daemon kann dazu führen, dass einige Konfigurationsdateien gelesen werden - zB / etc / some_file. Mit chroot () befindet sich diese Datei nun unter der Kontrolle von der Nutzer.". Vermutlich wäre dies nur dann der Fall, wenn vsftpdeine Sicherheitslücke (à la Buffer Overflow) vorliegt ??? Wie wird vsftpddieses Szenario durch das Ausführen mit Benutzern, die zu ihrem Home-Verzeichnis chrooted wurden, wahrscheinlicher? Bitte erklären Sie ...
sxc731
4

Das Problem ist, dass Sie nicht gleichzeitig lokale Konten verwenden und diese Konten auch für die Shell-Anmeldung deaktivieren können. Wenn Sie die Anmeldeshell auf / bin / nologin setzen, können Sie sich auch nicht mit vsftpd anmelden.

Ein besserer und sichererer FTP-Daemon wäre Pure-ftpd. Schauen Sie nach, es ist im EPEL-Repository verfügbar und ermöglicht das Erstellen virtueller Benutzer. Der Server verwendet einen gemeinsamen Benutzer / eine gemeinsame Gruppe, um alle Berechtigungen für die Basisordner der Benutzer festzulegen und die virtuellen Benutzer diesem Benutzer zuzuordnen, wenn er sich anmeldet, um mit Berechtigungen umzugehen. Das ist sicherer und Sie müssen sich nicht mit der Anmeldesicherheit von openssh befassen.

Pure-ftpd unterstützt auch eine ganze Reihe von Funktionen wie Quoten, Verhältnisse und dergleichen. Viel besser als vsftpd.

Hier ist ein einfaches Tutorial zum Installieren und Konfigurieren eines einfachen virtuellen Benutzers: http://blog.namran.net/2011/05/04/how-to-setup-virtual-ftp-server-using-pure-ftpd- In-Centos /

Wenn Sie das vollständige Dokument lesen (das Sie lesen sollten), wissen Sie, dass der Schalter -d beim Erstellen des virtuellen Benutzers ein automatisches Wechseln in dieses Verzeichnis für diesen Benutzer ist.

Yanick Girouard
quelle
Ich verwende die AllowUsers user1 user2Direktive in meiner sshd_config, wo ich nicht zulasse, dass sich der ftp_user1 mit ssh anmeldet, der Benutzer ftp_user1 jedoch mit ftp anmelden kann. Es funktioniert also wie beabsichtigt, aber meine Hauptfrage ist noch offen. Warum ist es unsicher?
p1100i
4
Ja, es wird! Sie müssen nur die "Nicht-Shell" zu / etc / shells hinzufügen. Auf vielen Systemen ist entweder / bin / false oder / bin / nologin in / etc / shells vorhanden. Wenn die Shell vorhanden ist, können Sie sich mit vsftpd anmelden, auch wenn chroot_local_user aktiviert ist.
Frands Hansen
1
Ich stehe dann korrigiert. Vielen Dank für den Hinweis!
Yanick Girouard