Есть ли способ заблокировать весь нормальный трафик ftp и разрешить только протокол sftp в sftp?
редактировать: извините мой плохой!
для безопасного ftp я должен использовать протокол ftpes ...
Вам не нужен proftpd для SFTP, вы можете сделать это изначально с помощью ssh.
Если по какой-то причине вы хотите использовать proftpd (т.е. вы хотите проще интегрироваться с несистемными учетными записями). Вам нужно запретить доступ к команде входа в систему для сервера, затем создать конкретный виртуальный хост с включенным механизмом sftp и разрешить команду входа в систему.
Для этого ваш файл proftpd.conf будет выглядеть примерно так.
<Limit LOGIN>
DenyAll
</Limit>
<VirtualHost 1.2.3.4>
SFTPEngine on
<Limit LOGIN>
AllowAll
</Limit>
<all your other crap...>
</VirtualHost>
Если вы хотите использовать FTPES с помощью proftpd, вам в основном нужно выполнить 4 шага.
1) Установите proftpd и openssl
apt-get install proftpd openssl
2) Создайте сертификат (при условии, что вы собираетесь самостоятельно подписать, убедитесь, что общее имя совпадает с именем DNS-сервера ftp, чтобы клиенты меньше жаловались)
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
3) Отредактируйте файл proftpd.conf, замените раздел модуля mod_tls в вашей конфигурации приведенным ниже текстом (обратите внимание на директиву TLSRequired on)
<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>
4) Перезапустите proftpd
/etc/init.d/proftpd restart
если вы хотите разрешить ftps только с помощью proftpd, TLSRобязательно это вариант, который вы ищете.
Что вы имеете в виду под sftp? SecureFTP (также известный как SSL ftp) или ftp через ssh (также известный как sftp)?
Для sftp - просто запустите sshd и вообще не используйте никаких ftp-демонов.