---
# System prepended metadata

title: Практическая работа №6 (“Fail2Ban-SSH и Brute-force attack”.)

---

# Практическая работа №6 (“Fail2Ban-SSH и Brute-force attack”.) 

## Цель работы:

Научиться настраивать Fail2Ban для SSH

## Задача:

1) Настроить SSH-сервер и SSH-клиент
2) Запретить доступ от root
3) Вывести журнал подключений пользователей SSH
4) Установить и настроить Fail2Ban для SSH
5) Провести несколько разных атак 

## Основные понятия

1) ***SSH*** - это Secure Shell (безопасная оболочка), специальный протокол для передачи данных в безопасном режиме. Он очень часто применяется для удаленного управления компьютерами и устройствами по сети.

2) ***Fail2Ban*** - это бесплатная популярная программная платформа с открытым исходным кодом, разработанная для предотвращения вторжений, которую можно использовать для защиты вашего сервера от атак методом перебора паролей. Одной из главных задач Fail2ban является блокировка IP-адреса, активность которого имеет явный вредоносный признак.

3) ***Hydra*** - это программное обеспечение с открытым исходным кодом для перебора паролей в реальном времени от различных онлайн сервисов, веб-приложений, FTP, SSH и других протоколов. Это распараллеленный взломщик для входа в систему, он поддерживает множество протоколов для осуществления атак.


## Подготовка к работе

1) Для начала нужно обновиться:

> sudo apt-get update

2) Затем установим утилиту Fail2Ban

> sudo apt-get install fail2ban

После установки данной утилиты мы должны прописать команду для активации: 

> service fail2ban start

3) После этого установим Hydra:

> sudo apt-get install hydra

Мы можем начинать!

## Работа с SSH (Сервер)

Установка пакетов SSH:

> sudo apt-get install ssh

После установки проверим состояние SSH:

> service sshd status

