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

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

7 min read Linux Обновлено 29 Dec 2025
Установка FTP‑сервера на Ubuntu
Установка FTP‑сервера на Ubuntu

Настройка FTP на Ubuntu

Введение

FTP (File Transfer Protocol) — протокол для передачи файлов между системой и сервером. На Ubuntu чаще всего в роли FTP‑демона используют vsftpd: лёгкий, безопасный и быстрый. В этой инструкции мы пройдём весь путь: от установки до базовой жёсткой настройки и тестирования. Если вам важна максимальная безопасность и удобство — в блоке «Альтернативы» описаны варианты лучше FTP.

Важно: FTP по умолчанию передаёт данные в открытом виде. Для шифрования используйте FTPS или — ещё лучше — SFTP (через SSH).

Предварительные требования

  • Ubuntu (Desktop или Server) с доступом к sudo.
  • Рабочая сеть: доступ к SSH или локальный терминал.
  • Установленные средства для редактирования файлов, например nano.

Что такое vsftpd

vsftpd — «Very Secure FTP Daemon», демон FTP, ориентированный на безопасность и производительность. Он поддерживает chroot, ограничение пользователей, и настройку SSL/TLS для FTPS.

Шаг 1. Установка vsftpd

Откройте терминал и обновите списки пакетов:

sudo apt update

Проверьте, установлен ли vsftpd:

sudo apt list --installed | grep vsftpd

Если нет — установите:

sudo apt install vsftpd

Сделайте резервную копию файла конфигурации перед изменениями:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default

Запустите и включите демон, чтобы он стартовал при загрузке:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

Проверьте статус:

systemctl status vsftpd

Если демон активен — можно переходить к настройке.

Шаг 2. Создание FTP‑пользователя

Создайте системного пользователя с домашней директорией:

sudo useradd -m username

Задайте пароль для пользователя:

sudo passwd username

Создайте тестовый файл в домашней папке пользователя, чтобы подтвердить доступ:

sudo -i -u username bash
cd ~
nano testfile.txt

Запишите что‑нибудь в testfile.txt, сохраните и выйдите. При подключении через FTP вы должны увидеть этот файл.

Шаг 3. Открытие портов в брандмауэре

По умолчанию FTP использует порты 20 и 21 (командный и данные). Если в системе активирован ufw, разрешите их:

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

Если вы используете пассивный режим, потребуется открыть диапазон портов для пассивных соединений — его задают в конфиге vsftpd (см. ниже).

Если используется другой фаервол (firewalld, cloud firewall), откройте те же порты согласно документации.

Шаг 4. Базовая конфигурация vsftpd

Откройте файл конфигурации для редактирования:

sudo nano /etc/vsftpd.conf

Рекомендуемые параметры (пояснения ниже):

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
# Паспортный (пасивный) диапазон:
pasv_min_port=30000
pasv_max_port=31000
pasv_address=YOUR_SERVER_PUBLIC_IP
# Логирование
xferlog_enable=YES

Пояснения:

  • anonymous_enable=NO отключает анонимный доступ.
  • local_enable=YES позволяет локальным пользователям входить в систему.
  • write_enable=YES разрешает запись (upload) для пользователей.
  • chroot_local_user=YES закрепляет пользователя в домашней директории.
  • Пасcивный диапазон нужен для NAT/защищённых сетей — диапазон портов должен быть открыт на фаерволе.

Сохраните изменения (Ctrl+X, затем Y и Enter в nano).

Управление списком chroot для нескольких пользователей

Если вы хотите применить chroot только к списку пользователей, отредактируйте или добавьте следующие строки в /etc/vsftpd.conf:

chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Создайте файл списка и добавьте в него имена пользователей, по одному на строку:

sudo nano /etc/vsftpd.chroot_list
# пример содержания:
# user1
# user2

После изменений перезапустите сервис:

sudo systemctl restart vsftpd.service

Шаг 5. Включение FTPS (SSL/TLS)

