# Настройка 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://info.kservers.pro/linux/fail2ban.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
