Как установить и защитить FTP‑сервер на Ubuntu

В этом руководстве шаг за шагом показано, как установить FTP‑сервер на Ubuntu (серверная или десктоп‑версия), настроить и ограничить доступ, включить шифрование и подключиться из клиента. Примеры команд даны для оболочки bash; замените «username», «hostname» и «ipaddress» на реальные значения.
Кому это нужно и когда выбирать FTP
FTP (File Transfer Protocol) — протокол для передачи файлов между клиентом и сервером. Он удобен для простых задач: загрузки сайтов, обмена файлами между машинами, раздачи ресурсов пользователям. Однако FTP передаёт данные в открытом виде по умолчанию; для безопасности используйте FTPS (FTP поверх SSL/TLS) или SFTP (FTP через SSH).
Краткое сравнение (в одну строку):
- FTP — простой, но небезопасный без шифрования.
- FTPS — FTP + TLS/SSL, хорош для совместимости с FTP‑клиентами.
- SFTP — файл‑передача через SSH, обычно безопаснее и проще в управлении ключами.
Важно: если вам нужна строгая безопасность и управление доступом, рекомендуем SFTP (OpenSSH) вместо классического FTP. Ниже описаны оба подхода и когда выбирать каждый.
Что понадобится перед началом
- Ubuntu (серверная или десктоп) с правами sudo.
- Доступ к терминалу/SSH.
- Клиент FTP (встроенный ftp-клиент, FileZilla или другой).
- Если планируете FTPS — TLS/SSL сертификат (можно использовать самоподписанный или сертификат от ACME/Let’s Encrypt для публичного сервера).
1. Установка vsftpd
vsftpd — популярный, лёгкий и быстрый FTP‑сервер для Linux. Он хорошо подходит для базовых сценариев и часто рекомендуется в дистрибутивах Debian/Ubuntu.
Проверить, установлен ли пакет:
sudo apt list --installed | grep vsftpdЕсли вывод пустой, установите vsftpd:
sudo apt update
sudo apt install vsftpdСохраните оригинальный конфигурационный файл на случай отката:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_defaultЗапустите и включите сервис:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpdЕсли статус показывает Active: active (running), сервер запущен.
2. Создание FTP‑пользователя
Обычно FTP‑пользователь — это системный пользователь с домашним каталогом. Создаём нового пользователя и задаём пароль:
sudo useradd -m username
sudo passwd usernameПроверим, что в домашней директории есть тестовый файл:
cd /home/username
sudo nano testfile.txt
# Вставьте пару строк текста и сохранитеПри подключении вы должны увидеть testfile.txt.
Совет по безопасности: не используйте учётную запись root для FTP‑доступа.
3. Открытие портов в брандмауэре
FTP использует порты TCP 20 (data) и 21 (control). Для пассивного режима дополнительно задаётся диапазон портов.
Если включён ufw (Uncomplicated Firewall):
sudo ufw allow 20/tcp
sudo ufw allow 21/tcpДля пассивного режима (например порты 30000–31000):
sudo ufw allow 30000:31000/tcpЕсли вы используете другой firewall (iptables, firewalld), откройте соответствующие порты в нём. При наличии NAT/маршрутизатора необходимо пробросить порты на хост.
Важно: не забудьте разрешить SSH (обычно 22), чтобы не потерять доступ: sudo ufw allow OpenSSH.
4. Базовая конфигурация vsftpd
Откройте конфиг для редактирования:
sudo nano /etc/vsftpd.confКлючевые параметры и рекомендации:
- Разрешить запись (загрузка файлов):
write_enable=YESОтключить доступ root через FTP (по умолчанию root не должен логиниться).
Ограничить локальных пользователей их домашними директориями (chroot):
chroot_local_user=YESЕсли нужна более гибкая схема — использовать список chroot:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_listСоздайте файл списка и добавьте в него имена пользователей, которых нужно изолировать:
sudo nano /etc/vsftpd.chroot_list
# Добавьте username в каждой строкеЗамечание: в старых версиях vsftpd было ограничение: chroot запрещал запись в домашнюю директорию, если она принадлежат пользователю и была доступна на запись. Для обхода можно либо:
- создать поддиректорию (например /home/username/upload) с правами на запись и chown username;
- включить allow_writeable_chroot=YES (если ваша версия vsftpd поддерживает), но это снижает безопасность.
После изменений перезапустите сервис:
sudo systemctl restart vsftpd.service5. Настройка пассивного режима (важно при NAT)
Пассивный режим удобен, когда клиент находится за NAT/фаерволом. Добавьте в vsftpd.conf:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=ВАШ_ПУБЛИЧНЫЙ_IP_ИЛИ_ДОМЕНЗатем откройте эти порты в брандмауэре и пробросьте их на маршрутизаторе.
6. Включение FTPS (TLS/SSL)
Чтобы шифровать трафик, активируйте SSL/TLS в конфиге vsftpd.conf:
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.keyРекомендуется заменить самоподписанный “snakeoil” сертификат на сертификат от Let’s Encrypt для публичного сервера. Для автоматического получения и обновления сертификатов используйте certbot и затем укажите путь к файлам сертификата и ключа.
Дополнительно можно запретить обычный незашифрованный FTP (принудительно требовать TLS):
ssl_ciphers=HIGH
force_local_data_ssl=YES
force_local_logins_ssl=YESПосле изменений перезагрузите vsftpd.
7. Альтернатива: SFTP (рекомендовано для большинства задач)
SFTP работает поверх SSH (port 22) и не требует отдельного FTP‑сервера. Для активации достаточно иметь установленный OpenSSH (обычно уже установлен на сервере). SFTP предоставляет удобное управление через ключи и лучшую совместимость с системами контроля доступа.
Установка OpenSSH server:
sudo apt install openssh-server
sudo systemctl enable --now sshПодключение через клиент:
sftp username@hostnameSFTP — предпочтительный вариант, если вам важна безопасность и простота управления.
8. Подключение из клиента: терминал и FileZilla
Через терминал (FTP):
ftp hostname
# или
ftp ipaddressВводите логин и пароль, затем используйте команды get/put, ls, cd и т.д.
Для графического интерфейса — FileZilla. Порядок действий в FileZilla:
- File > Site Manager
- New site
- В поле Protocol выберите “FTP”; при FTPS — “FTP over TLS” или выбрать шифрование “Require explicit TLS”/“Use TLS” в зависимости от клиента.
- Укажите Host (hostname или IP) и Port.
- Logon Type: Normal, введите User и Password.
- Connect.

