На этой странице

FTP установка и настройка в Ubuntu Sever


FTP (File Transfer Protocol) – это сетевой протокол для обмена файлами между сервером и клиентом. Поскольку FTP передаёт данные в незашифрованном виде, он считается очень опасным; вместо него рекомендуется использовать vsftp – версию протокола, которая поддерживает шифрование данных.

Рассмотрим как настроить vsftp для загрузки файлов в домашний каталог пользователя с помощью FTP и учётных данных SSL/TLS.

Для работы вам понадобится Ubuntu Sever.

Установка vsftp

Обновите индекс пакетов

apt update

Установите vsftp:

apt install vsftpd

После завершения установки создайте копию конфигурационного файла.

cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Настройка брандмауэра

Проверьте состояние брандмауэра и узнайте, какие сервисы он поддерживает на данный момент.

ufw status

Результат покажет, активен ли ваш брандмауэр или нет.

Брандмауэр не активен
Брандмауэр не активен

Включение UFW

Если при выполнении команды ufw status вы получили сообщение Status: inactive, это означает, что брандмауэр еще не включен в системе. Вам нужно выполнить команду, чтобы включить его.

По умолчанию, когда UFW включен, он блокирует внешний доступ ко всем портам на сервере. На практике это означает, что если вы подключены к серверу по SSH и включите ufw до разрешения доступа через порт SSH, вы будете отключены.

Чтобы включить UFW в вашей системе, выполните команду:

ufw enable

Система выдаст предупреждение о разрыве ssh соединения, введите Y и нажимаете клавишу inter.

Предупреждение о разрыве ssh
Предупреждение о разрыве ssh

Сейчас брандмауэр стал активен.

Снова проверяем статус:

ufw status
Брандмауэр активен
Брандмауэр активен

Состояние и список правил вашего брандмауэра может отличаться.

Нужно разблокировать трафик FTP.

Откройте порт 20 для FTP:

ufw allow 20/tcp

Откройте порт 21 для FTP:

ufw allow 21/tcp

Откройте порт 990 для TLS (который будет включен позже):

ufw allow 990/tcp

Откройте порт 990 для диапазонов пассивных портов 40000-50000:

ufw allow 40000:50000/tcp

Снова проверяем статус.

ufw status

Теперь правила брандмауэра выглядят так:

Активные порты
Активные порты

Каталога пользователя

Создайте пользователя для FTP, если пользователь у вас уже есть, то следуйте дальнейшим инструкциям, пропустите пункты как создать пользователя.

Во время работы права существующего пользователя не будут изменяться. Однако лучше создать нового пользователя для работы FTP.

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

adduser user

Выберите пароль нового пользователя.

Пароль нового пользователя
Пароль нового пользователя

Подтвердите пароль.

Подтверждение пароля
Подтверждение пароля

Остальные данные можно оставить по умолчанию, нажав Enter.

Подтверждение правильности ввода данных
Подтверждение правильности ввода данных

Подтвердите правильность ввода данных, введите Y и нажимаете клавишу inter.

vsftpd не может дать пользователю права на запись в домашнем каталоге, поскольку тогда vsftpd не сможет обеспечить защиту этого каталога. Это нормально для новых пользователей, которым нужно только подключение FTP, но существующим пользователям необходимо иметь право на запись в домашнем каталоге.

Мы не станем отнимать у пользователей этого права. Вместо этого можно создать каталог ftp для поддержки окружения chroot и каталог files для хранения файлов.

Создайте каталог ftp.

mkdir /home/user/ftp

Установите права на него.

chown nobody:nogroup /home/user/ftp

Отнимите право на запись в этом каталоге.

chmod a-w /home/user/ftp

Проверьте права:

ls -la /home/user/ftp
Проверка доступа к каталогам
Проверка доступа к каталогам

Теперь создайте каталог для хранения файлов.

mkdir /home/user/ftp/files

Передайте пользователю права собственности на него.

chown user:user /home/user/ftp/files

Проверьте права на этот каталог:

ls -la /home/user/ftp
Проверка доступа к каталогам
Проверка доступа к каталогам

Теперь добавьте файл test.txt, с помощью которого можно протестировать настройку.

echo "vsftpd test file" | sudo tee /home/user/ftp/files/test.txt

Настройка FTP

Дайте одному пользователю с аккаунтом локальной оболочки право на FTP-подключения. Все необходимые параметры можно найти в vsftpd.conf. Откройте этот конфигурационный файл и убедитесь, что он содержит такие параметры:

nano /etc/vsftpd.conf
Настройка файла vsftpd.conf
Настройка файла vsftpd.conf

Дайте одному пользователю с аккаунтом локальной оболочки право на FTP-подключения. Все необходимые параметры можно найти в vsftpd.conf. Откройте этот конфигурационный файл и убедитесь, что он содержит такие параметры:

Команды управления конфигурацией

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

Строка write_enable
Строка write_enable

Затем раскомментируйте chroot, чтобы заблокировать пользователям, подключившимся через FTP, доступ к файлам и каталогам вне этого дерева каталогов.

Строка chroot
Строка chroot

В любое место файла добавьте директиву user_sub_token, чтобы вставить имя пользователя в путь local_root directory. Это позволит в дальнейшем добавить новых пользователей.

user_sub_token=$USER
local_root=/home/$USER/ftp
Директива user_sub_token
Директива user_sub_token

Ограничьте диапазон портов для FTP:

pasv_min_port=40000
pasv_max_port=50000
Ограничение диапазона портов для FTP
Ограничение диапазона портов для FTP

Этот диапазон портов был разблокирован в разделе 2.

Поскольку пользователи будут иметь доступ к FTP на индивидуальной основе, настройте FTP таким образом, чтобы доступ пользователю предоставлялся только после явного добавления в список (а не по умолчанию).

userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
Доступ пользователю
Доступ пользователю

Сохраните и закройте файл.

Создайте и пользователя и добавьте его в файл. Флаг –a вставит данные о пользователе в файл:

echo "user" | sudo tee -a /etc/vsftpd.userlist

Убедитесь, что пользователь был внесён в список:

cat /etc/vsftpd.userlist
Пользователь user
Пользователь user

Перезапустите FTP, чтобы обновить настройки:

systemctl restart vsftpd

На данный момент FTP-доступ есть только у пользователя user, можно протестировать через подключение по FTR.