Настройка
На базе Linux/UNIX разработано очень много различных
Если вам нужно максимум настроек и максимальная гибкость, тогда нужно выбрать proftpd. Это настоящий монстр (в хорошем смысле этого слова) по сравнению с остальными.
Vsftpd (Very Secure FTP Daemon) позиционируется как простой, но очень защищенный FTP. Обслуживает официальные репозитарии ftp.debian.org, ftp.redhat.com, ftp.openbsd.org, ftp.freebsd.org и других дистрибутивов. Если настройка FTP сервера Ubuntu выполнена правильно, и есть надежда на лучшую защищенность, он вроде бы работает чуть быстрее — вот что можно сказать о vsftpd. Серьезное ограничение vsftpd — он не позволяет в системе одновременную регистрацию обычных и анонимных клиентов.
Если у вас совсем простой проект и вам нужен сервер, который практически не нужно настраивать, тогда ваш выбор —
Самый древний вариант —
Для установки proftpd нужно установить одноименный пакет, который имеется во всех дистрибутивах Linux. Введите команду:
apt install proftpd
Рис. 1. Установка
Конфигурационные файлы сервера хранятся в каталоге /etc/proftpd. Основной конфигурационный файл называется proftpd.conf и будет рассмотрен далее.
Управление и настройка FTP сервера Ubuntu выполняется с помощью команд:
# service proftpd start # service proftpd restart # service proftpd stop # service proftpd status
Первая команда, как обычно, запускает сервер, вторая — перезапускает, третья — останавливает. Последняя команда показывает состояние сервера. Когда серверу «плохо», с помощью этой команды можно узнать, что ему «не нравится». Пока запускать сервер не нужно.
Далее — небольшое практическое руководство, необходимое чтобы была выполнена настройка FTP сервера Ubuntu. Первым делом нужно исправить директиву DefaultRoot так:
DefaultRoot ~
Для каждого пользователя его домашний каталог станет его корневым каталогом. Это означает, что клиент не сможет выйти за пределы его домашнего каталога и прочитать ваши системные конфигурационные файлы.
В своем домашнем каталоге он может делать все, что ему захочется — он может загружать в него файлы, загружать файлы на свой компьютер, удалять файлы
В глобальной секции можно ограничить доступ только пользователям вашей виртуальной сети, для этого потребуется дополнительная настройка FTP сервера Ubuntu. Это можно сделать путем ограничения операции LOGIN, например:
der deny, allow DenyAll Allow from 10.0.0.
Рис. 2.
Конечно, такое ограничение допустимо только, если вы создаете
Теперь поговорим об аутентификации пользователей. В большинстве случаев вам будет удобнее использовать для аутентификации саму систему:
AuthOrder mod_auth_unix.c
Если
AuthOrder mod_auth_pam.c* mod_auth_unix.c
Когда же пользователей очень много (несколько сотен или тысяч), удобнее для аутентификации использовать MySQL. В этом случае учетные записи
Ускорить аутентификацию может отключение следующих директив:
IdentLookups off
UseReverseDns off
Первая строка отключает
Директива TimeoutLogin задает, сколько времени можно потратить пользователю на аутентификацию. По умолчанию — 60 секунд. Представьте ситуацию. Пользователь подключается к серверу. Сервер просит его ввести логин. Пользователь его вводит. Затем пользователь долго и нудно вспоминает свой пароль. Если с момента подключения прошло 60 секунд, а пользователь так и не ввел пароль, то он отключается. Но кто сейчас вводит пароль вручную? Обычно он сохраняется в
TimeoutLogin 20
В Ubuntu установка FTP сервера позволяет указать, сколько клиентов могут подключаться с одного и того же
MaxClientsPerHost 1
Но если вы настраиваете
MaxClientsPerHost 3
Максимальное число одновременных клиентов задается директивой MaxInstances. Для предотвращения
MaxInstances 20
С другой стороны, если выполняется Ubuntu установка FTP сервера
MaxInstances 100
Об оперативной памяти можно особо не заботиться, proftpd довольно экономно ее использует. Каждый процесс proftpd занимает около 2.5 Мб, следовательно, 100 процессов займут всего 250 Мб. Самое страшное — это загрузка процессора. При закачке одного файла один процесс proftpd занимает от 10 до 30% процессорного времени одного ядра. Вот и считаем, что если даже один процесс расходует 10% процессорного времени одного ядра, всего 10 процессов «сожрут» одно ядро процессора. 40 одновременных процессов окажут ощутимое влияние даже на четырехядерный процессор. Вот поэтому в настройках по умолчанию и рекомендует не превышать значение 30 для этого параметра. Также довольно интересный параметр MaxClientsPerUser. Означает, сколько соединений может создать один пользователь. Чтобы один пользователь не залогинился 30 раз и не узурпировал все 30 процессов, рекомендую ограничить это значение до 1:
MaxClientsPerUser 1 «Only one connection at a time».
Когда выполняется настройка FTP сервера Ubuntu server, первый параметр этой директивы — число соединений. Второй — сообщение об ошибке, которое будет выведено. Если у клиента медленное или нестабильное соединение, бывает так, что он может начать передачу файла, но потом связь может оборваться. Можно задать
TimeoutStalled 120
Это делается специально, чтобы процесс proftpd завершился как можно быстрее и не занимал драгоценное процессорное время.
Максимальная продолжительность сессии с момента аутентификации задается директивой TimeoutSession. По умолчанию эта настройка FTP сервера Ubuntu server составляет 1 час, чего вполне хватит даже для загрузки больших файлов. Например, при относительно низкой скорости загрузки в 1 Мбайт/с файл размером 1 Гб загрузится примерно за 1024 секунды. То есть за одну такую сессию пользователь сможет загрузить три таких файла. Думаю, этого более, чем достаточно.
По умолчанию секция Anonymous, разрешающая вход анонимных пользователей, выглядит так (все комментарии переведены на русский язык):
<Anonymous ~ftp>
# Limit LOGIN
#<Limit LOGIN>
# Order Allow,Deny
# Allow from .examples.net,113.141.114.1
# Deny from All
#</Limit>
# Ограничиваем WRITE везде, запрещаем запись полностью
<Limit WRITE>
DenyAll
</Limit>
# LoginPasswordPrompt -- будем ли отображать приветствие или нет
LoginPasswordPrompt off
# DirFakeMode -- прячем настоящие разрешения файлов/каталогов
DirFakeMode 0640
# DirFakeUser -- прячем настоящих владельцев файлов/каталогов
DirFakeUser On
# DirFakeGroup -- скрываем настоящую группу файла/каталога
DirFakeGroup On
# Для анонимного входа можно использовать как имя anonymous, так и ftp
UserAlias anonymous ftp
# Максимальное число одновременных анонимных пользователей
MaxClients 10
# Максимальный размер получаемого файла
#MaxRetrieveFileSize 512 Mb
# Ограничиваем скорость передачи данных до 255 Кайт/с
#TransferRate APPE,RETR,STOR,STOU 255
# Файл 'welcome.msg' будет отображаться при входе, а файл '.message' при
# каждом новом изменении каталога
DisplayLogin welcome.msg
DisplayChdir .message
# Далее следует закомментированная секция Directory, позволяющая указать
# параметры каталога. В данном случае ограничивается доступ к каталогу
# pub. Получить доступ к нему могут только сети .examples.net и с IP
# 113.141.114.1
#<Directory pub>
# <Limit ALL>
# Order Allow,Deny
# Allow from .examples.net,113.141.114.1
# Deny from All
# </Limit>
#</Directory>
# Следующая секция содержит параметры каталога uploads, который обычно
# используется для загрузки файлов анонимными пользователями на сервер.
# Если вам нужна такая возможность, раскомментируйте эту секцию
# Мы запретили чтение этого каталога, но разрешили загрузку в
# него файлов
#<Directory uploads/*>
# <Limit READ>
DenyAll
# </Limit>
# <Limit STOR>
AllowAll
# </Limit>
#</Directory>
</Anonymous>
При желании вы можете расскомментировать необходимые вам строки. Поскольку последняя директива Directory закомментирована, то анонимные пользователи не смогут загружать в каталог uploads файлы. Если нужно разрешить это действие, директиву Directory нужно раскомментировать:
<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
Доступ на запись разрешен всем (AllowAll), но мы рекомендуем открыть его только пользователям нашей виртуальной сети — так безопаснее:
<Directory uploads/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
DenyAll
Allow from 10.0.0.
</Limit>
</Directory>
Также в секции Limit LOGIN можно задать ограничение, позволяющее регистрироваться анонимным пользователям только с вашей виртуальной сети, как было показано ранее.
Как все будет готово, запустим сервер:
# service proftpd start
После запуска просмотрим его состояние (рис. 3):
# service proftpd status
Рис. 3.
На этом все. Если у вас