FTP расшифровывается как протокол передачи файлов и является одним из наиболее широко используемых стандартных протоколов в Интернете, который работает по модели «клиент-сервер» и используется для передачи файлов между клиентом и сервером.
Изначально FTP-клиенты работали на основе командной строки, но сейчас большинство платформ имеют встроенные FTP-клиенты и серверы, а также доступно множество сторонних программ для работы с FTP-клиентами и серверами.
Здесь мы представляем 15 вопросов для собеседования, основанных на VsFTP (протокол передачи файлов с повышенной безопасностью), работающем на серверах Linux, с простым и понятным для новичков объяснением.
1. В чём разница между TFTP и FTP-сервером?
TFTP (простой протокол передачи файлов) и FTP используются для передачи файлов, но они существенно различаются:
- TFTP использует UDP (протокол пользовательских дейтаграмм), который не требует установления соединения и не гарантирует доставку пакетов, поскольку в основном используется для передачи небольших файлов, таких как обновления встроенного ПО или загрузочные файлы.
- FTP использует TCP (протокол управления передачей), который ориентирован на подключение и обеспечивает надёжную передачу данных.
- FTP использует два порта: порт 21 для управляющих команд и порт 20 для передачи данных, в то время как TFTP использует только порт 69.
- FTP поддерживает аутентификацию (имя пользователя/пароль), в то время как TFTP обычно этого не делает, что делает FTP более безопасным и гибким для общего использования.
2. Как ограничить доступ пользователей и запретить просмотр файлов за пределами их домашних каталогов?
Чтобы пользователи не могли получить доступ к каталогам за пределами своих домашних папок, используется функция chroot (смена корневой папки).
- В VsFTP задайте параметр
chroot_local_user=YES
в файлеvsftpd.conf
. - Это ограничивает доступ пользователей к их домашним каталогам, повышая безопасность за счёт того, что они не могут просматривать или изменять файлы в других местах на сервере.
- Без этого пользователи потенциально могли бы получить доступ к конфиденциальным системным файлам или другим пользовательским каталогам.
3. Как вы управляете количеством FTP-клиентов, которые могут подключаться одновременно?
Управление количеством одновременно подключающихся клиентов помогает предотвратить перегрузку сервера:
- Используйте параметр
max_clients
вvsftpd.conf
- Установка
max_clients
на положительное число ограничивает максимальное количество одновременных подключений. - Если установлено значение
0
, неограниченное количество клиентов может подключаться.
Например, max_clients=50
ограничивает количество одновременно активных FTP-клиентов до 50
, что полезно для поддержания производительности и предотвращения атак типа «отказ в обслуживании» (DDoS).
4. Как ограничить количество попыток входа в систему по FTP, чтобы предотвратить попытки незаконного доступа со стороны ботнета?
Чтобы защититься от атак методом перебора, вы можете ограничить количество неудачных попыток входа в систему:
- Используйте параметр
max_login_fails
. - Это значение определяет максимальное количество неудачных попыток входа в систему до завершения сеанса.
Значение по умолчанию — 3, то есть после трёх неудачных попыток сервер отключает клиента, что помогает защитить сервер от несанкционированного доступа ботов или злоумышленников.
5. Как разрешить загрузку файлов анонимными пользователями?
По умолчанию анонимные пользователи не могут загружать файлы по соображениям безопасности.
- Чтобы разрешить загрузку для анонимных пользователей:
- Установлен
anon_upload_enable=YES
внутриvsftpd.conf
. - Убедитесь, что
write_enable=YES
также установлен, так как он позволяет выполнять любые операции записи, например загрузку.
- Установлен
- Загрузка файлов анонимными пользователями обычно ограничена определенным каталогом (например,
/var/ftp/pub
). - Будьте осторожны с этим параметром, чтобы избежать несанкционированной или вредоносной загрузки файлов.
6. Как отключить загрузку с FTP-сервера?
Возможно, вы захотите запретить пользователям скачивать файлы, разрешив при этом загрузку или другие операции:
- Установите
download_enable=NO
вvsftpd.conf
для запрета всех запросов на загрузку. - По умолчанию загрузка включена (
YES
), что позволяет пользователям загружать файлы. - Отключение загрузки полезно для серверов, предназначенных только для загрузки, или для повышения безопасности за счет ограничения доступа к файлам.
7. Как включить вход по FTP для локальных пользователей Linux?
Пользователям локальной системы может быть разрешен вход через FTP:
- Установлен
local_enable=YES
внутриvsftpd.conf
. - По умолчанию эта функция отключена
(NO)
, что предотвращает вход в систему локальных пользователей. - При включении этой функции локальные пользователи могут проходить аутентификацию с помощью имени пользователя и пароля системы Linux.
- Это важно для обеспечения безопасной загрузки/выгрузки файлов внутренними пользователями.
8. Можно ли вести журнал запросов и ответов по FTP?
Ведение журнала необходимо для мониторинга и отладки системы безопасности.
- Включите
log_ftp_protocol=YES
для регистрации подробных команд и ответов FTP. - Кроме того, включите
xferlog_std_format=YES
для стандартного форматирования журнала передачи данных. - Журналы помогают отслеживать активность пользователей, выявлять подозрительное поведение и устранять неполадки.
- По умолчанию подробное ведение журнала отключено из соображений производительности.
9. Как временно отключить вход в систему после неудачных попыток?
Чтобы замедлить атаки методом перебора, вы можете задерживать ответы на запросы о входе в систему после неудачных попыток:
- Используйте параметр
delay_failed_login
для указания количества секунд, в течение которых будет сделана пауза перед повторной попыткой входа в систему после сбоя. - Задержка по умолчанию равна
1
секунде. - Увеличение этой задержки делает атаки методом перебора более медленными и менее эффективными.
10. Как отобразить приветственное или предупреждающее сообщение перед подключением клиентов?
Чтобы отобразить баннерное сообщение при подключении клиентов, используйте параметр ftpd_banner
, указывающий на файл с нужным сообщением, например ftpd_banner=/etc/vsftpd/banner.txt
, которое может содержать предупреждения, юридические уведомления или инструкции. Это сообщение отображается до аутентификации и подключения пользователя.
11. Как включить или отключить пассивный режим в VsFTP?
Пассивный режим используется, когда клиенты находятся за брандмауэрами или NAT:
- Включите пассивный режим с помощью
pasv_enable=YES
. - Если функция отключена (NO), доступен только активный режим.
- Пассивный режим позволяет клиентам инициировать как управляющие соединения, так и соединения для передачи данных, что упрощает обход брандмауэра.
- Пассивный режим требует настройки допустимых диапазонов портов для подключения к данным.
12. Как настроить определенный диапазон портов для пассивного режима?
Для поддержки брандмауэров определите диапазон портов пассивного режима с помощью pasv_min_port
и pasv_max_port
в vsftpd.conf
.
pasv_min_port=40000 pasv_max_port=50000
Откройте эти порты в брандмауэре, чтобы разрешить пассивные FTP-подключения, что повысит безопасность и совместимость с брандмауэром.
13. Как полностью отключить анонимный доступ по FTP?
Для повышения безопасности вы можете заблокировать анонимных пользователей, установив следующий параметр vsftpd.conf
anonymous_enable=NO
Это предотвращает вход в систему анонимных пользователей, гарантируя, что только авторизованные пользователи будут иметь доступ к FTP.
14. Как использовать виртуальных пользователей вместо системных в VsFTP?
Виртуальные пользователи позволяют создавать учётные записи только для FTP без предоставления системных привилегий:
- VsFTP поддерживает аутентификацию через PAM (подключаемые модули аутентификации).
- Вы можете настроить PAM для аутентификации виртуальных пользователей, хранящихся в отдельной базе данных (например, в файле или SQL).
Это повышает безопасность за счёт изоляции пользователей FTP от пользователей системы Linux, предоставляя виртуальным пользователям собственные каталоги и ограничивая доступ.
15. Как ограничить скорость загрузки и выгрузки для пользователей FTP?
Ограничение использования пропускной способности для каждого пользователя — отличный способ управлять нагрузкой на сервер и не допускать, чтобы один клиент потреблял слишком много ресурсов сети.
Используйте следующие параметры в файле vsftpd.conf
:
local_max_rate
— ограничивает скорость загрузки и выгрузки для локальных (системных) пользователей.anon_max_rate
– ограничивает скорость загрузки и скачивания для анонимных пользователей.
Например:
local_max_rate=51200
Заключение
FTP — это мощный инструмент, а VsFTP широко используется для безопасной передачи файлов на Linux-серверах. Понимание этих параметров конфигурации и настроек необходимо для эффективного управления и защиты FTP-сервера, особенно при подготовке к собеседованию.
Если вы хотите узнать больше, чем описано в этой статье, не забудьте прочитать нашу следующую статью: