Введение
ProFTPD — это FTP-сервер для Linux, который позволяет пользователям передавать данные на свой сервер и с него через FTP-клиент (загрузка/выгрузка файлов). Здесь следует еще раз отметить, что FTP по умолчанию работает полностью незашифрованным и все пароли и т.д. передаются в виде открытого текста, что делает протокол FTP небезопасным протоколом.
Все действия, описанные в данном руководстве, были выполнены на Debian Squeeze. Помимо общей настройки и обеспечения безопасности программного обеспечения, также описано использование явного шифрования.
Шаг 1 — Установка и настройка
Первоначальная установка ProFTPD производится при помощи установки пакета proftpd
при помощи пакетного менеджера:
apt-get install proftpd
После установки нужно отредактировать файл конфигурации, чтобы настроить некоторые важные параметры.
nano /etc/proftpd/proftpd.conf
Мы ищем следующие значения и должны отредактировать их соответствующим образом или добавить их, если их нет:
DefaultRoot ~
UseReverseDNS off
IdentLookups off
ServerName "123.123.123.123 FTP Server"
ServerType standalone
DenyFilter \*.*/
RequireValidShell on
В случае, если вы будете добавлять TLS (шифрование на основе сертификата), то в конец файла надо дополнительно добавить следующее:
Include /etc/proftpd/tls.conf
Краткое объяснение некоторых из вышеперечисленных параметров:
- DefaultRoot: гарантирует, что все пользователи изолированы в своем домашнем каталоге и не могут свободно перемещаться в структуре папок на сервере.
- ServerName "xxx": имя сервера, отображаемое вместе с кодом 220 при подключении FTP-клиента.
- ServerType standalone: сервер работает не с inetd, а как автономный сервер.
- DenyFilter используется для устранения проблемы безопасности.
- RequireValidShell on: для входа пользователя через FTP у него должна быть
действительная оболочка
, то есть интерпретатор команд пользовать, указанный в/etc/passwd
должен быть также указан и в/etc/shells
.
Если это еще не было сделано, сделайте /bin/false
действительной оболочной
. Этот шаг очень прост. Откройте файл /etc/shells
и просто добавьте в конец файла следующую строку:
/bin/false
Если вы используете nano
: нажмите сочетание клавиш Ctrl+X и подтвердите сохранение с помощью Y. Оболочка /bin/false
теперь известна системе. Прежде чем мы сделаем что-нибудь еще, нам нужно перезапустить ProFTPD:
/etc/init.d/proftpd restart
Шаг 2 — Создание пользователя для FTP
Теперь создаем нового пользователя. В этом примере мы предполагаем, что это пользователь upload, домашний каталог которого находится в /home/upload
.
adduser --home /home/upload --shell /bin/false upload
Затем появится запрос пароля — введите желаемый пароль. После этого мы можем протестировать соединение с сервером (например, при помощи FTP-клиента с открытым исходным кодом "FileZilla").
В журнале клиента должна появиться запись, похожая на эту:
220 ProFTPD 1.3.3a Server (Your server name) ::ffff:xx.xx.xx.xx]
Это означает, что сервер ProFTPD готов к работе.
Шаг 3 — явное шифрование с помощью TLS (необязательно)
Как уже упоминалось в разделе о настройке, для TLS шифрования должна быть include-ссылка на файл /etc/proftpd/tls.conf
:
Include /etc/proftpd/tls.conf
Создадим соответствующий файл, если это еще не было сделано, и отредактируем его.
touch /etc/proftpd/tls.conf && nano /etc/proftpd/tls.conf
В файл мы вводим следующее содержимое:
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
</IfModule>
Теперь надо создать сертификат для ProFTPD. Если у вас есть свой (например, заказанный в Hetzner), укажите в конфигурационном файле путь к нему. Если у вас нет сертификата, который обычно очень дорог и подписан "доверенным" сайтом, вы должны создать его самостоятельно. Для этого в Debian необходимо установить пакет openssl.
apt-get install openssl
Используйте следующие команды для создания сертификата в указанной выше директории:
mkdir /etc/proftpd/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
Команда OpenSSL запросит некоторую информацию:
Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Bayern
Locality Name (eg, city) []: Munich
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Company XYZ
Organizational Unit Name (eg, section) []: IT Department
Common Name (eg, YOUR name) []: server.host.com
Email Address []: root@host.com
Важно на запрос Common Name ввести. Если у вас нет домена, введите имя хоста, назначенное Hetzner (параллельно IP). Например: static.xx-xx-xx-xx.your-server.de
.
Перезапустите ProFTPD и настройте FileZilla выбрав Требовать FTP через TLS (явный)
. Конфигурация TLSRequired on
означает, что любые попытки подключения через обычный FTP-порт 21
автоматически отклоняются.
Вывод
Теперь у вас есть установленный PROFTPD, настроенный на работу с защищенными соединениями.