• Установка и настройка FTP-сервера в Linux. Простой FTP-сервер на базе Ubuntu (vsftpd) Ubuntu автоматическое подключение к ftp серверу

    Совсем недавно я писал о том, на свой компьютер. Это очень полезно для вебмастера, так как установив себе такой "домашний" сервер, можно проводить различные эксперименты с тестовыми сайтами или просто вести их разработку.

    Но есть одна проблема: если вы, к примеру, попытаетесь на таком локальном сервере установить тот же плагин в wordpress, то получите отказ: "Не удалось подключиться к FTP-серверу localhost:21 "

    Как вы понимаете, вам нужно установить и настроить ftp сервер на своём компьютере, чтобы осуществить установку плагинов. Как установить ftp сервер на свой компьютер в Linux?

    В Linux есть много бесплатных серверов, я пробовал несколько и остановился на vsftpd. Этот сервер лёгок и прост в настройке.

    1. Как установить ftp сервер vsftpd?

    Установить его можно одной командой:

    Sudo apt-get install vsftpd

    После установки сервера нам нужно его немного под настроить. Но сначала протестируем наш ftp сервер, введём в браузер такой адрес: ftp://127.0.0.1/ Мы должны увидеть следующее:


    Но мало установить сервер vsftpd, это как вы видите делается просто, важно настроить ftp сервер. Но и это делается просто, если следовать моему опыту.

    2. Как настроить ftp сервер vsftpd?

    Чтобы добраться до настроек сервера, введите в терминале команду:

    Sudo gedit /etc/vsftpd.conf

    Удаляем из этого файла всю и вставляем вот это:

    Listen=YES # делаем анонимный доступ, с правом записи anonymous_enable=YES no_anon_password=YES anon_root=/ПУТЬ К ПАПКЕ С САЙТОМ! anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_umask=022 # разрешаем вход локальным пользователям с правом записи в домашних директориях local_enable=YES local_umask=022 write_enable=YES # помещаем локальных юзеров в их домашние каталоги, иначе пользователю будет доступен корень системы. chroot_local_user=YES chroot_list_enable=YES # настройки журналирования xferlog_enable=YES vsftpd_log_file=/var/log/vsftpd.log

    Перезагружаем ftp сервер командой:

    Sudo /etc/init.d/vsftpd restart

    Да, ещё очень важно! На папку с сайтом и и всем файлам к ней нужно дать доступ 755, публичные права на запись давать папке НЕЛЬЗЯ !

    Установить новую, более правильную версию сервера можно добавив :

    Sudo add-apt-repository ppa:thefrontiergroup/vsftpd sudo apt-get update sudo apt-get install vsftpd

    После этого идём в админку WordPress и пробуем установить какой-нибудь плагин. Нас попросят ввести адрес сервера, логин и пароль. В строке сервера пишем 127.0.0.1 , а логин и пароль пишем - anonymous

    Если у вас появится ошибка: Не удалось определить директорию содержимого WordPress (wp-content), то нужно в конец файла wp-config.php вставить такой код:

    If (is_admin()) { add_filter ("filesystem_method", create_function("$a", "return "direct";")); define ("FS_CHMOD_DIR", 0751); }

    После этого у меня всё заработало. Так настройка vsftpd сервера для меня закончилась. Вот так можно установить и настроить ftp сервер vsftpd на своём домашнем компьютере.

    Такой сервер, конечно, не будет слишком производительным, это вам не настоящий сервер IBM HS23e на SSD дисках. И если вы дадите к нему доступ всей своей локальной сети, ваш компьютер может изрядно попотеть, постоянно что то копируя.

    Но моя цель вам понятна, но она, конечно, не единственная. FTP сервер на своём компьютере можно использовать для разных целей, и чаще всего такие простые настройки вам подойдут. Если нет, то в сети много мануалов по настройке этого FTP сервера. Успехов!

    Дописываю: как оказалось, в моем случае можно вообще обойтись без FTP. Проще работать через SSH и плагина ssh-sftp-updater-support, который добавляет протокол SSH в WordPress. Так намного безопаснее и не нужно поднимать FTP сервер.


    Не нашли ответ на свой вопрос? Воспользуйтесь поиском...

    Время от времени у каждого системного администратора возникает потребность в FTP-сервере, чаще всего это связано с необходимостью обеспечить обмен информацией в автоматическом режиме между приложениями, например, при автообмене распределенной информационной базы 1С, или для доступа к файлам на веб-сервере. Сегодня мы расскажем, как меньше чем за полчаса создать такой сервер на платформе Ubuntu.

    Но сначала немного теории. Протокол FTP (File Transfer Protocol) предназначен, как следует из названия, для передачи файлов и появился в 1971 году, но несмотря на свой преклонный возраст продолжает широко использоваться до сих пор. Хотя сегодня его использование носит чаще технический характер, для доступа конечных пользователей к данным обычно используют браузер и протокол HTTP. К достоинствам FTP можно отнести возможность докачки файла при обрыве связи и возможность одинаково легко как считывать файлы, так и записывать их. Но есть и недостатки, самый серьезный - низкая безопасность, поэтому этому вопросу следует уделить самое пристальное внимание.

    FTP, как и PPTP, использует разные соединения для передачи команд и передачи данных. При инициации соединения клиент передает управляющие команды на порт 21 сервера, который в свою очередь устанавливает исходящее соединение для передачи данных на 20 порту, порт со стороны клиента определяется в результате согласования. Однако при нахождении клиента за NAT соединение подобным образом установить не удастся, поэтому был разработан дополнительный режим FTP passive mode (пассивный режим), когда соединение для передачи данных устанавливает не сервер, а клиент, однако с параметрами, указанными сервером. Эти моменты следует учитывать при форвардинге FTP и при настройке сетевого фильтра.

    Для нашего сервера мы будем использовать vsftpd - простой, быстрый и безопасный FTP сервер. Так как он будет обслуживать как внешнюю, так и внутреннюю сети, то имеет смысл добавить эту роль нашему . Установка сервера предельно проста:

    Apt-get install vsftpd

    Настройка сервера производится через конфигурационный файл /etc/vsftpd.conf он имеет простую структуру, хорошо откомментирован и позволяет настроить сервер без какой-либо инструкции при наличии минимальных знаний. Рассмотрим его основные параметры.

    Сервер может быть запущен постоянно, как служба или стартовать при необходимости, нам больше подходит первый вариант:

    Listen=YES

    Данная опция имеет взаимоисключающую запись, которую следует привести к виду:

    Listen_ipv6=NO

    Разрешим вход только локальным пользователям:

    Anonymous_enable=NO
    local_enable=YES

    Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

    Write_enable=YES
    local_umask=022

    Если требуется установить иной набор прав: 775 и 664, то umask должен быть равен 002.

    По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса, используйте опцию:

    Use_localtime=YES

    Включим лог загружаемых и скачиваемых файлов:

    Xferlog_enable=YES

    Разрешим серверу устанавливать соединения для передачи данных на порт 20 (активный режим):

    Connect_from_port_20=YES

    Следующие опции задают место и формат хранения логов:

    Xferlog_file=/var/log/vsftpd.log
    xferlog_std_format=YES

    Зададим таймауты сессии:

    Idle_session_timeout=600
    data_connection_timeout=120

    Также в целях безопасности изолируем пользователя в его домашнем каталоге и сразу разрешим запись в его корень:

    Chroot_local_user=YES
    allow_writeable_chroot=YES

    Для коррекной работы с текстовыми данными можно включить поддержку ASCII, это позволит при передаче текстового файла с Windows системы в UNIX (Linux) корректно заменить символы переноса строки с CR+LF на LF для корректного отображение содержимого и выполнить обратное преобразование при передаче его назад.

    Ascii_upload_enable=YES
    ascii_download_enable=YES

    Можно включить только одну опцию, для закачки или скачивания. Обратите внимание, что при передаче бинарного файла в режиме ASCII последний может быть поврежден.

    Достаточно интересная опция:

    Ls_recurse_enable=YES

    Она позволяет рекурсивный просмотр каталогов, с одной стороны это удобно, с другой способно вызвать большую нагрузку на сервер, если, например, получить листинг директории, содержащей большое количество файлов и каталогов.

    Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:

    Ftpd_banner=Welcome to Roga i Kopyta LLC FTP

    В конце конфигурационного файла зададим настройки для пассивного режима, рекомендуется явно задать порты, чтобы была возможность указать их при форвардинге, если сервер стоит за NAT или в правилах брандмауера:

    Pasv_enable=YES
    pasv_min_port=62000
    pasv_max_port=62999

    Перезапускаем сервер (это нужно делать всякий раз после внесения изменений в конфигурацию):

    Service vsftpd restart

    и пробуем подключиться любым FTP-клиентом используя учетные данные существующего пользователя. Мы должны попасть в его домашнюю директорию и быть изолированы в ней.

    В случае появления ошибки, связанной с некорректной работой vsftpd и системы безопасности seccomp:

    500 OOPS: prctl PR_SET_SECCOMP failed

    добавьте в файл недокументированную опцию:

    Seccomp_sandbox=NO

    Однако помните, что FTP - небезопасный протокол, поэтому пускать на сервер любого локального пользователя, как это сделано сейчас, не самый лучший вариант. Чтобы избежать такой ситуации vsftpd имеет встроенный механизм контроля пользователей. Добавим в конфигурационный файл опцию:

    Userlist_enable=YES

    и создадим файл списка пользователей:

    Touch /etc/vsftpd.user_list

    По умолчанию vsftpd запрещает доступ к серверу пользователям, указанным в данном списке еще до ввода пароля, т.е. реализует принцип разрешено всем, кому не запрещено. Но гораздо лучше будет реализовать иной подход: запрещено всем, кому не разрешено. Т.е. разрешать доступ только указанным пользователям. Для этого добавим опцию:

    Userlist_deny=NO

    Теперь доступ к FTP-серверу будут иметь только явно указанные пользователи, их следует указывать в vsftpd.user_list по одному в строку, например:

    Ivanov
    petrov

    Если не указано иное, то подключившись по FTP пользователи попадают в свой домашний каталог. Это не всегда удобно, часто нужно перенаправлять их в иную директорию. Если это общая для всех папка, скажем /var/ftp, то можно задать опцию:

    Local_root=/var/ftp

    Которая перенаправит всех пользователей в указанный каталог и изолирует их там.

    Это самая простая ситуация, реальные задачи обычно сложнее, допустим нам надо установить пользователю Иванову в качестве корневой директории /var/www/example1.com , а Петрову /var/www/example2.com , чтобы каждый из них работал со своей папкой. Для этих целей можно использовать еще одну возможность vsftpd - пользовательские настройки, которые перекрывают настройки основного конфигурационного файла.

    Для этого добавим опцию:

    User_config_dir=/etc/vsftpd_user_conf

    Затем создадим саму директорию

    Mkdir /etc/vsftpd_user_conf

    Чтобы задать пользователю собственные настройки в данной директории следует создать файл с именем пользовтаеля и добавить в него необходимые опции. Изменения применяются без перезапуска FTP-сервера при следующем подключении клиента.

    Создадим файл с настройками для Иванова:

    Tocuh /etc/vsftpd_user_conf/ivanov

    и внесем в него опцию:

    Local_root=/var/www/example1.com

    При следующем подключении корневая директория пользователя изменится на указанную. Также в этом файле мы можем задавать любые персональные опции, например, другой umask или права на доступ к файлам. Однако мы не можем использовать здесь глобальные настройки: опции подключения, логгирования, аутентификации, они будут просто игнорироваться.

    Если вам нужно скрыть реальных владельцев файлов и папок, то можно использовать опцию:

    Hide_ids=YES

    В этом случае вместо реальных владельцев и групп будет указано ftp:ftp, это может быть полезным в случае публичного сервера или наличия в списке пользователей посторонних лиц, которым вы не хотите раскрывать реальные имена пользователей вашей системы.

    Как видим, мы действительно создали рабочий FTP-сервер менее чем за полчаса.

    F TP (протокол передачи файлов) – это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее. Для более безопасной и быстрой передачи данных используйте SCP.

    Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и широко используемыми являются PureFTPd, ProFTPD и vsftpd. В этой статье мы будем устанавливать vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd для ограничения доступа пользователей к их домашнему каталогу и шифрования всей передачи с помощью SSL/TLS.

    Хотя эта статья написана для Ubuntu 18.04, такие же инструкции применяются к Ubuntu 16.04 и любому дистрибутиву на базе Debian, включая Debian, Linux Mint и Elementary OS.

    Предпосылки

    Установка vsftpd на Ubuntu 18.04

    Пакет vsftpd доступен в репозиториях . Чтобы установить его, просто выполните следующие команды:

    Sudo apt update sudo apt install vsftpd

    Служба vsftpd автоматически запустится после завершения процесса установки. Проверьте его, распечатав статус службы:

    Sudo systemctl status vsftpd

    Результат будет выглядеть примерно так, показывая, что служба vsftpd активна и работает:

    * vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

    Настройка vsftpd

    Сервер vsftpd можно настроить, отредактировав файл /etc/vsftpd.conf. Большинство настроек задокументированы внутри файла конфигурации. Для всех доступных вариантов посетите официальную страницу vsftpd.

    В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.

    Начните с открытия файла конфигурации vsftpd:

    Sudo nano /etc/vsftpd.conf

    1. Доступ к FTP

    Мы разрешаем доступ к FTP-серверу только локальным пользователям, находим директивы anonymous_enable и local_enable и проверяем соответствие вашей конфигурации следующим строкам:

    /etc/vsftpd.conf

    Anonymous_enable=NO local_enable=YES

    2. Включение загрузки

    Раскомментируйте настройку write_enable, чтобы разрешить изменения в файловой системе, такие как загрузка и удаление файлов.

    /etc/vsftpd.conf

    Write_enable=YES

    3. Chroot

    Чтобы пользователи FTP не могли получить доступ к каким-либо файлам вне своих домашних каталогов, раскомментируйте настройку chroot.

    /etc/vsftpd.conf

    Chroot_local_user=YES

    По умолчанию для предотвращения уязвимости безопасности, когда chroot включен, vsftp откажется загружать файлы, если каталог, в котором пользователи заблокированы, доступен для записи.

    • Метод 1. – Рекомендуемый способ разрешить загрузку – включить chroot и настроить FTP-каталоги. В этой статье мы создадим каталог ftp внутри home пользователя, который будет служить chroot и записываем каталог uploads для загрузки файлов.

      /etc/vsftpd.conf

      User_sub_token=$USER local_root=/home/$USER/ftp

    • Метод 2. Еще один вариант – добавить следующую директиву в файл конфигурации vsftpd. Используйте этот параметр, если вы должны предоставить доступ к записи для своего пользователя в свой домашний каталог.

      /etc/vsftpd.conf

      Allow_writeable_chroot=YES

    4. Пассивные FTP-соединения

    vsftpd может использовать любой порт для пассивных FTP-соединений. Мы укажем минимальный и максимальный диапазон портов, а затем откроем диапазон в нашем брандмауэре.

    Добавьте в файл конфигурации следующие строки:

    /etc/vsftpd.conf

    Pasv_min_port=30000 pasv_max_port=31000

    5. Ограничение входа пользователя

    Чтобы разрешить только определенным пользователям входить на FTP-сервер, добавьте следующие строки в конец файла:

    /etc/vsftpd.conf

    Userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

    Когда эта опция включена, вам необходимо явно указать, какие пользователи могут войти, добавив имена пользователей в файл /etc/vsftpd.user_list (по одному пользователю в строке).

    6. Обеспечение передачи с помощью SSL/TLS

    Чтобы шифровать FTP-передачи с помощью SSL/TLS, вам необходимо иметь сертификат SSL и настроить FTP-сервер для его использования.

    Вы можете использовать , подписанный доверенным центром сертификации, или создать самоподписанный сертификат.

    Если у вас есть домен или поддомен, указывающий на IP-адрес FTP-сервера, вы можете легко создать бесплатный сертификат SSL для шифрования.

    В этой статье мы сгенерируем самоподписанный сертификат SSL с помощью команды openssl.

    Следующая команда создаст 2048-битный закрытый ключ и самоподписанный сертификат, действительный в течение 10 лет. Как закрытый ключ, так и сертификат будут сохранены в одном файле:

    Sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

    Теперь, когда создан SSL-сертификат, откройте файл конфигурации vsftpd:

    Sudo nano /etc/vsftpd.conf

    Найдите директивы rsa_cert_fileи rsa_private_key_file, измените их значение pam в пути к файлу и установите директиву ssl_enable на YES:

    /etc/vsftpd.conf

    Rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

    Если не указано иное, FTP-сервер будет использовать только TLS для обеспечения безопасных подключений.

    Перезапустите службу vsftpd

    После того, как вы закончите редактирование, файл конфигурации vsftpd (исключая комментарии) должен выглядеть примерно так:

    /etc/vsftpd.conf

    Listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

    Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:

    Sudo systemctl restart vsftpd

    Открытие брандмауэра

    Если вы используете брандмауэр UFW, вам необходимо разрешить FTP-трафик.

    Чтобы открыть порт 21(порт команд FTP), порт 20(порт данных FTP) и 30000-31000(диапазон пассивных портов), выполните следующие команды:

    Sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

    Чтобы избежать блокировки, мы откроем порт 22:

    Sudo ufw allow OpenSSH

    Перезагрузите правила UFW, отключив и снова включив UFW:

    Sudo ufw disablesudo ufw enable

    Чтобы проверить выполнение изменений:

    Sudo ufw status Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

    Создание пользователя FTP

    Чтобы протестировать наш FTP-сервер, мы создадим нового пользователя.

    • Если у вас уже есть пользователь, которому вы хотите предоставить FTP-доступ, пропустите 1-й шаг.
    • Если вы установили allow_writeable_chroot=YES в своем файле конфигурации, пропустите 3-й шаг.
    1. Создайте нового пользователя с именем newftpuser: sudo adduser newftpuser
    2. Добавьте пользователя в список разрешенных пользователей FTP: echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
    3. Создайте дерево каталогов FTP и установите правильные разрешения: sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

      Как обсуждалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload.

    На данный момент ваш FTP-сервер полностью работоспособен, и вы должны иметь возможность подключаться к вашему серверу с любым , который может быть настроен на использование шифрования TLS, например FileZilla.

    Отключение доступа к оболочке

    По умолчанию при создании пользователя, если явно не указано, у пользователя будет доступ к серверу SSH.

    Чтобы отключить доступ к оболочке, мы создадим новую оболочку, которая просто напечатает сообщение, сообщающее пользователю, что их учетная запись ограничивается только доступом к FTP.

    Создайте оболочку /bin/ftponly и сделайте ее исполняемой:

    Echo -e "#!/bin/sh\necho "This account account is limited to FTP access only."" | sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly

    Добавьте новую оболочку в список допустимых оболочек в файл /etc/shells

    Echo "/bin/ftponly" | sudo tee -a /etc/shells

    Измените оболочку пользователя на /bin/ftponly:

    Sudo usermod newftpuser -s /bin/ftponly

    Заключение

    В этой статье вы узнали, как установить и настроить безопасный и быстрый FTP-сервер в вашей системе Ubuntu 18.04.

    File Transfer Protocol (FTP) is a TCP protocol for downloading files between computers. In the past, it has also been used for uploading but, as that method does not use encryption, user credentials as well as data transferred in the clear and are easily intercepted. So if you are here looking for a way to upload and download files securely, see the section on OpenSSH in Remote Administration instead.

    FTP works on a client/server model. The server component is called an FTP daemon . It continuously listens for FTP requests from remote clients. When a request is received, it manages the login and sets up the connection. For the duration of the session it executes any of commands sent by the FTP client.

    Access to an FTP server can be managed in two ways:

    In the Anonymous mode, remote clients can access the FTP server by using the default user account called "anonymous" or "ftp" and sending an email address as the password. In the Authenticated mode a user must have an account and a password. This latter choice is very insecure and should not be used except in special circumstances. If you are looking to transfer files securely see SFTP in the section on OpenSSH-Server. User access to the FTP server directories and files is dependent on the permissions defined for the account used at login. As a general rule, the FTP daemon will hide the root directory of the FTP server and change it to the FTP Home directory. This hides the rest of the file system from remote sessions.

    vsftpd - FTP Server Installation

    vsftpd is an FTP daemon available in Ubuntu. It is easy to install, set up, and maintain. To install vsftpd you can run the following command:

    sudo apt install vsftpd

    Anonymous FTP Configuration

    By default vsftpd is not configured to allow anonymous download. If you wish to enable anonymous download edit /etc/vsftpd.conf by changing:

    anonymous_enable=Yes

    During installation a ftp user is created with a home directory of /srv/ftp . This is the default FTP directory.

    If you wish to change this location, to /srv/files/ftp for example, simply create a directory in another location and change the ftp user"s home directory:

    sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp

    After making the change restart vsftpd :

    Finally, copy any files and directories you would like to make available through anonymous FTP to /srv/files/ftp , or /srv/ftp if you wish to use the default.

    User Authenticated FTP Configuration

    By default vsftpd is configured to authenticate system users and allow them to download files. If you want users to be able to upload files, edit /etc/vsftpd.conf :

    write_enable=YES

    Now restart vsftpd :

    sudo systemctl restart vsftpd.service

    Now when system users login to FTP they will start in their home directories where they can download, upload, create directories, etc.

    Similarly, by default, anonymous users are not allowed to upload files to FTP server. To change this setting, you should uncomment the following line, and restart vsftpd :

    anon_upload_enable=YES

    Enabling anonymous FTP upload can be an extreme security risk. It is best to not enable anonymous upload on servers accessed directly from the Internet.

    The configuration file consists of many configuration parameters. The information about each parameter is available in the configuration file. Alternatively, you can refer to the man page, man 5 vsftpd.conf for details of each parameter.

    Securing FTP

    There are options in /etc/vsftpd.conf to help make vsftpd more secure. For example users can be limited to their home directories by uncommenting:

    chroot_local_user=YES

    You can also limit a specific list of users to just their home directories:

    chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

    After uncommenting the above options, create a /etc/vsftpd.chroot_list containing a list of users one per line. Then restart vsftpd :

    sudo systemctl restart vsftpd.service

    Also, the /etc/ftpusers file is a list of users that are disallowed FTP access. The default list includes root, daemon, nobody, etc. To disable FTP access for additional users simply add them to the list.

    FTP can also be encrypted using FTPS . Different from SFTP , FTPS is FTP over Secure Socket Layer (SSL). SFTP is a FTP like session over an encrypted SSH connection. A major difference is that users of SFTP need to have a shell account on the system, instead of a nologin shell. Providing all users with a shell may not be ideal for some environments, such as a shared web host. However, it is possible to restrict such accounts to only SFTP and disable shell interaction. See the section on OpenSSH-Server for more.

    To configure FTPS , edit /etc/vsftpd.conf and at the bottom add:

    Also, notice the certificate and key related options:

    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

    By default these options are set to the certificate and key provided by the ssl-cert package. In a production environment these should be replaced with a certificate and key generated for the specific host. For more information on certificates see Certificates .

    Now restart vsftpd , and non-anonymous users will be forced to use FTPS :

    sudo systemctl restart vsftpd.service

    To allow users with a shell of /usr/sbin/nologin access to FTP, but have no shell access, edit /etc/shells adding the nologin shell:

    # /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin

    This is necessary because, by default vsftpd uses PAM for authentication, and the /etc/pam.d/vsftpd configuration file contains:

    auth required pam_shells.so

    The shells PAM module restricts access to shells listed in the /etc/shells file.

    Most popular FTP clients can be configured to connect using FTPS. The lftp command line FTP client has the ability to use FTPS as well.

    За основу взяты статьи:

    Почти каждый пользователь, работающий в сети интернет, сталкивался хотя бы раз с FTP. Здесь описано, как установить FTP сервер на машину и обеспечить его безопасность.

    Мы будем использовать легкий и эффективный FTP-сервер vsFTPd, предназначенный для работы на высоконагруженных серверах. Далее в этой статье мы будем говорить просто об FTP-сервере, подразумевая vsFTPd.

    1. Что такое FTP

    FTP расшифровывается как File Transfer Protocol - протокол передачи данных. Название подразумевает, что этот протокол используется для передачи файлов или директорий с одного хоста на другой по сети - как локальной, так и через интернет.

    2. Установка FTP-сервера в Ubuntu

    Чтобы установить vsftpd откройте консоль и выполните команду:

    sudo apt-get install vsftpd
    После выполнения этой команды сервер будет установлен и запущен.
    Setting up vsftpd (2.3.5-1ubuntu2) ...

    vsftpd start/running, process 1891

    3. Варианты запуска службы FTP

    vsftpd может быть запущен тремя различными способами. Первый способ - запуск через inetd . Второй - через xinetd , третий - запускать сервер вручную (автономный режим).
    По умолчанию vsftpd запускается в автономном режиме, в котором запускаемая на сервере служба использует собственный стартовый скрипт, называемый демоном. В случае vsftpd это /etc/init.d/vsftpd . Данный автономный демон в момент старта службы FTP берет управление нею на себя. Демон vsftpd предоставляет администратору несколько команд для управления FTP-сервером vsftpd:

    start или stop - используется для запуска или остановки ftp-сервера.
    status - выводит подробную информацию о текущем состоянии вашего FTP-сервера.
    restart - это альтернатива последовательности из остановки и запуска сервера. Если сервер уже остановлен, команда restart запустит его.
    reload - эта команда позволяет перезагрузить и применить все новые настройки. Ее отличие от restart заключается в том, что применение новых настроек производится без остановки сервера.
    Чтобы выполнить данные команды, напечатайте:

    sudo start/stop/status/restart/reload vsftpd

    Однако автономный режим менее гибкий, inetd старый, так что рекомендуется запускать vsftp через xinetd . В нем есть такие вещи как регистрация запросов, контроль доступа, привязка сервиса к определенному сетевому интерфейсу и т.д.

    4. Запуск службы FTP через xinetd

    Устанавливаем суперсервер xinetd:

    sudo apt-get install xinetd
    Приведенная выше команда устанавливает и запускает суперсервер xinetd. В случае, если он у вас уже установлен, эта команда не нужна. Далее, создайте файл vsftpd в директории /etc/xinetd.d/ со следующим содержимым:

    service ftp

    Disable = no

    Socket_type = stream

    Wait = no

    User = root

    Server = /usr/sbin/vsftpd

    Per_source = 5

    Instances = 200

    No_access = 10.1.1.10

    Banner_fail = /etc/vsftpd.busy

    Log_on_success += PID HOST DURATION

    Log_on_failure += HOST

    В то же время вы можете изменять любые опции, чтобы настроить суперсервер в соответствии со своими требованиями.
    Опции, на которые стоит обратить внимание:
    server - введите в командной строке "$ which vsftpd", чтобы узнать правильный путь.
    no_access - все хосты с IP-адресами, указанными в этой директиве, будут блокированы.
    banner_fail - здесь можно указать путь к текстовому файлу, содержимое которого будет показано для любых блокированных IP-адресов.

    Эта директива даст команду FTP-серверу не открывать никаких портов, полностью перепоручив их суперсерверу xinetd. Перед тем, как запустить сервер в нормальном режиме, убедитесь, что демон vsftpd отключен:
    sudo service vsftpd stop

    Теперь можно запустить FTP-сервер с помощью команды:
    sudo service xinetd restart

    Чтобы убедиться в нормальной работе FTP-сервера, протестируйте и откройте порт 21 с помощью команды netstat:
    $ netstat -ant | grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

    5. Настройка FTP сервера

    Настройка vsftpd производится внесением изменений в конфигурационный файл /etc/vsftpd.conf .

    Примечание: при внесении любых изменений в настройки FTP-сервера не забудьте воспользоваться командой restart/reload, чтобы активировать их.

    5.1 Настройка пользовательского доступа

    vsftpd позволяет предоставить либо анонимный доступ, либо пользователям из файла /etc/passwd , либо из своего собственного списка.

    Анонимный доступ

    Примечание: Открывать анонимный доступ опасно, а анонимный доступ без пароля еще опаснее. Это плохая идея. Лучше не делайте так, а просто почитайте для справки.

    Чтобы предоставить анонимный доступ, в конфигурационном файле задайте директиве anonymous_enable значение YES:

    anonymous_enable=YES

    Для доступа без пароля дополнительно пропишите:

    no_anon_password=YES

    Теперь доступ к FTP серверу можно получить через пользователя anonymous. Для этого просто введите команду ftp с аргументом localhost или ip адресом вашего сервера:

    $ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ftp> quit 221 Goodbye.

    Доступ локальных пользователей

    Чтобы позволить авторизоваться всем пользователям, указанным в файле /etc/passwd , необходимо изменить значение директивы local_enable в файле /etc/vsftpd.conf .
    local_enable=YES
    Теперь любой пользователь, указанный в файле /etc/passwd , сможет авторизоваться, используя свой пароль.

    Список доступа пользователей

    Сначала создадим список доступа, используемый сервером vsFTPd. Обычно вы можете задать его в директории /etc/ . Создайте файл с произвольным именем и перечислите в нем всех пользователей, которым вы хотите разрешить или запретить доступ. Например, давайте создадим новый список с единственным пользователем "root":
    echo root > /etc/vsftpd.userlist
    Далее, определим новый список пользователей в конфиграционном файле /etc/vsftpd.conf и активируем директиву userlist_enable :
    userlist_file=/etc/vsftpd.userlistuserlist_enable=YES Таким образом всем пользователям, перечисленным в файле /etc/vsftpd.userlist , будет отказано в доступе к FTP-серверу.

    $ ftp localhostConnected to localhost.220 (vsFTPd 2.3.5)Name (localhost:root): lubos530 Permission denied.Login failed.ftp> Чтобы разрешить доступ всем пользователям, перечисленным в файле /etc/vsftpd.userlist , установите значение "NO " для директивы userlist_deny . При этом вы открываете доступ только пользователям, перечисленным в /etc/vsftpd.userlist . Каждое имя пользователя в этом файле должно располагаться на отдельной строке.

    5.2 Другие настройки

    На сегодняшний день vsFTPd имеет 125 опций конфигурации. Это делает его очень гибким в настройке и в то же время простым в использовании и администрировании. Хотите ли вы использовать его дома, в пределах корпоративной сети, или на удаленном сервере, вы можете быть уверены, что vsFTPd полностью удовлетворит ваши нужды.