Аннотация
Протокол 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.