За основу взяты статьи:
Почти каждый пользователь, работающий в сети интернет, сталкивался хотя бы раз с FTP. Здесь описано, как установить FTP сервер на машину и обеспечить его безопасность.
Мы будем использовать легкий и эффективный FTP-сервер vsFTPd, предназначенный для работы на высоконагруженных серверах. Далее в этой статье мы будем говорить просто об FTP-сервере, подразумевая vsFTPd.
1. Что такое FTP
FTP расшифровывается как File Transfer Protocol - протокол передачи данных. Название подразумевает, что этот протокол используется для передачи файлов или директорий с одного хоста на другой по сети - как локальной, так и через интернет.
2. Установка FTP-сервера в Ubuntu
Чтобы установить vsftpd откройте консоль и выполните команду:
sudo apt-get install vsftpd
После выполнения этой команды сервер будет установлен и запущен.
Setting up vsftpd (2.3.5-1ubuntu2) ...
vsftpd start/running, process 1891
3. Варианты запуска службы FTP
vsftpd может быть запущен тремя различными способами. Первый способ - запуск через
inetd. Второй - через
xinetd, третий - запускать сервер
вручную (автономный режим).
По умолчанию vsftpd запускается в автономном режиме, в котором запускаемая на сервере служба использует собственный стартовый скрипт, называемый демоном. В случае vsftpd это
/etc/init.d/vsftpd. Данный автономный демон в момент старта службы FTP берет управление нею на себя. Демон vsftpd предоставляет администратору несколько команд для управления FTP-сервером vsftpd:
start или
stop - используется для запуска или остановки ftp-сервера.
status - выводит подробную информацию о текущем состоянии вашего FTP-сервера.
restart - это альтернатива последовательности из остановки и запуска сервера. Если сервер уже остановлен, команда restart запустит его.
reload - эта команда позволяет перезагрузить и применить все новые настройки. Ее отличие от restart заключается в том, что применение новых настроек производится без остановки сервера.
Чтобы выполнить данные команды, напечатайте:
sudo start/stop/status/restart/reload vsftpd
Однако автономный режим менее гибкий, inetd старый, так что рекомендуется запускать vsftp через xinetd. В нем есть такие вещи как регистрация запросов, контроль доступа, привязка сервиса к определенному сетевому интерфейсу и т.д.
4. Запуск службы FTP через xinetd
Устанавливаем суперсервер 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 21tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
5. Настройка FTP сервера
Настройка vsftpd производится внесением изменений в конфигурационный файл
/etc/vsftpd.conf.
Примечание: при внесении любых изменений в настройки FTP-сервера не забудьте воспользоваться командой restart/reload, чтобы активировать их.
5.1 Настройка пользовательского доступа
vsftpd позволяет предоставить либо анонимный доступ, либо пользователям из файла /etc/passwd, либо из своего собственного списка.
Анонимный доступ
Примечание: Открывать анонимный доступ опасно, а анонимный доступ без пароля еще опаснее. Это плохая идея. Лучше не делайте так, а просто почитайте для справки.
Чтобы предоставить анонимный доступ, в конфигурационном файле задайте директиве anonymous_enable значение YES:
Для доступа без пароля дополнительно пропишите:
no_anon_password=YES
Теперь доступ к FTP серверу можно получить через пользователя anonymous. Для этого просто введите команду ftp с аргументом localhost или ip адресом вашего сервера:
$ 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.
Доступ локальных пользователей
Чтобы позволить авторизоваться всем пользователям, указанным в файле
/etc/passwd, необходимо изменить значение директивы
local_enable в файле
/etc/vsftpd.conf.
local_enable=YES
Теперь любой пользователь, указанный в файле
/etc/passwd, сможет авторизоваться, используя свой пароль.
Список доступа пользователей
Сначала создадим список доступа, используемый сервером vsFTPd. Обычно вы можете задать его в директории
/etc/. Создайте файл с произвольным именем и перечислите в нем всех пользователей, которым вы хотите разрешить или запретить доступ. Например, давайте создадим новый список с единственным пользователем "root":
echo root > /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. Каждое имя пользователя в этом файле должно располагаться на отдельной строке.
5.2 Другие настройки
На сегодняшний день vsFTPd имеет 125 опций конфигурации. Это делает его очень гибким в настройке и в то же время простым в использовании и администрировании. Хотите ли вы использовать его дома, в пределах корпоративной сети, или на удаленном сервере, вы можете быть уверены, что vsFTPd полностью удовлетворит ваши нужды.