vsftpd не проходит проверку подлинности pam

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
KateYoak
источник
1
Какова конфигурация PAM ( /etc/pam.d/vsftpdя думаю)?
Жиль "ТАК - перестать быть злым"
Попробуйте /var/log/syslogили dmesg.
Hello71
pam config: session необязательный pam_keyinit.so принудительное аннулирование требуется авторизация pam_listfile.so item = user sense = отказать в файле = / etc / vsftpd / ftpusers onerr = успешное завершение авторизации требуется pam_shells.so авторизация включает учетную запись пароля-аутентификации включает пароль-авторизацию сеанса требуется pam_loginuid .so сеанс включает пароль-аутентификацию
KateYoak

Ответы:

24

Уф. Я решил проблему. Это составляет конфиг, но в /etc/pam.d/vsftpd

Поскольку сеансы ssh были успешными, а сеансы ftp - неудачными, я перешел к

/etc/pam.d/vsftpd, удалил все, что там было, и вместо этого поместил содержимое ./sshd, чтобы точно соответствовать правилам. Все сработало!

По методу исключения я обнаружил, что оскорбительная строка была:

    auth       required     pam_shells.so

Удаление этого позволяет мне продолжить.

Отключается: «pam_shells - это модуль PAM, который разрешает доступ к системе, только если оболочка пользователя указана в / etc / shells». Я посмотрел туда и, конечно же, ни баш, ни ничего. На мой взгляд, это ошибка в конфигурации vsftpd, так как нигде в документации вы не редактируете / etc / shells. Таким образом, установка по умолчанию и инструкции не работают, как указано.

Я пойду найти, где я могу отправить ошибку сейчас.

KateYoak
источник
Обычно предполагается, что / etc / shells содержит список допустимых оболочек. Это используется довольно многими различными подсистемами и, как ожидается, будет правильным. Этот файл создается или поддерживается не vsftpd, а настройкой ядра вашего дистрибутива. Так что это не ошибка vsftpd, это ошибка настройки вашего компьютера.
Тайлер
Боже, спасибо! Я должен был видеть, что пользователь, который не может войти в систему, сопоставил пользователей с / sbin / 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
Gadelkareem
источник
0

Как вы упомянули в своем ответе, пользовательская оболочка должна быть указана в /etc/shells. Вы можете установить в /sbin/nologinкачестве пользовательской оболочки запрет ssh и разрешение ftp без изменения конфигурации pam:

usermod -s /sbin/nologin restricted_ftp_user
ml43
источник
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 запускаться без ошибки.

allella
источник
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

в моем случае я выбрал комментарий для строки авторизации в файле конфигурации /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-сервер (если вы используете nano, нажмите CTRL + O & enter для сохранения, затем CTRL + X для выхода)

sudo service vsftpd restart
Шоаиб Чикате
источник