- Проверка списка обновлений репозиториев
- Установка фтп сервера proftpd и openssl
- 1)Создадим папку
- 2)Отвечаем на вопросы
- 3)Защитите созданные файлы сертификатов. Secure the generated certificate files.(owner can read and write)
- Включим TLS в ProFTPd
- Редактируем файл tls.conf
- Let’s encrypt proftpd
- Добавление разрешающих правил для брандмауэра
- Дополнительная информация
- Настройка ftp сервера proftpd —
- Настрока proftpd для использования tls в ubuntu / debian / ubuntu /
- Ограничение ftp-пользователей пределами домашнего каталога
- Создание нового ftp-пользователя
- Установка ftp-сервера proftpd
Проверка списка обновлений репозиториев
apt update
Установка фтп сервера proftpd и openssl
apt-get -y install proftpd openssl
узнать версию proftpd -v
1)Создадим папку
mkdir /etc/proftpd/ssl
2)Отвечаем на вопросы
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
3)Защитите созданные файлы сертификатов. Secure the generated certificate files.(owner can read and write)
chmod 600 /etc/proftpd/ssl/proftpd.*
Включим TLS в ProFTPd
Enable TLS in ProFTPd
nano /etc/proftpd/proftpd.conf ... and uncomment the Include /etc/proftpd/tls.conf line: [...] # # This is used for FTPS connections # Include /etc/proftpd/tls.conf [...]
Редактируем файл tls.conf
nano /etc/proftpd/tls.conf TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1.2 TLSCipherSuite AES128 EECDH:AES128 EDH TLSOptions NoCertRequest AllowClientRenegotiations TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem TLSVerifyClient off TLSRequired off RequireValidShell no
Let’s encrypt proftpd
Also, keep in mind that Filezilla doesn’t check the CAs that your OS trust so you need to manually trust it in the first connection. No matter whether it is a self-signed certificate, a Let’s Encrypt cert or a commercial one, in all of them, in the first connection, you need to trust the certificate.
The only thing you can do is trust the certificate. It is a Filezilla “feature” it doesn’t check the CAs that your OS trust so you need to manually trust it in the first connection. No matter whether it is a self-signed certificate, a let’s encrypt cert or a commercial one, in all of them, in the first connection, you need to trust it.
Добавление разрешающих правил для брандмауэра
В зависимости от используемой утилиты управления
Iptables:
iptables -I INPUT -p tcp -m tcp --dport 21 -j ACCEPT systemctl iptables save
firewalld:
firewall-cmd --permanent --zone=public --add-port=21/tcp firewall-cmd --reload
Дополнительная информация
Доступ к командной оболочке (shell)
Если вы всё-таки хотите предоставлять пользователю доступ к командной оболочке, то указывайте путь до любой действующей вместо /bin/false, например:
/bin/sh
или
/bin/bash
Пользователям обычного протокола FTP не нужен доступ к shell, поэтому безопаснее его не предоставлять.
Расположение proftpd.conf
Debian/Ubuntu: /etc/proftpd/proftpd.conf
CentOS: /etc/proftpd.conf
Используйте этот файл для более детальной настройки своего FTP-сервера при необходимости.
Ограничение прав FTP-пользователя
При необходимости вы можете ограничить права пользователя на запись в домашнюю директорию, позволив ему работать только с какой-нибудь внутренней папкой, например upload. От имени суперпользователя измените права:
chmod 555 /home/имя_папки mkdir /home/имя_папки/upload chown имя_пользователя:имя_пользователя /home/имя_папки/upload
В данном случае второе имя_пользователя является именем группы, которое по умолчанию совпадает с созданным вами именем пользователя.
Настройка ftp сервера proftpd —
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=tester --uid=33 --gid=33 --home=/home/tester/www/domain.ru --shell=/bin/false #создание нового ftp-пользователя и файла ftpd.passwd
ftpasswd --passwd --name=tester --change-password #можно поменять пароль пользователя
Настраиваем proftpd.conf
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
Для работы нужен пакет proftpd-mod-mysql, если не установлен
apt-get install proftpd-mod-mysql
Далее (СУБД phpMyAdmin) создаём базу данных proftpd и пользователя proftpd_user с паролем proftpd_password и таблицу (sql-запрос)
CREATE TABLE `proftpd`.`users` (
`username` VARCHAR( 32 ) NOT NULL ,
`password` VARCHAR( 32 ) NOT NULL ,
`uid` INT NOT NULL ,
`gid` INT NOT NULL ,
`homedir` VARCHAR( 255 ) NOT NULL ,
`shell` VARCHAR( 255 ) NOT NULL ,
UNIQUE (`username`)
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
В таблицу добавляем запись о пользователе
INSERT INTO `proftpd`.`users` (`username`, `password`, `uid`, `gid`, `homedir`, `shell`) VALUES ('tester', 'pass', '33', '33', '/home/tester/www/domain.ru', '/bin/false');
Настройка файла modules.conf
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
Настройка файла proftpd.conf
RequireValidShell off
#AuthUserFile /etc/proftpd/ftpd.passwd #закоментирован
Include /etc/proftpd/sql.conf
AuthOrder mod_sql.c
Настройка файла sql.conf
<IfModule mod_sql.c>
SQLBackend mysql
SQLEngine on
SQLAuthTypes Plaintext #пароли в открытом виде
SQLConnectInfo proftpd@localhost proftpd_user proftpd_password #БД proftpd, пользователь proftpd_user и пароль proftpd_password
SQLUserInfo users username password uid gid homedir shell #таблица users
SQLAuthenticate users*
SQLMinUserUID 33
SQLMinUserGID 33
SQLLogFile /var/log/proftpd/sql.log #записывать лог
</IfModule>
сhown www-data:www-data /home/tester/www/domain.ru #смена владельца и группы для директории
# Дозагрузка с клиента на сервер
AllowOverwrite on
AllowStoreRestart on
# Дозагрузка с сервера на клиента
AllowRetrieveRestart on
# Нестандартный порт
Port 21
# Дополнительные порты при использовании firewall
PassivePorts 54000 55000
# Права доступа к файлам и директориям
Umask 002 002
# Время логирования
TimesGMT off
SetEnv TZ :/etc/localtime
# Настройка скорости передачи данных (upload и download)
# TransferRate [ cmds ] [ kilobytes-per-sec[:free-bytes]] [ ["user"|"group"|"class" expression]]
#TransferRate RETR,STOR,APPE,STOU 100.0:10240000 #100kbps:10Mb
Настрока proftpd для использования tls в ubuntu / debian / ubuntu /
Настройка ProFTPd довольно проста, сам сервер готов к работе сразу после установки, но если задача сделать более тонкую настройку, то придется немного покопаться.
Основная проблема FTP серверов в том, что передача данных, между ним и клиентом происходит в открытом виде, по этому злоумышленнику не составляет труда прослушав сеть, получить ваш логин и пароль доступа, а дальше он все сделает сам.
Для устранения этого, досадного, недостатка используется TLS-это позволяет осуществлять передачу данных в зашифрованном виде, что повышает безопасность.
Данное руководство не защитит ваши данные для входа от кражи, в случае если ваш основной рабочий компьютер заражен вирусами, а пароль вы сохранили в вашем FTP клиенте, так что- прежде чем вещать замок на форточку, постарайтесь обезопасить дверь.
В этой статье я постараюсь рассказать о том, как это настроить и использовать в повседневной работе.
Установка ProFTPd проста до безобразия, также вместе с ним установим openssl
sudo apt-get install proftpd opensslРежим запуска выбираем standalone
Редактируем основной конфигурационный файл proftpd.conf
sudo nano/etc/proftpd/proftpd.confДля активации функции защищенной передачи данных добавим в него следующие строки
DefaultRoot ~
IdentLookups off
ServerIdent on "Secure FTP Server."Далее нам необходимо сгенерировать SSL сертификат для нормальной работы TLS, который будем хранить в директории proftpd для лучшего понимания создадим директорию ssl где все и будет находиться.
sudo su
mkdir /etc/proftpd/sslГенерируем новый сертификат на 1 год, хотя, срок его действия, можно выбрать по своему смотрению
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pemВ котором указываем:
Country Name (2 letter code) [AU]: Название страны
State or Province Name (full name) [Some-State]: <-- Указываем область проживания
Locality Name (eg, city) []: <-- Название города
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Название организации (можно взять отбалды)
Organizational Unit Name (eg, section) []: <-- Название отдела в этой организации ( например: Отдел по борьбе с оборотнями в погонах ;)-только кратко )
Common Name (eg, YOUR name) []: <-- доменное имя вашего сервера.
Email Address []: <-- адрес электронной почтыВсе ваш самоподписанный сертификат готов и находится по адресу /etc/proftpd/ssl
Теперь нам необходимо включить возможность передачи данных по защищенному соединению.
nano /etc/proftpd/proftpd.confВ конфигурационном файле необходимо найти строку Include /etc/proftpd/tls.conf по умолчанию она закомментирована.
Далее нам необходимо отредактировать файл /etc/proftpd/tls.conf
nano /etc/proftpd/tls.confОстановимся на нем немного подробнее:
В этом файле необходимо отредактировать секцию <IfModule mod_tls.c> которая отвечает за функционал передачи данных, а также указывает на то, где находятся необходимые ключи и сертификаты.
В принципе все что там написано можно удалить и вписать все занова, но лучше, все что не нужно и дублирует наши записи закомментировать, строку ниже добавить в конец конфига.
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
</IfModule>Все готово!
Теперь необходимо перезапустить FTP сервер
/etc/init.d/proftpd restartДля подключения можно использовать бесплатный FTP клиент Filezilla
настраиваем подключение

