Knowledge Base
FTP открыт публично (порт 21) — устаревший протокол
FTP открыт публично — порт 21
Категория: Server Hardening · Риск: high
FTP открыт публично — порт 21
Почему FTP опасен
FTP (File Transfer Protocol, 1971 год) передаёт **логин, пароль и данные в открытом виде**. В любой публичной Wi-Fi сети или при компрометации маршрутизатора всё перехватывается.
Дополнительные риски:
- **Anonymous FTP** — доступ без пароля (часто включён по умолчанию)
- **Bounce attacks** — использование FTP-сервера как прокси для сканирования
- **Brute-force** — FTP-серверы активно атакуются автоматически
- **DATA channel на случайных портах** — сложность с файрволом (passive mode)
Проверка
# Проверка открытого порта
nc -zv <IP> 21
# Проверка анонимного доступа
ftp <IP>
# Ввести: anonymous / anonymous@test.com
# Если подключился — критическая уязвимость
Замена FTP на безопасные альтернативы
SFTP (рекомендуется)
SFTP работает поверх SSH — шифрование, аутентификация по ключу, нет отдельного порта.
# SFTP встроен в OpenSSH — дополнительной установки не нужно
# Подключение:
sftp user@example.com
# Ограничить SFTP-пользователя его домашней директорией (chroot)
# /etc/ssh/sshd_config:
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
FTPS (FTP + TLS) — если нужен именно FTP
# vsftpd с TLS
# /etc/vsftpd.conf
ssl_enable=YES
rsa_cert_file=/etc/letsencrypt/live/example.com/fullchain.pem
rsa_private_key_file=/etc/letsencrypt/live/example.com/privkey.pem
ssl_tlsv1_2=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
Закрытие FTP
# Остановить и отключить vsftpd
systemctl stop vsftpd
systemctl disable vsftpd
# Закрыть порты
ufw deny 21
ufw deny 20 # data channel
Если FTP нужен клиентам
Используйте **FTPS Explicit** (порт 21, затем `AUTH TLS`) или **FTPS Implicit** (порт 990):
# /etc/vsftpd.conf — минимальный безопасный конфиг
anonymous_enable=NO
local_enable=YES
write_enable=YES
ssl_enable=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Связанные проверки
- [SSH порт 22](/kb/server_hardening/public-ssh-port-22)
- [UFW файрвол](/kb/firewall/ufw-basic-server-firewall)