Настройка виртуальных пользователей и SSL в vsftpd

Очень удачная статья, нашел на Opennet, автор - Бочка Селедки. Полезная статья, как раз однажды не хватало, запишу себе на манжету. Авторские парава принадлежат автору статьи.

Иногда возникает необходимость настроить виртуальных пользователей и SSL-шифрование в FTP-сервере vsftpd. Рассмотрим как это сделать в Debian Squeeze.

Все действия выполняются от пользователя root. Сперва установим необходимые утилиты:

   aptitude install vsftpd openssl db4.8-util ftp-ssl  


где:
vsftpd - непосредственно FTP сервер;
openssl - утилита создания 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 - это два разных протокола.




Вас также может заинтересовать:

Релиз Proxmox VE 2.2, дистрибутива для организации работы виртуальных серверов
1 Gb от Dropbox для пользователей Mailbox
Настройка SVN + TRAC Centos
03.05.2010 Первоначальная настройка Gentoo
Настройка и варианты использования OpenVPN
Настройка и оптимизация MySQL сервера