Разберу процесс установки и настройки vsftpd на Debian 13 пошагово.
Шаг 1. Обновление системы
Перед установкой нового ПО всегда полезно обновить списки пакетов:
sudo apt update
sudo apt upgrade -y
Шаг 2. Установка vsftpd
Установите пакет vsftpd:
sudo apt install vsftpd -y
После установки служба запустится автоматически. Проверьте её статус:
sudo systemctl status vsftpd
В выводе должно быть active (running).
Шаг 3. Настройка брандмауэра
Если у вас включён ufw, разрешите подключения к FTP:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp # порты для пассивного режима sudo ufw enable
Шаг 4. Редактирование конфигурационного файла
Откройте файл конфигурации:
sudo nano /etc/vsftpd.conf
Отредактируйте или добавьте следующие параметры:
# Разрешить локальным пользователям входить в систему anonymous_enable=NO local_enable=YES
# Разрешить загрузку файлов write_enable=YES
# Изменить права доступа для новых файлов (644 для файлов, 755 для папок) local_umask=022
# Показать сообщения при входе в директорию dirmessage_enable=YES
# Использовать локальное время use_localtime=YES
# Включить логирование xferlog_enable=YES xferlog_std_format=YES log_ftp_protocol=YES
# Пассивный режим pasv_enable=YES pasv_min_port=30000 pasv_max_port=31000
# Ограничить пользователей их домашними директориями (chroot jail) chroot_local_user=YES allow_writeable_chroot=YES
# Порт прослушивания listen=YES listen_ipv6=NO
# Настройки безопасности rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=NO
# Отключить SSL для простоты, включите, если нужно
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
Сохраните файл (Ctrl+O, затем Enter) и закройте редактор (Ctrl+X).
Примените изменения, перезапустив службу:
Шаг 5. Создание SSL‑сертификата (опционально)
Если вы хотите включить SSL/TLS, создайте самоподписанный сертификат:
sudo mkdir -p /etc/ssl/private
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Затем в файле /etc/vsftpd.conf измените строку:
ssl_enable=YES
Шаг 6. Создание пользователя FTP (опционально)
Создайте отдельного пользователя для FTP:
sudo adduser ftpuser
Задайте пароль и заполните информацию (или пропустите).
Чтобы ограничить пользователя его домашней директорией, убедитесь, что в /etc/vsftpd.conf установлены параметры:
chroot_local_user=YES
allow_writeable_chroot=YES
Шаг 7. Перезапуск службы
Примените изменения:
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd # автозагрузка при старте системы
Шаг 8. Проверка подключения
Проверьте работу сервера с локальной машины:
ftp localhost
Или с другого компьютера, используя IP‑адрес сервера:
ftp ваш_ip_адрес
Войдите под учётной записью пользователя и попробуйте загрузить/скачать файл.
Дополнительные рекомендации по безопасности
- Запретите анонимный доступ. В конфигурации должно быть anonymous_enable=NO.
- Ограничьте пользователей их домашними директориями. Используйте chroot_local_user=YES.
- Включите логирование. Убедитесь, что xferlog_enable=YES и log_ftp_protocol=YES. Логи хранятся в /var/log/vsftpd.log.
- Используйте SSL/TLS. Если передаёте чувствительные данные, включите ssl_enable=YES и настройте сертификаты.
- Регулярно обновляйте систему. Выполняйте sudo apt update && sudo apt upgrade для установки обновлений безопасности.
Добавим к нашим настройкам - чтобы пользователи FTP могли заходить только в папку /mnt/FTP, имели права на запись и запретить доступ root через FTP.
Шаг 1. Создание целевой папки и настройка прав
# Создаём папку, если её ещё нет
sudo mkdir -p /mnt/FTP
# Устанавливаем владельца и группу (рекомендуется создать отдельную группу для FTP)
sudo groupadd ftpusers
sudo chown root:ftpusers /mnt/FTP
# Даём группе права на чтение, запись и выполнение
sudo chmod 775 /mnt/FTP
# Для возможности записи файлов внутри папки
sudo chmod g+s /mnt/FTP # setgid — новые файлы наследуют группу
Шаг 2. Запрет доступа root через FTP
Добавьте в /etc/vsftpd.conf строку:
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.userlist
Создайте файл списка запрещённых пользователей:
echo "root" | sudo tee /etc/vsftpd.userlist
Шаг 3. Настройка vsftpd для ограничения доступа к папке
Отредактируйте /etc/vsftpd.conf, убедитесь, что присутствуют следующие параметры:
# Основные настройки listen=YES anonymous_enable=NO local_enable=YES write_enable=YES
# Ограничение пользователей их домашней директорией (chroot jail) chroot_local_user=YES allow_writeable_chroot=YES
# Настройки для ограничения доступа только к указанной папке local_root=/mnt/FTP
# Список запрещённых пользователей userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=YES
# Пассивный режим (для работы за NAT/брандмауэром) pasv_enable=YES pasv_min_port=40000 pasv_max_port=50000
# Дополнительные настройки безопасности seccomp_sandbox=NO
# может потребоваться для chroot в нестандартных путях
Шаг 4. Создание FTP‑пользователя
# Создаём пользователя и сразу добавляем в группу ftpusers sudo useradd -d /mnt/pve/cammon/private/common/FTP -s /bin/false ftpuser sudo usermod -aG ftpusers ftpuser
# Устанавливаем пароль sudo passwd ftpuser
# Убедимся, что домашний каталог пользователя указывает на нужную папку sudo usermod -d /mnt/FTP ftpuser
Важно: оболочка /bin/false запрещает пользователю вход через SSH, но позволяет FTP‑доступ.
Шаг 5. Проверка прав для пользователя
Убедитесь, что пользователь имеет доступ к папке:
# Проверяем принадлежность к группе groups ftpuser
# Если нужно, добавляем пользователя в группу ещё раз sudo usermod -aG ftpusers ftpuser
# Перезапускаем службу sudo systemctl restart vsftpd