FTP сервер vsFTPd
vsFTPd и ProFTPD — одни из самых простых способов поднять сервер FTP на Linux.
FTP-сервер vsFTPd поддерживает IPv6 и SSL, является FTP-сервером по умолчанию во многих операционных системах.
ШАГ 1: Установка vsFTPd
- Обновим пакеты и установим vsftpd
sudo apt update && sudo apt install vsftpd
- Проверим статус демона
sudo service vsftpd status ● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-11-02 11:13:17 UTC; 1min 17s ago Main PID: 82770 (vsftpd) Tasks: 1 (limit: 9451) Memory: 612.0K CGroup: /system.slice/vsftpd.service └─82770 /usr/sbin/vsftpd /etc/vsftpd.conf
ШАГ 2: Настройка брандмауэра ufw для vsFTPd
Давайте откроем порты 20 и 21 для FTP и порты 40000-50000 для пассивного FTP. Также откройте порт 990 для TLS, если планируете его использовать.
sudo ufw allow OpenSSH sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 40000:50000/tcp sudo ufw allow 990/tcp
Включаем фаервол iptables для начинающих: Простое управление брандмауэром с UFW:
sudo ufw enable
Проверяем настройки фаервола:
sudo ufw status
ШАГ 3: Создаем пользователя FTP
Пользователь создается системный, поэтому ему нужно закрыть доступ к подключению по протоколу SSH, указать шелом /bin/false к сожалению нельзя. Согласно этой заметке разрешаем доступ к SSH только определенным пользователям, остальные блокируем.
Cоздадим нашего тестового пользователя с помощью Быстрое cоздание пользователей в Linux (useradd, usermod, chsh) и зададим ему пароль:
sudo useradd -m -c "Test User" -s /bin/bash testuser sudo passwd testuser
Поскольку мы хотим подключаться от его имени к FTP-серверу, то нам нужно добавить его в vsftpd.userlist:
echo 'testuser' >> /etc/vsftpd.userlist
В процессе установки создается пользователь ftp с домашним каталогом /srv/ftp. Это каталог по умолчанию для FTP. Если вы желаете поменять его расположение, например, на /srv/files/ftp, просто создайте новый каталог и измените домашний каталог пользователя ftp:
sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp
После изменений перезапустите vsftpd:
sudo service vsftpd restart
ШАГ 4: Настройка vsftpd - скачать работающий конфиг vsftpd.conf
Сделаем копию оригинального файла настроек vsftpd.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Правим конфигурационный файл vsftpd.conf.
- Отключаем анонимный вход: anonymous_enable = NO
- Разрешаем использовать имена локальных пользователей для входа: local_enable = YES
- Для авторизованных пользователей разрешаем команды, позволяющие изменять файловую систему: write_enable = YES
- Установим значение umask для новых файлов, создаваемых по FTP: local_umask = 022
- Использовать порт 20 для передачи данных вместо случайного: connect_from_port_20 = YES
- Записывать в лог файл все транзакции по передаче файлов и использовать стандартный формат лога
- Чтобы заставить vsftpd вести логи подключений добавьте параметр dual_log_enable=YES
xferlog_enable = YES xferlog_std_format=YES
Вы может скачать работающий конфиг vsftpd.conf в окружении Ubuntu 20.04.1 LTS: vsftpd сервер успешно работает под нагрузкой как на ethernet интерфейсе, так и tun0 интерфейса OpenVPN клиента.
- vsftpd.conf
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES #chown_uploads=YES #chown_username=whoever #xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES #data_connection_timeout=120 #nopriv_user=ftpsecure #async_abor_enable=YES #ascii_upload_enable=YES #ascii_download_enable=YES #ftpd_banner=Welcome to blah FTP service. #deny_email_enable=YES #banned_email_file=/etc/vsftpd.banned_emails chroot_local_user=YES #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd.chroot_list #ls_recurse_enable=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO #utf8_filesystem=YES userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO allow_writeable_chroot=YES dual_log_enable=YES
ШАГ 5: Тестирование работы vsftpd
Из командной строки запускаем клиента FTP:
# ftp localhost Connected to localhost. 220 (vsFTPd 3.0.3)
Пробуем залогинеться по тестовым пользователем и другими пользователями, в том числе анонимным. При попытки ввода имени пользователя не указанного в файле vsftpd.userlist должна быть запрет (ответ с кодом 530 Permission denied. Login failed.).
Настройка завершена. Удачи!
FAQ 1: Как посмотреть логи изменений (удаления файлов) на FTP сервере vsftpd?
Чтобы посмотреть кто внёс изменение на сервере через FTP, а точнее удалил файлы используйте лог файл /var/log/xferlog. Укажите параметры логирования как в этом конфигурационном файле vsftpd
FAQ 2: Как посмотреть ошибки логирования пользователей на FTP сервере vsftpd?
Частая проблема vsftpd заходит кто то с неправильным паролем - куда смотреть то - логов же нет даже обычный правильный заход не пишется. Вы просто не настроили конфигурационный файл vsftpd.
Ошибки логирования у вас должны быть в файле /var/log/vsftpd.log И иметь такой вид:
Thu Nov 5 09:24:55 2020 [pid 2830999] CONNECT: Client "::ffff:10.26.95.175" Thu Nov 5 09:24:55 2020 [pid 2830996] [buhna] OK LOGIN: Client "::ffff:10.26.95.175"
FAQ 3: Ошибка An unexpected TLS packet was received
Устранение ошибки GnuTLS -15 в gnutls_record_recv: An unexpected TLS packet was received., возникающей при подключение FTP клиента, например FileZilla.
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах