Как создать fail2ban jail и журнал доступа для вашего собственного приложения - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу, чтобы мое собственное маленькое приложение nuxt / vue.js использовало fail2ban для блокировки пользователей при слишком большом количестве неверных попыток входа в систему.Я думаю, что я понял, как настроить Fail2Ban сам.

Мой вопрос: Какой синтаксис должен использовать мой access.log, чтобы он понимался с помощью fail2ban прямо из коробки?Я не нашел никаких ответов на этот вопрос.

access.log

Каков наилучший метод и какой подход будет работать для fail2ban прямо из коробки?Я воображаю что-то вроде этого:

2019-02-17 15:12:10 login-error from 192.168.1.1 Invalid user 'administrator'
2019-02-17 16:11:10 login-error from 192.168.1.1 Invalid password for user 'admin'

Базовая настройка

1) Установить Fail2Ban

sudo apt-get install fail2ban

2) Создать свою собственную тюрьму

sudo vim /etc/fail2ban/jail.local

Вставьте содержимое (и отредактируйте по своему усмотрению)

[my-app]

enabled  = true
port     = http,https
filter   = my-app
logpath  = /home/my-user/my-app/logs/access.log
maxretry = 5

4) Создайте фильтр

sudo vim /etc/fail2ban/filter.d/my-app.local

Вставьте содержимое в свой my-app.local:

[Definition]
failregex = login-error from <HOST>

3) Перезапустите службу

sudo systemctl restart fail2ban.service

Теперь это будет контролировать my-app / logs / access.log и блокировать IP после более чем 5 неправильных попыток один разжурнал настроен.

1 Ответ

0 голосов
/ 25 февраля 2019

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

Наличие формата журналакак у вас, где якорь в начале строки не содержит пользовательских данных (например, имени пользователя), прежде чем IP облегчает написание сильного регулярного выражения.

Этот шаблон учитывает большинство CVE вfail2ban .

Для предотвращения этого в вашем шаблоне есть руководство в документе FILTERS в хранилище.

В случае поставщика фильтров,начальный якорь ^ должен быть включен в регулярное выражение (предположим, что дата / время были удалены).

Вы также должны заблокировать недопустимого пользователя так же, как и неверный пароль.Без этого пользователь мог бы перечислить, какие действительные пользователи существуют, пытаясь один и тот же логин 5 раз.

...