Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Настройка и использование FTP-сервера в Ubuntu Linux

Оригинал: How to setup and use FTP Server in Ubuntu Linux
Автор: Lubos Rendek
Дата публикации: 28 января 2013 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2013 г.

1. Введение

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

2. Соглашения

Далее в этой статье мы будем говорить просто об FTP-сервере, подразумевая vsFTPd.

3. Что такое FTP

Для тех, кто не знаком с FTP, ниже представлено краткое описание его возможностей. FTP расшифровывается как File Transfer Protocol. Название подразумевает, что этот протокол используется для передачи файлов или директорий с одного хоста на другой по сети - как локальной, так и через интернет.
Главные возможности vsFTPd: настройки для виртуальных IP, виртуальные пользователи, сетевые или автономные операции, большой спектр пользовательских настроек, регулирования пропускной способности канала, настройка лимитов по IP, поддержка IPv6 и шифрования (с помощью SSL).

4. Установка FTP-сервера в Ubuntu

Как всегда в Ubuntu и системах на ее основе, установка FTP-сервера выполняется одной командой. Откройте терминал и введите:

$ sudo apt-get install vsftpd

После выполнения этой команды сервер будет установлен и запущен.

Setting up vsftpd (2.3.5-1ubuntu2) ...
vsftpd start/running, process 1891

5. Нормальный и автономный режимы работы FTP

5.1. Автономный режим

По умолчанию vsftpd запускается в автономном режиме, в котором запускаемая на сервере служба использует собственный стартовый скрипт, называемый демоном. В случае vsftpd это /etc/init.d/vsftpd. Данный автономный демон в момент старта службы FTP берет управление нею на себя. Демон vsftpd предоставляет администратору несколько команд для управления FTP-сервером vsftpd:

start или stop - используется для запуска или остановки ftp-сервера.
status - выводит подробную информацию о текущем состоянии вашего FTP-сервера.
restart - это альтернатива последовательности из остановки и запуска сервера. Если сервер уже остановлен, команда restart запустит его.
reload - эта команда позволяет перезагрузить и применить все новые настройки. Ее отличие от restart заключается в том, что применение новых настроек производится без остановки сервера.
Для запуска, перезагрузки и применения новых настроек используется утилита service:

$ sudo service vsftpd start

Такой синтаксис применяется для выполнения всех команд.

5.2. Нормальный режим

Другой подход к запуску vsftpd - это нормальный режим, в котором за работу службы отвечает суперсервер xinetd. Для запуска сервера vsftpd в нормальном режиме необходимо сначала установить суперсервер xinetd:

$ sudo apt-get install xinetd

Приведенная выше команда устанавливает и запускает суперсервер xinetd. В случае, если он у вас уже установлен, эта команда не нужна. Далее, создайте файл vsftpd в директории /etc/xinetd.d/ со следующим содержимым:

service ftp
{
        disable                 = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/sbin/vsftpd
        per_source              = 5
        instances               = 200
        no_access               = 10.1.1.10
        banner_fail             = /etc/vsftpd.busy
        log_on_success          += PID HOST DURATION
        log_on_failure          += HOST
}

В то же время вы можете изменять любые опции, чтобы настроить суперсервер в соответствии со своими требованиями.
Опции, на которые стоит обратить внимание:
server - введите в командной строке "$ which vsftpd", чтобы узнать правильный путь.
no_access - все хосты с IP-адресами, указанными в этой директиве, будут блокированы.
banner_fail - здесь можно указать путь к текстовому файлу, содержимое которого будет показано для любых блокированных IP-адресов.

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

listen=YES

на

listen=NO

Эта директива даст команду FTP-серверу не открывать никаких портов, полностью перепоручив их суперсерверу xinetd. Перед тем, как запустить сервер в нормальном режиме, убедитесь, что демон vsftpd отключен:

$ sudo service vsftpd stop

Теперь можно запустить FTP-сервер в нормальном режиме с помощью команды:

$ sudo service xinetd restart

Чтобы убедиться в нормальной работе FTP-сервера, протестируйте и откройте порт 21 с помощью команды netstat:

$ netstat -ant | grep 21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN

6. Создание первого подключения по FTP

Независимо от того, запустили ли вы FTP-сервер в автономном, или в нормальном режиме, вы можете создать первое локальное ftp-подключение. По умолчанию vsftpd разрешает автономный доступ, поэтому при создании нашего первого тестового подключения в качестве имени пользователя мы будем использовать anonymous. Для этого просто введите команду ftp с аргументом localhost:

$ ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> quit
221 Goodbye.

