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

Как установить и настроить 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
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро