Read on and never let your files be captive on your home computer again!
- Введение в vsftpd
- Права доступа на файлы и директории
- Авторизация vsftpd и /bin/false
- Создать корневой каталог FTP
- Смена владельца и группы FTP-root на ftp
- Настройте /etc/vsftpd/vsftpd.conf “
- Основные правила vsftpd
- Security Implications
- Non-root server issues
- Symlinks
- Opening Ports for FTP Client Connections
- Creating a Dedicated User to Use the FTP Service
- Установка vsftpd
- Prerequisites
- Disabling Shell Access
- Configuring the VSFTDP Server
- Примеры конфигурации vsftpd
- Правила для анонимных пользователей vsftpd
- Cпособы запуска vsftpd
- Настройка vsftpd. conf
- SSL шифрование данных в vsftpd
- DOWNLOAD/UPLOAD
- Connecting to the FTP Server
- Vsftpd кодировка
- Команды vsftpd
- Installing VSFTPD on Ubuntu
- Правила работы с пользователями vsftpd
- Натройка (редактирование) vsftpd. conf
- Журналирование vsftpd
- Conclusion
Введение в vsftpd
Vsftpd (англ. Very Secure FTP Daemon) — FTP -сервер с поддержкой IPv6 и SSL.
Vsftpd является FTP-сервером по умолчанию многих операционных систем, и обслуживает официальные репозитории.
Vsftpd — FTP сервер являющийся безопасным, эффективным, стабильным, полностью готовым и проверенным решением в мире FTP серверов.
Совмещая функциональность с безопасностью, он все больше привлекает к себе внимание, подтверждением тому служит (неполный) список проектов доверивших ему свои сервера:
ftp.debian.org, ftp.freebsd.org, ftp.suse.com, ftp.openbsd.org, ftp.gnu.org, ftp.kernel.org, ftp.gnome.org, ftp.gimp.org, ftp.rpmfind.net, ftp.linux.org.uk, ftp-stud.fht-esslingen.de, gd.tuwien.ac.at, ftp.sunet.se, ftp.ximian.com, ftp.engardelinux.org, ftp.sunsite.org.uk, ftp.isc.org, ftp.redhat.com, ftp.kde.org
Разработчик Chris Evans, являясь профессиональным исследователем в области информационной безопасности, обнаруживший достаточное количество уязвимостей в других программах www.scary.beasts.org/security , не забыл при этом позаботиться о усилении безопасности своего продукта. При этом ему удалось сильно расширить возможности VSFTPD, наделив его такими функциями как:
- Virtual IP configurations — возможность назначения виртуальных IP;
- Virtual users — возможность создания виртуальных пользователей;
- Standalone or inetd operation — возможность автономного пуска без inetd/xinetd;
- Powerful per-user configurability — конфигурация пользователей;
- Bandwidth throttling — контроль скорости полосы пропускания;
- Per-source-IP configurability — конфигурация по IP адресу;
- Per-source-IP limits — конфигурация лимита по IP адресу;
- IPv6 — релизация поддержки IPv6;
- Encryption support through SSL integration — поддержка SSL шифрования данных;
- и многими другими возможностями описанными мной далее…
FTP очень полезная вещь, он позволяет легко подключаться к удаленному серверу, для загрузки или скачивания данных.
Со всеми недостатками и изъянами в безопасности, FTP должен был отойти на второй план, как и протокол telnet, однако у него оказалось намного больше преимуществ, по этому он используется по сей день и довольно успешно. К нему появилось довольно много модификаций, которые позволяют например: заворачивать трафик в SSL/TLS для повышения безопасности переделываемых по сети данных, как это сделать можно ознакомиться в статье- Настрока ProFTPd для использования TLS Но на этот раз не о Proftpd.
Данная статья была вынесена в отдельный топик, для того чтобы ее было проще найти
на сайте. Раньше она находилась в статье по настройке Nginx+Apache, но думаю что она будет намного полезнее в качетсве самостоятельного материала.
Переходим в режим супер пользователя root:
Для Debian:
su
Для Ubuntu
sudo su
aptitude install vsftpd
Нашей основной задачей является блокирование пользователя внутри своей домашней директории, для того, чтобы не допустить его переход в папки «соседей» по серверу. Для этого мы немного подредактируем конфигурационный файл vsftpd.conf.
nano /etc/vsftpd.conf
Находим и редактируем следующие строчки:
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
напишем свой баннер для входа, хотя он и не обязателен( на работу он не влияет):
ftpd_banner=Welcome to our FTP service
Запираем пользователей в домашних директориях:
chroot_local_user=YES
ну под данной записью добавим:
allow_writeable_chroot=YES
Разрешаем вход локальным пользователям:
local_enable=YES
Запрещаем анонимный доступ, необходимо найти строку:
#anonymous_enable=YES
И привести ее к виду:
anonymous_enable=NO
Ну и добавим работу в пассивном режиме:
pasv_min_port=50000
pasv_max_port=60000
Поддержка IPv6 в vsFTPd
Для того чтобы добавить возможность работы с ip версии 6, то в конфигурационном файле находим строку:
listen=YES
Её необходимо за комментировать, чтобы она выглядела:
#listen=YES
Также, нам необходимо найти строку:
#listen_ipv6=YES
И снять с нее комментарий.
После этого, наш FTP сервер будет доступен по IPv4 и IPv6
Права доступа на файлы и директории
Параметр local_umask отвечает за то, какие права будут присвоены файлам, которые были закачаны через FTP, по умолчанию там установлено local_umask=022, маска расчитывается очень просто, по формуле 777-A=X
Где:
777-права полного доступа
А-права которые необходимо получить
Х-маска, которую необходимо выставить
Предположим, нам необходимо получить права 754 что соотвествует drwxr-xr—, тогда 777-754=23 получается local_umask=023.
В любом случае, тот кто закачал файлы является их владельцем и может расширить права доступа к ним.
В общем, находим строку:
local_umask=022
И меняем 022 на 023 или на ту которая необходима в вашей ситуации:
local_umask=023
Авторизация vsftpd и /bin/false
Для обеспечения безопасности сервера, пользователям виртуальных хостов будет отключен шелл, как пишут на просторах интернетов, рекомендуется это делать следующим способом:
useradd username -b /home -m -U -s /bin/false
Создадим для него пароль:
passwd username
Рассмотрим это выражение более подробно.
Где:
username -имя пользователя(логин)
home-Директория где будет находиться его домашний каталог
ключ -m — указывает на то, что его домашней директории будет присвоено название которое было указано в username.
ключ -U -Указывает на то что необходимо создать одноименную группу.
-s /bin/false -что пользователю будет отключен шелл (это важный и тонкий момент!)
Назначение остальных ключей можно нагуглить за пару минут.
nano /etc/pam.d/vsftpd
Найти и закоментировать строку (она самая последняя)
auth required pam_shells.so
чтобы она выглядела:
#auth required pam_shells.so
И перезапускаем vsftpd
/etc/init.d/vsftpd restart
И еще немного для общего развития- Пользователь с отключенным шеллом, не сможет подключиться по SSH! Это можно считать дополнительным плюсом к безопастности.
Как отключить шелл уже существующему в системе пользователю:
nano /etc/passwd
там находим нужного пользователя и /bin/bash меняем на /bin/false, после перезагрузки, изменения переменятся.
На этом можно закончить.
Чтобы устранить проблему с настройкой vsFTPd на Ubuntu 12.04, воспользуйтесь заметкой: Ремонтируем vsFTPd в Ubuntu 12.04
Прежде чем углубиться в установку FTP на CentOS, нам нужно немного узнать о его использовании и безопасности. FTP – это действительно эффективный и хорошо проработанный протокол для передачи файлов между компьютерными системами. FTP используется и совершенствуется уже несколько десятилетий. Для эффективной передачи файлов по сети с задержкой или для высокой скорости FTP является отличным выбором. Больше, чем SAMBA или SMB.
Тем не менее, FTP имеет некоторые проблемы с безопасностью. На самом деле, некоторые серьезные проблемы с безопасностью. FTP использует очень слабый метод аутентификации в виде простого текста. Именно по этой причине аутентифицированные сеансы должны полагаться на sFTP или FTPS, где TLS используется для сквозного шифрования сеансов входа и передачи.
С учетом вышеуказанных предостережений простой старый FTP по-прежнему находит применение в бизнес-среде. Основное использование – анонимные хранилища файлов FTP. Это ситуация, когда не требуется аутентификация для загрузки или загрузки файлов. Некоторые примеры использования анонимного FTP:
-
Крупные софтверные компании по-прежнему используют анонимные FTP-репозитории, позволяющие пользователям Интернета загружать условно-бесплатные программы и исправления.
-
Разрешение пользователям Интернета загружать и скачивать публичные документы.
-
Некоторые приложения автоматически отправляют зашифрованные, заархивированные журналы или файлы конфигурации в хранилище по FTP.
Крупные софтверные компании по-прежнему используют анонимные FTP-репозитории, позволяющие пользователям Интернета загружать условно-бесплатные программы и исправления.
Разрешение пользователям Интернета загружать и скачивать публичные документы.
Некоторые приложения автоматически отправляют зашифрованные, заархивированные журналы или файлы конфигурации в хранилище по FTP.
Следовательно, будучи администратором CentOS, возможность устанавливать и настраивать FTP по-прежнему остается искусством.
Мы будем использовать демон FTP с именем vsFTP или Very Secure FTP Daemon. vsFTP был использован в разработке некоторое время. Он имеет репутацию безопасного, простого в установке и настройке и надежного.
Шаг 1 – Установите vsFTPd с помощью диспетчера пакетов YUM.
[root@centos]# yum -y install vsftpd.x86_64
Шаг 2 – Настройте vsFTP для запуска при загрузке с systemctl.
[root@centos]# systemctl start vsftpd [root@centos]# systemctl enable vsftpd Created symlink from /etc/systemd/system/multi- user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
Шаг 3 – Настройте FirewallD, чтобы разрешить FTP управление и сеансы передачи.
[root@centos]# firewall-cmd --add-service=ftp --permanent success [root@centos]#
Убедитесь, что наш FTP-демон работает.
[root@centos]# netstat -antup | grep vsftp tcp6 0 0 :::21 :::* LISTEN 13906/vsftpd [root@centos]#
Шаг 4 – Настройте vsFTPD для анонимного доступа.
Создать корневой каталог FTP
[root@centos]# mkdir /ftp
Смена владельца и группы FTP-root на ftp
[root@centos]# chown ftp:ftp /ftp Set minimal permissions for FTP root: [root@centos]# chmod -R 666 /ftp/ [root@centos]# ls -ld /ftp/ drw-rw-rw-. 2 ftp ftp 6 Feb 27 02:01 /ftp/ [root@centos]#
В этом случае мы предоставили пользователям доступ на чтение / запись ко всему корневому дереву FTP.
Настройте /etc/vsftpd/vsftpd.conf “
[root@centos]# vim /etc/vsftpd/vsftpd.conf # Example config file /etc/vsftpd/vsftpd.conf # # The default compiled in settings are fairly paranoid. This sample file # loosens things up a bit, to make the ftp daemon more usable. # Please see vsftpd.conf.5 for all compiled in defaults. # # READ THIS: This example file is NOT an exhaustive list of vsftpd options. # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's # capabilities.
Мы хотим изменить следующие директивы в файле vsftp.conf .
-
Включить анонимную загрузку, раскомментировав anon_mkdir_write_enable = YES
-
chown загруженные файлы принадлежат пользователю системы ftp
chown_uploads = ДА
-
Установите пользовательский баннер для чтения пользователем перед входом в систему.
ftpd_banner = Добро пожаловать на наш анонимный FTP репо. Все соединения контролируются и регистрируются.
-
Давайте установим только соединения IPv4 –
слушай = ДА
listen_ipv6 = НЕТ
Включить анонимную загрузку, раскомментировав anon_mkdir_write_enable = YES
chown загруженные файлы принадлежат пользователю системы ftp
chown_uploads = ДА
Установите пользовательский баннер для чтения пользователем перед входом в систему.
ftpd_banner = Добро пожаловать на наш анонимный FTP репо. Все соединения контролируются и регистрируются.
Давайте установим только соединения IPv4 –
слушай = ДА
listen_ipv6 = НЕТ
Теперь нам нужно перезапустить или подключить службу vsftp, чтобы применить наши изменения.
[root@centos]# systemctl restart vsftpd
Давайте подключимся к нашему FTP-хосту и убедимся, что наш FTP-демон отвечает.
Основные правила vsftpd
tcp_wrappers
Если включено, и vsftpd был скомпилирован с поддержкой tcp_wrappers, входящие соединения контролируются через tcp_wrappers. Этот механизм предоставляет возможность контролировать соединения по ip адресам, назначая конкретному подключению отдельный конфигурационный файл vsftpd. Параметры tcp_wrappers устанавливаются в конфигурационных файлах /etc/hosts.allow и /etc/hosts.deny, среди них есть переменная окружения VSFTPD_LOAD_CONF, указывающая на месторасположения файла с альтернативными vsftpd.conf параметрами для определенного правила (ip адреса) напротив которого она указана.
Default: NO
idle_session_timeout
Временной промежуток в секундах указывающий для удаленного клиента максимальное время которое он может бездействовать не выполняя FTP команды. Если время исчерпано, соединение отбрасывается.
Default: 300
data_connection_timeout
Максимальный временной промежуток в секундах, разрешенного замирания процесса передачи данных. Если перерыв превышен, соединение с удаленным клиентом отбрасывается.
Default: 300
accept_timeout
Максимальное время в секундах для выделения подключения с PASV стилем передачи данных.
Default: 60
connect_timeout
Максимальное время в секундах, отведенное на выделение соединения PORT стиля передачи данных.
Default: 60
banner_file
Эта опция указывает на имя банер-файла содержащего текст выводимый на экран клиента при подключении к серверу. Если выбрано, отменяет банер-строку предоставленную ftpd_banner опцией.
Default: (none)
ftpd_banner
В этой опции можно указать банер-строку выводимую на экран клиента при подключении к серверу.
Default: (none — default vsftpd banner is displayed)
dirmessage_enable
Если разрешено, при входе в каталог пользователям показывается сообщение из файла .message. По умолчанию, директория сканируется на наличие сообщения в файле .message, что можно изменить задав имя другого файла параметром message_file.
Default: NO (but the sample config file enables it)
message_file
Эта опция указывает на имя файла в котором содержится сообщение показываемое пользователям при входе в каталог. Работает только если опция dirmessage_enable включена.
Default: .message
use_localtime
При включении, vsftpd производит листинг каталогов с отображением времени лично вашей временной зоны. По умолчанию в листинге отображается GMT временная зона. Времена обновляемые MDTM командами также затрагиваются этой опцией.
Default: NO
force_dot_files
Если включено, файлы и каталоги имена которых начинаются с «.» будут показаны при листинге каталогов, даже если флаг «a» не был использован клиентом.
Default: NO
hide_ids
Включение скрывает информацию о именах владельцев файлов и группах, при листинге отображается как «ftp».
Default: NO
secure_chroot_dir
Эта опция указывает на имя пустого каталога. Также, каталог не должен быть записываемый для ftp пользователя. Этот каталог используется как безопасный chroot(), когда vsftpd не нужен доступ к файловой системе.
Default: /var/run/vsftpd
delay_failed_login
Время ожидания в секундах, перед выводом отчета о неудачном входе.
Default: 1
delay_successful_login
Время ожидания в секундах, перед разрешением успешного входа.
Default: 0
connect_from_port_20
Включение этой опции указывает исходящим с сервера соединениям использовать 20 порт. Из соображений безопасности, некоторые клиенты могут настаивать на этом значении. Отключение этой опции позволяет vsftpd стартовать с немного меньшими привилегиями.
Default: NO (but the sample config file enables it)
ftp_data_port
Указывается порт для входящих соединений с сервером (пока connect_from_port_20 включен).
Default: 20
port_enable
Отключите при желании запретить PORT метод организации соединения.
Default: YES
port_promiscuous
При включении выключается PORT security check гарантирующий что исходящие соединения могут быть установлены только с клиентами. Включайте только если действительно знаете что делаете!
Default: NO
one_process_model
Начиная с ядра Linux 2.4, возможно использование различных моделей безопасности, так включение этой опции позволяет использовать только один процесс на одно пользовательское подключение. Обычно нет нужды включать это если вы точно не уверены что делаете, и сайт не поддерживает большое количество одновременно подключенных пользователей.
Default: NO
setproctitle_enable
При включении, vsftpd будет показывать информацию о статусе сессии в списке системных процессов. Другими словами, в списке процессов будут подробно отображаться события происходящие с vsftpd (скачивания и др.)
Default: NO
max_login_fails
Количество неудачных попыток входа, после которых сессия прекращается.
Default: 3
pasv_max_port
Значение указывает максимальный порт до которого размещены порты для PASV стиля передачи данных. Может быть использовано для указания подробного размещения портов помогая файрволлингу.
Default: 0 (use any port)
pasv_min_port
Значение номера порта начиная с которого размещаются порты для PASV стиля передачи данных. Может быть использовано для указания подробного размещения портов помогая файрволлингу.
Default: 0 (use any port)
pasv_address
Этой опцией задается ip адрес для ответа на запрос PASV команды. Адрес указывается в цифровом виде, если не включен pasv_addr_resolve. По умолчанию, берётся адрес сокета входящего соединения.
Default: (none — the address is taken from the incoming connected socket)
pasv_addr_resolve
Необходимо включить если вы хотите использовать имя хоста (вместо ip адреса) в pasv_address опции.
Default: NO
pasv_enable
Отключите, если вы хотите запретить PASV метод соединения.
Default: YES
pasv_promiscuous
Включите, если хотите запретить PASV security check, контролирующую подключения с одинаковыми ip адресами. Включайте это, только если вы знаете что делаете! Используется в некоторых туннельных соединениях, возможно в FXP.
Default: NO
use_sendfile
Внутренняя настройка используемая для определения пользы использования sendfile().
Default: YES
trans_chunk_size
Вы возможно не хотите менять это, но можете попытаться выбрать что нибудь наподобие 8192 для более плавного ограничения полосы пропускания.
Default: 0 (let vsftpd pick a sensible setting)
pam_service_name
В этой строке можно указать имя PAM сервиса который будет использоваться для vsftpd.
Default: vsftpd
- 1. How do I add another anonymous login or guest account?
- 2. How do I ftp as root?
- 3. How do I provide a secure upload facility?
- 4. How can I stop my users from using their space as a warez repository
- 5. Can I rotate files out of an upload directory after upload?
- 6. How can I hide a directory from anonymous clients.
- 7. File/Directory hiding isn’t working for me!
- 8. I want to prevent users from accessing a hidden directory
- 9. How do I setup a virtual FTP server?
- 10. I only want to allow anonymous access to a virtual server.
- 11. How does <Limit LOGIN> work, and where should I use it?
- 12. How can I limit users to a particular directory tree?
- 13. How do I create individual anonymous FTP sites for my users?
- 14. I want to support normal login and Anonymous under a particular
user - 15. Why doesn’t Anonymous ftp work (550 login incorrect)?
- 16. Bandwidth control
- 17. CHMOD isn’t working
- 18. How can I limit the size of uploaded files?
- 19. Can I disable Anonymous logins?
- 20. Limiting the connections per loginID
- 21. How do I configure proftpd to allow transfer
resumption (for downloads and uploads)?
Problems encountered in trying to make the server behave
exactly as required after compilation and installation are
complete and the server is running.
1. How do I add another anonymous login or guest account?
<Anonymous ~private> AnonRequirePassword off User private Group private RequireValidShell off <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>
2. How do I ftp as root?
First off this is a idea ftping as root is insecure,
there are better more secure ways of shifting files as root.
To enable root ftp ensure that the directive «RootLogin on» is
included in your configuration.
3. How do I provide a secure upload facility?
<Anonymous /home/ftp> # All files uploaded are set to username.usergroup ownership User username Group usergroup UserAlias ftp username AuthAliasOnly on RequireValidShell off <Directory pub/incoming/> <Limit STOR CWD> AllowAll </Limit> <Limit READ RMD DELE MKD> DenyAll </Limit> </Directory> </Anonymous>
This denies all write operations to the anonymous root directory
and sub-directories, except «incoming/» where the permissions are
reversed and the client can store but not read. If you used <Limit
WRITE> instead of <Limit STOR> on <Directory incoming>,
ftp clients would be allowed to perform all write operations to the
sub-dir, including deleting, renaming and creating directories.
5. Can I rotate files out of an upload directory after upload?
Yes. You’ll need to write a script which either checks the
contents of the directory regularly and moves once it’s detected no
size change in a file for xyz seconds. Or a script which monitors an
upload log. There is no automatic method for doing this.
6. How can I hide a directory from anonymous clients.
drwxrwxr-x 3 ftp staff 6144 Apr 21 16:40 private
You can use a directive such as «HideGroup staff» to hide the private
directory from a directory listing. For example:
<Anonymous ~ftp> ... <Directory Private> HideGroup staff </Directory> ... </Anonymous>
7. File/Directory hiding isn’t working for me!
9. How do I setup a virtual FTP server?
You’ll need to configure your host to be able to handle multiple IP
addresses. This is often called «aliasing», and can generally be
configured through an IP alias or dummy interface. You need to read
your operating system documentation to figure out how to do this. Once
your have the host configured to accept the additional IP address that
you wish to offer a virtual FTP server on, use the <VirtualHost>
configuration directive to create the virtual server:
<VirtualHost 10.0.0.1> ServerName "My virtual FTP server" </VirtualHost>
10. I only want to allow anonymous access to a virtual server.
<VirtualHost 10.0.0.1> ServerName "My virtual FTP server" <Limit LOGIN> DenyAll </Limit> <Anonymous /usr/local/private> User private Group private <Limit LOGIN> AllowAll </Limit> ... </Anonymous> </VirtualHost>
11. How does <Limit LOGIN> work, and where should I use it?
... <Limit LOGIN> Order deny,allow Deny from 10.1.1. Allow from all </Limit> ...
Next, an example of a configuration using <Limit LOGIN> that will not
immediately disconnect an incoming client, but will return «Login
invalid» for all login attempts except anonymous.
... <Limit LOGIN> DenyAll </Limit> <Anonymous ~ftp> ... <Limit LOGIN> AllowAll </Limit> ...
... <VirtualHost myhost.mynet.foo> DefaultRoot ~ ... </VirtualHost>
... <VirtualHost myhost.mynet.foo> DefaultRoot /u2/public users,!staff ... </VirtualHost>
Security Implications
A more detailed http://www.bpfh.net/simes/computing/chroot-break.html on this subject and on the breaking of chroot jails has been written by Simon Burr
Non-root server issues
The chroot() system call will not work under a non-root ftp server
process, the call requires root privaliges. Without them it simply
doesn’t work, there doesn’t appear to be any checking in the code of
the uid/gid before calling chroot so using DefaultRoot in such a setup
will cause the server to fail.Symlinks
Symlinks will not work from within a chrooted area. The reason
should be clear from a casual inspection of the nature of
the chroot command. It is not possible to have a symbolic
link to a directory which can»t be reached beacuse it’s
outside of the current chroot. Work arounds to allow
access to other parts of the file system include exporting
the part of the filesystem to be accessed from inside the
chroot and mounting via NFS, using hard file links or (on
Solaris) using lofs to mount the directory via the loopback.mount -Flofs /home/data1 /ftp/data1 mount -Flofs /home/data2 /ftp/data2As of the 2.4.x Linux kernel tree it is possible to mount filesystems
multiple times and to mount subdirectories of filesystems elsewhere on
the filesystem.
-
Modify your /etc/proftpd.conf file to look something like this
(you’ll probably want to customize this to your needs):<VirtualHost my.per-user.virtual.host.address> # the next line limits all logins to this virtual host, so that only anonftp users can connect <Limit LOGIN> DenyGroup !anonftp </Limit> # limit access to each user's anon-ftp directory, we want read-only except on incoming <Directory ~/anon-ftp> <Limit WRITE> DenyAll </Limit> </Directory> # permit stor access to each user's anon-ftp/incoming directory, but deny everything else <Directory ~/anon-ftp/incoming> <Limit STOR> AllowAll </Limit> <Limit READ WRITE> DenyAll </Limit> </Directory> # provide a default root for all logins to this virtual host. DefaultRoot ~/anon-ftp # Finally, force all logins to be anonymous for the anonftp group AnonymousGroup anonftp </VirtualHost>
... <Anonymous ~jrluser> User jrluser Group jrluser UserAlias ftp jrluser UserAlias anonymous jrluser AuthAliasOnly on ... </Anonymous>
15. Why doesn’t Anonymous ftp work (550 login incorrect)?
Things to check
If all else fails, you should check your syslog. When authentication
fails for any reason, ProFTPD uses the syslog mechanism to log the
reason for failure; using the AUTH (or AUTHPRIV) facility. If you need
further assistance, you can send email, including related syslog
entries and your configuration file, to the ProFTPD mailing list
mentioned elsewhere in this FAQ.
16. Bandwidth control
A new patch providing the TransferRate directive has
been provided and is slated for inclusion in 1.2.8, this
gives per-connection bandwidth limits with Class support.
The limits are more effective against downloads than
uploads.
There is no method to control the total bandwidth a
single VirtualHost context can use.
17. CHMOD isn’t working
AllowChmod is deprecated and has been replaced with
the SITE_CHMOD expansion for controlling this
functionality.
18. How can I limit the size of uploaded files?
As of 1.2.7rc1 there are two new directives
MaxRetrieveFileSize and MaxStoreFileSize to control the
maximum size of files being transfered to or from the
server.
19. Can I disable Anonymous logins?
Yes, just remove all the <Anonymous> sections
from your configuration file and reload the daemon.
20. Limiting the connections per loginID
21. How do I configure proftpd to allow transfer
resumption (for downloads and uploads)?
To allow downloads to be resumed, you need to use the
AllowRetrieveRestart configuration directive.
To allow uploads to be resumed, you need to use both the
AllowOverwrite and AllowStoreRestart directives. The reason that both
need to be allowed is that a restarted/resumed upload is a form of
overwriting the file.
Also note that using HiddenStores and AllowStoreRestart is incompatible,
as mentioned in the documentation for the AllowStoreRestart
and HiddenStores directives.
Opening Ports for FTP Client Connections
Now that you have the latest version of VSFTPD installed, you can now configure your firewall. You’ll use UFW, the default firewall configuration tool for Ubuntu, to add firewall rules to open ports for secure FTP client connections.
1. Run the ufw status
command to see which firewall rules are currently active.
Below, you can see that the firewall is active but doesn’t have any rules to allow any connections by default.

