# Fail2Ban-SSH и Brute-force attack
:::spoiler Подготовка системы и установка Fail2Ban
## Подготовка системы и установка Fail2Ban
```
sudo apt update
sudo apt-get install Fail2Ban
service Fail2Ban start
```
Стартовать Fail2Ban ОБЯЗАТЕЛЬНО, так как он запускается при перезагрузке или старте ОС.
Просмотр статуса

:::
:::spoiler Настройка конфигурационного файла
## Настройка конфигурационного файла
Все файлы Fail2Ban храняться в директории /etc/fail2ban. Файл с настройками jail.conf, но он может изменяться при обновлениях, поэтому необходимо создать файл **jail.local** и писать все конфиги туда.
Нам нужно включить модуль **sshd** (*enabled = true*), выбрать порт ssh, указать путь до файла, в котором искать подключения ssh. Далее максимальное количество неудачных попыток, время бана, ip, который не блокировать.

Затем перезапускаем службу.
`sudo service fail2ban restart`
:::
:::spoiler Создание словарей
## Создание словарей
### pwdlogy
Установить гит
`sudo apt install git`
Установить утилиту
`sudo git clone https://github.com/tch1001/pwdlogy.git`
Перейти в папку **pwdlogy**
`cd pwdlogy/`
Добавить ключевые слова в файл **keywords.txt**, известные даты рождения в файл **birthday.txt**.
Запустить скрипт:
`sudo python3 pwdlogy.py`
Ввести start:
`pwdlogy > start`
Пароли сгенерировались в файл **gen.txt**.
### crunch
скачать:
`sudo apt-get install crunch`
сделать список паролей:
`crunch 3 5 ev -o ~/crunch_passwd`
3 - минимум символов в пароле
5 - максимум симвволов в пароле
ev - символы
-о - файл, куда записать вывод
:::
:::spoiler Брутфорс
## Брутфорс
### Patator
`patator ssh_login host=192.168.132.163 user=FILE0 0=/home/nik/login.txt password=FILE1 1=/home/nik/password.txt -x ignore:mesg='Authentication failed.'`

### Hydra
`hydra -V -f -t 3 -l debian-1 -P /home/nik/password.txt ssh://192.168.132.163`

### Medusa
`medusa -h 192.168.132.163 -u debian-1 -P ~/password.txt -M ssh -f`

### Metasploit
Ссылка на [гайд](https://itsecforu.ru/2018/09/26/%D0%BA%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-metasploit-framework-%D0%BD%D0%B0-ubuntu-linux-mint/?ysclid=lb0q37q28s493552609) по установке метасплойта


:::
:::spoiler 7 лаба
# “Fail2Ban и Dos/DDoS attack” на примере nginx
## Разворачивание сервера nginx на базе дистрибутивов Debian
Установка пакетов
`sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring`
Ключ для проверки целостности пакета
`curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null`
Верный ли ключ?
`gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg`

Подключение apt-репозитория для стабильной версии nginx
`echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list`
Закрепим использование этих пакетов
`echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx`
Установка nginx
```
sudo apt update
sudo apt install nginx
```
Результат:

## Защита сервера от DoS/DDoS атак через встроенные возможности nginx
В **/etc/nginx/sites-enable/default** добавляем строчку:
```
limit_req zone=ltwo burst=5 nodelay;
```
В **/etc/nginx/nginx.conf** добавляем строчки:
```
limit_conn_zone $binary_remote_addr zone=lone:10m;
limit_req_zone $binary_remote_addr zone=ltwo:10m rate=3r/s;
limit_req_zone $binary_remote_addr zone=highspeed:10m rate=10r/s;
```
Перезапускаем службу
В браузере зажимаем ctr+r
Результат:

Логи:
```
cat /var/log/nginx/error.log
```

## Защита сервера от DoS/DDoS атак с помощью fail2ban при помощи iptables в автоматическом режиме

## Защита сервера от DoS/DDoS атак с помощью fail2ban при помощи ipset в автоматическом режиме.

:::