Как установить и настроить ftp-сервер на ubuntu

В этом руководстве расскажем, как установить 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

Дождитесь завершения всех процессов и вы увидите подтверждающее сообщение:

Как установить и настроить ftp-сервер на ubuntu

Затем установим демон vsftpd следующей командой:

sudo apt-get install vsftpd

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

Как установить и настроить ftp-сервер на ubuntu

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

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”, как показано на скриншоте:

Как установить и настроить ftp-сервер на ubuntu

Перезапустите демона, используя следующую команду, чтобы запустить изменения настроек:

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.

Читайте также:  Как записать диск на macbook

Как установить и настроить ftp-сервер на ubuntu

Нажмите на кнопку New Site в появившемся окне начните заполнять данные о Ubuntu FTP сервере.

Как установить и настроить ftp-сервер на ubuntu

Заполните необходимые поля информацией о недавно созданном Ubuntu FTP сервере. Так как мы настроили его с использованием TLS, мы может отметить настройку шифрования в “explicit FTP over TLS” положение. Окончательное окно настроек выглядит так:

Как установить и настроить ftp-сервер на ubuntu

Как только настроите, нажимайте Connect и появится окошко с запросом для введения пароля пользователя FTP.

Как установить и настроить ftp-сервер на ubuntu

В заключение вам нужно будет подтвердить SSL сертификат на вашем FTP сервере на Ubuntu VPS.

Как установить и настроить ftp-сервер на ubuntu

После подтверждения, корневой root-каталог с тестовым файлом появятся на вашем экране.

Как установить и настроить ftp-сервер на ubuntu

Это всё! Теперь вы можете производить любую передачу файлов с вашего компьютера на 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

Как установить и настроить ftp-сервер на ubuntu

  • Когда установка будет завершена, вам необходимо включить сервис 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

Затем добавьте такие настройки. Вам нужно будет найти и изменить значения указанных строк, добавлять новые, если они уже есть, не стоит. Сначала отключаем анонимный вход:

  1. anonymous_enable = NO
  2. Разрешаем использовать имена локальных пользователей для входа:
  3. local_enable = YES
  4. ля авторизованных пользователей разрешаем команды, позволяющие изменять файловую систему:
  5. write_enable = YES
  6. Установим значение umask для новых файлов, создаваемых по FTP:
  7. local_umask = 022
  8. Включаем сообщение о необходимости выбрать каталог после регистрации:
  9. dirmessage_enable = YES
  10. Записывать в лог файл все транзакции по передаче файлов и использовать стандартный формат лога:
  11. xferlog_enable = YES
    xferlog_std_format=YES
  12. Использовать порт 20 для передачи данных вместо случайного, это нужно для нормальной работы фаервола:
  13. connect_from_port_20 = YES
  14. Указываем, что нужно ожидать входящих соединений:
  15. listen=YES
  16. Использовать PAM-сервис vsftpd:
  17. pam_service_name=vsftpd
  18. На завершение разрешим аутентификацию только пользователей, перечисленных в файле userlist:
  19. userlist_enable = YES
  20. Указываем файл с нашими виртуальными пользователями:
  21. userlist_file=/etc/vsftpd.userlist
  22. По умолчанию таким пользователям запрещён вход в систему, но мы хотим совсем обратное, поэтому добавьте такую строчку:
  23. userlist_deny=NO
  24. При входе пользователей на FTP-сервер, они могут работать только в корневом каталоге FTP. Если вы хотите, чтобы пользователи были ограничены только своей домашней папкой, то необходимо раскомментировать эти строчки:
  25. chroot_local_user = YES
    allow_writeable_chroot = YES
  26. Первая строчка указывает, что нужно разместить пользователя в изолированном домашнем каталоге, а вторая, что ему можно разрешить запись в этот каталог. Настройка FTP Ubuntu почти завершена, сохраните изменения в конфигурационном файле и перезапустите vsftpd:
  27. 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

  1. Как установить и настроить ftp-сервер на ubuntu
  2. Теперь самое время подключится к нашему FTP-серверу и проверить, как там всё работает. Попробуем войти от имени анонимного пользователя:
  3. Как установить и настроить ftp-сервер на ubuntu

У нас ничего не получится. Теперь попробуем войти от имени нашего тестового пользователя, и всё заработает как нужно.

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

Настройка домашних папок пользователей

  • Чтобы хоть как-то обойти проблемы с безопасностью, вы можете использовать другую папку вместо домашней для предоставления её пользователю. Сначала создадим такую папку для нашего пользователя:
  • 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/
  • Как установить и настроить ftp-сервер на ubuntu

