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

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

Что такое FTP?

FTP или протокол передачи файлов - это средство обмена файлами между компьютерами через интернет-соединение с использованием протокола TCP / IP. Он также использует структуру клиент-сервер и безопасность SSL / TLS для обеспечения безопасной и надежной передачи данных.
Это в чем-то похоже на HTTP (протокол передачи гипертекста) или SMTP (простой протокол передачи почты). Разница в том, что FTP отвечает за транспортировку файлов через Интернет, а HTTP и SMTP обрабатывают передачу веб-страниц и электронной почты соответственно.
Прежде чем мы начнем, имейте в виду, что мы проведем вас через настройку FTP-сервера в Ubuntu 18.04. Следовательно, вам необходимо убедиться, что ваш VPS работает на этой конкретной ОС.

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

В этом руководстве вы должны знать, как подключиться к серверу через SSH. Если у вас есть VPS от Hostinger, данные для входа доступны на вкладке « Сервер » в hPanel.

Шаг 1 - Установка vsftpd

  1. Прежде всего, нам нужно получить обновления наших пакетов, прежде чем мы продолжим  установку vsftpd . Для начала выполните следующую команду:
    sudo apt-get update
    Дождитесь завершения всех процессов, и вы увидите подтверждение, как только обновление завершится.
  2. Как только это будет сделано, установите демон vsftpd , используя следующую команду:
    sudo apt-get install vsftpd
    Вам будет предложено сообщение с подтверждением, в котором вам потребуется ввести Y и нажать Enter, чтобы продолжить установку.
  3. После завершения установки необходимо создать резервную копию исходного файла, чтобы можно было начать с пустого файла конфигурации:
    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
    Теперь мы готовы настроить брандмауэр.

Шаг 2. Разрешение FTP-трафика через брандмауэр

  1. Чтобы FTP-сервер Ubuntu мог обмениваться данными через Интернет, ему необходимо пройти через брандмауэр. Но сначала давайте просто посмотрим, включен ли брандмауэр на вашем компьютере или нет. Просто запустите эту команду, чтобы проверить статус:
    sudo ufw status
    Если вы видите следующее сообщение:
    ufw: command not found
    Это означает, что межсетевой экран не установлен. Вы можете установить и включить его, набрав:
    sudo apt-get install ufw
    sudo ufw enable
  2. Если он уже активен, вам все равно нужно убедиться, что FTP-трафик разрешен. Для этого выполните одну за другой следующие команды:
    sudo ufw allow OpenSSH
    sudo ufw allow 20/tcp
    sudo ufw allow 21/tcp
    sudo ufw allow 990/tcp
    sudo ufw allow 40000:50000/tcp
    Эта серия команд откроет несколько портов:
    • OpenSSH требуется, если вы все еще хотите получить доступ к своему серверу через SSH. Иногда этот параметр включен по умолчанию.
    • порты 20 и 21 для FTP-трафика.
    • порты 40000: 50000 будут зарезервированы для диапазона пассивных портов, который в конечном итоге будет установлен в файле конфигурации.
    • порт 990 будет использоваться, когда включен TLS.
  3. Теперь снова посмотрим на статус:
    sudo ufw status
    Результат должен выглядеть примерно так:
    Status: active
    To                         Action From
    --                              ------ ----
    OpenSSH                    ALLOW Anywhere
    990/tcp                    ALLOW Anywhere
    20/tcp                     ALLOW Anywhere
    21/tcp                     ALLOW Anywhere
    40000:50000/tcp            ALLOW Anywhere
    OpenSSH (v6)               ALLOW Anywhere (v6)
    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 - Создание каталога пользователей

  1. После настройки брандмауэра мы должны создать пользователя, который будет использовать FTP-доступ. Вот как это сделать:
    sudo adduser hostinger
    Не забудьте изменить имя пользователя по своему усмотрению.
  2. Затем введите пароль для пользователя и заполните все необходимые данные.
    В идеале FTP должен быть ограничен одним конкретным каталогом в целях безопасности. Вот почему vsftpd использует chroot-тюрьмы , которые по умолчанию ограничивают локального пользователя их домашним каталогом.
    Однако возможно, что из-за безопасности vsftpd пользователь не сможет писать в этот каталог. Чтобы исправить это, нам не нужно удалять права записи из домашней папки. Вместо этого мы создадим каталог ftp, который будет работать как chroot . Он содержит доступный для записи каталог, который будет нести ответственность за хранение необходимых файлов.
  3. Используйте следующую команду для создания папки FTP:
    sudo mkdir /home/hostinger/ftp
    Затем установите право собственности, используя:
    sudo chown nobody:nogroup /home/hostinger/ftp
    Наконец, удалите разрешение на запись:
    sudo chmod a-w /home/hostinger/ftp
    Теперь используйте следующую команду для проверки разрешений:
    sudo ls -la /home/hostinger/ftp
    Результат должен выглядеть примерно так:
    total 8
    dr-xr-xr-x 2 nobody nogroup 4096 Oct 8 11:32 .
    drwxr-xr-x 3 hostinger   hostinger 4096 Oct 8 11:32 ..
  4. Затем мы создадим каталог для хранения файлов и назначим владельца:
    sudo mkdir /home/hostinger/ftp/files
    sudo chown hostinger:hostinger /home/hostinger/ftp/files
    Наконец, добавьте в каталог тестовый файл, который будет использоваться, когда мы все протестируем позже:
    echo "vsftpd sample file" | sudo tee /home/hostinger/ftp/files/sample.txt

