vsftpd schlägt bei der Pam-Authentifizierung fehl


12

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

1
Was ist die PAM-Konfiguration ( /etc/pam.d/vsftpddenke ich)?
Gilles 'SO- hör auf böse zu sein'

Versuchen Sie /var/log/syslogoder dmesg.
Hallo71

pam config: session optional pam_keyinit.so Aufheben der Authentifizierung erzwingen erforderlich pam_listfile.so item = user sense = ablehnen file = / etc / vsftpd / ftpusers onerr = erfolgreiches Authentifizieren erforderlich .so Sitzung gehören Passwort-
Authentifizierung

Antworten:


23

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:

    auth       required     pam_shells.so

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.


/ etc / shells soll normalerweise eine Liste akzeptabler Shells enthalten. Dies wird von vielen verschiedenen Subsystemen verwendet und es wird erwartet, dass es korrekt ist. Diese Datei wird nicht von vsftpd erstellt oder verwaltet, sondern vom Kern-Setup Ihrer Distribution. Dies ist also kein vsftpd-Fehler, sondern ein Fehler bei der Einrichtung Ihres Computers.
tylerl

Gott danke! Ich hätte sehen sollen, dass Benutzer, die sich nicht anmelden können, die mit / sbin / nologin als Benutzer-Shell übereinstimmen ...
übereinstimmt

Ich danke dir sehr! Ihr Kommentar zu /etc/shellshat mir geholfen, den Grund für diese seltsame Verhaltensänderung zu finden. Der FTP-Benutzer wurde mit Shell: /sbin/nologinund angelegt/sbin/nologin erwies sich als entfernt /etc/shells. Also habe ich die Zeilen hinzugefügt /sbin/nologinund /usr/sbin/nologinwas hat auch auth required pam_shells.sofunktioniert.
Bodo Hugo Barwich

4

Ich benutze Ubuntu und hatte das gleiche Problem

Lösung:

add-shell /sbin/nologin
sudo usermod -s /sbin/nologin ftpme
sudo vi /etc/pam.d/vsftpd

Kommentieren und fügen Sie dann die folgenden Zeilen hinzu

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/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
@include common-auth
@include common-account
@include common-password
@include common-session

0

Wie Sie in Ihrer eigenen Antwort erwähnt haben, sollte die Benutzer-Shell in aufgeführt sein /etc/shells . Sie können /sbin/nologinals Benutzer-Shell festlegen , dass ssh verboten und FTP zugelassen wird, ohne die Pam-Konfiguration zu ändern:

usermod -s /sbin/nologin restricted_ftp_user

0

Wenn vsftpd mit einem Fehler von fehlschlägt

vsftpd.service: Steuerprozess beendet, Code = beendet Status = 2

Dann ist eine andere Möglichkeit zu prüfen, ob pasv_addr_resolve=YESin der /etc/vsftpd/vsftpd.confDatei 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önnen ping yourhostname.example.com, müssen Sie das Problem mit pasv_addr_resolve=NOder DNS-Auflösung beheben oder die /etc/vsftpd/vsftpd.confOption festlegen. Dann sollte vsftpd zumindest ohne den Fehler gestartet werden.


0

Ich bin auch auf das seltsame Verhalten gestoßen, mit dem ein FTP-Benutzer konfiguriert wurde

# finger <user>
Login: <user>                   Name: 
Directory: /home/user-dir           Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.

Auf einem System kann sich einloggen und auf dem anderen nicht.

In Erweiterung der Antwort von @KateYoak stellte sich heraus, dass die /etc/shellsDatei anders war und die /sbin/nologinShell nicht enthielt . das machte die PAM-Authentifizierung in/etc/pam.d/vsftpd

auth       required     pam_shells.so

Scheitern

Fügen Sie einfach /etc/shellsdie fehlenden Zeilen zur Datei hinzu

/sbin/nologin
/usr/sbin/nologin

Das Einchecken hat /etc/pam.d/vsftpdfunktioniert.

So sollte eine Arbeitsdatei /etc/shellshaben:

# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

0

in meinem Fall habe ich mich für die Kommentar - Auth Zeile in der /etc/pam.d/vsftpd Konfigurationsdatei

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/f$
#auth       required    pam_shells.so
auth       include  password-auth
account    include  password-auth
session    required     pam_loginuid.so
session    include  password-auth

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.


-2

Sichern Sie die Konfigurationsdatei, bevor Sie eine Änderung vornehmen.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.back

und dann editiere vsftpd.conf (mit vi oder nano)

nano /etc/vsftpd.conf

Nehmen Sie dann die folgende Änderung vor

pam_service_name=ftp

Speichern Sie Ihre Änderung und starten Sie den FTP-Server neu.

sudo service vsftpd restart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.