> For the complete documentation index, see [llms.txt](https://surftest.gitbook.io/axelar-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://surftest.gitbook.io/axelar-wiki/russian/bezopasnost/file-2-ban.md).

# File 2 ban

[File2ban ](https://www.fail2ban.org/wiki/index.php/Main_Page)используется для блокировки IP адресов. Технология простая - он сканирует логи (к примеру /var/log/apache/error\_log) и банит Ip которые проявляют вредоносные признаки, к примеру превышают макс. количество попыток входа.

В настройках задаются параметры - сколько попыток доступа можно сделать за указанный промежуток времени, и интервал времени бана.

{% hint style="warning" %}
Однако надо понимать, что File2Ban снижает, но не устраняет полностью риск кражи информации с сервера.

Для серьезной защиты сервера требуется установить [вход по SSH ключу](/axelar-wiki/russian/bezopasnost/vkhod-po-ssh-klyuchu-+-otklyuchenie-parolya.md), либо [2FA](/axelar-wiki/russian/bezopasnost/2fa-dlya-ssh.md).
{% endhint %}

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

```
sudo apt install fail2ban
```

Запустим и сделаем автоматический запуск демона при каждой загрузке:

```
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
```

### Настройка

Все параметры банов задаются в конфигурационном файле **jail.conf**, который находится по адресу `/etc/fail2ban/jail.conf`

По умолчанию, после установки мы имеем такие настройки для бана по SSH:

```
[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
```

Где:\
**bantime** - \[мин] время на которое банится ip.\
**findtime** - \[мин] интервал времени за который можно попытаться войти на сервер maxretry раз.\
**maxretry** - \[раз] разрешенное количество попыток входа, за интервал времени findtime.

Если вы решили изменить настройки, то открываем редактор:

```
sudo nano /etc/fail2ban/jail.conf
```

После изменения параметров перезагрузим сервис и посмотрим логи:

```
sudo systemctl reload fail2ban
sudo systemctl daemon-reload
journalctl -b -u fail2ban
```

Если возникает ошибка связанная с тем, что file2ban не находит log файл, в который записывать логи:

![](https://524528777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff8kEXtTHjW0sndWFpCyO%2Fuploads%2F4MAcx7ZTecaRPLwbFKKj%2F%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%20%D0%BE%D1%82%202022-04-01%2012-42-48.png?alt=media\&token=f2619888-2080-4037-95f0-a90eaae65949)

то решим эту проблему так:

```
# Проверяем, существует ли файл
find / -name "sshd_log"

# если нет, создаем файл сами
touch /var/log/sshd_log

#открываем file2ban чтобы прописать путь к логам
sudo nano /etc/fail2ban/jail.conf

# Найдем блок [sshd]
# Удаляем строчку 
logpath = %(sshd_log)s
# Вставляем строчку, чтобы прописать путь
logpath  = /var/log/sshd_log

# Перезагружаем file2ban
sudo systemctl daemon-reload
sudo systemctl reload fail2ban

# Проверяем
sudo systemctl status fail2ban
journalctl -b -u fail2ban
```

![](https://524528777-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Ff8kEXtTHjW0sndWFpCyO%2Fuploads%2F8Bs78sYJymnzEAl2ltTZ%2F%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%20%D0%BE%D1%82%202022-04-01%2015-58-37.png?alt=media\&token=d3ec53a2-2a99-46da-8333-f75ef6343e2d)

Готово!🎉 Вы защитили свой сервер от атаки с подбором паролей и пользователей.

С помощью Fila2Ban можно защищать не только SSH, но и apache, courier и т.д. [Поднобнее](https://www.fail2ban.org/wiki/index.php/Fail2ban:About).