![](https://i.imgur.com/IgXXKKq.png)

Режим работы SSH-сервера с настройками по-умолчанию хоть и является вполне работоспособным для небольших частных сетей, всё же нуждается в задании некоторых важных параметров для использования на высоконадёжных публичных серверах. Настройки демона хранятся в файле ***/etc/ssh/sshdconfig***

Просмотреть его содержимое можно командой: 

> cat /etc/ssh/sshd_config

В первую очередь следует обратить внимание на следующие параметры: Port, AddressFamily, ListenAddress.

***Port***

Глобально задаёт номер порта, через который будет работать соединение и если оставить его стандартным, т. е. 22, то велика вероятность, что он будет слишком часто сканироваться роботами.

![](https://i.imgur.com/64EqyOz.png)

***AddressFamily*** и ***ListenAddress***

![](https://i.imgur.com/xGdXYwn.png)

Если  необходимо использовать доступ по паролю, то обязательно нужно отключать авторизацию по пустому паролю:

> PermitEmptyPasswords no

![](https://i.imgur.com/9RNcyA1.png)

Следует также отключать root-доступ:

> PermitRootLogin no

![](https://i.imgur.com/L8WKE0Q.png)

Для применения сделанных настроек необходим перезапуск SSH-сервера:

> sudo systemctl restart sshd

Итоговый файл конфигурации выглядит следуюзим образом:

![](https://i.imgur.com/UzjfS6u.png)
![](https://i.imgur.com/Dubksrz.png)

Остальное отавить по-умолчанию.

Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей:

> PubkeyAuthentication yes

Следует заметить, что в таком случае серверу необходимо явно указывать, где хранятся открытые ключи пользователей. Это может быть как один общий файл для хранения ключей всех пользователей (обычно это файл etc/.ssh/authorized_keys), так и отдельные для каждого пользователя ключи. Второй вариант предпочтительнее в силу удобства администрирования и повышения безопасности:

> AuthorizedKeysFile etc/ssh/authorized_keys # Для общего файла
> 
> AuthorizedKeysFile %h/.ssh/authorized_keys # Файл -> пользователь

Во втором варианте благодаря шаблону автоподстановки с маской «%h» будет использоваться домашний каталог пользователя.


## Fail2Ban знакомство

Все файлы конфигурации хранятся в следующей директории:

> ls -al /etc/fail2ban

Самый важный файл в данной конфигурации ***jail.conf***, поскольку в нём содержатся фильтры по умолчанию.

Пример вывода:

![](https://i.imgur.com/IQfU8S2.png)

На моём примере вывода можно заметить файл с названием ***jail.local***, я его создала для того, чтобы не потерять записанный мною фильтр при перезапуске Fail2Ban.

Чтобы создать этот файл, нужно прописать команду ***nano jail.conf***, находять в директории /etc/fail2ban.

Далее нужно вписать следующие данные:

![](https://i.imgur.com/avJuaNO.png)

В логах под названием ***auth.log*** показываются все попытки аунтификации по sshd.

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

> service fail2ban restart

Удостоверюсь, что Fail2Ban активен: 

> service fail2ban status

Пример вывода:

![](https://i.imgur.com/RAyJjJK.png)

### Проверка работоспособности

Попробуем подключиться по ssh и ввести три раза неправильно пароль:

Пример вывода:

![](https://i.imgur.com/GZjPV2d.png)

## Вывод журнала подключений 

Попробую подключиться по SSH:

![](https://i.imgur.com/jhlyaAR.png)

Затем проверю на сервере историю подключений:

> cat /var/log/auth.log

![](https://i.imgur.com/futjB2k.png)

## Проведение атак

### Fail2Ban VS Patator

Patator – это инструмент атак Brute-forcе для многоцелевого и гибкого использования в рамках модульной конструкции. Он использует инструменты и скрипты атак для получения паролей.

Необходимо создать 2 файла: 

1. Файл с возможными именами пользователя

> sudo touch users_name.txt

![](https://i.imgur.com/KLa6yR9.png)


2. Файл с возможными паролями пользователя

> sudo touch passwords.txt

![](https://i.imgur.com/s0gfqSO.png)

Посмотрим свой ip адрес:

![](https://i.imgur.com/RKeVbxt.png)

Чтобы начать брутфорс-атаку, необходимо использовать команду:

> patator ssh_login host=192.168.176.139 user=FILE0 password=FILE1 0=user_name.txt 1=passwords.txt -x ignore:mesg='Authentication failed'

Где: 

`host=` - ip адрес цели

`user=FILE0 password=FILE1` - данные, которые будет использовать Potator при брутфорс-атаке

`0=user_name.txt 1=passwords.txt` - файлы, созданные нами, именно из них Potator будет брать данные для брутфорса

`-х ignore:mesg= 'Authentication failed'` - команда не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально. То есть в зависимости от версии и настроек сервера, сообщение об неудачной аутентификации может быть другим

![](https://i.imgur.com/X8De3hc.png)

### Patator без Fail2Ban

![](https://i.imgur.com/syLfRVb.png)


### Fail2Ban VS Hydra

При использовании такого инструмента, как Hydra, необходимо знать имя пользователя, в сторону которого будет проводиться брутфорс-атака.

Попробуем использовать Hydra:

> hydra -V -f -t 4 -l olpeach -P ./passwords.txt ssh://192.168.176.139

Где:

`l – использовать логин;`
`P – использовать пароль из файла со списком;`


![](https://i.imgur.com/6fTs62K.png)

### Hydra без Fail2Ban

![](https://i.imgur.com/ORod2Fl.png)


### Fail2Ban VS Medusa

В нашем случае воспользуемся командой: 

> medusa -h 192.168.176.139 -u olpeach -P passwords.txt -M ssh -f -v 6

`-h` - IР-адрес жертвы
`-u` - Логин
`-Р` - Путь к словарю
`-М` - Выбор модуля
`-f` - Остановка после нахождения валидной пары логин/пароль
`-v` - Настройка отображения сообщений на экране во время процесса подбора

![](https://i.imgur.com/nz6VXaN.png)

### Medusa без Fail2Ban

![](https://i.imgur.com/gIAMZok.png)