2. Next, run the ufw allow
command below to allow all three ports through the firewall. VSFTPD requires FTP connections on ports 20
, 21
, and 990
.
sudo ufw allow 20,21,990/tcp

3. Run the ufw
command below to open the 40000:50000
port range.
VSFTPD requires the 40000:50000 port range to be opened so that FTP clients can make data connections to the server in passive mode.
sudo ufw allow 40000:50000/tcp

4. Finally, run the ufw status verbose
command below to verify that your firewall rules are active and check for errors.

Creating a Dedicated User to Use the FTP Service
Provide a secure password and take note of it. You’ll use this password to connect to your FTP server.

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

# Sets the owner of the /home/ata/ftp directory to be nobody.
sudo chown nobody:nogroup /home/ata/ftp
# Ensures that only the owner (your FTP user)
# has write(w) access(a) to the /home/ata/ftp directory.
sudo chmod a-w /home/ata/ftp
sudo chown ata:ata /home/ata/ftp/upload
The below command creates a new file named ata.txt in your FTP directory and includes some text (vsftpd test file) in the text file.
echo "vsftpd test file" | sudo tee /home/ata/ftp/upload/ata.txt

Установка vsftpd
К примеру в Debian GNU/Linux, программный пакет устанавливается одной командой:
apt-get install vsftpd.
Сама программа располагается в каталоге /usr/sbin/vsftpd, возможно в разных дистрибутивах файл vsftpd.conf находится в разных местах, узнать его расположение к примеру можно командой — whereis vsftpd.
В дистрибутиве Debian GNU/Linux, пакет vsftpd размещает свои файлы следующим образом:
Prerequisites
- A Linux machine – This tutorial uses Ubuntu 20.04 LTS, but any Linux distributions will work.
Disabling Shell Access

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly .sh

sudo chmod a+x /bin/ftponly
echo "/bin/ftponly" | sudo tee -a /etc/shells

sudo usermod ata -s /bin/ftponly

Configuring the VSFTDP Server
You have successfully allowed traffic through the firewall, but you must configure your VSFTPD server before using it.
The /etc/vsftpd.conf file is the main configuration file for VSFTPD. But you can also configure your FTP server through other commands if you prefer to do things dynamically. Or if you prefer to specify rules that aren’t available in the config file.
Throughout editing the /etc/vsftpd.conf file, uncomment each directive to enable them by removing the # symbol in front of them.
1. Run the sudo cp
command below to back up the original configuration file (/etc/vsftpd.conf /etc/vsftpd.conf.bak
).
You should always back up any critical config file before you go mucking around.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
2. Next, open the /etc/vsftpd.conf
file in your favorite text editor. This demo uses nano
to edit the configuration file.
sudo nano /etc/vsftpd.conf



allowed_writeable_chroot=YES

6. Next, add the directives below to your vsftpd.conf file to enable passive FTP connections.
VSFTPD can use any port above 1024 not occupied by another service for the passive FTP connection. This demo uses the port range you set in the “Opening Ports for FTP Client Connections” section (step three).
pasv_min_port=35000
pasv_max_port=40000

userlist_enable=YES
# Add the user to the vsftpd.userlist to allow a specific user
# to use the system login account to access your FTP service.
userlist_file=/etc/vsftpd.userlist
# NO - anyone can log in with an anonymous account.
# YES - the user will be denied to login when their name exists in this file.
userlist_deny=NO

8. Finally, save and close the vsftpd.conf file, and run the below command to restart
your vsftpd
server to apply the changes.
sudo service vsftpd restart
Примеры конфигурации vsftpd
1. Конфигурация для загрузки с анонимным доступом, без проверки пароля.
a)inetd/xinetd.
Можно указать другой путь к каталогу с файлами для загрузки (по умолчанию /home/ftp), в /etc/passwd, отредактировав строку «ftp:» следующим образом:
ftp:x:107:65534::/home/diretory/way/:/bin/false (где /home/diretory/way/ — путь)
Проверьте, разрешены ли входящие соединения в настройках брандмауэра, если надо создайте соответствующие правила. Попробуйте подключиться к серверу.
Опция listen=YES позволит VSFTPD работать самостоятельно, без помощи inetd/xinetd. В этом случае необходимо запускать сервер вручную или при помощи загрузочных стартовых скриптов. Для запуска необходимо ввести в консоли команду /usr/sbin/vsftpd и FTP будет
запущен в фоновом режиме благодаря опции background=YES.
Если сервер предназначен для работы в интернет, полезно добавить некоторые ограничения.
anonymous_enable=YES
no_anon_password=YES
anon_world_readable_only=YES
connect_from_port_20=YES
no_anon_password=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
xferlog_enable=YES
ascii_download_enable=NO
async_abor_enable=YES
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=15000
Для работы в интернет в независимом от inetd/xinetd режиме
listen=YES
max_clients=200
max_per_ip=4
anonymous_enable=YES
no_anon_password=YES
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
xferlog_enable=YES
async_abor_enable=YES
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=15000
При переходе в независимый от inetd режим работы (listen=YES), я столкнулся с проблемой, при попытке запуска сервера получал сообщение «500 OOPS: could not bind listening IPv4 socket». Решение оказалось простым, нужно закомментировать строку ftp в /etc/inetd.conf и
перезапустить inetd. Также при переходе в режим listen=NO, пришлось раскоментировать строку ftp в /etc/inetd.conf и перезапустить inetd иначе при попытке подключиться я получал такое сообщение — «ftp: connect: Connection refused».
Я не буду описывать все возможные варианты примеров конфигурации сервера, потому что на самом деле их может быть очень много, вместо этого ниже хочу добавить мой перевод man vsftpd.conf, который был написан для удобства изучения возможностей vsftpd, а сегодня вырос в полноценный перевод.
Выражаю благодарность Andrew Clark, который согласился принять участие в переводе и внес свои корректировки.
NAME
vsftpd.conf — конфигурационный файл для vsftpd
Описание
vsftpd.conf используется для управления различными аспектами поведения vsftpd. По
умолчанию vsftpd ищет этот файл в по адресу /etc/vsftpd.conf. Однако, вы можете
изменить местоположение файла, через аргументы командной строки. Аргументы командной
строки это путь и имя конфигураци онного файла для vsftpd. Такая возможность полезна,
если вы пожелаете использовать улучшенный inetd, такой как xinetd, для запуска vsftpd с
разными конфигурационными файлами на каждый виртуальный хост.
Правила для анонимных пользователей vsftpd
anonymous_enable
Разрешает или запрещает вход анонимных пользователей. Если разрешено, пользователи с именами ftp и anonymous распознаются как анонимные пользователи.
Default: YES
anon_max_rate
Максимальная допустимая скорость передачи данных для анонимных пользователей, выражена в байтах в секунду .
Default: 0 (unlimited)
anon_root
В этой строке указывается каталог, в который vsftp будет переводитьанонимных пользователей после входа. При неудаче просто игнорируется.
Default: NO
no_anon_password
Если опция установлена, vsftp не спрашивает пароль у анонимных пользователей, позволяя им подключаться сразу.
Default: NO
anon_mkdir_write_enable
Включение этой опции, позволяет анонимным пользователям создавать новые каталоги в соответствии с определенными для этого условиями. Для того чтобы это работало опция write_enable должна быть включена, и анонимный пользователь должен иметь права на запись в данном каталоге.
Default: NO
anon_other_write_enable
Если выбрано YES, анонимные пользователи могут выполнять операции записи отличные от загрузки на сервер и создания каталогов, такие как удаление и переименование. Это обычно не рекомендуется, но все таки такая возможность присутствует для полноты.
Default: NO
anon_upload_enable
Включение этой опции позволяет анонимным пользователям загружать файлы на сервер, в соответствии с определенными для этого условиями. Для того чтобы это работало опция write_enable должна быть активирована, и анонимный ftp пользователь должен иметь права
на запись в каталоге для загрузки. Включение опции также необходимо для предоставления возможности загружать на сервер файлы виртуальным пользователям; по умолчанию виртуальные пользователи имеют одинаковые привилегии с анонимными пользователями (т.е. максимально ограниченные привилегии).
Default: NO
anon_world_readable_only
При включение этой опции, анонимным пользователям будет разрешено скачивать только видимые ими из мира файлы. Предполагается полезным, если пользователи могут загружать на сервер и хранить на нем собственные файлы.
Default: YES
deny_email_enable
Активация опции, позволяет использовать список анонимных паролей типа e-mail, при использовании которых попытки подключения будут отвергнуты. По умолчанию, файл содержащий этот список располагается в /etc/vsftpd.banned_emails, но имеется возможность изменить путь,
указав альтернативный путь в banned_email_file.
Default: NO
banned_email_file
Эта опция указывает имя файла в котором содержится список анонимных e-mail паролей не принимаемых сервером. Сервер сверяется с этим файлом если опция deny_email_enable включена.
Default: /etc/vsftpd.banned_emails
secure_email_list_enable
Активируйте опцию, если хотите разрешать вход анонимным пользователям только на основе проверки паролей указанных в e-mail листе. Это простой путь ограничения доступа к низко безопасному содержимому без необходимости в виртуальных пользователях. При включении,
анонимные входы блокируются если пароль не содержится в файле указанном опцией email_password_file. Формат файла — один пароль на строку. По умолчанию файл располагается в /etc/vsftpd.email_passwords.
Default: NO
email_password_file
Эта опция может быть использована для предоставления альтернативного пути файла
используемого secure_email_list_enable опцией.
Default: /etc/vsftpd.email_passwords
anon_umask
Значение накладываемой маски на создаваемые анонимными пользователями файлы. Замечание! Если вы решили указать цифровое значение, надо помнить о нулевом «0» префиксе, иначе значение будет рассмотрено как десятизначное.
Default: 077
Cпособы запуска vsftpd
listen
Если опция включена сервер стартует в независимом от inetd/xinetd режиме «standalone mode». В этом случае он сам заботится о прослушивании и определении входящих соединений.
Default: NO
listen_ipv6
Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно. Этот параметр и listen взаимно исключаемые.
Default: NO
background
При включении, vsftpd стартуя в режиме listen, работает в фоновом режиме. Т.е. контроль передается той оболочке в которой был запущен vsftpd.
Default: NO
listen_port
Если запущен в standalone mode, указанный порт прослушивается на предмет входящих FTP соединений.
Default: 21
listen_address
Если запущен в standalone mode, обычно слушает все адреса (или все локальные интерфейсы). Что может быть отменено указанием определенных ip адресов в этой строке.
Default: (none)
listen_address6
Тоже что и listen_address, но прослушивает адреса соединений на основе IPv6 протокола (который используется если выбрана опция listen_ipv6), формат в виде стандартного IPV6 адреса.
Default: (none)
max_clients
Если vsftpd находится в standalone_mode, это максимальное количество клиентов, которые могут быть подключены. Попытки подключения сверх указанного количества, получат сообщение об ошибке.
Default: 0 (unlimited)
max_per_ip
Если vsftpd находится в standalone mode, эта опция указывает максимально возможное количество клиентов с одинаковыми ip адресами. Клиентские подключения пытающиеся превысить этот лимит, получат сообщение об ошибке.
Default: 0 (unlimited)
Настройка vsftpd. conf
Пример файла конфигурации с комментариями
SSL шифрование данных в vsftpd
ssl_enable
Если включено, и vsftpd был скомпилирован с поддержкой OpenSSL, vsftpd будет поддерживать безопасность соединения с помощью SSL. Это позволяет контролировать соединения (включая входы в систему) и также передачу данных. Для этого также необходим клиент с поддержкой SSL. Замечания!! Включайте, если это действительно вам необходимо. Надо понимать тот факт, что vsftpd не может гарантировать безопасность OpenSSL библиотек. Включая эту опцию вы доверяете безопасность установленной OpenSSL библиотеке.
Default: NO
ssl_sslv2
Разрешено только при включенной ssl_enable. Включение этой опции делает возможными подключения по протоколу SSL v2. TLS v1 подключения оптимальны.
Default: NO
ssl_sslv3
Разрешается только при включенном ssl_enable. Если разрешено, эта опция позволяет подключения по протоколу SSL v3. TLS v1 подключения оптимальны.
Default: NO
ssl_tlsv1
Разрешено только если ssl_enable включено. Если разрешено, эта опция разрешает соединения по протоколу TLS v1 который является оптимальным.
Default: YES
allow_anon_ssl
Разрешено только если ssl_enable включено. При включении этой опции, анонимным пользователям также будет разрешено использование безопасных SSL соединений.
Default: NO
force_anon_data_ssl
Разрешено только если ssl_enable включено. При включении, все анонимные подключения будут использовать SSL безопасные соединения для приема и передачи данных.
Default: NO
force_anon_logins_ssl
Разрешено только при включенном ssl_enable. При включении, все анонимные подключения будут использовать безопасные SSL соединения при посылке паролей.
Default: NO
force_local_data_ssl
Разрешено только если ssl_enable активно. При включении, все не анонимные подключения используют безопасные SSL соединения для приема и передачи данных.
Default: YES
force_local_logins_ssl
Разрешено только если ssl_enable включено. При включении, все не анонимные подключения используют безопасное SSL соединение при передачи паролей.
Default: YES
dsa_cert_file
Эта опция указывает местонахождение DSA сертификата для использования в SSL зашифрованных соединениях.
Default: (none — an RSA certificate suffices)
dsa_private_key_file
Эта опция задает расположение личного DSA ключа для использования в SSL зашифрованных соединениях. Если эта опция не выбрана, сертификат предусматривается как личный ключ.
Default: (none)
rsa_private_key_file
Эта опция задает расположения личного RSA ключа для использования в SSL зашифрованных соединениях.Если эта опция не выбрана, сертификат предусматривается как личный ключ.
Default: (none)
ssl_ciphers
Эта опция может быть использована для выбора того, какие SSL шифры будут разрешены для шифрования SSL соединений. Смотрите страницу man ciphers для детального ознакомления. Заметьте, такие ограничения шифров могут использоваться в целях предосторожности,
предотвращая использования отдаленными сторонами шифра с которым были обнаружены проблемы.
Default: DES-CBC3-SHA
DOWNLOAD/UPLOAD
file_open_mode
Маска файлов назначаемая при загрузке файлов на сервер. При желании возможно изменить на 0777 если есть необходимость сделать исполняемыми загружаемые на сервер файлы.
Default: 0666
ascii_download_enable
Если включить, ASCII режим передачи данных будет разрешен при download.
Default: NO
ascii_upload_enable
Если включить, ASCII режим передачи будет разрешен при uploads.
Default: NO
download_enable
Если выбрано значение NO, все запросы на скачивание файлов с сервера будут отклонены.
Default: YES
lock_upload_files
При включении опции, все загрузки на сервер происходят с блокировкой записи загружаемого файла. Все загрузки с сервера совершаются с общей блокировкой чтения скачиваемых файлов.
Default: NO
Connecting to the FTP Server
1. Run the ftp -p
command below to connect to your FTP server. Replace your-server-ip
with your actual server IP address.

