[docs] FTP (vsftpd) Doc

Vadim Vinichenko vnv на 14000.ru
Вт Янв 14 17:38:04 MSK 2003


Уважаемые коллеги,

Для вашего сведения направляю в рассылку результат моей работы с файлом
про FTP-сервер (фактически, про vsftpd) из CVS. Включаю его прямо в
письмо (он ~10K) - пока простым текстом. Docbook последует несколько
позже, видимо, к ночи (если вдруг кто-то может быстро и легко положить
этот файл в Docbook - буду счастлив).

Просьба к тем, кто в теме, взглянуть на текст - в отдельных местах я его
изменял довольно сильно, что-то добавил от себя, так что мог и наврать:-)

Основные отличия от оригинального текста (помимо стилистических):

* Раздел про настройку каталогов для анонимного доступа интегрирован в
текст про vsftpd - все равно, ничего, кроме vsftpd, в тексте нет (и
никаких других фрагментов про FTP-серверы вообще - тоже).

* В разных местах перетасованы фрагменты текста для "спрямления" изложения.

* Владельцы и права каталогов для анонимного доступа указаны согласно
рекомендациям ldv (но могут еще измениться с учетом анонимности).

* Поправлены (это я так думаю:-) рекомендации по настройке chroot для
локальных пользователей.

* Добавлены описания некоторых настроек.

С уважением,
Вадим

#############

Служба FTP

Протокол FTP (file transfer protocol, протокол передачи файлов) широко
используется для обмена файлами в Интернете и локальных сетях. Это -
специализированный протокол, который предназначен только для передачи
файлов и хорошо приспособлен для выполнения этой задачи. К сожалению,
изначально протокол спроектирован таким образом, что пароли, данные и
управляющие команды передаются открытым текстом, и их можно легко
перехватить. Однако это не является проблемой при работе с
многочисленными серверами, которые предоставляют только анонимный доступ.

В этом документе изложены рекомендации, которые помогут вам правильно
настроить FTP-сервер и свести к минимуму риски атак на вашу систему
через этот вид сервиса.

FTP-сервер vsftpd

В состав дистрибутива ALT Linux Master входит vsftpd (Very Secure FTP
Daemon) - полнофункциональный FTP-сервер, позволяющий обслуживать как
анонимные запросы, так и запросы от пользователей, зарегистрированных на
сервере и имеющих полноценный доступ к его ресурсам. Именно vsftpd
рекомендован разработчиками дистрибутива для использования в качестве
FTP-сервера.

Разумеется, слова "very secure" (очень защищенный) в названии сервера не
являются гарантией полной безопасности, однако указывают на приоритеты
его разработчиков. Они стремились создать как можно более надежную,
аккуратно спроектированную и написанную программу, максимально
устойчивую к разного рода атакам. Каждая строка кода неоднократно
подвергалась тщательным проверкам со стороны специалистов по
безопасности информационных систем.

Однако преимущества vsftpd, которым он обязан своей популярностью, не
ограничиваются его надёжностью и защищённостью. Это производительный,
хорошо масштабируемый FTP-сервер. Демонстрацией его возможностей может
служить серверный пул ftp.redhat.com, обрабатывающий до 15000 соединений
одновременно.

Наконец, важным достоинством сервера являются простота и гибкость
настройки. Все необходимые настройки осуществляются посредством
редактирования единственного конфигурационного файла /etc/vsftpd.conf,
который фактически является символической ссылкой на файл /etc/vsftpd/conf.

Организация анонимного доступа на основе vsftpd

Если вам необходимо создать анонимный FTP-сервер, вы можете использовать
vsftpd в сочетании с пакетом anonftp. В целях безопасности по умолчанию
сервер сконфигурирован именно для предоставления анонимного доступа.
Запрещены любые команды записи, а также доступ локально
зарегистрированных пользователей.

