# Fail2Ban-SSH и Brute-force attack ***Информация представлена исключительно в образовательных целях*** **Цель работы:** научиться настраивать Fail2Ban для SSH. **Задание:** 1. Настроить SSH-сервер и SSH-клиент 2. Запретить доступ от root 3. Вывести журнал подключений пользователей SSH 4. Установить и настроить Fail2Ban для SSH 5. Провести несколько разных атак ## Ход выполнения практической работы Fail2ban – простой в использовании локальный сервис, который отслеживает log–файлы запущенных программ, и на основании различных условий блокирует по IP найденных нарушителей. Программа умеет бороться с различными атаками на все популярные *NIX–сервисы, такие как Apache, Nginx, ProFTPD, vsftpd, Exim, Postfix, named, и т.д. Но в первую очередь Fail2ban известен благодаря готовности «из коробки» к защите SSH–сервера от атак типа «bruteforce», то есть к защите SSH от перебора паролей. С помощью Fail2Ban можно блокировать ip-адреса и также делать так, чтобы ip-адреса не блокировались (всегда имелся доступ до ssh, даже если введено большое количество неправильных паролей), самое удобное в Fail2Ban – это то, что он автоматизирует процесс защиты shh. В начале, для проведения практической работы, проведём обновление системы, как это показано на рисунке 1. ![](https://i.imgur.com/SNuxOxA.png) Рисунок 1 – Обновление ОС Установим свежую версию fail2ban из репозиториев Debian при помощи утилиты apt, как это показано на рисунке 2. ![](https://i.imgur.com/fUJoKQn.png) Рисунок 2 – Установка fail2ban Запустим сервис fail2ban и проверим его статус. Необходимые для этого команды и результат их выполнения представлены на рисунке 3. Как видно из рисунка, сервис успешно запущен (active). ![](https://i.imgur.com/Hc1k1U4.png) Рисунок 3 – Запуск и проверка сервиса fail2ban Просмотрим конфигурационные файлы fail2ban в директории /etc/fail2ban/. Соответствующая команда и результат показаны на рисунке 4. Самый важный конфигурационный файл здесь – jail.conf, в котором прописываются настройки фильтрации (вернее это шаблон, по которому создаётся файл правил jail.local). ![](https://i.imgur.com/6Xb9z1c.png) Рисунок 4 – Просмотр файлов конфигурации Теперь на основе шаблона jail.conf создадим локальный файл правил фильтрации jail.local, как это показано на рисунке 5. В соответствующие поля вводится информация о времени блокировки, контролируемом сервисе, исключениях, количестве неудачных попыток для блокировки и некоторые другие. ![](https://i.imgur.com/VSlTiNt.png) Рисунок 5 – Создаём конфигурационный файл jail.local Перезапустим сервис fail2ban, как это показано на рисунке 6. ![](https://i.imgur.com/2FZGGI2.png) Рисунок 6 – Перезапускаем fail2ban и проверяем его статус Для проведения тестирования необходимо узнать ip адрес виртуального хоста. Соответствующая команда и результат её выполнения представлены на рисунке 7. ![](https://i.imgur.com/8L9Mu23.png) Рисунок 7 – Узнаём ip хоста Протестируем работу fail2ban, введя неправильные учётные данные 3 раза. Процесс тестирования показан на рисунке 8, а результат на рисунке 9. Как видно из рисунка 8, после 3 попытки сервис ssh перестал отвечать, а значит fail2ban отработал верно. На рисунке 9 видно, что ip адрес хостовой машины заблокирован. ![](https://i.imgur.com/cvdf4Gw.png) Рисунок 8 – Неправильный ввод пароля от ssh 3 раза ![](https://i.imgur.com/d0KtyDQ.png) Рисунок 9 – Заблокированные узлы Проведём попытку брутфорса пароля ssh при помощи hydra из Kali Linux. Как видно из рисунка 10, данное действие не увенчалось успехом, так как ip адрес атакующего всё ещё находится в бан-списке. ![](https://i.imgur.com/qhRiGsr.png) Рисунок 10 – Попытка брутфорса ssh при помощи hydra Разбаним ip адрес атакующего командой fail2ban-client unban {ip}, как это показано на рисунке 11. На этом же рисунке видно, что ip атакующего пропал из бана. ![](https://i.imgur.com/WBHOndw.png) Рисунок 11 – Разбан ip адреса Попробуем провести брутфорс атаку по подбору пароля ssh на ПК жертвы ещё раз. Как видно из рисунка 12, атака успешно запустилась, но ненадолго, так как ip атакующего снова угодил в бан-список 😊. ![](https://i.imgur.com/X3twtl1.png) Рисунок 12 – Попытка брутфорса ssh при помощи hydra после разбана ip На этот раз, как можно увидеть из рисунка 13, успело пройти 27 попыток доступа к ssh (27 новых + 3 старых = 30), прежде чем fail2ban успел среагировать и заблокировать ip атакующего. Это произошло из-за очень быстрой многопоточной работы утилиты hydra. ![](https://i.imgur.com/ayb8F1j.png) Рисунок 13 – Неудачные попытки входа через ssh Отключим sshd правило, поставив в jail.local параметр enable=false, как это показано на рисунке 14. ![](https://i.imgur.com/nGEEnph.png) Рисунок 14 – Отключение правила sshd Теперь разбаним ip адрес атакующего и перезагрузим сервис, чтобы изменения конфигурационного файла вступили в силу, как показано на рисунке 15. ![](https://i.imgur.com/pFZGFLk.png) Рисунок 15 – Перезапуск fail2ban Как видно из рисунка 16, после разблокировки ip адреса атакующего можно беспрепятственно подключиться к гостевой машине через ssh. Из-за того, что правило теперь неактивно, fail2ban не будет банить ip за неправильный ввод учётных данных. ![](https://i.imgur.com/8RvAajD.png) Рисунок 16 – Успешный вход через ssh после разблокировки Ещё один способ перестать блокировать соединения – отключить сервис fail2ban целиком. Снова активируем правило sshd, но отключим сервис fail2ban с помощью команды «sudo service fail2ban stop», как это показано на рисунке 17. Из данного скриншота также видно, что сервис теперь отключен, находится в режиме inactive. ![](https://i.imgur.com/0fIZlBm.png) Рисунок 17 – Остановка сервиса fail2ban Теперь можно беспрепятственно проводить bruteforce атаку без попадания в блок-лист fail2ban. На рисунке 18 показан процесс проведения такой атаки с помощью hydra на словаре rockyou. Как видно из рисунка, пароли успешно перебираются, блокировки не происходит. ![](https://i.imgur.com/dowKh8C.png) Рисунок 18 – Попытка подбора пароля к ssh со словарём rockyou Теперь проведём атаки на SSH другими инструментами: patator, medusa и с помощью Metasploit Framework. Для начала отключим fail2ban и попробуем подобрать пароль. Как видно из риснуков 19, 20 и 23, пароль успешно подобран всеми тремя инструментами. Пароль = "111111". На рисунке 19 показан процесс подбора пароля пр помощи medusa, на рисунке 20 - при помощи patator, а на рисунках 21, 22 и 23 - представлен процесс конфигурации MSFconsole и подбора пароля при помощи него. ![](https://i.imgur.com/NfzBtMm.png) ![](https://i.imgur.com/fYRZrde.png) Рисунок 19 - Процесс подбора пароля пр помощи medusa ![](https://i.imgur.com/VU2VO7W.png) Рисунок 20 - Процесс подбора пароля пр помощи patator ![](https://i.imgur.com/5iNMwBH.png) Рисунок 21 - Процесс конфигурации Metasploit Framework ![](https://i.imgur.com/koZy0mz.png) Рисунок 22 - Процесс конфигурации Metasploit Framework ![](https://i.imgur.com/orIThjZ.png) Рисунок 23 - Процесс подбора пароля пр помощи Metasploit Framework Теперь включим сервис fail2ban командой sudo service fail2ban start и попробуем заново подобрать пароль от debian машины. Для чистоты эксперимента, после каждой попытки необходимо очищать бан список командой sudo fail2ban-client unban 'ip'. Как видно из рисунков 24, 25 и 26 ни одна из утилит не справилась с подбором пароля, все попытки были успешно заблокированы утилитой fail2ban. ![](https://i.imgur.com/2ob6DbH.png) Рисунок 24 - Заблокированная попытка подбора пароля при помощи medusa ![](https://i.imgur.com/8BcLozT.png) Рисунок 25 - Заблокированная попытка подбора пароля при помощи patator ![](https://i.imgur.com/kP0b8Oz.png) Рисунок 26 - Заблокированная попытка подбора пароля при помощи MSF **Выводы:** в результате выполнения практической работы были получены практические навыки работы с утилитой fail2ban, а также hydra, medusa, patator и Metasploit Framework. Была проведена защита гостевой виртуальной машины от bruteforce атак на SSH, а также были проведены попытки подбора пароля. Утилита fail2ban справилась со своей задачей, надёжно определив и заблокировав адрес атакующего, зарекомендовав себя тем самым с лучшей стороны.