Przeniesienie sprawdzonej konfiguracji vsftpd na nowy serwer z Fedorą 16 napotkałem problem. Wygląda na to, że wszystko poszło tak, jak powinno, ale uwierzytelnianie użytkownika kończy się niepowodzeniem. Nie mogę znaleźć żadnego wpisu w żadnym dzienniku wskazującym, co się stało.
Oto pełny plik konfiguracyjny:
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 wzywa mnie do podania nazwy użytkownika i hasła, podaję je, login niepoprawny. Zweryfikowałem, że ten użytkownik może zalogować się z ssh. Coś się zepsuło pam_service
.
Anonimowy (jeśli zmieniono na dozwolony) wydaje się działać dobrze.
SELinux jest wyłączony.
Wygląda na to, że Ftpsecure jest dobrze skonfigurowany ... Mam całkowitą stratę!
Oto pliki dziennika, które sprawdziłem bez powodzenia:
/var/log/messages
/var/log/xferlog #empty
/var/log/vsftpd.log #empty
/var/log/secure
Znaleziono coś w /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'
Może powinienem spojrzeć na /var/log/wtf-is-wrong.help
:-)
Więcej informacji:
/etc/pam.d/vsftpd wygląda następująco:
#%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
źródło
/etc/pam.d/vsftpd
tak myślę)?/var/log/syslog
lubdmesg
.Odpowiedzi:
Uff Rozwiązałem problem. Jest to konfiguracja, ale w /etc/pam.d/vsftpd
Ponieważ sesje ssh zakończyły się powodzeniem, a sesje ftp nie powiodły się, poszedłem do
/etc/pam.d/vsftpd, usunął wszystko, co tam było i zamiast tego umieścił zawartość pliku ./sshd, aby dokładnie pasować do reguł. Wszystko działało!
Metodą eliminacji stwierdziłem, że linia obrażająca była:
Usunięcie go pozwala mi kontynuować.
Tuning out, „pam_shells to moduł PAM, który pozwala na dostęp do systemu tylko wtedy, gdy powłoka użytkownika jest wymieniona w / etc / shells.” Spojrzałem tam i na pewno, bez uderzenia, bez niczego. Jest to, moim zdaniem, błąd w konfiguracji vsftpd, ponieważ nigdzie w dokumentacji nie ma edytora / etc / shells. Dlatego domyślna instalacja i instrukcje nie działają zgodnie z opisem.
Poszukam teraz, gdzie mogę zgłosić błąd.
źródło
/etc/shells
pomógł mi znaleźć przyczynę tej dziwnej zmiany zachowania. Użytkownik FTP został utworzonyShell: /sbin/nologin
i/sbin/nologin
został usunięty z/etc/shells
. Więc dodałem linie/sbin/nologin
i/usr/sbin/nologin
co czyniłoauth required pam_shells.so
pracę też.Używam Ubuntu i miałem ten sam problem
Rozwiązanie:
Następnie komentuj i dodaj wiersze w następujący sposób
źródło
Jak wspomniałeś we własnej odpowiedzi, powłoka użytkownika powinna być wymieniona w
/etc/shells
. Możesz ustawić/sbin/nologin
jako powłokę użytkownika, aby zabraniać ssh i zezwalać na ftp bez zmiany konfiguracji pam:źródło
Jeśli vsftpd zawiedzie z błędem
Następnie inną możliwością jest sprawdzenie, czy
pasv_addr_resolve=YES
jest ustawiony w/etc/vsftpd/vsftpd.conf
pliku. To powoduje, że nazwa hosta serwera FTP jest rozpoznawana przez DNS. Jeśli nie będzie postanowienie, tak jakby nie można DNSping yourhostname.example.com
, a następnie będziesz musiał rozwiązać ten problem rozpoznawania nazw DNS lub zestawpasv_addr_resolve=NO
W/etc/vsftpd/vsftpd.conf
i powinien przynajmniej niech vsftpd uruchomić bez błędu.źródło
Wpadłem również na to samo dziwne zachowanie, w którym skonfigurował się użytkownik FTP
na jednym System może się zalogować, a na drugim nie.
W odpowiedzi na Odpowiedź @KateYoak okazało się, że
/etc/shells
Plik był inny i nie zawierał/sbin/nologin
powłoki. w którym dokonano uwierzytelnienia PAM/etc/pam.d/vsftpd
zawieść
Po prostu dodając do
/etc/shells
pliku brakujące linieodprawa
/etc/pam.d/vsftpd
działała.Tak więc działający
/etc/shells
plik powinien mieć:źródło
w moim przypadku wybrałem komentarz do wiersza autoryzacji w pliku konfiguracyjnym /etc/pam.d/vsftpd
Oto powód. Jeśli dodasz / sbin / nologin jako system powłoki, prawdopodobnie możesz otworzyć niechciane backdoor w swoim systemie. Zamiast tego zmiana tego pliku na pewno wpływa tylko na vsftpd .
Nie wiem, czy inny proces, taki jak sshd, szuka powłok systemowych, ale myślę, że zmiana pliku pam.d jest lepszym rozwiązaniem niż inne.
źródło
Utwórz kopię zapasową pliku konfiguracyjnego przed dokonaniem zmiany;
a następnie edytuj vsftpd.conf (z vi lub nano)
Następnie wprowadź następującą zmianę
Zapisz zmianę i zrestartuj serwer ftp (jeśli używasz nano, naciśnij CTRL + O i Enter, aby zapisać, a następnie CTRL + X, aby wyjść)
źródło