Аннотация
Протокол FTP (file transfer protocol, протокол передачи файлов) широко используется для обмена файлами в Интернете и локальных сетях. Это специализированный протокол, который предназначен только для передачи файлов и хорошо приспособлен для выполнения этой задачи. К сожалению, изначально протокол спроектирован таким образом, что пароли, данные и управляющие команды передаются открытым текстом и их можно легко перехватить. Однако это не является проблемой при работе с многочисленными серверами, которые предоставляют только анонимный доступ.
В этом документе изложены рекомендации, которые помогут вам правильно настроить FTP-сервер и свести к минимуму возможность атак на вашу систему через этот вид сервиса.
В состав дистрибутива ALT Linux 2.3 Junior входит
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
.