105207879

Установка и настройка vsftpd на Debian 13

Разберу процесс установки и настройки 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).

Примените изменения, перезапустив службу:

 
sudo systemctl restart vsftpd

Шаг 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_адрес

Войдите под учётной записью пользователя и попробуйте загрузить/скачать файл.

Дополнительные рекомендации по безопасности

  1. Запретите анонимный доступ. В конфигурации должно быть anonymous_enable=NO.
  2. Ограничьте пользователей их домашними директориями. Используйте chroot_local_user=YES.
  3. Включите логирование. Убедитесь, что xferlog_enable=YES и log_ftp_protocol=YES. Логи хранятся в /var/log/vsftpd.log.
  4. Используйте SSL/TLS. Если передаёте чувствительные данные, включите ssl_enable=YES и настройте сертификаты.
  5. Регулярно обновляйте систему. Выполняйте 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

Добавить комментарий