Теперь вернёмся к конфигурационному файлу vsftpd.conf. Сначала закомментируйте строчку:

  1.  allow_writeable_chroot = YES
  2. Теперь добавьте такие строчки:
  3. user_sub_token = $USER
    local_root=/home/$USER/ftp
  4. Первая из них добавляет переменную $USER, в которой содержится имя пользователя, а вторая задаёт корневую папку для каждого пользователя. Осталось снова перезапустить FTP-сервер:
  5. sudo systemctl restart vsftpd
  6. Теперь вы можете снова войти от имени этого пользователя и увидите, что сейчас используется указанная нами папка.
  7. Как установить и настроить ftp-сервер на ubuntu

Настройка защищенного соединения

Установка 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-сервер на ubuntu
  • Затем нужно разрешить доступ к портам защищённого соединения 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

  1. Запретите вход анонимных пользователей по SSL:
  2. allow_anon_ssl=NO
    force_local_data_ssl=YES
  3. force_local_logins_ssl=YES
  4. Теперь установим самый сложный шифр SSL:
  5. ssl_ciphers=HIGH
  6. И настроим диапазон портов для передачи данных:
  7. pasv_min_port=40000
    pasv_max_port=50000
  8. Осталось перезагрузить наш сервис:
  9. sudo systemctl restart vsftpd
  10. Теперь тестируем, что у нас получилось:
  11. Как установить и настроить ftp-сервер на ubuntu

Как видите, мы уже не можем авторизоваться с помощью утилиты ftp. FTP-сервер выдаёт, что мы обязаны использовать шифрование. Поэтому для тестирования применим FileZilla:

Как установить и настроить ftp-сервер на ubuntu

Теперь все данные будут передаваться по зашифрованному соединению. Установка  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

Настройка

  1. Открываем конфигурационный файл для редактирования:
  2. sudo nano /etc/vsftpd.

    conf

  3. Опуская комментарии его содержание должно быть следующим:
  4. 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-сервер на ubuntu

Конфигурационный файл

  • Перезапускаем FTP сервер:
  • sudo service vsftpd restart
  • Создаем пользователя FTP:
  • sudo adduser ftpuser
  • Создаем каталог для монтирования каталога сайта в домашний каталог нашего пользователя:
  • sudo mkdir /home/ftpuser/site
  • Монтируем:
  • sudo mount —bind /var/www /home/ftpuser/site

Как установить и настроить ftp-сервер на ubuntu

Монтирование каталогов

Теперь в /home/ftpuser/site будут отображаться файлы, которые лежат в /var/www. Обратите внимание на то, что монтирование сохраняется до перезагрузки сервера. После перезагрузки команду нужно будет повторить.

  1. Далее даем права на каталоги и файлы сайта:
  2. 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 {} ;
  3. Для того что бы пользователь мог подключаться по FTP нужно включить запрет на запись в корень домашнего каталога:
  4. sudo chmod a-w /home/ftpuser/
  5. Теперь нам необходимо настроить брандмауэр для подключения:
  6. sudo ufw allow in 20/tcp
  7. sudo ufw allow in 21/tcp
  8. sudo ufw allow in 60000:60100/tcp
  9. Проверяем правила:
  10. sudo ufw status

Как установить и настроить ftp-сервер на ubuntu

Проверка правил

Все. Пробуем подключиться по FTP.

Как установить и настроить ftp-сервер на ubuntu

Подключение по 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-системах, поскольку, как уже упоминалось, помимо надёжности и высокой скорости работы, обладает большими функциональными возможностями, самыми значимыми из которых являются:

  1. Работа с виртуальными пользователями.
  2. Работа с виртуальными IP-адресами.
  3. Конфигурирование пользователей.
  4. Поддержка
  5. SSL-шифровние для защиты передаваемых данных.
  6. Контроль полосы пропускания.

В данной статье рассматривается установка и настройка 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

Как установить и настроить ftp-сервер на ubuntu

Обычно после установки демон 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

Как установить и настроить ftp-сервер на ubuntu

На всякий случай полезно перед редактированием оригинального файла настроек сделать его резервную копию:

$ 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

что в случае успешного выполнения даст примерно такой вывод:

Как установить и настроить ftp-сервер на ubuntu

Настройка в режиме авторизованного доступа

Для авторизованного доступа проще всего включить использование локальных учётных записей на сервере. Для этого нужно указать следующую директиву в файле конфигурации 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-й шаг.
  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.

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

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

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

  3. Создайте оболочку /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

Ссылка на основную публикацию
Adblock
detector