В этом руководстве расскажем, как установить FTP сервер на VPS с ОС Ubuntu. Будем использовать сервер vsftpd, который считается самым быстрым и безопасным FTP сервером для UNIX-систем.
FTP или File Transfer Protocol – протокол приема и передачи файлов в сети. Используя модель клиент/сервер и безопасность SSL/TLS, FTP позволяет пользователям обмениваться файлами с удаленными компьютерами безопасно, эффективно и надежно, передавая данных по протоколу TCP/IP.
FTP работает подобно HTTP или SMTP, с единственным отличием, что он ответственен за безопасную передачу данных от отправителя к получателю, а не веб-страницы с сервера к пользователю или электронного письма через интернет. В этом руководстве рассмотрено создание FTP сервера на ОС Ubuntu версии 16.04.
Примечание: Текущее руководство основывается на версии ОС Ubuntu 16.04. Но вы можете применить те же шаги по созданию FTP сервера на Ubuntu 14.04.
Шаг 1 – Установка Vsftpd
Прежде всего, давайте сделаем обновление всех пакетов перед началом установки демона vsftpd. Для этого выполним команду:
sudo apt-get update
Дождитесь завершения всех процессов и вы увидите подтверждающее сообщение:
Затем установим демон vsftpd следующей командой:
sudo apt-get install vsftpd
Вы получите уведомление требующее подтверждения, нажмите Y и Enter для продолжения установки.
По завершению установки, сделаем бэкап оригинального файла конфигурации, чтобы начать с чистого файла настроек:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
Теперь мы можем переходить к следующему шагу и настраивать фаервол.
Шаг 2 – Разрешение FTP трафика на фаерволе
Чтобы позволить серверу FTP, развёрнутому на ОС Ubuntu взаимодействовать с внешним миром, нужно настроить путь через фаервол. Для начала посмотрим включён ли фаервол. Запустите следующую команду для определения статуса:
sudo ufw status
Если вы увидите такое сообщение:
ufw: command not found
Это значит, что фаервол не установлен и можно перходить к следующему шагу.
Если же на выходе будут показаны правила или сообщение о том, что фаервол активен, нужно определить, как он будет обрабатывать FTP-трафик.
Давайте сделаем следующее, откроем порты 20 и 21 для трафика FTP; порты 40000-50000 будут зарезервированы, как диапазон пассивных портов, который в конечном итоге будет установлен в файле конфигурации; порт 990 будет использоваться, когда TLS будет включен. Выполним следующие команды:
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
Теперь посмотрим на статус:
Результат будет выглядеть где-то так:
Output Status: active To Action From — —— —- 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)
Теперь, все необходимые порты открыты и доступны для нас и мы можем переходит к следующему шагу.
Шаг 3 – Создание каталога пользователя
На третьем шаге создания Ubuntu FTP сервера, нужно выбрать пользователя, который будет подключатся по FTP. Для этого создадим нового пользователя, выполнив такую команду:
sudo adduser alex
Заполните пароль и другие детали, когда запросит. В идеале, с точки зрения безопасности, FTP должен быть ограничен одним специальным каталогом. Vsftpd использует chroot для создания этой защиты. Со включённым chroot, локальный пользователь ограничивается его домашним каталогом (по умолчанию).
Однако, может оказаться, что из-за защиты vsftpd, пользователь не сможет ничего создавать в каталоге. Мы не убираем права на запись в домашнем каталоге, вместо этого мы сделаем каталог ftp, который будет вести себя как chroot вместе с сохранением способности к записи, что будет позволять хранить файлы.
Используйте такую команду для создания каталога FTP:
sudo mkdir /home/alex/ftp
Установите права владения:
sudo chown nobody:nogroup /home/alex/ftp
Наконец, удалите права на запись:
sudo chmod a-w /home/alex/ftp
Теперь, используя следующую команду проверьте права доступа:
sudo ls -la /home/alex/ftp
На выходе мы увидим приблизительно это:
total 8 dr-xr-xr-x 2 nobody nogroup 4096 Jun 29 11:32 . drwxr-xr-x 3 alex alex 4096 Jun 29 11:32 ..
На следующем этапе мы создадим файл, содержащий каталоги и права доступа к ним:
sudo mkdir /home/alex/ftp/files sudo chown alex:alex /home/alex/ftp/files
И наконец, добавим в каталог тестовый файл, который мы будет использовать во время тестирования чего-либо:
echo «vsftpd sample file» | sudo tee /home/alex/ftp/files/sample.txt
Шаг 4 – Настройка vsftpd
Чтобы продолжить устанавливать FTP сервер на Ubuntu VPS, нам нужно настроить vsftpd и наш FTP-доступ. В этом руководстве мы разрешим одному пользователю подключаться по FTP, используя локальную консоль.
Необходимая для этого двух этапная настройка уже установлена в конфигурационном файле (vsftpd.conf).
Вначале проверьте, чтобы настройки в файле совпадали с указанными ниже, используя команду nano:
sudo nano /etc/vsftpd.conf. . . # Allow anonymous FTP? (Disabled by default). anonymous_enable=NO # # Uncomment this to allow local users to log in. local_enable=YES . . .
В этом же файле, продолжим удаляя # включаем write_enable:
. . . write_enable=YES . . .
Chroot также раскоментируем, чтобы убедиться, что пользователь, подключившийся по FTP имеет доступ к файлам внутри разрешённой директории:
. . . chroot_local_user=YES . . .
Несколько новых значений будут также нужны для добавления вручную. Вы можете просто вставить их в конец файла. Вначале, user_sub_token добавим к пути каталога local_root. Это позволит конфигурации работать с текущим пользователем и любым другим пользователем, который будет добавлен позже:
user_sub_token=$USER local_root=/home/$USER/ftp
Чтобы быть уверенным, что доступно достаточное количество соединений, мы ограничим количество портов, используемое в конфигурационном файле:
pasv_min_port=40000 pasv_max_port=50000
В этом руководстве мы планируем дать доступ индивидуальной основе, поэтому давайте установим настройки так, чтобы дать доступ только тем пользователям, которые непосредственно добавлены в список:
userlist_enable=YES userlist_file=/etc/vsftpd.userlist userlist_deny=NO
Флаг userlist_deny отвечает за переключение логики, когда он установлен в “NO”, только те пользователи, которые есть в списке имеет доступ. По завершению нажмите CTRL+X и подтвердите сохранения изменений в файле.
В завершение, продолжим создание и добавление нашего пользователя в файл:
echo «alex» | sudo tee -a /etc/vsftpd.userlist
Проверим, что пользователь действительно активен запуском команды:
cat /etc/vsftpd.userlist
Вывод должен быть “alex”, как показано на скриншоте:
Перезапустите демона, используя следующую команду, чтобы запустить изменения настроек:
sudo systemctl restart vsftpd
Шаг 5 – Делаем защищенный FTP
По умолчанию, FTP не делает никакого шифрование данных, поэтому мы будем использовать TLS/SSL, чтобы позаботиться о безопасности. В качестве первого шага нам нужно создать SSL сертификат и использовать его для защиты Ubuntu FTP сервера. Для начала выполним следующую команду:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Флаг –days делает сертификат действующим в течение года и мы включаем 2048-битный приватный ключ RSA в этой же команде. Когда запросит нужные данные введите их в предоставленном поле.
После создания сертификата ещё раз откройте конфигурационный файл:
sudo nano /etc/vsftpd.conf
В конце файла есть строка с “_rsa”. Закомментируйте эти две строки:
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Вместо этого мы направим конфиг файл на сертификат, который мы создали. Добавьте такие строки:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
Теперь мы включим SSL и убедимся, что только пользователи со включённым SSL могут с нами связываться. Измените значение ssl_enable на YES:
ssl_enable=YES
Теперь добавьте следующие строки для продолжения создания защиты (это запретить какие-либо анонимные соединения с использованием SSL):
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
Настройте TLS используя:
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Здесь мы добавим ещё 2 опции. Во-первых, повторное использование SSL не будет необходимым, потому что это может привести к разрывам у большого количества клиентов. Во-вторых, мы будем использовать высокозащищенный код шифрования, что будет означать, что длина ключа соответствует (или больше, чем) 128 бит.
require_ssl_reuse=NO
ssl_ciphers=HIGH
Сделаем ещё раз перезапуск, для вступления изменений в силу:
sudo systemctl restart vsftpd
Прекрасно! Вот вы и настроили FTP сервер на вашем Ubuntu VPS для работы с протоколом SSL/TLS.
Шаг 6 – Проверка подключения, используя FileZilla
Сегодня FTP клиенты поддерживают настройку шифрования TLS, поэтому это прекрасная возможность проверить, работает ли наш Ubuntu FTP сервер как следует. Чтобы проверить соединение, будем использовать FileZilla FTP клиент. Для начала запустите FileZilla, нажатием на иконку Site Manager.
Нажмите на кнопку New Site в появившемся окне начните заполнять данные о Ubuntu FTP сервере.
Заполните необходимые поля информацией о недавно созданном Ubuntu FTP сервере. Так как мы настроили его с использованием TLS, мы может отметить настройку шифрования в “explicit FTP over TLS” положение. Окончательное окно настроек выглядит так:
Как только настроите, нажимайте Connect и появится окошко с запросом для введения пароля пользователя FTP.
В заключение вам нужно будет подтвердить SSL сертификат на вашем FTP сервере на Ubuntu VPS.
После подтверждения, корневой root-каталог с тестовым файлом появятся на вашем экране.
Это всё! Теперь вы можете производить любую передачу файлов с вашего компьютера на Ubuntu FTP сервер и обратно.
Заключение
В этом руководстве мы прошли шаг за шагом путь создания для локального пользователя безопасного способа передачи файлов через FTP с SSL/TLS на Ubuntu FTP сервере. Также мы протестировали соединения, используя FileZilla, чтобы убедиться, что всё работает.
Источник: https://www.hostinger.ru/rukovodstva/kak-ustanovit-ftp-server-na-ubuntu-vps/
Установка FTP на Ubuntu 16.04
FTP или File Transfer Protocol — это достаточно древний, но в то же время надёжный и проверенный протокол выгрузки файлов на удалённый сервер или их скачивания. Также иногда этот протокол применяется веб-мастерами для управления файлами или организации хранилища данных.
В этой статье мы рассмотрим, как выполняется установка FTP на Ubuntu 16.04, как настроить все необходимые компоненты, в том числе и защищённое соединение. Мы будем использовать FTP-сервер VSFTPD или Very Secure FTP Daemon, который обеспечивает самую надёжную защиту от уязвимостей.
Установка FTP Ubuntu
Программа доступна из официальных репозиториев, поэтому установка FTP на Ubuntu Server 16.04 не должна вызвать проблем. Сначала обновите список пакетов в репозиториях, затем установите саму программу:
sudo apt update
$ sudo apt install vsftpd
- Когда установка будет завершена, вам необходимо включить сервис vsftpd, поскольку он не будет запущен по умолчанию, а также добавить службу в автозагрузку:
- sudo systemctl start vsftpd
$ sudo systemctl enable vsftpd - Если у вас установлен фаервол ufw, а такая ситуация возникает, когда вы пытаетесь установить FTP на Ubuntu Server, нужно открыть порты 20 и 21 для нормальной работы. Чтобы это сделать, выполните команды:
- sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp - $ sudo ufw status
Установка FTP Ubuntu завершена, но теперь вам осталось настроить всё необходимое для обеспечения безопасной работы. Никогда не используйте FTP-сервер с настройками по умолчанию в производственных сетях, это небезопасно.
Настройка FTP Ubuntu
Теперь перейдём к настройке. Нам нужно поменять всего несколько параметров, чтобы полностью защитить ваш FTP-сервер. Сначала мы рассмотрим самые очевидные настройки: отключения анонимного входа и так далее. Сначала необходимо скопировать оригинальный файл настроек, чтобы в случае проблем вернуть всё как было:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
Затем откройте файл в редакторе:
sudo vi /etc/vsftpd.conf
Затем добавьте такие настройки. Вам нужно будет найти и изменить значения указанных строк, добавлять новые, если они уже есть, не стоит. Сначала отключаем анонимный вход:
- anonymous_enable = NO
- Разрешаем использовать имена локальных пользователей для входа:
- local_enable = YES
- ля авторизованных пользователей разрешаем команды, позволяющие изменять файловую систему:
- write_enable = YES
- Установим значение umask для новых файлов, создаваемых по FTP:
- local_umask = 022
- Включаем сообщение о необходимости выбрать каталог после регистрации:
- dirmessage_enable = YES
- Записывать в лог файл все транзакции по передаче файлов и использовать стандартный формат лога:
- xferlog_enable = YES
xferlog_std_format=YES - Использовать порт 20 для передачи данных вместо случайного, это нужно для нормальной работы фаервола:
- connect_from_port_20 = YES
- Указываем, что нужно ожидать входящих соединений:
- listen=YES
- Использовать PAM-сервис vsftpd:
- pam_service_name=vsftpd
- На завершение разрешим аутентификацию только пользователей, перечисленных в файле userlist:
- userlist_enable = YES
- Указываем файл с нашими виртуальными пользователями:
- userlist_file=/etc/vsftpd.userlist
- По умолчанию таким пользователям запрещён вход в систему, но мы хотим совсем обратное, поэтому добавьте такую строчку:
- userlist_deny=NO
- При входе пользователей на FTP-сервер, они могут работать только в корневом каталоге FTP. Если вы хотите, чтобы пользователи были ограничены только своей домашней папкой, то необходимо раскомментировать эти строчки:
- chroot_local_user = YES
allow_writeable_chroot = YES - Первая строчка указывает, что нужно разместить пользователя в изолированном домашнем каталоге, а вторая, что ему можно разрешить запись в этот каталог. Настройка FTP Ubuntu почти завершена, сохраните изменения в конфигурационном файле и перезапустите vsftpd:
- sudo systemctl restart vsftpd
Тестирование vsftpd
- Сервер готов, но система настроена ещё не полностью. Сначала создадим нашего тестового пользователя с помощью useradd:
- sudo useradd -m -c «Test User» -s /bin/bash testuser
$ sudo passwd testuser - Поскольку мы хотим подключаться от его имени к FTP-серверу, то нам нужно добавить его в vsftpd.userlist:
echo «testuser» | sudo tee -a /etc/vsftpd.userlist
$ cat /etc/vsftpd.userlist
- Теперь самое время подключится к нашему FTP-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:
У нас ничего не получится. Теперь попробуем войти от имени нашего тестового пользователя, и всё заработает как нужно.
Обратите внимание, что опасно давать пользователям доступ на запись в их домашнюю папку. Делайте это, только если уверены в том, что это необходимо и безопасно.
Настройка домашних папок пользователей
- Чтобы хоть как-то обойти проблемы с безопасностью, вы можете использовать другую папку вместо домашней для предоставления её пользователю. Сначала создадим такую папку для нашего пользователя:
- sudo mkdir -p /home/testuser/ftp/files
- Уберём право на запись для папки ftp:
- sudo chown nobody:nogroup /home/testuser/ftp
$ sudo chmod a-w /home/testuser/ftp - Затем дайте необходимые полномочия пользователю на запись в подпапку.
- sudo chown -R testuser:testuser /home/testuser/ftp/files
$ sudo chmod -R 0770 /home/testuser/ftp/files/
Теперь вернёмся к конфигурационному файлу vsftpd.conf. Сначала закомментируйте строчку:
- allow_writeable_chroot = YES
- Теперь добавьте такие строчки:
- user_sub_token = $USER
local_root=/home/$USER/ftp - Первая из них добавляет переменную $USER, в которой содержится имя пользователя, а вторая задаёт корневую папку для каждого пользователя. Осталось снова перезапустить FTP-сервер:
- sudo systemctl restart vsftpd
- Теперь вы можете снова войти от имени этого пользователя и увидите, что сейчас используется указанная нами папка.
Настройка защищенного соединения
Установка FTP на Ubuntu 16.04 завершена, но в наше время небезопасно использовать открытую передачу данных через сеть. Всё, что только возможно, необходимо шифровать. Поэтому мы рассмотрим, как настроить защищённое соединение для vsftpd. Сначала создадим папку и сгенерируем сам сертификат, который будем использовать:
sudo mkdir /etc/ssl/private
$ sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem
- Затем нужно разрешить доступ к портам защищённого соединения FTP с фаерволе UFW:
- sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp - $ sudo ufw status
- И осталось внести несколько правок в настройку самого FTP-сервера. Нам нужно включить ssl_enable и отключить поддержку шифрования sslv2 и sslv3, оставляем только tlsv1:
- ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO - ssl_sslv3=NO
- Далее раскоментируйте такие строки:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
- Запретите вход анонимных пользователей по SSL:
- allow_anon_ssl=NO
force_local_data_ssl=YES - force_local_logins_ssl=YES
- Теперь установим самый сложный шифр SSL:
- ssl_ciphers=HIGH
- И настроим диапазон портов для передачи данных:
- pasv_min_port=40000
pasv_max_port=50000 - Осталось перезагрузить наш сервис:
- sudo systemctl restart vsftpd
- Теперь тестируем, что у нас получилось:
Как видите, мы уже не можем авторизоваться с помощью утилиты ftp. FTP-сервер выдаёт, что мы обязаны использовать шифрование. Поэтому для тестирования применим FileZilla:
Теперь все данные будут передаваться по зашифрованному соединению. Установка FTP-сервер Ubuntu завершена.
Выводы
В этой статье мы рассмотрели, как выполняется установка FTP на Ubuntu Server 16.04, также как настроить FTP для максимально безопасной работы, включая настройку работы по SSL. Если у вас остались вопросы, спрашивайте в х!
Источник: https://losst.ru/ustanovka-ftp-na-ubuntu-16-04
Установка FTP-сервера на Ubuntu 18.04
В настоящей статье мы рассмотрим установку и настройку FTP сервера vsftpd на веб-сервер под управлением операционной системы Ubuntu Server 18.04.
FTP (File Transfer Protocol) — это протокол передачи файлов по сети. Порты по умолчанию: 21/TCP для команд, 20/TCP для данных. Порты для пассивного подключения настраиваются дополнительно в конфигурационном файле.
Установка
- Для начала обновим индексы пакетов программ:
- sudo apt update
- Теперь устанавливаем сам FTP сервер:
- sudo apt install vsftpd
Настройка
- Открываем конфигурационный файл для редактирования:
- sudo nano /etc/vsftpd.
conf
- Опуская комментарии его содержание должно быть следующим:
- listen=YES
local_enable=YES
chroot_local_user=YES
check_shell=NO
write_enable=YES
xferlog_enable=YES
chown_uploads=YES
chown_username=nobody
anonymous_enable=NO
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
Конфигурационный файл
- Перезапускаем FTP сервер:
- sudo service vsftpd restart
- Создаем пользователя FTP:
- sudo adduser ftpuser
- Создаем каталог для монтирования каталога сайта в домашний каталог нашего пользователя:
- sudo mkdir /home/ftpuser/site
- Монтируем:
- sudo mount —bind /var/www /home/ftpuser/site
Монтирование каталогов
Теперь в /home/ftpuser/site будут отображаться файлы, которые лежат в /var/www. Обратите внимание на то, что монтирование сохраняется до перезагрузки сервера. После перезагрузки команду нужно будет повторить.
- Далее даем права на каталоги и файлы сайта:
- sudo chown www-data:ftpuser /var/www/ -R
sudo find /var/www -type d -exec chmod 775 {} ;
sudo find /var/www -type f -exec chmod 664 {} ; - Для того что бы пользователь мог подключаться по FTP нужно включить запрет на запись в корень домашнего каталога:
- sudo chmod a-w /home/ftpuser/
- Теперь нам необходимо настроить брандмауэр для подключения:
- sudo ufw allow in 20/tcp
- sudo ufw allow in 21/tcp
- sudo ufw allow in 60000:60100/tcp
- Проверяем правила:
- sudo ufw status
Проверка правил
Все. Пробуем подключиться по FTP.
Подключение по FTP
Как видим подключение работает. В смонтированном каталоге файлы нашего тестового сайта.
Выводы
Установка FTP сервера на веб-сервер завершена. Теперь можно загружать файлы сайта на сервер и делать резервные копии. Если остались вопросы по данной теме, пишите в х.
Источник: https://itseason.ru/ubuntu-ftp/
Установка и настройка FTP-сервера в Linux
File Transfer Protocol, т. е. FTP – протокол передачи файлов и, как понятно из полного названия, предназначен для передачи файлов между удалёнными компьютерами через сеть.
Несмотря на то, что сам протокол FTP является на сегодняшний день не самым совершенным из-за того, что передаваемые данные не шифруются, однако это не делает его устаревшим.
Кроме того всё-таки к FTP возможно применять криптографическую защиту на основе протокола SSL, что и делает FTP достойным инструментом для передачи файлов.
Поскольку FTP работает по схеме клиент-серверного взаимодействия, то умелая и надёжная реализация протокола (да и вообще системы) в состоянии обеспечить ему надёжную защиту, высокую скорость и, как следствие — популярность, что и можно наблюдать на сегодняшний день, ведь большинство крупных проектов, таких как ftp.gnu.org, ftp.suse.com, ftp.redhat.com, ftp.gnome.org и т. д., используют для распространения программного обеспечения со своих серверов именно FTP. Надо заметить, что такой популярностью FTP обязан, в большей степени, одной из своих многочисленных реализаций — vsFTPd. Это FTP- сервер, поддерживающий работу с самыми современными технологиями по защите данных — SSL и IPv6, его реализация совмещает в себе высокую надёжность, стабильность, скорость работы и передачи данных, а также гибкую настройку работы сервера и широкий функционал. Разработчиком vsFTPd является Крис Эванс — профессиональный исследователь в сферах защиты данных и информационной безопасности. vsFTPd является FTP-сервером по-умолчанию практически во всех Linux-системах, поскольку, как уже упоминалось, помимо надёжности и высокой скорости работы, обладает большими функциональными возможностями, самыми значимыми из которых являются:
- Работа с виртуальными пользователями.
- Работа с виртуальными IP-адресами.
- Конфигурирование пользователей.
- Поддержка
- SSL-шифровние для защиты передаваемых данных.
- Контроль полосы пропускания.
В данной статье рассматривается установка и настройка FTP-сервера на примере vsFTPd, который, кстати, является свободно распространяемым программным обеспечением (ПО) с открытым исходным кодом. Официальная страница проекта: https://security.appspot.com/vsftpd.html.
Установка vsFTPd
Установить Vsftd в Debian-ориентированных дистрибутивах Linux позволяет команда:
$ sudo apt-get install vsftpd
Также полезно будет установить и простой FTP-клиент для тестирования соединения и передачи файлов:
$ apt-get install ftp
Для дистрибутивов на основе RPM-пакетов, CentOS, RedHat:
$ yum install vsftpd
$ yum install ftp
Примечание: yum – это пакетный менеджер, тот же самый apt, но адаптированный для управления пакетами формата *.rpm.
После установки для vsFTPd будет доступна техническая документация, которая обычно находится в каталоге /usr/share/doc/vsftpd/examples – здесь приведены варианты различных конфигураций, в зависимости от характера и масштабов использования vsFTPd. Ознакомиться с документацией можно также с помощью команды:
$ man vsftpd.conf
Обычно после установки демон vsFTPd автоматически запускается, убедиться в этом можно с помощью следующих команд:
$ systemctl status vsftpd
или:
$ service vsftpd status
Запуск, перезапуск и остановка сервера:
$ systemctl start vsftpd
$ systemctl restart vsftpd
$ systemctl stop vsftpd
Для включения демона vsftpd в автозагрузку используется команда:
$ systemctl enable vsftpd
Аналогично и с командой service.
Если vsFTPd используется в серверных дистрибутивах, в которых часто работает фаервол, например ufw, то ещё может понадобиться разрешить использование портов 20 и 21:
$ ufw allow 20/tcp
$ ufw allow 21/tcp
Настройка vsFTPd
Конфигурационным файлом для настройки vsFTPd является файл vsftpd.conf, который обычно находится в каталоге etc/. Ознакомиться с его одержимым можно командой cat:
$ cat /etc/vsftpd/vsftpd.conf
На всякий случай полезно перед редактированием оригинального файла настроек сделать его резервную копию:
$ sudo cp /etc/vsftpd.conf vsftpd.conf.backup
FTP-сервер vsFTPd предусматривает два основных варианта работы: с анонимными и авторизованными пользователями.
Первый вариант считается «более безопасным», но только потому, что для обеспечения надёжной защиты практически ничего настраивать и не нужно.
Но при грамотной организации авторизованного доступа, предполагающего работу с FTP локальных пользователей системы, можно обеспечить безопасность ничуть не хуже, чем при использовании анонимного доступа.
Настройка в режиме анонимного доступа
Работа vsFTPd в данном режиме заключается в том, что действия с файлами на удалённом сервере производятся одним определённым по умолчанию пользователем, например, пользователем с именем «ftp» или «anonymous», при этом в качестве пароля используется e-mail.
Чтобы включить анонимный доступ по FTP нужно в фале vsftpd.conf определить значение «YES» для соответствующей директивы:
anonymous_enable=YES
Теперь для управления файлами будет использоваться определённый каталог (обычно это /srv/ftp) и определённый пользователь — обычно ftp.
Можно определить и другое расположение файлов для анонимного доступа по FTP, т. е. изменить домашнюю директорию пользователя ftp:
$ sudo mkdir /srv/share/ftp
$ sudo usermod -d /srv/share/ftp ftp
Если нужно, чтобы анонимные пользователи могли ещё и загружать файлы на удалённый сервер, то это позволит сделать директива:
anon_upload_enable=YES
- Теперь можно скопировать необходимые для анонимного доступа файлы в домашнюю папку пользователя ftp и перезапустить демон vsftpd:
- $ systemctl restart vsftpd
- Обычно этого набора настроек достаточно для организации анонимного FTP-доступа. Для проверки соединения можно выполнить команду ftp address_host:
$ ftp 127.0.0.1
или:
$ ftp localhost
что в случае успешного выполнения даст примерно такой вывод:
Настройка в режиме авторизованного доступа
Для авторизованного доступа проще всего включить использование локальных учётных записей на сервере. Для этого нужно указать следующую директиву в файле конфигурации vsftpd.conf:
local_enable=YES
Для задания разрешения локальным авторизованным пользователям загружать файлы на сервер указывается директива:
write_enable=YES
Примечание: для авторизации локальных пользователей используется пароль пользователя для локального входа в систему.
Теперь нужно перезапустить vsftpd для активации сделанных изменений:
$ systemctl restart vsftpd
Ограничение пользователей в своих домашних каталогах
Для определения пользователей, которым разрешён доступ только к своему домашнему каталогу существуют директивы:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Первая включает использование списка пользователей, вторая определяет файл, в котором в каждой строке перечислены пользователи с доступом только к своим домашним каталогам. Если при этом ещё указать директиву:
chroot_local_user=YES
которая «запирает» в chroot() локальных пользователей и выше своих домашних каталогов они подняться не смогут, то в этом случае пользователи в файле vsftpd.chroot_list ограничиваться своими домашними каталогами не будут, в отличии от тех, кто в этот список не внесён.
При распределении FTP-доступа среди пользователей может возникнуть ошибка, которая возникает из-за того, что локальный пользователь имеет права на запись в корне домашнего каталога, что по соображениям безопасности недопустимо. Эта ошибка выглядит следующим образом:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Лучшим способом исправить эту ошибку является указание некоего общего корневого каталога, куда при подключении будут попадать все пользователи, имея доступ лишь к своим домашним поддиректориям, например:
local_root=/home
Можно также для устранения этой ошибки отключить проверку на запись в домашний каталог:
allow_writeable_chroot=YES
Но всё же это стоит делать лишь тогда, когда есть чёткое понимание, зачем это нужно для конкретной ситуации.
Защита данных с помощью SSL
Чтобы иметь возможность шифровать передаваемые данные, следует настроить vsFTPd в режиме FTPS. Это та же самая передача данных по FTP, но организованная поверх SSL – протокола. Шифрующего и проверяющего данные с помощью сертификатов и ключей.
Для включения режима FTPS нужно задействовать следующую директиву:
ssl_enable=Yes
По умолчанию в конфигурационном файле vsftpd.conf также присутствуют опции, определяющие сертификаты и ключи, например:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Эти сертификат и ключ необходимо заменить. Для использования FTPS необходимо использовать сертификат и ключ. Cгенерированные (или полученные) для конкретного сервера или компьютера.
Источник: https://ITProffi.ru/ustanovka-i-nastrojka-ftp-servera-v-linux/
Как установить 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 18.04
Пакет 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
Сервер 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.confuser_sub_token=$USER
local_root=/home/$USER/ftp - Метод 2. Еще один вариант – добавить следующую директиву в файл конфигурации vsftpd. Используйте этот параметр, если вы должны предоставить доступ к записи для своего пользователя в свой домашний каталог./etc/vsftpd.confallow_writeable_chroot=YES
4. Пассивные FTP-соединения
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 (по одному пользователю в строке).
6. Обеспечение передачи с помощью SSL/TLS
- Чтобы шифровать 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
После того, как вы закончите редактирование, файл конфигурации 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 statusStatus: 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-й шаг.
- Создайте нового пользователя с именем newftpuser:sudo adduser newftpuser
- Добавьте пользователя в список разрешенных пользователей FTP:echo «newftpuser» | sudo tee -a /etc/vsftpd.user_list
- Создайте дерево каталогов 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
echo «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.
Источник: https://andreyex.ru/ubuntu/kak-ustanovit-ftp-server-s-vsftpd-na-ubuntu-18-04