Beim Verschieben einer bewährten vsftpd-Konfiguration auf einen neuen Server mit Fedora 16 stieß ich auf ein Problem. Alles scheint zu funktionieren, aber die Benutzerauthentifizierung schlägt fehl. Ich kann in keinem Protokoll einen Eintrag finden, der angibt, was passiert ist.
Hier ist die vollständige Konfigurationsdatei:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=0
data_connection_timeout=0
nopriv_user=ftpsecure
connect_from_port_20=YES
listen=YES
chroot_local_user=YES
chroot_list_enable=NO
ls_recurse_enable=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
FTP fordert mich zur Eingabe eines Benutzernamens und eines Passworts auf. Ich gebe diese an. Login inkorrekt. Ich habe bestätigt, dass dieser Benutzer sich über ssh anmelden kann. Etwas ist durcheinander pam_service
.
Anonym (wenn in erlaubt geändert) scheint gut zu funktionieren.
SELinux ist deaktiviert.
Ftpsecure scheint in Ordnung zu sein ... Ich bin völlig ratlos!
Hier sind die Protokolldateien, die ich ohne Erfolg überprüft habe:
/var/log/messages
/var/log/xferlog #empty
/var/log/vsftpd.log #empty
/var/log/secure
Etwas gefunden in /var/log/audit/audit.log
:
type=USER_AUTH msg=audit(1335632253.332:18486): user pid=19528 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="kate" exe="/usr/sbin/vsftpd" hostname=ip68-5-219-23.oc.oc.cox.net addr=68.5.219.23 terminal=ftp res=failed'
Vielleicht sollte ich mal schauen /var/log/wtf-is-wrong.help
:-)
Weitere Infos:
/etc/pam.d/vsftpd sieht folgendermaßen aus:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
quelle
/etc/pam.d/vsftpd
denke ich)?/var/log/syslog
oderdmesg
.Antworten:
Wütend. Ich habe das Problem gelöst. Es handelt sich um eine Konfiguration, die sich jedoch in /etc/pam.d/vsftpd befindet
Da ssh-Sitzungen erfolgreich waren, während ftp-Sitzungen fehlschlugen, ging ich zu
/etc/pam.d/vsftpd, entfernte alles, was sich dort befand, und platzierte stattdessen den Inhalt von ./sshd, um genau den Regeln zu entsprechen. Alles hat funktioniert!
Durch die Methode der Beseitigung stellte ich fest, dass die beleidigende Linie war:
Durch Entfernen kann ich fortfahren.
"Pam_shells ist ein PAM-Modul, das nur dann Zugriff auf das System gewährt, wenn die Benutzer-Shell in / etc / shells aufgeführt ist." Ich schaute dort und sicher genug, kein Schlag, kein nichts. Dies ist meiner Meinung nach ein Fehler in der vsftpd-Konfiguration, da Sie an keiner Stelle in der Dokumentation / etc / shells bearbeiten müssen. Daher funktionieren Standardinstallation und Anweisungen nicht wie angegeben.
Ich werde nachsehen, wo ich den Bug jetzt einreichen kann.
quelle
/etc/shells
hat mir geholfen, den Grund für diese seltsame Verhaltensänderung zu finden. Der FTP-Benutzer wurde mitShell: /sbin/nologin
und angelegt/sbin/nologin
erwies sich als entfernt/etc/shells
. Also habe ich die Zeilen hinzugefügt/sbin/nologin
und/usr/sbin/nologin
was hat auchauth required pam_shells.so
funktioniert.Ich benutze Ubuntu und hatte das gleiche Problem
Lösung:
Kommentieren und fügen Sie dann die folgenden Zeilen hinzu
quelle
Wie Sie in Ihrer eigenen Antwort erwähnt haben, sollte die Benutzer-Shell in aufgeführt sein
/etc/shells
. Sie können/sbin/nologin
als Benutzer-Shell festlegen , dass ssh verboten und FTP zugelassen wird, ohne die Pam-Konfiguration zu ändern:quelle
Wenn vsftpd mit einem Fehler von fehlschlägt
Dann ist eine andere Möglichkeit zu prüfen, ob
pasv_addr_resolve=YES
in der/etc/vsftpd/vsftpd.conf
Datei eingestellt ist. Dadurch wird der Hostname des FTP-Servers über DNS aufgelöst. Wenn sich DNS nicht auflösen lässt, wie wenn Sie es nicht könnenping yourhostname.example.com
, müssen Sie das Problem mitpasv_addr_resolve=NO
der DNS-Auflösung beheben oder die/etc/vsftpd/vsftpd.conf
Option festlegen. Dann sollte vsftpd zumindest ohne den Fehler gestartet werden.quelle
Ich bin auch auf das seltsame Verhalten gestoßen, mit dem ein FTP-Benutzer konfiguriert wurde
Auf einem System kann sich einloggen und auf dem anderen nicht.
In Erweiterung der Antwort von @KateYoak stellte sich heraus, dass die
/etc/shells
Datei anders war und die/sbin/nologin
Shell nicht enthielt . das machte die PAM-Authentifizierung in/etc/pam.d/vsftpd
Scheitern
Fügen Sie einfach
/etc/shells
die fehlenden Zeilen zur Datei hinzuDas Einchecken hat
/etc/pam.d/vsftpd
funktioniert.So sollte eine Arbeitsdatei
/etc/shells
haben:quelle
in meinem Fall habe ich mich für die Kommentar - Auth Zeile in der /etc/pam.d/vsftpd Konfigurationsdatei
Hier bist du der Grund. Wenn Sie / sbin / nologin als Shell-System hinzufügen , können Sie möglicherweise eine unerwünschte Hintertür in Ihrem System öffnen. Stattdessen wirkt sich das Ändern dieser Datei sicherlich nur auf vsftpd aus .
Ich weiß nicht, ob ein anderer Prozess wie sshd nach System-Shells sucht, aber ich denke, das Ändern der Datei pam.d ist eine bessere Lösung als andere.
quelle
Sichern Sie die Konfigurationsdatei, bevor Sie eine Änderung vornehmen.
und dann editiere vsftpd.conf (mit vi oder nano)
Nehmen Sie dann die folgende Änderung vor
Speichern Sie Ihre Änderung und starten Sie den FTP-Server neu.
quelle