vsftpd – Обеспечить последовательные ответы 530

Вопрос или проблема

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

vsftpd работает без сбоев в производственной среде в течение многих лет. Сейчас я хочу создать более безопасную среду для vsftpd, настраивая fail2ban. Я понимаю, что в зависимости от типа пользователя, пытающегося подключиться, я получаю разные ответы 530 и поведение, что, таким образом, раскрывает, является ли пользователь валидным или нет.

  • Сценарий 1 (user1):
    Валидный пользователь, указанный в /etc/vsftpd.allowed_users и /etc/password (UNIX используется для аутентификации).
$ ftp myftp.example.com
Подключено к myftp.example.com.
220 Добро пожаловать, FTP пользователь.
Имя (myftp.example.com:user1): user1
331 Пожалуйста, укажите пароль.
Пароль: 
530 Неправильный логин.
ftp: Ошибка входа.
  • Сценарий 2 (user2):
    Невалидный пользователь, не указанный в /etc/vsftpd.allowed_users, он может быть в /etc/password или нет.
$ ftp myftp.example.com
Подключено к myftp.example.com.
220 Добро пожаловать, FTP пользователь.
Имя (myftp.example.com:user2): user2
530 Доступ запрещен.
ftp: Ошибка входа.

Резюме моей конфигурации vsftpd (по моему мнению, это важно):

anonymous_enable=NO
local_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.allowed_users

Я изменил PAM и попробовал разные параметры из стандартного /etc/pam.d/vsftpd, но поведение всегда одно и то же и, похоже, не является ключевым моментом (исправьте меня, если я не прав).

Системные журналы показывают pam, когда user1 вводит неправильный пароль, но ничего не отображается, когда user2, таким образом, fail2ban не может обнаружить любые попытки подключения с невалидным пользователем.

Nov 27 17:01:33 myftp vsftpd[99999]: pam_unix(vsftpd:auth): ошибка аутентификации; logname= uid=0 euid=0 tty=ftp ruser=fijipd rhost=::ffff:111.222.333.444 user=user1

Я бы предположил, что сначала необходимо получить последовательный ответ от FTP-пrompt.
Во вторую очередь, я полагаю, что, решив первый вопрос, получить корректное поведение fail2ban (из ошибок PAM или нет).

Буду признателен за любые подсказки,
спасибо.

Ответ или решение

Чтобы обеспечить безопасность вашего FTP-сервера с использованием vsftpd и предотвратить атаки типа "enumeration" (перечисление имен пользователей) и "brute force" (грубой силы), важно стандартизировать ответы сервера на ошибки, чтобы не разглашать информацию о существовании или отсутствии пользователей. Ваша текущая конфигурация ведет к разным ответам сервера в зависимости от типа пользователя, что создает уязвимость. Давайте рассмотрим, как можно решить эту проблему шаг за шагом.

Шаг 1: Конфигурация vsftpd для стандартизации ответов

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

  1. Создайте кастомное сообщение для ошибки 530: Вы можете изменить поведение сервера с использованием параметра vsftpd.conf. К сожалению, встроенной возможности для задания консистентного ответа на 530 с различными причинами (неправильные логин или пароль) нет, но можно настроить pam для обработки ошибок.

  2. Использование PAM для управления аутентификацией:

    • Вам нужно убедиться, что в файле /etc/pam.d/vsftpd настроена и правильно прописана аутентификация. Пример конфигурации:
      auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.allowed_users onerr=succeed
      auth required pam_unix.so
      account required pam_unix.so
    • Это позволит системной библиотеке PAM интерпретировать попытки аутентификации и возвращать единый ответ.

Шаг 2: Настройка Fail2Ban для учета событий

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

  1. Увеличьте уровень логирования для vsftpd: Убедитесь, что уровень логирования в vsftpd настроен так, чтобы регистрировать все события аутентификации:

    log_ftp_protocol=YES
  2. Настройка Fail2Ban:

    • Создайте новый фильтр для vsftpd в папке /etc/fail2ban/filter.d/, например, vsftpd.conf:

      [INCLUDES]
      before = common.conf
      
      [Definition]
      failregex = ^%(__prefix_line)s*pam_unix\(vsftpd:auth\): authentication failure; logname=.*$
      ignoreregex =
    • Затем создайте jail для этого фильтра в файле /etc/fail2ban/jail.local:
      [vsftpd]
      enabled = true
      filter = vsftpd
      action = iptables[name=vsftpd, port=ftp, protocol=tcp]
      logpath = /var/log/vsftpd.log
      maxretry = 5
      bantime = 600

Шаг 3: Тестирование конфигурации

После внесения всех изменений перезапустите службы:

sudo systemctl restart vsftpd
sudo systemctl restart fail2ban

Шаг 4: Мониторинг и оптимизация

  1. Мониторинг логов: Проверьте логи /var/log/vsftpd.log и логи Fail2Ban для подтверждения, что система отслеживает эти данные и выдает соответствующие сообщения об ошибках.

  2. Проверяйте конфигурацию: Регулярно проверяйте конфигурации вашего FTP-сервера и Fail2Ban для адаптации к новым уязвимостям и обновлениям.

Заключение

Обеспечение безопасности вашего FTP-сервера требует тщательной настройки и регулярного мониторинга. Стандартизация ответов on 530 ошибки, а также надлежащая конфигурация Fail2Ban помогут вам избежать утечки информации о пользователях и усилить безопасность вашего сервера. Правильное применение этих рекомендаций повысит общий уровень защиты системы и снизит вероятность успешных атак.

Оцените материал
Добавить комментарий

Капча загружается...