Чтобы зашифровать управление и/или передачу данных, включите SSL/TLS в конфиге:

sudo nano /etc/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
ssl_ciphers=HIGH
force_local_data_ssl=YES
force_local_logins_ssl=YES

Примечание: snakeoil‑сертификат является самоподписанным и годится только для тестов. Для production используйте сертификат от доверенного CA или собственный с корректным CN/SubjectAltName.

Перезапустите сервис:

sudo systemctl restart vsftpd.service

В FTP‑клиенте выбирайте FTPS (обычно TLS) и при необходимости указывайте порт 21 и включённое шифрование.

Конфигурация FTP на Ubuntu

Шаг 6. Подключение с клиента

Подключиться можно из терминала Linux:

ftp hostname_or_ip

Для графического клиента рекомендуем FileZilla (клиент). Настройка в FileZilla:

  1. Откройте FileZilla > Site Manager (Файл > Менеджер сайтов).
  2. Создайте новый сайт.
  3. В поле Protocol выберите FTP.
  4. Для FTPS выберите Encryption > Require explicit FTP over TLS.
  5. Укажите Host (хостнейм или IP) и Port (обычно 21).
  6. В Logon Type выберите Normal и введите User и Password.
  7. Нажмите Connect.

Подключение к Ubuntu FTP через FileZilla

Перетаскивайте файлы для передачи (put/get).

Тестирование и критерии приёмки

Критерии приёмки:

  • Пользователь успешно входит по локальным учётным данным.
  • Тестовый файл отображается в корне домашней папки пользователя.
  • Загрузка и скачивание файлов работают в обоих направлениях.
  • При включённом FTPS трафик шифруется (проверяется через клиент и сетевой трафик).
  • При chroot пользователь не может выйти за пределы домашней директории.

Мини‑тесты (acceptance):

# вход
ftp> open YOUR_SERVER_IP
Name (YOUR_SERVER_IP:username): username
Password: ********
# список файлов
ftp> ls
# загрузка файла
ftp> put localfile.txt
# скачивание файла
ftp> get testfile.txt

Безопасность и лучшие практики

Important: FTP без шифрования передаёт пароли в открытом виде. Рассмотрите SFTP как главный вариант для защищённых переносов.

Рекомендации по усилению безопасности:

  • Отключите анонимный доступ.
  • Разрешайте запись только там, где необходимо.
  • Используйте chroot для ограничения пользователей.
  • Ограничьте права файлов и папок (уменьшайте привилегии): chown и chmod.
  • Используйте FTPS с сертификатом от CA либо SFTP через SSH (лучше).
  • Введите аудит входов и логирование передач.
  • Ограничьте исходящие и входящие диапазоны пассивных портов и откройте их в фаерволе.
  • Настройте fail2ban для защиты от перебора паролей.

Пример базовой интеграции fail2ban (в общих чертах):

  • Создайте правило для мониторинга логов vsftpd.
  • Настройте блокировку IP после N неудачных попыток.

Альтернативы

  1. SFTP (SSH File Transfer Protocol)
    • Работает поверх SSH, использует один порт (22), шифрование включено по‑умолчанию.
    • Часто предпочтительнее FTPS, проще в администрировании и безопаснее.
  2. SCP
    • Подходит для простых одноразовых переносов из командной строки.
  3. WebDAV
    • Альтернатива для интеграции с HTTP/HTTPS.

Когда FTP подходит:

  • Легаси‑сценарии, интеграция со старым ПО, необходимость совместимости с клиентами, которые поддерживают только FTP.

Когда FTP не подходит:

  • Везде, где требуется безопасность по‑умолчанию или соответствие нормативам — используйте SFTP или HTTPS.

Ролевые чеклисты

Для администратора:

  • Установлен vsftpd и выполнена резервная копия конфигурации.
  • Открыты минимально необходимые порты в фаерволе.
  • Настроено логирование и мониторинг.
  • Настроен chroot или chroot‑список.
  • Проверено шифрование FTPS или внедрён SFTP.

