Одной из распространённых атак на службу SSH является атака методом перебора, когда удалённый атакующий бесконечно пытается залогиниться с различными паролями. Конечно, есть аргументы против аутентификации с помощью паролей для SSH, и есть альтернативные механизмы аутентификации, такие существующие варианты как аутентификация с публичным клюём или двух-факторная аутентификация сведут на нет атаку брут-форсингом. Не в даваясь в дискуссию о преимуществах и недостатках различных методов аутентификации, давайте рассмотрим ситуацию, когда необходима аутентификация паролем. Как вы защитите ваш SSH сервер против атак грубой силой?

fail2ban — это хорошо известный, с открытым кодом фреймворк по предотвращению вторжений для Linux, он мониторит различные лог-файлы системы (например, /var/log/auth.log or /var/log/secure) и автоматически задействуют различные способы защиты против выявленных подозрительных действий. На самом деле, fail2ban может быть очень полезен для защиты против атак по перебору паролей на SSH сервер.

В этом уроке я продемонстрирую как установить и настроить fail2ban для защиты SSH сервера против атак брут-форсингом с удалённых IP адресов.

Установка Fail2ban на Linux

Для установки fail2ban на CentOS или RHEL, сначала, установите репозиторий EPEL, и затем выполните следующую команду.

Для установки fail2ban на Fedora, просто запустите:

Для установки fail2ban на Ubuntu, Debian или Linux Mint:

Настройка Fail2ban для SSH сервера

Сейчас вы готовы для конфигурирования fail2ban для усиления вашего SSH сервера. Вам нужно отредактировать конфигурационный файл в /etc/fail2ban/jail.conf. Конфигурационный файл содержит секцию «DEFAULT», где вы определяете параметры по умолчанию для всех сервисов, которые мониторятся, и специфичные для каждого сервиса секции, где вы определяете любые специфичные для сервиса джэйлы (например SSH, Apache и т. д.) для перезаписи параметров по умолчанию.

В секции джейлов определённых сервисов (где-то после секции [DEFAULT]) вам нужно задать секцию [ssh-iptables], где вы зададите особые настройки для джэйлов SSH. Текущий бан IP адресов делается iptables.

Последующий пример в /etc/fail2ban/jail.conf, который содержит настройку джэйла «ssh-iptables». Конечно, там могут быть и другие джейлы для разных приложений, в зависимости от ваших нужд.

В соответствии с приведённой конфигурацией, fail2ban будет автоматически банить любые удалённые IP адреса, с которых поступило хотя бы 3 неудачных попытки за последние 10 минут. Однажды забаненный, IP нарушителя будет оставаться заблокированным в течение 24 часов. Уведомление об этом событии будет отправлено по почте.

После того, как конфигурационный файл готов, перезапустите службу fail2ban как показано ниже.

На Debian, Ubuntu или CentOS/RHEL 6:

На Fedora или CentOS/RHEL 7:

Чтобы проверить, успешно ли запущен fail2ban, выполните команду fail2ban-client с аргументом «ping». Если служба fail2ban запущена нормально, вы должны увидеть ответ «pong».

Тестирование защиты с Fail2ban на SSH от атаки перебором паролей

Чтобы проверить, работает ли fail2ban, попробуйте войти на сервер SSH используя неверный пароль для симуляции брут-форс атаки. В то же время, проверяйте /var/log/fail2ban.log, который записывает все интересные события, которые происходят в fail2ban.

15882084127_93ce562651_o

Согласно логу выше, fail2ban забанил IP адрес 192.168.1.8, поскольку выявил множественные ошибки в попытка залогиниться на SSH с этого IP адреса.

Проверка статуса Fail2ban и разблокировка заблокированных IP адресов

Джейл «ssh-iptables» в fail2ban использует iptables для блокировки IP адресов нарушителей, вы можете легко проверить бан, посмотрев текущие правила iptables как показано ниже.

Если вы хотите разблокировать IP адреса от fail2ban, вы можете также выполнить команду iptables:

В то время, как вы можете проверять и управлять списком заблокированных IP в fail2ban вручную с помощью команд iptables, как было показано, верным способом, на самом деле, является использование инструмента командной строки ail2ban-client. Этот инструмент позволяет вам управлять не только джэйлом «ssh-iptables», но также любыми другими типами джэйлов fail2ban в унифицированным интерфейсе командной строки.

Для проверки статуса fail2ban (который покажет список активных в настоящее время джейлов):

Чтобы проверить статус конкретного джейла (например, ssh-iptables):

Вышеприведённая команда покажет список забаненных IP адресов.

16067847655_e8c6d8546b_o

Для разблокировки конкретного IP адреса:

16065915571_19db9d1335_o

Обратите внимание, если вы остановите fail2ban, все заблокированные IP адреса будут разблокированы. Когда вы перезапустите fail2ban, он найдёт список IP адресов нарушителей из /var/log/secure (или /var/log/auth.log) и перезабанит эти IP адреса, если не истекло время бана.

Установка Fail2ban на автозагрузку и включении

После того, как вы успешно протестировали fail2ban, последним шагов по задействованию fail2ban является автоматический запуск при включении питания сервера. На основанных на Debian дистрибутивах, автозапуск fail2ban включен по умолчанию. На основанных на Red Hat дистрибутивах, включите автостарт следующим способом.

На CentOS/RHEL 6:

На Fedora или CentOS/RHEL 7:

Итог

В этом уроке я продемонстрировал как установить и настроить fail2ban для защиты SSH сервера. Хотя fail2ban может смягчить атаку перебором паролей, пожалуйста помните, он не может защитить SSH сервера против сложных (распределённых) кампаний по брут-форсингу, когда атакующие обходят fail2ban используя тысячи подконтрольных ботам IP адресов.

Похожие темы

Установка LibreOffice на Linux Смотрите новую инструкцию, в которой рассказывается как обновить до самой последней версии LibreOffice, а также как установить самую последнюю ...
Родной Microsoft Office на Linux Нативный (родной) Microsoft Office для Linux ждут многие. Среди них и автор этой заметки. Сейчас появилось официальное решение от Microsoft, позволя...
Установка Adobe Photoshop CS6 на Linux (очень прос... Установить Adobe Photoshop CS6 на Linux стало очень легко. Для этого нужен только PlayOnLinux. Мы об этом уже сообщали в недавних новостях. Эта подро...
Почему Kali Linux не видит беспроводное устройство... В виртуальной машине невозможно использовать встроенный Wi-Fi, можно использовать только USB Wi-Fi карты. Поэтому рекомендуется ознакомиться со стат...
Списки слов для атаки по словарю: пароли, имена по... Далеко не всё программное обеспечение содержит эксплуатируемые уязвимости (как этого хотелось бы некоторым). Но цепь, как известно, рвётся на самом сл...