Поиск по сайту:
Так много хороших идей исчезает бесследно, попав в пучину семантики. (Алан.Дж.Перлис)

Как установить FTP-сервер с VSFTPD на Ubuntu 18.04

22.10.2018
Как установить FTP-сервер с VSFTPD на Ubuntu 18.04

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

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

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

 

Прежде чем продолжить эту статью, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo.

 

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

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 можно настроить, отредактировав файл /etc/vsftpd.conf. Большинство настроек задокументированы внутри файла конфигурации. Для всех доступных вариантов посетите официальную страницу vsftpd.

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

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

sudo nano /etc/vsftpd.conf

 

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

/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES

 

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

/etc/vsftpd.conf
write_enable=YES

 

Чтобы пользователи 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

     

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

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

/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000

 

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

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

 

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

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

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

Если у вас есть домен или поддомен, указывающий на 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 (исключая комментарии) должен выглядеть примерно так:

/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-доступ, пропустите 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-сервер полностью работоспособен, и вы должны иметь возможность подключаться к вашему серверу с любым 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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

6 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Денис

Долго искал я, как установить фтп на сервер. Благодаря вашей статье, смог запустить.

Vitaliy Kondrenko

Здравствуйте. Есть вопрос по поводу ssl к ftp … Я сам новенький в этом деле так что немного не могу понять… Мы создаем отдельный ssl-cert под ftp-server или же под домен, который будет использовать этот ftp-server. Просто устанавливаю ftp по Вашей статье, но у мене уже есть домены со своими ключами ssl. Т.е. вопрос вот в чем: » Создается ли ssl конкретно под ftp-server, если нет, то как к нему подключить домены, которые я хочу к нему подключить? У меня LEMP 18.04/5.6/7.3, для получения ключей под домены юзал dehydrated.

P.S. У Вас баганутая капча.

djl

Уродская статья для новичка.

Вася

sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp — при выполнении ошибка, что ключа -R нет!

Andrey6122

Там нужно вводить по отдельности sudo mkdir -p /home/newftpuser/ftp/upload и так далее sudo chmod 550 /home/newftpuser/ftp
далее sudo chmod 750 /home/newftpuser/ftp/upload

потом sudo chown -R newftpuser: /home/newftpuser/ftp

Тимур

Благодарю вам, по вашему мануалу сразу получилось у меня.

Читайте также

Спасибо!

Теперь редакторы в курсе.