Устанавливаем и настраиваем 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-сервер.

EnglishRussianUkrainian