2. Execute the bye
command to exit the FTP client.

You will get a 230 Login successful message as shown below, which confirms that your FTP server works as intended.

4. Now, run each command below to confirm the ata.txt file exists in the ftp/upload directory.
# Change to the ftp/upload directory as the working directory.
cd ftp/upload
# List all files in the working directory.
ls

5. Run the get
command below to download the file (ata.txt
) from your FTP server and save it to your local machine.
Below, you can see a confirmation message that says Transfer complete.

6. Next, run the put
command below to upload the ata.txt
file from your local machine as a new file named ata2.txt
to your FTP server.

If the previous file transfers (steps seven to eight) succeeded, you’ll see two text files: one named ata.txt and another named ata2.txt, as shown below.

Vsftpd кодировка
По умолчанию сервер vsftpd отдает пользователю список файлов и папок в кодировке системы.Если вы используете Ubuntu, Debian то по умолчанию кодировка в системе UTF8 а у пользователейWindows по умолчанию выставлено WIN1251. Стандартными средствами Windows у вас не получится просматривать русские имена файлов и каталогов на вашем ftp сервере, но есть простое решение проблемы.
Официальный билд vsFTPd НЕ ПОДДЕРЖИВАЕТ перекодировку на лету, но есть модифицированная версия, переделанная русским разработчиком, в нее включены несколько весьма полезных функций.
Скачаем последний билд с сайта http://vsftpd.devnet.ru В наличии там имеются сборки под все распространенные системы. Если у вас еще нет установленного ftp сервера, то советую вам ознакомится с руководством по его установке и настройке под виртуальных пользователей Здесь. Если у вас уже установлен vsFTPd то советую вам на всякий случай сделать резервный копии файлов конфигурации.
cp /etc/vsftpd.conf ~
cp /etc/pam.d/vsftpd ~
Установите скачанный пакет, и отредактируйте файл конфигурации /etc/vsftpd.conf, добавив в него строки:
CP может принимать следующие значения: UTF8, WIN1251 (1251), KOI8R (878), IBM866 (866), ISO-8859-5 (ISO5), ISO-8859-1 (LATIN1 или ISO1), ISO-8859-15 (LATIN9 или ISO15), WIN1252 (1252), ISO-8859-2 (LATIN2 или ISO2), ISO-8859-16 (ISO16) или WIN1250 (1250).
Вписываем нужные нам значения, перезапускаем сервис vsFTPd командой /etc/init.d/vsftpd restart и поверяем результаты. Проблемы клиентов с кодировками в моем случае полностью исчезли.
О других дополнениях вы можете прочитать в руководстве к данному билду vsFTPd командой man vsftpd.conf
Кто не сможет самостоятельно скомпилировать установочные пакеты могут взять готовые файлы:
Пакет для Lenny, DSC, diff, оригинальный vsftpd.
Команды vsftpd
dirlist_enable
Если выбрать NO, все команды листинга каталогов будут запрещены.
Default: YES
async_abor_enable
При включении, специальные FTP команды известные как «async ABOR» будут разрешены. Только плохо продуманные FTP клиенты используют эту функцию. В добавок эта функция неудобна в управлении, поэтому отключена по умолчанию. К сожалению, некоторые FTP клиенты могут зависать в момент отмены передачи, если эта функция выключена. Если это происходит можно попробовать включить эту функцию.
Default: NO
write_enable
Разрешает FTP команды изменяющие файловую систему. Такие команды как: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE.
Default: NO
ls_recurse_enable
При включении, разрешает рекурсивный листинг «ls -R». Включение немного рискованно исходя из соображений безопасности, так как выполнение «ls -R» в верхнем уровне большого сайта может поглощать много ресурсов.
Default: NO
mdtm_write
Если включить, разрешает обновления времени модификации файла через MDTM ftp команды.
Default: YES
Installing VSFTPD on Ubuntu
VSFTPD is an FTP server for Unix-like systems but isn’t installed by default. Installing VSFTPD on Ubuntu is similar to how you install other packages. Kick-off this tutorial by updating your APT package manager before installing VSFTPD.
1. Run the apt update
command to update APT. This command retrieves package lists from your configured repositories and updates the local package cache.