Указываем IP адрес сервера или доменное имя логин и пароль для входа, а вот в типе сервера указываем: FTPES-FTP через явный TLS/SSL
Имейте в виду что остальные способы передачи данных будут отключены, а именно, передача в не зашифрованном виде- по этому если ваш FTP клиент не поддерживает использование TLS попасть на сервер будет не возможно!
После этого нам укажут на то, что у нас неизвестный сертификат -нормально, т.к. он у нас самоподписанный, а наш центр сертификации не входит в число доверенных, но на работоспособность это не повлияет.

Теперь можно подключаться и чувствовать себя защищенным 😉
Ограничение ftp-пользователей пределами домашнего каталога
Данная статья подразумевает работу c конфигурацией ProFTPd «по умолчанию», а в этом случае пользователь может выходить за пределы своего домашнего каталога, и хотя прав на работу с другими папками у него, скорее всего, нет, но при недостаточно строгой конфигурации сервера это может представлять угрозу безопасности. Решить эту проблему можно добавив одну строку в файл proftpd.conf:
DefaultRoot ~
Добавить её можно в конец файла. После сохранения перезапустите FTP-сервер:
systemctl restart proftpd.service
Создание нового ftp-пользователя
Простым FTP-пользователям нет необходимости иметь доступ к командной оболочке. Перед тем, как приступите к созданию новых пользователей, выполните команду:
Установка ftp-сервера proftpd
CentOS:
Установка EPEL репозитория
yum install epel-release
Установка ProFTPd
yum install proftpd
Debian/Ubuntu:
apt install proftpd
Добавляем FTP в автозапуск сервера и запускаем его
systemctl start proftpd.service systemctl enable proftpd.service
