Гид по технологиям

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

7 min read DevOps Обновлено 24 Apr 2026
FTP на Ubuntu: установка и защита
FTP на Ubuntu: установка и защита

setup-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.service

5. Настройка пассивного режима (важно при 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@hostname

SFTP — предпочтительный вариант, если вам важна безопасность и простота управления.

8. Подключение из клиента: терминал и FileZilla

Через терминал (FTP):

ftp hostname
# или
ftp ipaddress

Вводите логин и пароль, затем используйте команды get/put, ls, cd и т.д.

Для графического интерфейса — FileZilla. Порядок действий в FileZilla:

  1. File > Site Manager
  2. New site
  3. В поле Protocol выберите “FTP”; при FTPS — “FTP over TLS” или выбрать шифрование “Require explicit TLS”/“Use TLS” в зависимости от клиента.
  4. Укажите Host (hostname или IP) и Port.
  5. Logon Type: Normal, введите User и Password.
  6. Connect.

Connect to your Ubuntu FTP server with FileZilla

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/облачные хранилища.

Краткая методология развёртывания (минимальный план)

  1. Подготовка: обновить систему, проверить требования.
  2. Установка и базовая настройка vsftpd (backup конфигурации).
  3. Создание пользователей и настройка chroot/прав доступа.
  4. Настройка пассивного режима и брандмауэра.
  5. Включение TLS (при необходимости) и тестирование клиента.
  6. Мониторинг, 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, мониторинг логов).

Configure an FTP server in Ubuntu

ALT изображения: Фрагмент конфигурационного файла vsftpd.conf с параметрами для chroot и пассивных портов.

Важно: перед внесением изменений в конфигурацию сохраняйте резервную копию и тестируйте подключение с тестовой учётной записью.

Конец руководства.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Steam не скачивает игры — проверенные решения
Техподдержка

Steam не скачивает игры — проверенные решения

Подключение AIM, MSN и других через XMPP в Gmail
Руководство

Подключение AIM, MSN и других через XMPP в Gmail

Создать музыкальный стрим: Icecast + MPD
DevOps

Создать музыкальный стрим: Icecast + MPD

Создать мод Minecraft с MCreator
Гайды

Создать мод Minecraft с MCreator

Создание ePub — подробное руководство
Электронные книги

Создание ePub — подробное руководство

Сайт для участников на WordPress
WordPress

Сайт для участников на WordPress