Защита FTP: WU-FTP.
Метки: FTP
Пятница, 6 ноября 2009 г.
Просмотров: 2562
Подписаться на комментарии по RSS
Поговорим о защите FTP-сервера. Сначала нужно подумать, а нужен ли он вообще на сервере? Может, его лучше вообще отключить? Если FTP-сервер нужен для того, чтобы пользователи просто скачивали файлы, то надо просто выложить их на Web-сервер и настроить базовую или digest-аутентификацию к каталогу с файлами.
Если же пользователю можно загружать файлы на сервер, также надо придумать альтернативу, например, загрузка их с помощью CGI-сценария, употребление SCP или отправка файлов по e-mail - будет безопаснее. Чем меньше сервисов запущено на машине, тем меньше потенциальных входов в систему.
В состав многих дистрибутивов Linux входит FTP-сервер, разработанный Вашингтонским университетом - WU-FTP (http://www.wu-ftp.org). WU-FTP - это популярный, полнофункциональный FTP-сервер, но, к сожалению, славящийся фигурированием многих уязвимостей. Рассматриваем его защиту только потому, что он изрядно популярен, но потом будут рассмотрены более безопасные альтернативы.
Конфигурационные файлы WU-FTP находятся в каталоге /etc/ftp*, однако надо помнить, что файлы ftpusers и ftpgroups теперь не используются - нужные изменения теперь делаются в файле ftpaccess.
Отключение банера.
Чем меньше информации сможет получить хакер, тем лучше. FTP-сервер любезно предоставляет ему всю необходимую информацию, которую он будет применять для взлома данного же сервера. Поведение сервера надо модифицировать с помощью опции greet configuration, которая может принимать значения:
- full - выводит полный баннер: имя машины, название демона и его версию;
- brief - описывается только имя машины;
- terse - выводится сообщение «FTP server ready», при данном не говорится ни имя машины, ни название демона, ни его версия;
- text <сообщение> - позволяет установить сообщение, которое будет отображено в качестве приветствия.
Рекомендуется использовать значение terse.
Доступ пользователей.
WU-FTP дает возможность использовать три вида доступа:
- Анонимный (anonymous) - на сервере может зарегистрироваться какой угодно пользователь, используя имя пользователя anonymous и e-mail в качестве пароля. Обычно эти пользователи работают в chroot-окружении, в котором им предоставляется доступ к подкаталогам каталога /var/ftp.
- Настоящий (real) - пользователю дается полный доступ к дереву каталогов (в соответствии с установленными правами доступа). Такой же доступ может быть получен при применении SSH, но SSH значительно безопаснее, поэтому лучше никогда не предоставлять пользователям данный вид доступа.
- Гостевой (guest) - похож на реальный, но пользователь попадает в chroot-окружения для доступа к его домашнему каталогу. Данный метод представляется предпочитаемым в случае с FTP.
Можно определить, каким пользователям предоставляется тот или иной вид доступа. Для данного используются опции anonuser, realuser и guestuser соответственно, например:
Это означает, что всем пользователям будет предоставлен гостевой доступ.
Затем можно определить, какие операции разрешено исполнять при том или ином классе доступа:
delete no anonymous
overwrite no anonymous
rename no anonymous
Эти значения по умолчанию сполна приемлемы, поэтому их не стоит изменять.
Анонимный доступ может быть ограничен с помощью опции guestserver, задающей маски разрешенных узлов, например:
Если нужно совсем отключить анонимный доступ, можно использовать эту опцию и не указывать никаких узлов.
В заключение можно задать ограничение на максимальное количество подключений для каждого класса пользователей. Синтаксис опции limit следующий:
Здесь: <класс> - это класс пользователей (any, real, guest или anonymous); times - это период времени, на протяжении которого действует ограничение. Если лимит будет превышен, пользователям будет запрещен доступ и отображено сообщение, находящееся в файле, заданном в последнем параметре.
К примеру:
Опции протоколирования.
Для управления протоколированием в WU-FTP используются следующие опции:
- log commands <класс> - класс - это комбинация классов пользователей (real, guest, anonymous или all для всех классов). Эта опция позволяет записывать команды, введенные пользователями указанных классов.
- log transfers <класс> [направление] - протоколирование передач файлов. Класс - это класс пользователей. Направление - это направление передачи, income - передачи на сервер, outgoing - передача файла пользователю.
- log security <класс> - записывает нарушения безопасности, к примеру, когда пользователь вводил запрещенные для своего класса команды.
Рекомендуется включить все данные три опции для каждого класса пользователей.