FTP (File Transfer Protocol) — один из старейших и наиболее простых способов передачи файлов между компьютерами в сети. Несмотря на появление современных альтернатив, таких как SFTP, FTP по-прежнему широко используется благодаря лёгкости настройки и поддержке практически всеми операционными системами. В статье разберём, как развернуть FTP-сервер на VPS, работающем под управлением Debian 12.
Как развернуть FTP-сервер на Debian 12
Наиболее простой способ создания FTP-сервера на Debian 12 — установить и настроить vsftpd
(Very Secure FTP Daemon). Это быстрый, безопасный и стабильный FTP-сервер с открытым исходным кодом, широко используемый в системах на базе Linux. Он поддерживает и стандартный FTP, и безопасные протоколы передачи файлов, такие как FTPS.
Установка демона vsftpd
Как всегда перед установкой нового софта обновите списки пакетов в системе:
$ sudo apt update
После чего проинсталлируйте непосредственно vsftpd
:
$ sudo apt install vsftpd
По окончании установки запустите vsftpd
и включите данную службу в автозагрузку:
$ sudo systemctl enable --now vsftpd
Чтобы убедиться в том, что демон vsftpd
установлен и запущен корректно, проверьте состояние службы:
$ systemctl status vsftpd
Настройка FTP-сервера
Далее необходимо создать пользователя, под именем которого впоследствии будет осуществляться подключение к FTP-серверу. В нашем примере таким пользователем будет your-ftp-user
:
$ sudo useradd your-ftp-user
После чего придумайте и укажите пароль для данного пользователя:
$ sudo passwd your-ftp-user
Затем создайте каталог, который будет использоваться для доступа к FTP-серверу:
$ sudo mkdir /your-ftp-catalog
Данный каталог установите для ранее созданного пользователя в качестве домашней директории:
$ sudo usermod -d /your-ftp-catalog your-ftp-user
После чего измените владельца и группу каталога /your-ftp-catalog
на пользователя your-ftp-user
и группу your-ftp-user
:
$ sudo chown your-ftp-user:your-ftp-user /your-ftp-catalog
На следующем шаге необходимо внести некоторые изменения в конфигурацию демона vsftpd
. Для чего перейдите в каталог /etc
:
$ cd /etc
И откройте для редактирования конфигурационный файл vsftpd
– vsftpd.conf
:
$ sudo nano vsftpd.conf
В данном файле приведите нижеперечисленные параметры к следующему виду:
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
connect_from_port_20=YES
use_localtime=YES
xferlog_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
Данные параметры, указанные в конфигурационном файле, отвечают за следующий функционал:
listen=YES
— включает работу FTP-сервера в режиме автономного демона;listen_ipv6=NO
— отключает использование IPv6;anonymous_enable=NO
— отключает доступ анонимных пользователей;local_enable=YES
— разрешает подключение локальных учётных записей системы;write_enable=YES
— разрешает операции записи на сервере;dirmessage_enable=YES
— включает отображение сообщений из файла.message
при входе в каталог;connect_from_port_20=YES
— включает использование порта 20 для передачи данных в режиме активного FTP;use_localtime=YES
— активирует использование локального времени системы вместо UTC для отметок времени в логах и файлах;xferlog_enable=YES
— включает ведение логов загрузок и скачиваний;xferlog_std_format=YES
— включает стандартный формат логов дляxferlog
;chroot_local_user=YES
— изолирует локальных пользователей в их домашних каталогах;allow_writeable_chroot=YES
— разрешает использовать каталоги, доступные для записи, в качестве корневых;secure_chroot_dir=/var/run/vsftpd/empty
— указывает на директорию, которая используется демономvsftpd
для безопасного выполнения операций, требующихchroot
, прежде чем пользователь будет авторизован;pam_service_name=vsftpd
— указывает имя службы PAM (Pluggable Authentication Module), используемой для аутентификации. Другими словами, сервер будет использовать настройки из файла/etc/pam.d/vsftpd
для управления аутентификацией пользователей.
Также в конфигурационном файле задайте диапазон портов, например 59000-60000, которые FTP-сервер будет использовать для установления пассивных FTP-соединений при передаче данных. Это может быть важно как для настройки безопасности сервера, так и для контроля доступа к сети. Чтобы сделать это, добавьте следующие строки в конец файла vsftpd.conf
:
pasv_enable=YES
pasv_min_port=59000
pasv_max_port=60000
Затем закройте файл, сохранив внесённые в него изменения, и перезапустите демон vsftpd
:
$ sudo systemctl restart vsftpd
Настройка брандмауэра
Если на вашем VPS установлен и настроен брандмауэр UFW, то вам необходимо будет внести изменения в его настройки.
В частности, нужно добавить в брандмауэр разрешающие правила для TCP-портов 20 и 21. Порт 20 используется при передаче данных в активном режиме FTP. Порт 21 — это стандартный управляющий порт FTP. Он используется для управления соединением и передачи команд между клиентом и сервером. Через этот порт происходит установление и поддержание сессии FTP.
$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
Дополнительно необходимо добавить разрешающее правило для TCP-портов, используемых для установления пассивных FTP-соединений. В нашем примере мы установили для данных портов диапазон 59000-60000.
$ sudo ufw allow 59000:60000/tcp
Проверка подключения
Чтобы проверить работоспособность FTP-сервера, можно использовать, например, такой FTP-клиент, как FileZilla. В интерфейсе FileZilla введите в соответствующие поля IP-адрес FTP-сервера и имя пользователя, имеющего права на получение доступа к FTP-серверу. После чего нажмите Быстрое соединение
.
Затем введите пароль пользователя и нажмите ОК
.
После подключения левая часть интерфейса FileZilla будет содержать ваши локальные файлы и директории, а раздел справа — файлы и каталоги, размещённые на FTP-сервере.
Также проверку подключения к FTP-серверу можно выполнить из командной строки. Для чего используйте следующую команду, в которой замените X.X.X.X
на IP-адрес вашего FTP-сервера:
ftp X.X.X.X
Данная команда работает как в Windows, так и в операционных системах семейства Linux.