
Ich versuche, ProFTPd mit virtuellen Benutzern zu konfigurieren, um die Clientanforderungen zu erfüllen. Derzeit teste ich lokal und habe nur einen Testbenutzer für mich selbst in der virtuellen Benutzerdatei aufgeführt (ich weigere mich, Systembenutzer zu berücksichtigen):
nicole:[secret redacted]:10001:10001::/srv/ftp/nicole:/bin/false
Beim Versuch, eine Verbindung mit demselben Benutzernamen und Kennwort herzustellen, erhalte ich die Meldung 530 Login Incorrect
: Die von generierten Protokolle proftpd -nd10
sind nicht aussagekräftig:
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): mod_auth_file/1.0: using passwd file '...'
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): retrieved UID 10001 for user 'nicole'
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): no supplemental groups found for user 'nicole'
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): ROOT PRIVS at mod_auth_pam.c:348
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): RELINQUISH PRIVS at mod_auth_pam.c:582
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): USER nicole (Login failed): Incorrect password
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_exec
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_shaper
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_wrap2
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_radius
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_delay
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD_ERR command 'PASS (hidden)' to mod_log
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD_ERR command 'PASS (hidden)' to mod_delay
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD_ERR command 'PASS (hidden)' to mod_auth
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_exec
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_rewrite
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_core
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_core
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching CMD command 'SYST' to mod_core
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD command 'SYST' to mod_exec
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD command 'SYST' to mod_log
RequireValidShell
ist deaktiviert, ebenso wie die Shell-Prüfung in der PAM-Konfiguration. Dies läuft in einem Docker-Container, daher habe ich keine PAM-Protokolle (ich sollte sie nicht brauchen, wenn ich keinen Systembenutzer verwende, oder? Dokumentation und Suchergebnisse sind diesbezüglich unklar).
Gibt es eine andere Quelle für Fehlermeldungen, die ich überprüfen kann? Ich glaube nicht, Login Incorrect
dass meineWAHRFehler, und etwas anderes läuft schief, aber ich habe seit etwa zehn Jahren nicht mehr ernsthaft mit einem FTP-Daemon gearbeitet und habe die meisten Schritte zur Fehlerbehebung vergessen.
(Mir ist bewusst, dass die Konfiguration global veralteter Protokolle wie FTP in jeder Hinsicht eine schlechte Idee™ ist und ich stattdessen buchstäblich alles andere verwenden sollte, aber ich bin mindestens zwei Grade von jeder Position entfernt, in der ich diese Art von Änderung vornehmen kann, also muss es FTP sein.)
Antwort1
Das Problem war immer noch PAM.
Die Dokumentationschwergeht davon aus, dass Sie auf Ihrem Server unbedingt Systembenutzer verwenden möchten, unabhängig davon, ob Sie virtuelle Benutzer haben oder nicht, und besteht darauf, dass Sie PAM aktiviert lassen, was mich zu der Annahme veranlasste, dass dies eine Voraussetzung für die Authentifizierung war. Das Problem ist, dass die PAM-Authentifizierung „alles oder nichts“ ist. Das heißt, wenn Sie sie aktiviert haben, werden Ihre virtuellen Benutzer effektiv ignoriert, und wenn sie nicht in der Systembenutzerdatenbank sind, wird Ihnen der Zugriff verweigert, selbst wenn alles in Ordnung ist.
Wenn Sie Systembenutzern den Zugriff auf Ihren FTP-Server verweigern möchten und über eine rein virtuelle Benutzerdatenbank verfügen, müssen Sie Ihre AuthOrder genau wie folgt einstellen:
AuthOrder mod_auth_file.c