# Настройка fail2ban

Данный инструмент предназначен для противодействия брутфорсу на сервере. Примерно круглосуточно каждый узел интернета атакуется тысячами ботов, которые брутят SSH, порты баз данных и подобное. Буквально нет ни минуты, когда какой-то бот не производит попытку залогиниться на ваш сервер.

**Для чего это делается?** Как правило так собирается ботнет, ищут слабые узлы, в большинстве своем под удар попадают Redis и Docker серверы, так как те по умолчанию не имеют какого-либо контроля доступа в случае открытия их в публичный доступ.

Fail2ban же предназначен для отражения подобного рода постоянных атак.

### <mark style="color:orange;">Установка</mark>

Мы рассмотрим установку инструмента на примере Debian & Ubuntu.

Для начала можно обновить пакеты, если вы этого не сделали ранее.

```bash
sudo apt update && sudo apt upgrade -y
```

После чего установить и поставить в автозагрузку fail2ban.

```bash
sudo apt install fail2ban
sudo systemctl enable fail2ban
```

### <mark style="color:orange;">Настройка</mark>

Основным конфигурационным файлов является `/etc/fail2ban/jail.conf`, но мы можем создать свой `/etc/fail2ban/jail.local` для удобства, его F2B будет обрабатывать в первую очередь.

```bash
nano /etc/fail2ban/jail.local
```

Формально данный софт умеет защищать по большому множеству протоколов, но как правило используют только защиту SSHD, пример конфигурации:

```systemd
[sshd]
port      = 22
enabled   = true
maxretry  = 3
findtime  = 1h
bantime   = 1d
ignoreip  = 127.0.0.1/8 1.1.1.1
```

Данный конфиг означает, что IP с которого будет произведено 3 неудачные попытки войти по SSH (на порту 22) за последний час попадет в бан на 1 сутки. Игнорируется IP `1.1.1.1` и адреса из подсети `127.0.0.1/8`&#x20;

### <mark style="color:orange;">Запуск и проверка</mark>

Команда для запуска.

```bash
sudo systemctl start fail2ban
```

И также команда для проверки количества блокировок по SSH-протоколу.

```bash
sudo fail2ban-client status sshd
```
