ProFTPD (Professional FTP Daemon) — FTP-сервер для Linux и UNIX-подобных операционных систем.
ProFTPD использует лишь один конфигурационный файл proftpd.conf, который располагается по умолчанию в:
Linux — /etc/proftpd/proftpd.conf ( CentOS 7: /etc/proftpd.conf )
FreeBSD — /usr/local/etc/proftpd.conf.
1) Добавим репозитории ubuntu
nano /etc/apt/sources.list deb http://ru.archive.ubuntu.com/ubuntu/ bionic main deb http://ru.archive.ubuntu.com/ubuntu/ bionic main universe
2)проверка списка обновлений репозиториев
apt update
3)Установка фтп сервера proftpd и openssl
apt-get -y install proftpd openssl
узнать версию proftpd -v
4)Ограничить пользователя домашней папкой и скрыть версию програмного обеспечения ftp сервера и ОС
The first option enables chrooting of FTP users into their home directory and the second option enables a ServerIdent message that does not contain any information about the used FTP server software, version or OS so that a potential attacker don’t gets these details on the silver plate.
nano /etc/proftpd/proftpd.conf [...] DefaultRoot ~ ServerIdent on "FTP Server ready." [...]
5)Создаем SSL сертификат Create the SSL Certificate for TLS
5.1)Создадим папку
mkdir /etc/proftpd/ssl
5.2)Отвечаем на вопросы
openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
5.3)Защитите созданные файлы сертификатов. Secure the generated certificate files.(owner can read and write)
chmod 600 /etc/proftpd/ssl/proftpd.*
6)Включим 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 [...]
7)Редактируем файл 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
6.1)Перезапуск сервиса proftpd
systemctl restart proftpd.service
Если вы используете TLSRequired on, то разрешены только TLS-соединения (это блокирует всех пользователей со старыми FTP-клиентами, у которых нет поддержки TLS); путем комментирования этой строки или использования TLSRequired как с TLS, так и с не-TLS-соединениями, в зависимости от того, что поддерживает FTP-клиент.
If you use TLSRequired on, then only TLS connections are allowed (this locks out any users with old FTP clients that don’t have TLS support); by commenting out that line or using TLSRequired off both TLS and non-TLS connections are allowed, depending on what the FTP client supports.
8)Добавим фтп пользователя без доступа к ssh консоли
Add an FTP user useradd --shell /bin/false ftp1
9)Создаём профиль пользователя ftp1
и даём на него права
mkdir /home/ftp1 chown ftp1:ftp1 /home/ftp1
9.1)Смена пароля пользователя ftp1
passwd ftp1
10)Бесплатный фтп ftp клиент https://filezilla-project.org/
11)Firewall
nano /etc/proftpd/proftpd.conf
# In some cases you have to specify passive ports range to by-pass # firewall limitations. Ephemeral ports can be used for that, but # feel free to use a more narrow range. PassivePorts 30000 50000
iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 30000:50000 -j ACCEPT iptables-save
12)Организация анонимного доступа к ftp серверу ProFTPD
# nano /etc/proftpd/proftpd.conf User ftp UserAlias anonymous ftp RequireValidShell off # mkdir /var/share/ chmod -R 777 /var/share/ # service proftpd restart # cat /etc/proftpd/proftpd.conf # Use this to jail all users in their homes # DefaultRoot ~ DefaultRoot /var/share
https://www.howtoforge.com/tutorial/install-proftpd-with-tls-on-ubuntu-16-04/
https://websiteforstudents.com/install-pro-ftpd-on-ubuntu-18-04-lts-beta-server-with-ssl-tls-certificates/