5.6. Защита FTP

File Transport Protocol (Протокол передачи файлов), или FTP — пожилой TCP-протокол, разработанный для передачи файлов по сети. Так как обмен данными с сервером, в том числе и при проверке подлинности, происходит в открытом виде, этот протокол считается небезопасным и при его настройке следует соблюдать осторожность.

Red Hat Enterprise Linux предлагает три FTP сервера.

Следующие рекомендации касаются настройки FTP-службы vsftpd.

5.6.1. Заголовок с приветствием FTP

Прежде чем пользователь передаст имя и пароль, он увидит заголовок с приветствием. По умолчанию, в этом заголовке будут указаны сведения о версии, а с их помощью взломщики могут определить слабые места в вашей системе.

Чтобы изменить заголовок с приветствием для vsftpd, добавьте в файл /etc/vsftpd/vsftpd.conf следующее указание:

ftpd_banner=<insert_greeting_here>

Замените в этом указании <insert_greeting_here> текстом приветствия.

Для многострочных заголовков лучше использовать отдельный файл. Чтобы упростить управление разными заголовками, поместите их в один каталог /etc/banners/. В этом примере заголовок для FTP-соединений находится в /etc/banners/ftp.msg. Ниже показано, как может выглядеть этот файл:

####################################################
# Hello, all activity on ftp.example.com is logged.#
####################################################

ЗамечаниеЗамечание
 

Вовсе не обязательно начинать каждую строку файла с 220, как было показано в разделе 5.1.1.1 Оболочки TCP и заголовки соединений.

Чтобы служба vsftpd ссылалась на этот файл заголовка, добавьте в файл /etc/vsftpd/vsftpd.conf следующее указание:

banner_file=/etc/banners/ftp.msg

Также дополнительные заголовки в ответ на входящие подключения можно отправлять с помощью оболочек TCP, как описано в разделе 5.1.1.1 Оболочки TCP и заголовки соединений.

5.6.2. Анонимный доступ

Присутствие каталога /var/ftp/ включает анонимную учётную запись.

Проще всего создать этот каталог можно, установив пакет vsftpd. Этот пакет настраивает дерево каталогов для анонимных пользователей и даёт им в этих каталогах только право чтения.

По умолчанию анонимный пользователь не может записывать ни в один каталог.

ВниманиеВнимание
 

Разрешая анонимный доступ к FTP-серверу, проверьте, где находятся важные данные.

5.6.2.1. Анонимная закачка

Чтобы анонимные пользователи могли закачивать файлы, рекомендуется создать каталог в /var/ftp/pub/ с правом только на запись.

Для этого введите:

mkdir /var/ftp/pub/upload

Затем измените разрешения, чтобы анонимные пользователи не видели, что находится в каталоге:

chmod 730 /var/ftp/pub/upload

Этот каталог в подробном списке будет выглядеть так:

drwx-wx---    2 root     ftp          4096 Feb 13 20:05 upload

ПредупреждениеПредупреждение
 

Администраторы, разрешающие анонимным пользователям читать и писать в каталоги, часто обнаруживают, что их сервера становятся складом пиратского программного обеспечения.

Кроме этого, для службы vsftpd добавьте в файл /etc/vsftpd/vsftpd.conf следующую строку:

anon_upload_enable=YES

5.6.3. Учётные записи пользователей

Так как в протоколе FTP имена и пароли пользователей передаются по незащищённым сетям в открытом виде, будет правильно, если вы запретите доступ к серверу пользователям с их учётными данными.

Чтобы отключить учётные записи пользователей для vsftpd, добавьте в /etc/vsftpd/vsftpd.conf следующее указание:

local_enable=NO

5.6.3.1. Ограничение учётных записей пользователей

Запретить доступ к FTP серверу определённым пользователям, например, root или другим с привилегиями sudo, легче всего с помощью файла PAM, как показано в разделе 4.4.2.4 Отключение root с помощью PAM. Файл конфигурации PAM для vsftpd называется /etc/pam.d/vsftpd.

Также можно отключить учётные записи непосредственно в самой службе.

Чтобы отключить учётные записи пользователей в vsftpd, добавьте имя пользователя в /etc/vsftpd.ftpusers.

5.6.4. Использование оболочек TCP для управления доступом

Используйте оболочки TCP для управления доступом к демону FTP, как описано в разделе 5.1.1 Усиление безопасности с помощью оболочек TCP.