2. Next, run the apt install
command below to install VSFTPD on your machine. This command will also pull in all of the required dependencies for the FTP service.
By default, the VSFTPD package is available on most modern Debian-based distributions. So you can install it without any additional package repositories and let APT take care of the rest.

3. Finally, run the systemctl
command below to verify that the VSFTPD service is running and configured correctly.
sudo systemctl status vsftpd
You will see an output similar to the one below, which shows the vsftpd.service is active (running) and listening to requests.

Правила работы с пользователями vsftpd
local_enable
Разрешает или запрещает вход для локальных пользователей. Если включено обычные пользовательские акаунты в /etc/passwd могут быть использованы для входа. Должно быть включено для разрешения любых не анонимных входов, включая вход виртуальных пользователей.
Default: NO
local_root
Эта опция указывает каталог в который vsftpd должен перевести пользователя после локального не анонимного входа. В случае неудачи просто игнорируется.
Default: (none)
chmod_enable
Включение этой опции разрешает использование SITE CHMOD команд устанавливающих права доступа для файла. ВНИМАНИЕ! Применимо только к локальным пользователям. Анонимные пользователи никогда не используют SITE CHMOD команды.
Default: YES
check_shell
Замечание! Опция эффективна только для non-PAM сборок vsftpd. Если запрещена, vsftpd не проверяет файл /etc/shells на допустимость пользовательских shell оболочек для локальных входов.
Default: YES
virtual_use_local_privs
Если включено, виртуальные пользователи будут использовать одинаковые с локальными пользователями привилегии. По умолчанию, виртуальные пользователи используют одинаковые с анонимными пользователями привилегии, предполагающие большие ограничения, (особенно условия доступа на запись).
Default: NO
local_max_rate
Максимальная скорость передачи данных, выраженная в байтах в секунду, для локально аутентифицированных пользователей.
Default: 0 (unlimited)
local_umask
Значение маски назначения прав доступа к файлам созданным локальными пользователями. Помните! Если вы хотите указать параметр в качестве цифрового значения, указывайте «0» (нулевую) приставку, иначе значение будет определено как целое десятизначное.
Default: 077
session_support
Эта опция определяет, будет ли vsftpd поддерживать установленные соединения. Если vsftpd поддерживает сессии, он будет пытаться обновить utmp и wtmp. Он также откроет pam_session, если используется PAM аутентификация и закроет соединение только после отключения. Можно отключить эту опцию, если не требуется журналирование сессии и есть желание предоставить vsftpd больше возможностей для запуска с меньшими привилегиями. Замечание — utmp и wtmp поддерживаются только в сборках с включенным PAM.
Default: NO
Натройка (редактирование) vsftpd. conf
Как уже стало понятно для работы сервера необходимо отредактировать конфигурационный файл:
/etc/vsftpd.conf, итак рассмотрим этот вопрос более подробней.
Файл vsftpd.conf состоит из трех видов опций:
* BOOLEAN OPTIONS — основные опции, которые могут содержать значения: YES, NO;
* NUMERIC OPTIONS — опции содержащие разные цифровые значения, например время в секундах или номер порта соединения;
* STRING OPTIONS — содержат строку, например путь к каталогу на диске: /var/run/vsftpd;
Журналирование vsftpd
syslog_enable
При включении, все выводы журнала направляемые ранее в /var/log/vsftpd.log будут направляться в системный журнал вместо этого.
Default: NO
no_log_lock
Если включено, запрещает vsftpd блокировку файла журнала при записи в него. Этот параметр обычно не разрешен.
Default: NO
log_ftp_protocol
При включении, все FTP запросы и ответы журналируются, включение с опцией xferlog_std_format запрещено. Используется для выявления ошибок.
Default: NO
dual_log_enable
При включении, два файла с журналами генерируются параллельно, по умолчанию они располагаются в /var/log/xferlog и /var/log/vsftpd.log. Первый генерируется в стиле журнала wu-ftpd, анализируемый стандартными средствами. Другой в стиле журнала vsftpd.
Default: NO
xferlog_enable
Если включено, журнал будет включать детальные отчеты о закачках на сервер, и закачках с сервера (uploads, downloads). По умолчанию, этот файл будет располагаться в /var/log/vsftpd.log, но расположение может быть изменено используя опцию vsftpd_log_file.
Default: NO (but the sample config file enables it)
xferlog_std_format
Если включено, запись в журнал производится в стандартном wu-ftpd стиле, xferlog формата. Полезно при желании использования уже существующих привычных способов генерации статистики. Однако с другой стороны, формат используемый по умолчанию лучше читается. Расположение журнала по умолчанию /var/log/xferlog, что может быть изменено при помощи опции xferlog_file.
Default: NO
xferlog_file
В параметре этой опции можно указать альтернативный путь к файлу журнала записываемому в стиле wu-ftpd. Запись в этот журнал производится только при включенной xferlog_eneble опции, включительно с xferlog_std_format. Также журнал ведется если включена опция dual_log_enable.
Default: /var/log/xferlog
vsftpd_log_file
В этой строке можно указать альтернативный путь к файлу журнала, записываемому в стиле vsftpd. Этот журнал ведется если опция xferlog_enable включена, и xferlog_std_format остается не выбрана. Также журнал ведется если включена опция dual_log_enable. Важно не забыть, при включенной syslog_enable опции, этот файл не записывается и вывод вместо этого напрвляется в системный журнал.
Default: /var/log/vsftpd.log
Conclusion
At this point, you should have a functional FTP server with restricted access.
With this newfound knowledge, you can now configure your FTP server on AWS EC2, or you can start setting up an FTP Server on your Raspberry Pi. Which one would you choose to start working on?