Для разработчика/контент‑менеджера:

  • Имеется тестовый учёт и тестовые файлы.
  • Проверено права доступа на запись/чтение.

Для пользователя:

  • Доступ к FileZilla или командному ftp подтверждён.
  • Понимает, как указать FTPS/TLS в клиенте.

Мини‑методология внедрения (план на 1 день)

  1. Установка и резервная копия конфигурации.
  2. Создание тестового пользователя и проверка доступа.
  3. Включение пассивного режима и открытие портов.
  4. Настройка chroot и прав доступа.
  5. Подключение клиента и проведение тестов.
  6. Включение TLS/FTPS и перепроверка работы.
  7. Внедрение мониторинга и fail2ban.

Decision flowchart

flowchart TD
  A[Нужно передать файлы] --> B{Требуется шифрование?}
  B -- Да --> C{Есть SSH доступ?}
  C -- Да --> D[SFTP 'рекомендуется']
  C -- Нет --> E[FTPS с TLS]
  B -- Нет --> F[FTP 'legacy']
  D --> G[Настроить пользователей и права]
  E --> G
  F --> G

Тестовые сценарии

  • TC1: Вход по локальному пользователю — ожидаемый результат: успешный логин.
  • TC2: Загрузка файла 10 МБ — ожидаемый результат: файл передан без ошибок.
  • TC3: Попытка выхода из домашней директории при chroot — ожидаемый результат: доступ запрещён.
  • TC4: Подключение по FTPS — ожидаемый результат: установлено шифрованное соединение.

1‑строчный глоссарий

  • FTP — протокол передачи файлов.
  • FTPS — FTP поверх SSL/TLS (шифрует FTP).
  • SFTP — безопасный протокол передачи файлов через SSH.
  • chroot — ограничение процесса в заданной директории.

Часто задаваемые вопросы

Q: Чем отличается FTPS от SFTP?

A: FTPS — это FTP с TLS/SSL, использует FTP‑команды и отдельные порты для пассивного режима; SFTP работает внутри SSH и обычно безопаснее и проще в настройке (один порт).

Q: Нужно ли открывать порт 20 для FTPS?

A: Для активного FTP используется порт 20, но в большинстве современных конфигураций рекомендуется пассивный режим и открытие диапазона пассивных портов; FTPS при пассивном режиме всё равно использует данные порты.

Q: Могу ли я использовать FileZilla Server на Ubuntu?

A: Официального FileZilla Server для Linux нет; на Linux используют vsftpd, ProFTPD или Pure‑FTPd. FileZilla предоставляет клиент для всех ОС.

План восстановления и отката

Если после изменений сервер перестал работать:

  1. Верните резервную копию конфигурации:
sudo cp /etc/vsftpd.conf_default /etc/vsftpd.conf
sudo systemctl restart vsftpd
  1. Откат изменений в файле /etc/hosts, в правилах ufw и проверьте логи:
sudo journalctl -u vsftpd -b
sudo tail -n 200 /var/log/vsftpd.log

Итог

Вы установили и настроили базовый FTP‑сервер на Ubuntu с vsftpd, узнали, как создать пользователя, включить chroot, настроить FTPS и протестировать соединение. Рекомендуется, когда это возможно, переходить на SFTP для лучшей безопасности.

Ключевые действия на будущее: поддерживать актуальность сертификатов, мониторить логи и ограничивать доступ по IP и портам.

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

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

Интерфейсы Airtable: создать и поделиться
Инструменты

Интерфейсы Airtable: создать и поделиться

Создать шаблон страницы в Notion
Продуктивность

Создать шаблон страницы в Notion

Как защитить данные на ноутбуке при краже
Безопасность

Как защитить данные на ноутбуке при краже

Как установить Microsoft Office на Linux
Инструкция

Как установить Microsoft Office на Linux

Slack‑бот для приветствия новых участников
Integration

Slack‑бот для приветствия новых участников

Извлечь текст из изображения в Google Docs
Инструкции

Извлечь текст из изображения в Google Docs