8 минут

2305

Устанавливаем и настраиваем FTP-сервер в Linux

Инструкция: Как установить и настроить FTP-сервер в Linux

Рассказываем, как настроить протокол передачи файлов FTP в Linux.

Что такое FTP и vsFTPd

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

vsFTPd — это дополнительный инструмент, который расширяет возможности FTP-протокола. По сути, он является полноценным сервером, который используется в Linux по умолчанию, славится высокой надежностью и большим количество функций.

vsFTPd работает с виртуальными пользователями и IP-адресами. В нем есть возможность настраивать отдельные правила для пользователей. Продукт активно поддерживается сообществом. В этом инструменте есть возможность подключить SSL-шифрование данных и так далее.

Устанавливаем vsFTPd

vsFTPd есть во всех популярных репозиториях, поэтому его легко загрузить в любой дистрибутив. Вот как это делается в Ubuntu и ей подобных системах (Linux Mint, Debian, Elementary OS).

  • Открываем терминал. Это можно сделать, одновременно нажав клавиши Ctrl + Alt + T.
  • Вводим туда команду sudo apt-get install vsftpd и нажимаем клавишу «Ввод» (Enter).
Команда установки утилиты vsFTPd

Устанавливаем vsFTPd с помощью стандартного менеджера пакетов

  • Затем вводим пароль администратора, чтобы продолжить установку.

Возможно, придется подтвердить установку клиента, нажав на клавишу «Д» (или Y в английской версии системы).

Запрос на ввод пароля в терминале

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

На этом все.

Для тестирования соединения можно установить стандартный FTP-сервер. Чтобы это сделать, открываем терминал и вводим в него команду sudo apt-get install ftp.

Команда установки стандартного FTP-сервера

Это необязательно

Установка vsFTPd в другие операционные системы

В разных дистрибутивах используются разные менеджеры пакетов, поэтому придется скорректировать команду под свой вариант Linux. Например:

Для Fedora — sudo dnf install vsftpd, openSUSE — sudo zypper install vsftpd, CentOS — sudo yum install vsftpd, Arch Linux — pacman -S vsftpd, Gentoo — emege vsftpd.

Чтобы установить vsFTPd в дистрибутив, не указанный в списке, нужно выяснить, какой менеджер пакетов там используется и подставить его в команду sudo название менеджера пакетов install vsftpd. Либо найти исходный код утилиты и собрать его вручную локально.

Настраиваем FTP-сервер

Перед тем как начать настройку, можно ознакомиться с файлом-инструкцией. В vsFTPd встроено большое удобное руководство по базовой настройке и запуску сервера. Оно открывается командой man vsftpd.conf Это на тот случай, если вы дружите с английским и хотите провести более тонкую настройку под свои нужды. В ином случае продолжайте читать дальше…

Все параметры FTP-сервера хранятся в одном конфигурационном файле. Он называется vsftpd.conf и в зависимости от системы может храниться либо в папке /etc/vsftpd/, либо просто в /etc/.

Например, чтобы получить доступ к настройкам в CentOS, введем в терминале sudoedit /etc/vsftpd/vsftpd.conf. А в Debian и Ubuntu — sudoedit /etc/vsftpd.conf.

sudoedit — это запуск стандартного текстового редактора от имени администратора. При желании вы можете указать любой другой инструмент. Например, vi.

Содержимое руководства vsftpd.conf

Это инструкция к vsFTPd

Запуск FTP-сервера

Вообще, vsFTPd запускается автоматически, и его работоспособность легко проверить. Просто открываем браузер и переходим по ссылке ftp://192.0.0.1. Это локальный адрес, на котором работает ваш сервер.

Главная страница локального FTP

Вот как выглядит наш FTP-сервер в браузере

Чтобы запустить vsFTPd, нужно ввести в терминал команду systemctl start vsftpd.

Настройка анонимного доступа

Режим анонимного доступа позволяет подключаться к FTP-серверу без авторизации. Правда, подключиться к нему можно только от лица единственного пользователя (по умолчанию речь идет о пользователе ftp).

При этом автоматически устанавливается и папка, доступ к которой будет открыт через FTP-сервер. По умолчанию vsFTPd открывает доступ к директории /srv/ftp. Выбор падает именно на эту папку, потому что это домашняя директория пользователя ftp. Если ее изменить, то и данные на сервере тоже изменятся.

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

Теперь вы можете сами подключиться к своему FTP-серверу и проверить, что он работает без авторизации.

Конфигурационный файл FTP с отключенным анонимным режимом

Настройки FTP

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

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

Включается этот режим довольно просто.

  • Открываем конфигурационный файл.
  • Ищем внутри директиву local_enable=NO_ и меняем NO на YES.
  • Потом то же самое делаем с директивой write_enable=NO (это чтобы люди могли не только скачивать файлы, но и загружать).

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

