> 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, а является дополнительным уровнем защиты сервера.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/guide/nachalo-raboty/centr-bezopasnosti/nastroika-zashity-fail2ban.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
