> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/nachalo-raboty/centr-bezopasnosti/nastroika-zashity-fail2ban.md).

# Настройка защиты Fail2ban

Fail2Ban — это система автоматической защиты сервера от перебора паролей, сканирования портов и попыток несанкционированного доступа.

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

Для проектов iEXExchanger использование Fail2Ban является одной из рекомендуемых мер безопасности.

***

## Что защищает Fail2Ban

После настройки Fail2Ban может автоматически обнаруживать:

* перебор паролей SSH;
* попытки подбора логинов;
* массовые ошибки авторизации;
* автоматические сканеры уязвимостей;
* ботов, пытающихся получить доступ к серверу.

При обнаружении подозрительной активности IP-адрес нарушителя автоматически блокируется на заданное время.

***

## Перед началом

Перед настройкой убедитесь, что:

* сервер работает под управлением Debian 12;
* установлен FastPanel;
* имеется SSH-доступ к серверу;
* вы знаете свой IP-адрес.

Если вы не знаете свой IP-адрес, откройте сайт:

```
https://whatismyipaddress.com
```

или

```
https://ipinfo.io
```

Сохраните свой IP-адрес. Он потребуется для добавления в список исключений.

***

## Подключение к серверу

Подключитесь к серверу по SSH.

{% content-ref url="/spaces/uyjsNtEAtO6Sby8CHWyD/pages/cCEoFDjTDIufy3NUEakd" %}
[Подключение к серверу по SSH](/help-center/upravlenie-serverom/podklyuchenie-k-serveru-po-ssh.md)
{% endcontent-ref %}

Пример подключения:

```bash
ssh root@IP_АДРЕС_СЕРВЕРА
```

Пример:

```bash
ssh root@192.168.1.100
```

После подключения введите пароль пользователя root.

***

## Установка Fail2Ban

Обновите список пакетов:

```bash
apt update
```

Установите Fail2Ban:

```bash
apt install fail2ban -y
```

После завершения установки проверьте состояние службы:

```bash
systemctl status fail2ban
```

Если установка выполнена успешно, служба должна находиться в состоянии:

```
active (running)
```

***

## Создание пользовательской конфигурации

Не рекомендуется изменять системный файл:

```
/etc/fail2ban/jail.conf
```

Все пользовательские настройки необходимо хранить отдельно.

Создайте файл конфигурации:

```bash
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```

После этого откройте файл:

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

***

## Настройка защиты SSH

Найдите раздел:

```
[sshd]
```

Замените его содержимое следующим образом:

```ini
[sshd]
enabled = true
port = ssh
backend = systemd

maxretry = 5
findtime = 10m
bantime = 24h

ignoreip = 127.0.0.1/8 ВАШ_IP
```

Пример:

```ini
[sshd]
enabled = true
port = ssh
backend = systemd

maxretry = 5
findtime = 10m
bantime = 24h

ignoreip = 127.0.0.1/8 203.0.113.10
```

***

## Объяснение настроек

<table><thead><tr><th width="255.23046875">Параметр</th><th>Значение</th></tr></thead><tbody><tr><td>enabled</td><td>Включает защиту SSH</td></tr><tr><td>port</td><td>Порт SSH</td></tr><tr><td>backend</td><td>Источник системных журналов</td></tr><tr><td>maxretry</td><td>Количество допустимых ошибок авторизации</td></tr><tr><td>findtime</td><td>Период анализа попыток входа</td></tr><tr><td>bantime</td><td>Время блокировки IP-адреса</td></tr><tr><td>ignoreip</td><td>Белый список IP-адресов</td></tr></tbody></table>

Логика работы:

Если за 10 минут будет выполнено более 5 неудачных попыток входа, IP-адрес автоматически блокируется на 24 часа.

***

## Если используется нестандартный SSH-порт

Если SSH работает на нестандартном порту, например:

```
2222
```

укажите его в настройках:

```ini
port = 2222
```

Проверить текущий SSH-порт можно командой:

```bash
ss -tulpn | grep ssh
```

***

## Перезапуск Fail2Ban

После изменения конфигурации сохраните файл и выполните:

```bash
systemctl restart fail2ban
```

Проверьте состояние службы:

```bash
systemctl status fail2ban
```

***

## Включение автоматического запуска

Чтобы защита запускалась автоматически после перезагрузки сервера:

```bash
systemctl enable fail2ban
```

***

## Проверка работы

Посмотреть активные правила:

```bash
fail2ban-client status
```

Пример результата:

```
Status
|- Number of jail: 1
`- Jail list: sshd
```

***

## Просмотр заблокированных IP-адресов

Посмотреть информацию по защите SSH:

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

Пример:

```
Status for the jail: sshd
|- Currently failed: 0
|- Total failed: 15
`- Banned IP list:
   192.168.1.15
   10.10.10.10
```

***

## Разблокировка IP-адреса

Если необходимо вручную снять блокировку:

```bash
fail2ban-client set sshd unbanip IP_АДРЕС
```

Пример:

```bash
fail2ban-client set sshd unbanip 203.0.113.10
```

***

## Просмотр журналов Fail2Ban

Для просмотра последних событий:

```bash
tail -f /var/log/fail2ban.log
```

В журнале отображаются:

* блокировки IP-адресов;
* разблокировки;
* ошибки конфигурации;
* информация о работе службы.

***

## Рекомендации по безопасности

Для максимальной защиты сервера рекомендуется дополнительно:

* изменить стандартный SSH-порт;
* использовать авторизацию по SSH-ключам;
* отключить вход по паролю для root;
* ограничить доступ к SSH по IP через Firewall;
* включить двухфакторную аутентификацию для панели управления;
* использовать Cloudflare для защиты публичных сервисов.

Fail2Ban не заменяет Firewall или Cloudflare, а является дополнительным уровнем защиты сервера.
