Библиотека сайта 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, но этот вопрос мы обсудим в следующий раз.