ALT изображения: Схема окна FileZilla с заполненными полями для подключения к FTP‑серверу.
9. Рекомендации по безопасности и жёсткое hardening
- По возможности используйте SFTP вместо FTP/FTPS.
- Для FTPS применяйте сертификаты от доверенных CA (Let’s Encrypt) и запретите слабые шифры.
- Ограничьте доступ к нужным пользователям и используйте chroot для изоляции.
- Используйте отдельные учётные записи для разных задач; не давайте глобальных прав.
- Настройте сильные пароли или SSH‑ключи для SFTP.
- Установите fail2ban для блокировки брутфорс‑попыток:
sudo apt install fail2ban
# добавьте конфигурацию для мониторинга vsftpd/ssh- Ограничьте диапазон пассивных портов и откройте только их в фаерволе.
- Регулярно обновляйте систему и vsftpd: sudo apt update && sudo apt upgrade.
- Логи: проверяйте /var/log/vsftpd.log и /var/log/auth.log для подозрительной активности.
10. Отладка распространённых проблем
- “Не удаётся установить соединение”: проверьте, запущен ли сервис (systemctl status vsftpd) и открыты ли порты в брандмауэре.
- “Пассивный режим не работает”: убедитесь, что pasv_address установлен на публичный IP, и диапазон pasv портов открыт/проброшен.
- “Пользователь не видит домашний каталог / не может записать файлы”: проверьте права на директорию, chroot и опцию write_enable.
- “FTPS не шифрует трафик”: проверьте ssl_enable и пути к сертификатам, а также настройки шифров.
Примеры команд для анализа сети:
sudo ss -tulpn | grep vsftpd
sudo ufw status verbose
sudo tail -n 200 /var/log/vsftpd.logПроверки и критерии приёмки
- Сервис запущен: sudo systemctl status vsftpd → Active: active (running).
- Установлен пользователь и присутствует тестовый файл в /home/username.
- Порты 21 и диапазон пассивных портов открыты в фаерволе и проброшены на маршрутизаторе при необходимости.
- При FTPS соединение устанавливается с использованием TLS; в логах нет ошибок сертификата.
- Пользователь ограничен своей домашней директорией (chroot) и не видит другие системные каталоги.
Сценарии, когда это не подойдёт
- Если требуется высокая безопасность и централизованное управление доступом — предпочтительнее SFTP/SSH или корпоративные решения (например, managed SFTP, FTPS с RADIUS/LDAP).
- Для массовых публичных загрузок с анонимным доступом лучше использовать специализированные CDN/облачные хранилища.
Краткая методология развёртывания (минимальный план)
- Подготовка: обновить систему, проверить требования.
- Установка и базовая настройка vsftpd (backup конфигурации).
- Создание пользователей и настройка chroot/прав доступа.
- Настройка пассивного режима и брандмауэра.
- Включение TLS (при необходимости) и тестирование клиента.
- Мониторинг, hardening (fail2ban, логи), регулярные обновления.
Роли и контрольный список
Администратор:
- Установить vsftpd и сделать резервную копию конфигурации.
- Настроить брандмауэр и пассивные порты.
- Наставить сертификаты и fail2ban.
- Проверить логи и обновления.
Разработчик / пользователь:
- Создать testfile.txt и проверить доступ.
- Настроить FileZilla/SFTP клиент.
- Проверить загрузку/скачивание файлов, права доступа.
Оператор безопасности:
- Проверить шифрование и политики паролей.
- Запустить сканеры уязвимостей и проанализировать логи.
Тестовые случаи / Acceptance criteria
- При подключении клиентом (FTP/FTPS/SFTP) пользователь видит только свою домашнюю директорию.
- Upload (PUT) и Download (GET) выполняются без ошибок.
- FTPS использует сертификат, клиент не возражает против цепочки доверия (если публичный сертификат).
- Попытки брутфорса блокируются fail2ban.
Небольшая схема принятия решения (Mermaid)
graph TD
A[Нужна передача файлов?] --> B{Требуется ли шифрование?}
B -- Да --> C{Нужна совместимость с FTP-клиентами?}
C -- Да --> D[Использовать FTPS 'vsftpd + TLS']
C -- Нет --> E[Использовать SFTP 'OpenSSH']
B -- Нет --> F[Можно использовать FTP 'только в локальной защищённой сети']Варианты и альтернативы
- ProFTPD или Pure‑FTPd — альтернативы vsftpd с более гибкой конфигурацией и возможностями интеграции с LDAP/SQL.
- Облачные хранилища (S3, Google Drive, Dropbox) — вместо FTP для публичного доступа и масштабирования.
Мини‑глоссарий (в одну строку каждый)
- FTP: протокол передачи файлов.
- FTPS: FTP поверх SSL/TLS (шифрование).
- SFTP: передача файлов поверх SSH.
- chroot: ограничение пользователя в своей директории.
- passive mode: режим FTP, в котором клиент инициирует передачу данных.
Заключение
Вы установили FTP‑сервер на Ubuntu и узнали, как базово настроить его безопасность: создать пользователя, открыть порты, включить chroot и настроить FTPS. Для производства по возможности выбирайте SFTP или FTPS с доверенными сертификатами, ограничивайте права и используйте инструменты обнаружения атак (fail2ban, мониторинг логов).

ALT изображения: Фрагмент конфигурационного файла vsftpd.conf с параметрами для chroot и пассивных портов.
Важно: перед внесением изменений в конфигурацию сохраняйте резервную копию и тестируйте подключение с тестовой учётной записью.
Конец руководства.
Похожие материалы
Steam не скачивает игры — проверенные решения
Подключение AIM, MSN и других через XMPP в Gmail
Создать музыкальный стрим: Icecast + MPD
Создать мод Minecraft с MCreator
Создание ePub — подробное руководство