Введение.
Сегодня сервер FTP становится обязательной частью любого офиса. Без его работы не обходится ни одна серьёзная компания. Узел на базе FTP входит в пятёрку основных серверов, составляющих ядро ИТ компании. Основная задача сервера FTP — передача больших файлов между пользователями. Ранние уже говорилось о Web сервере, сервере баз данных, портале, сервере NFS, сейчас поговорим о сервере FTP. Одним из популярных Linux серверов поддерживающих FTP протокол, является vsftpd сервер.
vsftpd — very Secure FTP Daemon -очень безопасный FTP-демон
vsftpd — very Secure FTP Daemon -очень безопасный FTP-демон
Сервер vsftpd распространяется под лицензией GPL — служит для обмена данными в каналах разной пропускной способности, позволяя:
- изменять конфигурацию виртуальных IP-адресов
- создавать виртуальных пользователей
- работать автономно или как служба inetd
- использовать гибкую конфигурацию
- регулировать полосу пропускания
- настраивать IP-адресс источника
- поддержка IPv6
- использовать SSL шифрование
- выполнять управление в консольном или GUI режиме
- Стенд:
- ALT Linux сервер, имя lin-ftp; ip-10.0.2.36;
Подготовка vsftpd.
Прежде чем перейти к развёртыванию vsftpd сервера, как приложения, нам понадобится базовый сервер Linux минимальной конфигурации. Предполагаем, что FTP должен работать, как отдельный сервер, обслуживая только FTP соединения — повышается надёжность, безопасность, простота в обслуживании. Найти оборудование для выделенного FTP сервера несложно, если использовать облачную технологию Azure, Hyper-V, KVM…
Не используйте старое, на выброс, оборудование в качестве FTP сервера.
Установка vsftpd консольная.
После установки сервера Linux минимум необходимо:
- выделить статический IP адрес для сервера
- настроить DNS имя сервера, стендовое lin-ftp
- скачать последние пакеты обновления сервера
Переходим к установке сервера FTP используя консоль.
# apt-get update
# apt-get install vsftpd
Редактируем файл конфигурации службы xinetd — управляет FTP процессом.
xinetd — the eXtended InterNET services Daemon — расширенная служба (демон) управления сетевыми соединениями.
# vim /etc/xinetd.d/vsftpd
# default: off
# description: The vsftpd FTP server.
service ftp
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
nice = 10
rlimit_as = 200M
server = /usr/sbin/vsftpd
# server_args =
only_from = 0/0
}
Перезапуск службы xinetd — работает автоматически, но всё же поможем ей в ручную.
# systemctl restart xinetd
В дереве каталогов /etc создаётся папка vsftpd, с файлами:
- конфигурации
- предупреждений
- каталогом профилей для пользователей FTP

Файл предупреждений содержит строку сообщения — появляется при перегрузке сервера FTP.

Остаётся проверить работу сервера FTP. Отметим толко, что установка из «коробки«, допускает подключение пользователя anonymous для чтения каталога FTP. Это означает — любой пользователь, зная имя или IP адрес сервера FTP может просматривать его каталог.
Для проверки работы, с помощью mcedit редактора, создадим тестовый файл test-ftp и скопируем его в каталог /srv/public — просматривает служба сервера FTP.
mc — GNU Midnight Commander — файловый менеджер
С помощью mc создадим сессию FTP и убедимся, что всё работает.



Эти же действия можно сделать используя консольный FTP клиент, предварительно установив его.
# apt-get update
apt-get install ftp
Подключаемся к серверу FTP с помощью клиента FTP.
# ftp lin-ftp
Connected to lin-ftp (10.0.2.15).
220 (vsFTPd 3.0.3)
Name (localhost:user): anonymous
331 Please specify the password.
Password: anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (10.0.2.15,202,225).
150 Here comes the directory listing.
-rw-r--r-- 1 ftp ftp 0 Dec 31 00:00 test-ftp
226 Directory send OK.
ftp> exit
Проверьте соединение с lin-ftp из рабочей станции, используя любой клиент FTP или браузер набрав адрес ftp://ctu-lin.
Установка vsftpd графическая.
Для графической, с использованием браузера, установки потребуется дополнительные пакеты.
Регистрируемся в ЦУС сервера FTP, как показано ниже и переходим в секцию настроек FTP.
ЦУС — вэб интерфейс центра управления системой.


Устанавливаем уровень, режим эксперта, в настройках ЦУС.

После выполнения всех действий, открывается вкладка, FTP сервер. Внимательно знакомимся с предлагаемыми кнопками и выбираем нужные.

Если флажок установлен «Разрешить закачку файлов» в каталоге /srv/public создаётся папка incoming
Каталоги.
В работе vsftpd задействованы следующие каталоги и файлы
- /etc/xinetd.d/vsftpd — файл настроек службы
- /etc/vsftpd — каталог конфигурационных файлов
- /var/~ftp — ссылка на рабочий каталог
- /usr/sbin/vsftpd — путь к команде запуска vsftpd
- /usr/share/man/man8/vsftpd.8.xz — путь к man
- /srv/public — рабочий каталог, права 755
root@astra:/home# cd distrib
root@astra:/home/distrib# ./install.sh
Запуск процедуры установки ПО СУБД "Енисей" означает согласие с условиями Лицензионного соглашения (файл EULA.txt)
Вы ознакомились с Лицензионным соглашением? (y - Да / n - Нет)y
Установка ...
Заключение.
Закончив установку базового сервера минимальной конфигурации и сервера FTP переходим к тонким настройкам. Прежде всего необходимо определить политику доступа к FTP и нагрузку. Пользовательский доступ зависит от регламента использования FTP в организации. Нагрузка определяется скоростью ЦПУ, размером ОЗУ и дискового пространства сервера FTP. Здесь можно предложить следующий вариант. Системный раздел располагается на отдельном диске ~ 10Гб. Пространство под FTP каталог рассчитывается из максимального размера «прокачиваемой» информации.
Дополнительный диск монтируется к каталогу хранилища сервера FTP с использованием сценария mapftp. Можно использовать файл /etc/fstab для подключения диска, но лучше не трогать системные файлы.
#!/bin/bash
# файл mapftp
# монтировать диск ftp к серверу lin-ftp
mount lin-ftp /srv/public
Таким образом мы получаем возможность менять раздел хранилища FTP не трогая системный диск.
Файл mapftp должен находится в каталоге /usr/local/bin.
Для автозагрузки сценария mapftp воспользуемся командой crontab.
# crontab -e
#| minute (0-59),
#| hour (0-23),
#| | day of the month (1-31),
#| | | month of the year (1-12),
#| | | | day of the week (0-6 with 0=Sunday).
#| | | | | commands
@reboot mapftp
Полезные ссылки.
Официальный сайт vsftpd
Русифицированный сайт vsftpd
Файл конфигурации vsftpd.conf
Файл конфигурации vsftpd.conf5