Аннотация
Протокол FTP (file transfer protocol, протокол передачи файлов) широко используется для обмена файлами в Интернете и локальных сетях. Это специализированный протокол, который предназначен только для передачи файлов и хорошо приспособлен для выполнения этой задачи. К сожалению, изначально протокол спроектирован таким образом, что пароли, данные и управляющие команды передаются открытым текстом и их можно легко перехватить. Однако это не является проблемой при работе с многочисленными серверами, которые предоставляют только анонимный доступ.
В этом документе изложены рекомендации, которые помогут вам правильно настроить FTP-сервер и свести к минимуму возможность атак на вашу систему через этот вид сервиса.
В состав дистрибутива ALT Linux 2.4 Master входит vsftpd (Very Secure FTP Daemon) — полнофункциональный FTP-сервер, позволяющий обслуживать как анонимные запросы, так и запросы от пользователей, зарегистрированных на сервере и имеющих полноценный доступ к его ресурсам. Именно vsftpd рекомендован разработчиками дистрибутива для использования в качестве FTP-сервера.
Разумеется, слова «very secure» (очень защищённый) в названии сервера не являются гарантией полной безопасности, однако указывают на приоритеты его разработчиков. Они стремились создать как можно более надёжную, аккуратно спроектированную и написанную программу, максимально устойчивую к разного рода атакам. Каждая строка кода неоднократно подвергалась тщательным проверкам со стороны специалистов по безопасности информационных систем.
Однако преимущества vsftpd, которым он обязан своей популярностью, не ограничиваются его надёжностью и защищённостью. Это производительный, хорошо масштабируемый FTP-сервер. Демонстрацией его возможностей может служить серверный пул ftp.redhat.com, обрабатывающий до 15000 соединений одновременно.
Наконец, важным достоинством сервера являются простота и гибкость настройки. Все необходимые настройки осуществляются посредством редактирования единственного конфигурационного файла /etc/vsftpd.conf, который фактически является символической ссылкой на файл /etc/vsftpd/conf.
Если вам необходимо создать анонимный FTP-сервер, вы можете использовать vsftpd в сочетании с пакетом anonftp. Установки этих двух пакетов достаточно для того, чтобы получить работоспособный сервер. В целях безопасности сервер по умолчанию сконфигурирован именно для предоставления анонимного доступа. Запрещены любые команды записи, а также доступ локально зарегистрированных пользователей.
Для обеспечения надёжности системы архитектура сервера vsftpd позволяет устанавливать соединения от имени специально указанного непривилегированного пользователя, который определяется директивой nopriv_user в конфигурационном файле. Для того, чтобы риск был минимальным, этот пользователь должен обладать как можно меньшими привилегиями. С этой целью при установке vsftpd в системе автоматически создаётся учётная запись псевдопользователя novsftpd. Это регистрационное имя не должно использоваться кем-либо для входа в систему, поэтому реальный пароль для него не задаётся. Вместо командного интерпретатора указывается /dev/null.
При установке пакета anonftp автоматически создаётся каталог, который будет корневым при анонимном подключении, — /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.