Родерик Смит - Сетевые средства Linux
Одно из положительных качеств анонимного FTP-сервера состоит в том, что он не позволяет перехватить пароль. Связано это с тем, что при обращении на анонимный FTP-сервер пользователь может указать любой пароль на свой выбор. (Большинство серверов предлагает пользователю ввести в качестве пароля свой почтовый адрес.) С этой точки зрения анонимный FTP-сервер является более защищенным, чем обычный FTP-сервер.
Если вы сконфигурируете одну программу для работы в качестве как анонимного, так и обычного FTP-сервера, вы тем самым объедините недостатки обоих типов серверов. Лучше всего, если анонимный FTP-сервер будет поддерживать только анонимные обращения (по крайней мере от внешних пользователей). Чтобы повысить уровень защиты, минимизируйте число учетных записей на компьютере, на котором работает анонимный сервер, и запретите запуск ненужных серверов.
Опции, используемые для настройки анонимного FTP-сервера
Большинство FTP-пакетов, поставляемых в составе различных версий Linux, полностью или частично сконфигурированы для функционирования в качестве анонимного FTP-сервера. Для того чтобы окончить настройку, вам надо приложить лишь минимальные усилия. В данном разделе описываются опции, позволяющие реализовать анонимный FTP-сервер как с помощью WU-FTPD, так и посредством ProFTPd. Вначале будет рассмотрено создание дерева каталогов (эта задача решается одинаково для обоих серверов), а затем — средства конфигурации для каждого из серверов.
Создание поддерева каталоговПервый шаг по организации работы FTP-сервера — это создание поддерева каталогов. Как правило, корнем этого поддерева является каталог /home/ftp, но при необходимости вы можете разместить его в другой позиции файловой системы. В большинстве случаев в качестве владельца каталогов указывается root, либо пользователь, который должен непосредственно заниматься поддержкой FTP-узла, а права доступа к каталогам задаются равными 755 (rwxr-xr-x). Это позволяет администратору редактировать файлы, содержащиеся в каталоге, но другим пользователям запись данных запрещена. В отличие от каталогов, при определении прав доступа к файлам не устанавливается бит исполняемой программы.
В большинстве случаев в составе поддерева FTP задаются следующие подкаталоги.
• pub. В этом каталоге размещаются файлы, предназначенные для копирования на пользовательские компьютеры. Вы можете создавать в каталоге pub любую структуру подкаталогов и помещать в них любые файлы. Необходимо лишь обеспечить, чтобы пользователь имел право чтения этих файлов.
• bin. Для выполнения некоторых действий FTP-сервер обращается к другим программам. Эти программы должны находиться в каталоге /bin (путь к каталогу определяется относительно корневого каталога, заданного с помощью функции chroot()). Чаще всего серверу требуется утилита ls, кроме того, в процессе работы ему могут понадобиться программы tar, gzip и zcat (последний файл представляет собой символьную ссылку на gzip). Установив FTP-сервер, вы, возможно, обнаружите, что в каталоге bin уже находятся некоторые программы, причем размер их превышает размер соответствующих программ, находящихся в каталоге /bin системы. Причина в том, что при установке FTP-сервера в состав исполняемого файла помещаются все необходимые коды, в результате чего исключается необходимость в библиотечных файлах. Убедитесь, что для файлов, находящихся в этом каталоге, установлен бит исполняемой программы.
• lib. В этом каталоге содержатся динамические библиотеки, используемые при работе программ в /bin. Если вы скопируете в каталог /bin поддерева FTP утилиты из каталога /bin операционной системы, вам надо выяснить, какие библиотеки требуются для работы каждой из них. Это позволяет сделать команда ldd. Так, например, чтобы определить, какие библиотеки нужны для программы надо выполнить команду ldd /bin/ls.
• etc. Для работы FTP-сервера требуются два файла, содержащихся в каталоге /etc: passwd и group. Вам нет необходимости копировать соответствующие файлы из каталога /etc системы. Вам нужна лишь запись для пользователя ftp (либо другого пользователя, учетную запись которого вы используете для организации анонимного доступа).
После того как вы создадите перечисленные выше каталоги и поместите в них требуемые файлы, можете приступать к дальнейшей настройке анонимного FTP-сервера. Возможно, впоследствии вы внесете некоторые изменения в структуру поддерева FTP, например, включите новые файлы или модифицируете существующие. Например, не исключено, что вы захотите, чтобы перед передачей производилось сжатие файла посредством утилиты gzip. В этом случае вам придется скопировать соответствующий исполняемый файл в каталог /bin поддерева FTP.
Опции WU-FTPD, используемые при создании анонимного FTP-сервераНаиболее важные опции, используемые для создания анонимного FTP-сервера на базе продукта WU-FTPD, находятся в файле /etc/ftpaccess. В процессе настройки вам может потребоваться изменить значения следующих опций.
• class. Возможно, для обеспечения анонимного доступа вам придется создать новый класс. Для его создания применяются те же средства, что и для формирования других классов.
• compress, tar, chmod, delete, overwrite и rename. Эти опции разрешают или запрещают пользователю выполнять соответствующие командах. Запретив анонимному пользователю вызывать команды, определяемые последними четырьмя опциями, вы лишите его возможности изменять файлы, расположенные на сервере. Эти опции могут показаться излишними, однако некоторая избыточность позволяет сохранить контроль над сервером, если при установке конфигурации была допущена ошибка или если некоторые функции сервера выполняются некорректно.
• anonymous-root. В качестве значения данной опции надо задать корневой каталог поддерева chroot, в пределах которого выполняется сервер WU-FTPD.
В большинстве систем WU-FTPD запускается посредством суперсервера с привилегиями root. Когда сервер принимает запрос от анонимного пользователя, он порождает процесс от имени пользователя ftp. Таким образом, WU-FTPD может реализовать анонимный FTP-сервер, даже при запуске посредством суперсервера.
Опции ProFTPd, используемые при создании анонимного FTP-сервераОсновные опции ProFTPd, используемые для настройки анонимного FTP-сервера, находятся в файле proftpd.conf. Фрагмент конфигурационного файла, реализующий простой анонимный сервер, приведен ниже.
<Anonymous /home/ftp>
User ftp
Group ftp
# При регистрации пользователь может указывать имя anonymous
# либо ftp
UserAlias anonymous ftp
# В пределах поддерева chroot запись данных запрещена
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
• Директива <Anonymous> создает блок, в который помещаются остальные опции, применяемые для формирования конфигурации анонимного сервера. При наличии этой директивы ProFTPd изменяет процедуру регистрации, в данном примере сервер создает поддерево chroot, корневой каталог которого размещается в каталоге /home/ftp.
• Директивы User и Group сообщают ProFTPd о том, какое имя пользователя и группы должно использоваться для работы с анонимным сервером. ProFTPd порождает процесс с полномочиями указанного пользователя и группы. Необходимо убедиться в том, что каталоги поддерева FTP и расположенные в них файлы доступны для указанных пользователя и группы.
• Директива UserAlias обеспечивает обслуживание пользователей, которые указывают при регистрации имя anonymous.
• В блоке, созданном с помощью директивы <Limit WRITE>, содержится директива DenyAll. Этот блок запрещает всем пользователям запись в каталоги. Если вы корректно задали права доступа в поддереве FTP, этот блок можно считать излишним. Однако, как было сказано ранее, некоторая избыточность поможет в том случае, если при настройке сервера была допущена ошибка или если в его системе защиты есть недостатки.
• Если вы хотите создать псевдоанонимный сервер, который регистрирует пользователей посредством имени anonymous, но требует ввода пароля, вы должны использовать опцию AnonRequiresPassword on. В этом случае вам также следует задать пароль в файле /etc/passwd или /etc/shadow. (Сервер ProFTPd выполняет аутентификацию пользователя перед тем, как ограничить сферу своих действий поддеревом chroot, поэтому соответствующий пароль задается в системном файле /etc/passwd или /etc/shadow.)