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

## Что такое Fail2Ban?

**Fail2Ban** — это бесплатная программа, которая **защищает сервер от взлома**.\
Если кто-то слишком много раз пытается угадать ваш пароль — Fail2Ban блокирует его IP.

## Что нужно перед началом

* Сервер с **Debian 12**
* Установлен **FastPanel**
* Доступ к серверу по **SSH** (логин и пароль или ключ)

{% content-ref url="/pages/vnxh4CdTILQ5G7Sfyf0d" %}
[Как открыть терминал и подключиться к серверу по SSH?](/pomosh-i-spravka/infrastruktura/kak-otkryt-terminal-i-podklyuchitsya-k-serveru-po-ssh.md)
{% endcontent-ref %}

Если не знаете, как подключиться — обратитесь к администратору или в техподдержку хостинга.

## Пошаговая установка Fail2Ban

Ниже описана базовая настройка Fail2Ban на Debian 12. Эти шаги помогут вам быстро запустить защиту от перебора паролей (brute-force) и других попыток несанкционированного доступа.

### Шаг 1. Подключение к серверу по SSH

1. Откройте терминал (или программу PuTTY на Windows).
2. Подключитесь к серверу по SSH:

```bash
ssh root@ВАШ_IP_АДРЕС
```

Введите пароль, если будет запрошен.

### Шаг 2. Установка Fail2Ban

Выполните по очереди команды:

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

Это установит Fail2Ban на сервер.

### Шаг 3. Базовая настройка Fail2Ban

Создайте файл с пользовательскими настройками:

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

Теперь отредактируем файл:

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

Найдите блок `[sshd]` и замените его на:

```bash
[sshd]
enabled = true
port    = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
```

Объяснение:

* **enabled = true** — включаем защиту SSH
* **maxretry = 5** — после 5 неверных попыток IP блокируется
* **bantime = 3600** — блокировка на 1 час (3600 секунд)

Нажмите **Ctrl+O** (сохранить), затем **Enter**, потом **Ctrl+X** (выйти).

### Шаг 4. Запуск и автоматический старт

Запускаем Fail2Ban и включаем автозапуск:

```bash
systemctl start fail2ban
systemctl enable fail2ban
```

### Шаг 5. Проверка

Проверим, что Fail2Ban работает:

```bash
fail2ban-client status
```

Вы должны увидеть:

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

Чтобы увидеть заблокированные IP:

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

## Советы

* Если используете другой SSH-порт, например `2222`, укажите:

```bash
port = 2222
```

Если боитесь случайно заблокировать себя, добавьте свой IP в "белый список": В файле `/etc/fail2ban/jail.local` добавьте:

```bash
ignoreip = 127.0.0.1 ВАШ_IP
```

* Замените `ВАШ_IP` на ваш реальный IP.

{% hint style="info" %}
Теперь Fail2Ban будет **автоматически защищать сервер** от взлома и блокировать злоумышленников.
{% endhint %}


---

# 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://docs.iexexchanger.com/obshaya-informaciya/centr-bezopasnosti/nastroika-zashity-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.