Для того, чтобы создать простейший FTP-сервер с анонимным доступом,
потребуются минимальные усилия. Администратору необходимо лишь удалить
знак комментария (#) перед директивой nopriv_user в конфигурационном
файле /etc/vsftpd.conf. Эта директива задаёт имя непривилегированного
пользователя, от имени которого vsftpd устанавливает соединения. Для
обеспечения надежности системы этот пользователь должен обладать
минимально возможными привилегиями. С этой целью при установке vsftpd в
системе автоматически создается учетная запись псевдопользователя
novsftpd. Это регистрационное имя не должно использоваться кем-либо для
входа в систему, поэтому реальный пароль для него не задаётся. Вместо
командного интерпретатора указывается /dev/null.

Пакет anonftp служит для создания каталогов, необходимых для организации
FTP-сервера с анонимным доступом. При установке этого пакета
автоматически создается каталог /var/ftp с необходимыми правами доступа.
Владельцем этого каталога является пользователь root, а не
псевдопользователь, от имени которого работает vsftpd. Это сделано для
обеспечения безопасности FTP-сервера и системы в целом.
Группой-владельцем каталога является специальная группа ftpadmin,
предназначенная для администраторов FTP-сервера.

Если вы хотите создать в области для анонимного доступа дерево
каталогов, начните с каталога /var/ftp/pub. Этот каталог традиционно
используется для размещения общедоступных файлов. Для него следует
установить права доступа 2775. При этом анонимным пользователям
FTP-сервера будет предоставлен доступ на чтение к файлам, находящимся в
каталоге. Владельцем каталога сделайте root. В качестве группы, которой
принадлежит /var/ftp/pub, целесообразно назначить ftpadmin, включив в
нее пользователей, которым необходимо изменять содержимое каталогов
FTP-сервера (не стоит работать с содержимым от имени root).

Чтобы разрешить анонимным пользователям вашего сервера доступ на запись,
создайте каталог /var/ftp/incoming с правами доступа 3773 (владелец -
ftpadmin, группа-владелец - ftpadmin), тем самым предоставив анонимным
пользователям право записи в этот каталог, но лишив их возможности
просмотра его содержимого. О том, какие изменения в конфигурации сервера
должны быть сделаны для того, чтобы разрешить запись, рассказано ниже в
этой главе.

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

Доступ к серверу зарегистрированных пользователей

Чтобы предоставить доступ к FTP-серверу для локально зарегистрированных
пользователей, необходимо внести изменения в конфигурационный файл
/etc/vsftpd.conf. Для этого достаточно удалить знак комментария перед
директивой local_enable=YES. В такой конфигурации клиенты FTP-сервера
получат доступ к любым каталогам файловой системы, для которых такой
доступ разрешен исходя из прав соответствующих локальных пользователей.
Это могут быть как домашние каталоги пользователей, так и системные
каталоги. Если в настройках vsftpd разрешена запись (см. ниже), клиенты
получат и все права на запись, которыми располагают эти пользователи.

Сервер vsftpd позволяет ограничить возможность пользователей,
зарегистрированных локально, перемещаться по дереву каталогов. При этом
процесс, работающий с клиентом, будет выполняться в изолированной среде
(chrooted environment), и пользователь будет иметь доступ лишь к своему
домашнему каталогу и его подкаталогам. Чтобы ограничить таким образом
доступ к каталогам для отдельных пользователей, удалите знаки
комментариев у следующих строк в конфигурационном файле:

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

В файле /etc/vsftpd/chroot_list перечислите регистрационные имена
пользователей, для которых должна использоваться изолированная среда
выполнения. Вы можете использовать для этого и другой файл, указав его
имя в строке chroot_list_file конфигурационного файла.

Чтобы ограничить доступ к дереву каталогов для всех пользователей,
зарегистрированных локально, добавьте в конфигурационный файл директиву
chroot_local_user=YES.

В этом случае имена пользователей, перечисленные в файле
/etc/vsftpd/chroot_list (при условии, что у строк, указанных выше,
удалены знаки комментария), имеют противоположное действие. Для них не
используется изолированная среда выполнения, и перемещение по файловой
иерархии не ограничивается домашним каталогом.

Чтобы запретить анонимный доступ к FTP-серверу, поставьте знак
комментария в начале строки anonymous_enable=YES в конфигутрационном файле.

Дополнительные сведения о настройке сервера

Сервер vsftpd способен осуществлять всю передачу данных в пассивном
режиме, что сопряжено со значительно меньшим риском, однако не всегда
удобно. Чтобы разрешить использование только пассивного режима,
достаточно удалить символ комментария у директивы port_enable=NO в
конфигурационном файле.

Чтобы разрешить запись файлов на сервер, удалите знак комментария у
директивы write_enable=YES. Этого достаточно для того, чтобы
пользователи, зарегистрированные локально, получили возможность
загружать файлы в те каталоги, для которых они располагают правами на
запись.

Чтобы разрешить запись файлов анонимным пользователям, необходимо также
удалить знак комментария у строки anon_upload_enable=YES. Кроме того,
специальный непривилегированный пользователь, используемый для работы с
анонимными клиентами, должен иметь права на запись в один или несколько
каталогов, доступных таким клиентам.

Для получения дополнительной информации о настройке FTP-сервера vsftpd и
параметрах конфигурационного файла обратитесь к странице руководства
vsftpd.conf.

Многие параметры использования vsftpd, в том числе относящиеся к
безопасности, могут быть заданы при помощи xinetd (демона
Интернет-служб). В частности, этот сервер позволяет ограничить
количество одновременно выполняемых процессов как по системе в целом,
так и для каждого отдельного пользователя, указать пользователя, от
имени которого будет выполняться сервис, задать приоритет процесса
(nice), указать адреса, с которых разрешено подключение к данной службе,
а также время доступа и множество других параметров. Вот пример файла
конфигурации xinetd для 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 = 16M # устанавливает лимит адресного пространства
server = /usr/sbin/vsftpd # путь к исполняемому файлу
only_from = 192.168.0.0 # предоставляем доступ из всей подсети 192.168.0
only_from = 207.46.197.100, 207.46.197.101 # доступ с указанных адресов
# only_from = 0.0.0.0 # неограниченный по адресам доступ
access_times = 2:00-9:00 12:00-24:00 # время, когда возможен доступ
}

Для получения дополнительной информации по использованию xinetd
обратитесь к страницам руководства xinetd и xinetd.conf.







Подробная информация о списке рассылки docs