Успешное подключение подтверждает, что FTP-сервер в локальной системе настроен правильно. Но перед тем, как перейти к более тонким настройкам, необходимо протестировать FTP-сервер и с нескольких удаленных хостов.

7. Настройка FTP-сервера

В этом разделе мы рассмотрим некоторые базовые примеры опций конфигурации vsftpd.

Примечание: при внесении любых изменений в настройки FTP-сервера не забудьте воспользоваться командой restart/reload, чтобы активировать их.

7.1. Настройка пользовательского доступа

vsftpd позволяет оставить только анонимный доступ, либо позволить пользователям, прописанным в файле /etc/passwd или в соответствующем списке, аутентифицироваться.

7.1.1. Анонимный доступ к FTP

По умолчанию FTP-сервер vsftpd настроен только для анонимного доступа. Если это то, что вам нужно, вы можете облегчить жизнь анонимным пользователям, отключив необходимость ввода пароля. Наиболее безопасный вариант для FTP-сервера - не разрешать пользователям идентифицироваться с паролем в виде простого текста. Для отключения необходимости ввода пароля анонимными пользователями необходимо в конфигурационном файле /etc/vsftpd.conf установить значение "NO" для директивы no_anon_password:

no_anon_password=YES

7.1.2. Доступ локальных пользователей по FTP

Теперь ваш сервер должен запрещать любой доступ за исключением пользователя anonymous. Чтобы позволить авторизоваться всем пользователям, указанным в файле /etc/passwd, необходимо изменить значение директивы local_enable в файле /etc/vsftpd.conf. Ее значение по умолчанию - "NO".

local_enable=YES

Теперь любой пользователь, указанный в файле /etc/passwd, сможет авторизоваться, используя свой пароль.

$ ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): lubos
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.

7.1.3. Список доступа пользователей

Сначала создадим список доступа, используемый сервером vsFTPd. Обычно вы можете задать его в директории /etc/. Создайте файл с произвольным именем и перечислите в нем всех пользователей, которым вы хотите разрешить или запретить доступ. Например, давайте создадим новый список с единственным пользователем "lubos":

echo lubos > /etc/vsftpd.userlist

Далее, определим новый список пользователей в конфиграционном файле /etc/vsftpd.conf и активируем директиву userlist_enable:

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Таким образом всем пользователям, перечисленным в файле /etc/vsftpd.userlist, будет отказано в доступе к FTP-серверу.

$ ftp localhost
Connected to localhost.
220 (vsFTPd 2.3.5)
Name (localhost:root): lubos
530 Permission denied.
Login failed.
ftp>

Чтобы разрешить доступ всем пользователям, перечисленным в файле /etc/vsftpd.userlist, установите значение "NO" для директивы userlist_deny. При этом вы открываете доступ только пользователям, перечисленным в /etc/vsftpd.userlist. Каждое имя пользователя в этом файле должно располагаться на отдельной строке.

7.2. Смена номера порта

По умолчанию любой FTP-сервер слушает стандартный порт 21 для аутентификации пользователя и порт 20 для передачи данных. vsFTPd не является исключением. Для смены прослушиваемого по умолчанию порта используется директива listen_port в файле /etc/vsftpd.conf. Например, для смены порта на 2121 просто добавьте следующую директиву в ваш конфигурационный файл:

listen_port=2121

После чего перезапустите FTP-сервер.

Однако это применимо к только к vsFPTd, работающему в автономном режиме. В случае, если ваш FTP-сервер запущен в нормальном режиме с с использованием суперсервера xinetd, и вы хотите изменить порт по умолчанию на 2121, найдите в файле /etc/services строку FTP и замените 21 на 2121, после чего перезапустите xinetd.

$ sudo service xinetd restart

Теперь, как вы можете убедиться, FTP-сервер слушает порт 2121:

$ netstat -ant | grep 2121
tcp        0      0 0.0.0.0:2121            0.0.0.0:*               LISTEN

7.3. Другие опции конфигурации

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

max_clients - эта опция задает максимальное количество пользователей, одновременно использующих FTP-сервер. 0 означает неограниченное количество пользователей.
max_per_ip - задает максимальное количество пользователей с одного IP-адреса.
download_enable - если ее значение - NO, любой запрос на скачивание будет отклонен.

8. Заключение

На сегодняшний день vsFTPd имеет 125 опций конфигурации. Это делает его очень гибким в настройке и в то же время простым в использовании и администрировании. Хотите ли вы использовать его дома, в пределах корпоративной сети, или на удаленном сервере, вы можете быть уверены, что vsFTPd полностью удовлетворит ваши нужды. Кроме того, vsFTPd позволяет активировать sftp, но этот вопрос мы обсудим в следующий раз.