Рассказываем, как настроить протокол передачи файлов 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).
- Затем вводим пароль администратора, чтобы продолжить установку.
Возможно, придется подтвердить установку клиента, нажав на клавишу «Д» (или Y в английской версии системы).
На этом все.
Для тестирования соединения можно установить стандартный FTP-сервер. Чтобы это сделать, открываем терминал и вводим в него команду sudo apt-get install 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.
Запуск FTP-сервера
Вообще, vsFTPd запускается автоматически, и его работоспособность легко проверить. Просто открываем браузер и переходим по ссылке ftp://192.0.0.1. Это локальный адрес, на котором работает ваш сервер.
Чтобы запустить vsFTPd, нужно ввести в терминал команду systemctl start vsftpd.
Настройка анонимного доступа
Режим анонимного доступа позволяет подключаться к FTP-серверу без авторизации. Правда, подключиться к нему можно только от лица единственного пользователя (по умолчанию речь идет о пользователе ftp).
При этом автоматически устанавливается и папка, доступ к которой будет открыт через FTP-сервер. По умолчанию vsFTPd открывает доступ к директории /srv/ftp. Выбор падает именно на эту папку, потому что это домашняя директория пользователя ftp. Если ее изменить, то и данные на сервере тоже изменятся.
Чтобы включить анонимный доступ в vsFTPd, надо открыть конфигурационный файл, найти там директиву anonymous_enable=NO и заменить NO на YES.
Теперь вы можете сами подключиться к своему FTP-серверу и проверить, что он работает без авторизации.
Настройка авторизованного доступа
Режим авторизованного доступа дает больше возможностей. Пока он включен, к FTP-серверу может подключиться любой пользователь, который может войти в систему. Проще говоря, если удаленным компьютером на базе Linux пользуется группа людей, то все они смогут подключаться к FTP-серверу от своего имени, а не от имени ftp.
Включается этот режим довольно просто.
- Открываем конфигурационный файл.
- Ищем внутри директиву local_enable=NO_ и меняем NO на YES.
- Потом то же самое делаем с директивой write_enable=NO (это чтобы люди могли не только скачивать файлы, но и загружать).
Теперь при попытке войти на FTP-сервер пользователи натолкнутся на окошко, запрашивающее логин и пароль. Собственно, логин — имя пользователя, а пароль — тот пароль, что используется для входа в систему.
Важно отметить, что любые изменения в файле vsftpd.conf вступают в силу только после перезагрузки сервера. Поэтому не забывайте после внесения корректировок перезагружать vsFTPd командой systemctl restart vsftpd. Для этого нужны будут права администратора, запустившего FTP-сервер или права суперпользователя.
Дополнительные настройки и возможности
Теперь, когда у нас уже есть рабочий FTP-сервер, можно ознакомиться с дополнительными параметрами. Во-первых, узнаем команды для управления сервером. Во-вторых, настроим шифрование. В-третьих, уберем блокировку Firewall, если таковая имеется.
Управление FTP-сервером
Вообще для работы с vsFTPd достаточно пары команды:
- Чтобы проверить статус FTP-сервера (включен ли он и как работает), используем команду systemctl status vsftpd (или service vsftpd status)
- Для запуска команду 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 не сложно. Просто:
- Открываем конфигурационный файл командой 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.
- Потом добавляем в список исключений подключение по порту 20. Для этого введем в командную строку sudo ufw allow 20/tcp.
- И то же самое проделываем с портом 21. Команда sudo ufw allow 21/tcp.
Потом снова перезагружаем Firewall и FTP-сервер.