Иногда возникает необходимость настроить виртуальных пользователей и SSL-шифрование в FTP-сервере vsftpd. Рассмотрим как это сделать в Debian Squeeze.Все действия выполняются от пользователя root. Сперва установим необходимые утилиты:
aptitude install vsftpd openssl db4.8-util ftp-ssl
где
vsftpd - непосредственно FTP сервер;
penssl - утилита создания SSL сертификатов, которые требуются в SSL режиме FTP сервера;
db4.8-util - утилиты работы с базой данных BerkeleyDB, в которой будут хранится виртуальные пользователи;
ftp-ssl - SSL версия FTP клиента, эта утилита нужна только на клиентской стороне.
Добавим пользователя в систему, через которого будут работать виртуальные FTP-пользователи:
useradd -d /home/ftp virtual
Теперь изменим конфигурацию FTP сервера. Данных директив в файле конфигурации по-умолчанию нет, поэтому их можно просто добавить в конец файла /etc/vsftpd.conf:
# включаем гостевой доступ через нашего виртуального пользователя
guest_enable=YES
guest_username=virtual
# включаем SSL
ssl_enable=YES
# шифрование процедуры логина и всех передаваемых данных внутри сессии
force_local_logins_ssl=YES
force_local_data_ssl=YES
# ущемляем права анонимных пользователей - их трафик шифроваться не будет
# (только если анонимные пользователи разрешены)
allow_anon_ssl=NO
# используем только протокол TLS
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# многократное использование одной сессии
require_ssl_reuse=NO
Дополнительно для проверки соединения вы можете установить директиву local_enable=YES, которая разрешает локальным пользователям получить доступ по FTP к своим домашним директориям.
Создаём базу данных виртуальных пользователей:
db4.8_load -T -t hash /etc/vsftpd_login.db
Эта утилита будет читать логины и пароли со стандартного ввода, один логин и один пароль на каждую отдельную строку. Вводим "user", нажимаем ввод, вводим "pass", нажимаем ввод.
Изменяем процедуру аутентификации ftp пользователей через PAM в конфигурационном файле /etc/pam.d/vsftpd:
# путь к базе данных виртуальных пользователей (без суффикса "db")
account required pam_userdb.so db=/etc/vsftpd_login
auth required pam_userdb.so db=/etc/vsftpd_login
Создадим SSL-сертификат для FTP-сервера, время действия которого истечёт через год. Путь к этому сертификату уже прописан в конфигурационном файле vsftpd:
cd /etc/ssl/private/
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
Всё, осталось перезапустить сервис FTP:
invoke-rc.d vsftpd restart
Проверяем логин:
ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.2)
Name (localhost:root): user
234 Proceed with negotiation.
[SSL Cipher DES-CBC3-SHA]
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp: pwd
257 "/"
ftp:
Как видим, вход был в SSL-режиме с использованием шифрования DES-CBC3-SHA. Теперь можно настроить пользовательские права на чтение и запись в файле /etc/vsftpd.conf. Следует отметить, что в статье описан способ настройки FTPS (FTP+SSL), который не стоит путать с SFTP - это два разных протокола.
URL: http://barrel-of-herring.blogspot.com/2011/05/ssl-vsftpd.html
Обсуждается: http://www.opennet.dev/tips/info/2571.shtml