Назад | Перейти на главную страницу

vsftpd с chroot_local_user требует сертификата клиента

При настройке моего FTPS-сервера я хочу включить chroot_local_user. При отключении все работает нормально. Однако, если я включу это, WinSCP не сможет подключиться и заявит, что мне нужен сертификат клиента для подключения. Filezilla терпит неудачу.

Если я явно установил для require_cert значение NO (даже если это значение по умолчанию), эта проблема все еще сохраняется.

Как я могу это решить?

Также будет приемлемо альтернативное решение, ограничивающее пользователей их домашней папкой.

Спасибо

Сообщение об ошибке WinSCP, вероятно, неверно (или просто предположение). Когда я пытался настроить vsftpd с chroot_local_user некоторое время назад я узнал, что vsftpd отклонит вход в систему (по соображениям безопасности), если у пользователя есть права на запись в каталог chroot. Это немного спрятано в vsftpd FAQ:

Q) Помогите! Я получаю сообщение об ошибке «отказываюсь работать с доступным для записи корнем».

А) vsftpd защищает от опасных конфигураций. Причиной этого сообщения обычно является подозрительное владение домашним каталогом ftp. Домашний каталог НЕ должен принадлежать самому пользователю ftp. Также он не должен быть доступен для записи пользователем ftp. Способ исправить это:

chown root ~ ftp; chmod -w ~ ftp

Другой причиной может быть попытка использовать chroot_local_user без правильной настройки владельца каталога.

Чтобы отладить это, добавьте log_die=YES в ваш vsftpd.conf. Затем журнал покажет что-то вроде этого:

Nov 29 16:08:55 yourhost vsftpd[2866]: pam_userdb(vsftpd:auth): user 'testuser' granted access
Nov 29 16:08:55 yourhost vsftpd[2872]: ERROR: vsftpd: refusing to run with writable root inside chroot()

Это не проблема для доступа только для чтения, но если ваши пользователи должны иметь возможность загружать файлы, вы должны создать папку в каталоге chroot, которая принадлежит соответствующему пользователю. Если вы хотите предоставить доступ по ftps к домашним каталогам ваших пользователей, это становится немного громоздко. Вероятно, вам придется вставить дополнительный уровень иерархии, т.е. /home/someuser становится /home/someuser/someuser.

Для быстрого тестирования я обнаружил, что curl очень удобен, например для проверки загрузки:

curl -T /tmp/blub -u testuser:testpass ftps://yourserver.example.com/in/