Шаг 4 - Настройка vsftpd

Следующим шагом будет настройка vsftpd и нашего FTP-доступа. В этом примере мы разрешим одному пользователю подключаться с помощью локальной учетной записи оболочки. Две необходимые для этого ключевые конфигурации уже заданы в файле конфигурации ( vsftpd.conf ).
  1. Для начала используйте команду nano, чтобы открыть файл конфигурации vsftpd .
    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
    . . .
  2. Вам также необходимо раскомментировать chroot, чтобы пользователь FTP имел доступ только к файлам в разрешенном каталоге. Также измените значение NO на YES . Имейте в виду, что таких строк две, и вы должны раскомментировать их.
    . . .
    chroot_local_user=YES
    . . .
  3. Есть несколько новых значений, которые вы также должны добавить в конец файла. Первый - user_sub_token в пути каталога local_root . Это позволит конфигурации работать с текущим пользователем или любыми другими пользователями, которые будут добавлены впоследствии:
    user_sub_token=$USER
    
    local_root=/home/$USER/ftp
  4. Чтобы обеспечить доступность значительного количества подключений, мы ограничим количество портов в файле конфигурации:
    pasv_min_port=40000
    pasv_max_port=50000
  5. В этом руководстве мы намерены предоставлять доступ в индивидуальном порядке. Поэтому мы настроим конфигурацию для предоставления доступа только пользователям, которых вы явно добавили в список:
    userlist_enable=YES
    userlist_file=/etc/vsftpd.userlist
    userlist_deny=NO
    Когда вы устанавливаете флаг userlist_deny в NO , доступ будет разрешен только указанным пользователям. После этого нажмите CTRL + X, затем Y, чтобы сохранить его, затем нажмите Enter, чтобы подтвердить изменения файла.
  6. Наконец, мы создадим список пользователей и добавим пользователя в файл:
    echo "hostinger" | sudo tee -a /etc/vsftpd.userlist
    Убедитесь, что пользователь действительно активен, выполнив следующую команду:
    cat /etc/vsftpd.userlist
    Результат должен быть «hostinger», как показано на этом снимке экрана:
    Проверка пользователя в списке пользователей на VPS
  7. Перезапустите демон, используя следующую команду, чтобы загрузить изменения конфигурации:
    sudo systemctl restart vsftpd

Шаг 5 - Обеспечение безопасности FTP

  1. По умолчанию FTP не шифрует данные, поэтому мы будем использовать сертификат SSL / TLS для защиты передачи данных. Первый шаг - нам нужно создать сертификат SSL для FTP-сервера Ubuntu.
    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 ключ в одной команде.
  2. После запроса введите соответствующие личные данные в соответствующее поле.
  3. После того, как вы закончите создание сертификата, снова откройте файл конфигурации:
    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
  4. Затем мы включим SSL и обеспечим, чтобы с нами могли связаться только клиенты, у которых есть активный SSL. Просто введите эту строку:
    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
  5. Теперь изменим еще два варианта. Во-первых, отключите повторное использование SSL, чтобы FTP-клиенты не выходили из строя . Во-вторых, мы будем использовать комплекты шифров с высоким уровнем шифрования, которые гарантируют, что длина ключа равна или превышает 128 бит.
    require_ssl_reuse=NO
    ssl_ciphers=HIGH
    Снова сохраните файл, нажав CTRL + X, а затем Y , затем нажмите Enter .
  6. Давайте перезапустим vsftpd еще раз, чтобы применить новые конфигурации:
    sudo systemctl restart vsftpd
Отличная работа! Теперь вы настроили FTP-сервер на своем Ubuntu VPS для работы с протоколом SSL / TLS.

Добавить комментарий

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

Комментариев 0