Файл vsftpd.conf в nano

Еще настройки

Важно отметить, что любые изменения в файле vsftpd.conf вступают в силу только после перезагрузки сервера. Поэтому не забывайте после внесения корректировок перезагружать vsFTPd командой systemctl restart vsftpd. Для этого нужны будут права администратора, запустившего FTP-сервер или права суперпользователя.

Дополнительные настройки и возможности

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

Управление FTP-сервером

Вообще для работы с vsFTPd достаточно пары команды:

  • Чтобы проверить статус FTP-сервера (включен ли он и как работает), используем команду systemctl status vsftpd (или service vsftpd status)
Информация о сервере

Вот что выдается по запросу systemctl status vsftpd

  • Для запуска команду systemctl start vsftpd (или service vsftpd start).
  • Для перезапуска — systemctl restart vsftpd (или service vsftpd restart).
  • Чтобы выключить сервер, используем systemctl stop vsftpd (или __ service vsftpd stop). Чтобы добавить vsFTPd в автозагрузку (то есть заставить FTP-сервер запускаться вместе с системой), вводим в терминал команду systemctl enable vsftpd__ (или service vsftpd enable).
Команда для включения vsftpd в автозагрузку

Вот как это выглядит на практике

Все действия с vsFTPd нужно подтверждать паролем суперпользователя или администратора.

Запрос на ввод пароля в графической оболочке

Вот такой запрос будет появляться при попытке взаимодействовать с vsFTPd

Настройки шифрования

Включить шифрование данных в vsFTPd не сложно. Просто:

  • Открываем конфигурационный файл командой sudoedit /etc/vsftpd/vsftpd.conf.
  • Ищем внутри директиву ssl_enable=NO_.
  • Заменяем NO на YES.

Вот и все.

Сложность заключается в том, что нужно сгенерировать SSL-ключи и сертификаты для конкретного сервера и разместить их в директориях, которые указаны в параметрах vsFTPd (либо указать путь к другим сертификатам и ключу). Речь идет о строках:

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

Настройка Firewall

В некоторых дистрибутивах (в частности, серверных) работает Firewall. Это механизм защиты от несанкционированных входящих и исходящих подключений. Он обычно блокирует некоторые порты, по которым программы подключаются к удаленному ресурсу, чтобы избежать утечки данных.

В Ubuntu, к примеру, используется Firewall ufw, который по умолчанию блокирует подключение к портам 21 и 20. А без них FTP-сервер запустить не получится. Так что придется их сначала разрешить. Для этого:

  • Открываем терминал.
  • Вводим в него команду sudo ufw disable, чтобы выключить Firewall.
  • Затем снова включаем его командой sudo ufw enable.
Команды перезагрузки Firewall

Перезагрузимся перед настройкой

  • Потом добавляем в список исключений подключение по порту 20. Для этого введем в командную строку sudo ufw allow 20/tcp.
Команда добавления порта 20 в исключения

Добавили первый…

  • И то же самое проделываем с портом 21. Команда sudo ufw allow 21/tcp.
Команда добавления порта 21 в исключения

…и второй

Потом снова перезагружаем Firewall и FTP-сервер.

Space Police

Переводчик. Копирайтер. Композитор. Люблю консьюмерские технологии, музыку и все смежные направления. Надеюсь дожить до «счастливого» киберпанк-будущего. Испытываю пассивную агрессию по отношению к РКН ;)


Понравилась статья?
Комментариев: 2

  • u.ioioi
    u.ioioi
    19 декабря, 2019 в 15:24

    Появилась проблема с настройкой виртуальных пользователей в vsftpd

    • Владимир Ковылов
      Владимир Ковылов
      21 декабря, 2019 в 11:56

      Вообще, виртуальные пользователи – это тема для отдельной статьи. И все зависит от того, какая проблема появилась в итоге. Процесс настройки выглядит примерно так:
      • Устанавливаем библиотеку командой apt-get install libpam-pwdfile.
      • Потом создаем пароль утилитой htpasswd из набора Apache (его тоже надо установить). Можно так htpasswd -c /etc/vsftpd/passwd имя пользователя
      • Потом заходим в конфиг сервера /etc/vsftpd.conf и туда вставляем конфигурации listen=YES
      anonymousenable=NO
      localenable=YES
      virtualuselocalprivs=YES
      writeenable=YES
      connectfromport20=YES
      securechrootdir=/var/run/vsftpd
      pamservicename=vsftpd
      guestenable=YES
      usersubtoken=$USER
      localroot=/var/www/sites/$USER
      chrootlocaluser=YES
      hideids=YES

      Дальше надо отредактировать /etc/pam.d/vsftpd. Туда вставьте:
      auth required pampwdfile.so pwdfile /etc/vsftpd/passwd
      account required pampermit.so
      Ну а потом останется только сделать для пользователя домашнюю директорию и выдать права.