Вопрос или проблема
Пытаюсь использовать pam_lastlog для регистрации последнего входа на ftp сервере, vsftp с виртуальными пользователями. Виртуальные пользователи не присутствуют как “реальные” пользователи в системе, но используют модуль pam_pwdfile для аутентификации. Следовал в основном рекомендациям из https://wiki.archlinux.org/title/Very_Secure_FTP_Daemon
man vsftpd.conf:
session_support
Это управляет тем, пытается ли vsftpd поддерживать сессии для входов в систему. Если vsftpd поддерживает сессии, он будет пытаться обновить utmp и wtmp. Он также откроет pam_session при использовании PAM для аутентификации и закроет ее только при выходе. Вы можете отключить это, если вам не требуется ведение журналов сессий, и вы хотите предоставить vsftpd больше возможностей работать с меньшим количеством процессов и/или меньшими привилегиями. ПРИМЕЧАНИЕ – поддержка utmp и wtmp предоставляется только с собранными версиями с включенным PAM.
По умолчанию: НЕТ
С включенной поддержкой сессий auth.log показывает:
Dec 2 11:09:15 ftp2 vsftpd: pam_umask(vsftpd:session): учетная запись для мониторинга не найдена
Dec 2 11:09:15 ftp2 vsftpd: pam_unix(vsftpd:session): сессия открыта для пользователя monitoring(uid=getpwnam error) пользователем (uid=0)
Замечание: имя пользователя – monitoring
vsftp, похоже, корректно обновляет wtmp и работает:
# last -s today -3 -w
monitoring vsftpd:31604 127.0.0.1 Mon Dec 2 12:53 - 12:53 (00:00)
monitoring vsftpd:31597 127.0.0.1 Mon Dec 2 12:48 - 12:48 (00:00)
monitoring vsftpd:31589 127.0.0.1 Mon Dec 2 12:43 - 12:43 (00:00)
Когда я добавляю “session required pam_lastlog.so”, я больше не могу войти на ftp сервер (получаю “530 Неверный логин.”), в auth.log не записывается никакая информация, пока pam_lastlog включен.
Конфигурация
/etc/pam.d/vsftpd:
session sufficient pam_lastlog.so
auth required pam_pwdfile.so pwdfile /etc/vsftpd/vsftp-users
account required pam_permit.so
/etc/vsftpd.conf:
allow_anon_ssl=NO
allow_writeable_chroot=YES
anonymous_enable=NO
chroot_local_user=YES
dual_log_enable=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
guest_enable=YES
guest_username=vsftpd
hide_ids=YES
listen=YES
local_enable=YES
local_root=/mnt/ftp/home/$USER
local_umask=022
log_ftp_protocol=YES
mdtm_write=YES
nopriv_user=vsftpd
pam_service_name=vsftpd
pasv_address=ftp.domain.com
pasv_addr_resolve=YES
pasv_enable=YES
pasv_max_port=50100
pasv_min_port=50000
pasv_promiscuous=NO
require_ssl_reuse=NO
rsa_cert_file=/etc/ssl/private/domain.pem
session_support=YES
ssl_ciphers=ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:@STRENGTH
ssl_enable=YES
strict_ssl_read_eof=NO
debug_ssl=YES
user_config_dir=/etc/vsftpd/conf.d
user_sub_token=$USER
utf8_filesystem=YES
virtual_use_local_privs=YES
vsftpd_log_file=/var/log/vsftpd.log
write_enable=YES
xferlog_enable=YES
xferlog_std_format=NO
Ubuntu 22.04
vsftpd 3.0.5 (из репозитория os)
Похоже, что pam_lastlog устарел в пользу pam_lastlog2, который требует пакет “util-linux” >2.40, который пока недоступен в любой текущей версии Ubuntu LTS. Так что на данный момент мы застряли на pam_lastlog.
Ответ или решение
Конечно! Давайте подробно разберем, как включить логи последнего входа для FTP-сервера, используя pam_lastlog
с приложением vsftpd
, учитывая все упомянутые вами детали.
Введение
Настройка логирования последнего входа пользователей на FTP-сервере с использованием vsftpd
может оказаться сложной задачей, особенно если вы используете виртуальных пользователей через pam_pwdfile
. В этом руководстве мы подробно обсудим, как правильно подключить модуль pam_lastlog
, чтобы отслеживать последние подключения пользователей, и что делать, если у вас возникают проблемы с аутентификацией.
Шаг 1: Понимание конфигурации PAM и vsftpd
Поскольку вам необходимо использовать виртуальных пользователей, которые не представлены как реальные пользователи в системе, настройка PAM (Pluggable Authentication Module) становится критически важной. Основная цель заключается в правильной конфигурации файла /etc/pam.d/vsftpd
, чтобы обеспечить совместимость между pam_lastlog
и pam_pwdfile
.
Пример конфигурации PAM
Ваша текущая конфигурация не совсем отвечает требуемым условиям. Попробуйте следующую конфигурацию для файла /etc/pam.d/vsftpd
:
auth required pam_pwdfile.so pwdfile /etc/vsftpd/vsftp-users
account required pam_permit.so
session required pam_lastlog.so
session optional pam_unix.so
Этот порядок важен. Мы помещаем pam_lastlog.so
в секцию управления сессией, что позволит ему обновлять логи входа для пользователей.
Шаг 2: Настройка конфигурации vsftpd
Убедитесь, что в вашем конфигурационном файле vsftpd.conf
включены необходимые параметры:
session_support=YES
pam_service_name=vsftpd
Это уже сделано в вашем случае, и это правильно.
Шаг 3: Проверка наличия записи в журнале
После внесения этих изменений вам необходимо будет перезапустить службу vsftpd
и проверить журналы. Используйте команды:
sudo systemctl restart vsftpd
sudo tail -f /var/log/auth.log
Проверьте наличие ошибок, связанных с pam_lastlog
. Если вы по-прежнему получаете сообщение "530 Login incorrect", это может быть связано с неправильными учетными данными или синтаксическими ошибками в конфигурационных файлах.
Шаг 4: Проверка наличия пакетов и их версий
Так как было упомянуто, что pam_lastlog
может быть устаревшим, убедитесь, что у вас установлена последняя версия util-linux
, которая может включать необходимые обновления. Установите пакет с помощью команды:
sudo apt-get install util-linux
Шаг 5: Логи и отладка
Если проблема с логином сохраняется, включите детализированное логирование для vsftpd
, добавив следующую строку в конфигурацию:
log_ftp_protocol=YES
Это поможет вам увидеть, что именно происходит во время процесса аутентификации.
Заключение
Интеграция pam_lastlog
для отслеживания последних входов на FTP-сервера с виртуальными пользователями требует точной настройки. Следуя указанным выше шагам, вы сможете корректно настроить логирование входов. Также рекомендуем создавать резервные копии конфигурационных файлов перед внесением изменений и тестировать их в безопасной среде.
Если проблематика с доступом продолжает возникать, задумайтесь о развертывании мониторинга или инструментов отладки, которые предоставляют более детализированную информацию о том, что именно происходит на уровне PAM и vsftpd
.