vsftpd не вдалося виконати автентифікацію пам


13

Перемістивши перевірену конфігурацію vsftpd на новий сервер з Fedora 16, я зіткнувся з проблемою. Здається, все проходить як слід, але автентифікація користувача не вдається. Я не можу знайти жодного запису в жодному журналі, який би вказував, що сталося.

Ось повний конфігураційний файл:

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 кидає виклик мені ім’я користувача та пароль, я надаю їх, Неправильне вхід. Я перевірив, що цей користувач може увійти з ssh. Щось накручується pam_service.

Анонімний (якщо його змінено на дозволений), здається, працює добре.

SELinux вимкнено.

Ftpsecure, здається, налаштований нормально ... Я повністю втрачений!

Ось файли журналів, які я успішно перевірив:

/var/log/messages
/var/log/xferlog      #empty
/var/log/vsftpd.log   #empty
/var/log/secure

Знайдено щось у /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'

Можливо, я повинен дивитись на /var/log/wtf-is-wrong.help :-)

Додаткова інформація:

/etc/pam.d/vsftpd виглядає так:

#%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
Яка конфігурація PAM ( /etc/pam.d/vsftpdя думаю)?
Жил "ТАК - перестань бути злим"

Спробуйте /var/log/syslogабо dmesg.
Привіт71

pam config: сеанс необов’язковий pam_keyinit.so примусово скасувати необхідну автентифікацію pam_listfile.so item = користувальницький сенс = файл заборонити = / etc / vsftpd / ftpusers onerr = успіх потрібний auth pam_shells.so auth включати пароль для автентифікації пароля .so включає сеанс авторизації паролем
KateYoak

Відповіді:


24

Вау. Я вирішив проблему. Він становить конфігурацію, але всередині /etc/pam.d/vsftpd

Оскільки сеанси ssh вдалися, коли сеанси ftp не вдалися, я перейшов до

/etc/pam.d/vsftpd, видалив усе, що там було, і замість цього розмістив вміст ./sshd, щоб точно відповідати правилам. Всі працювали!

Методом усунення я виявив, що правопорушною лінією було:

    auth       required     pam_shells.so

Видалення його дозволяє мені продовжити.

Виходить, "pam_shells - це модуль PAM, який дозволяє отримати доступ до системи лише у тому випадку, якщо оболонка користувачів вказана в / etc / shell". Я там заглянув і досить впевнений, ні башти, ні нічого. На мою думку, це помилка в конфігурації vsftpd, оскільки ніде в документації немає редагування / etc / shell. Таким чином, установка та інструкції за замовчуванням не працюють як зазначено.

Я піду знайти, де зараз можу надіслати помилку.


/ etc / оболонки, як правило, повинні містити список прийнятних оболонок. Для цього використовується досить багато різних підсистем і, як очікується, буде правильним. Цей файл не створений і не підтримується vsftpd, а скоріше за допомогою основної установки вашого дистрибутива. Отже, це не помилка vsftpd, це помилка з налаштуванням вашого комп'ютера.
tylerl

Боже дякую! Я повинен був бачити, що користувач не може увійти в систему, що відповідає тим, хто / shell / nologin як оболонка користувача ...
mveroone

Дуже дякую! Ваш коментар про /etc/shellsмене допоміг знайти причину цієї дивної зміни поведінки. FTP-Користувач був створений із Shell: /sbin/nologinі /sbin/nologinвиявився видалений з /etc/shells. Тож я додав рядки /sbin/nologinі /usr/sbin/nologinякі також зробили auth required pam_shells.soроботу.
Бодо Гюго

4

Я використовую ubuntu і у мене була така ж проблема

Рішення:

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

Потім коментуйте та додайте рядки наступним чином

#%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

Як ви згадували у власній відповіді, оболонка користувача повинна бути вказана в /etc/shells. Ви можете встановити /sbin/nologinяк оболонку користувача для заборони ssh та дозволу ftp без зміни конфігурації пам’яті:

usermod -s /sbin/nologin restricted_ftp_user

0

Якщо vsftpd не вдається з помилкою

vsftpd.service: процес керування вийшов, код = вийшов із стану = 2

Потім інша можливість - перевірити, чи pasv_addr_resolve=YESвстановлено у /etc/vsftpd/vsftpd.confфайлі. Це призводить до вирішення імені хоста FTP-сервера через DNS. Якщо DNS не вирішиться, як, наприклад, якщо ви не можете ping yourhostname.example.com, тоді вам потрібно буде виправити цю проблему з вирішенням DNS або встановити її pasv_addr_resolve=NOв /etc/vsftpd/vsftpd.confі, принаймні, нехай дозволити запуску vsftpd без помилки.


0

Я також зіткнувся з такою ж дивною поведінкою, де налаштований FTP-користувач

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

на одній Система може увійти, а на іншій - ні.

На зміну відповіді @KateYoak виявилося, що /etc/shellsФайл відрізнявся від /sbin/nologinоболонки. який зробив аутентифікацію PAM в/etc/pam.d/vsftpd

auth       required     pam_shells.so

невдача

Просто додавши до /etc/shellsФайлу пропущені рядки

/sbin/nologin
/usr/sbin/nologin

перевірка /etc/pam.d/vsftpdспрацювала.

Отже, робочий /etc/shellsфайл повинен мати:

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

0

у моєму випадку я вибрав для коментаря рядок auth у файлі конфігурації /etc/pam.d/vsftpd

#%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

Ось вам причина. Якщо ви додасте / sbin / nologin як систему оболонки, ви, ймовірно, могли б відкрити небажаний задній простір у вашій системі. Натомість зміна цього файлу напевно впливає лише на vsftpd .

Я не знаю, чи шукає інший процес на зразок sshd системних оболонок, але я думаю, що зміна файлу pam.d є кращим рішенням, ніж інші.


-2

Резервне копіювання конфігураційного файлу перед внесенням змін;

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

а потім відредагуйте vsftpd.conf (за допомогою vi або nano)

nano /etc/vsftpd.conf

Потім внесіть наступні зміни

pam_service_name=ftp

Збережіть свою зміну та перезапустіть ftp-сервер (якщо ви використовуєте нано хіт CTRL + O & Enter, щоб зберегти, тоді CTRL + X для виходу)

sudo service vsftpd restart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.