fail2web

На одном из чужих серверов, на котором пришлось выполнять некоторые работы, заметил новый для себя инструмент fail2web. Заинтересовался и решил посмотреть, что это такое. Это оказался web интерфейс для управления fail2ban. Так как последний я постоянно использую, решил посмотреть, как всё это выглядит.

Программа очень старая (8 лет назад написана и не развивается) и инфы по ней почти нет, кроме непосредственно репозиториев. У меня получилось разобраться и запустить. В целом, там ничего сложного.

Сначала ставим fail2rest. Это служба, которая взаимодействует с fail2ban. Написана на GO.
# dnf install golang git gcc nginx
# go get -v github.com/Sean-Der/fail2rest
# go install -v github.com/Sean-Der/fail2rest
В директории ~/go/bin будет бинарник fail2rest. Для его запуска нужно создать конфиг config.json с двумя параметрами:
{
 "Addr": "127.0.0.1:5000",
 "Fail2banSocket": "/var/run/fail2ban/fail2ban.sock"
}

После этого можно запустить fail2rest:
# fail2rest --config=config.json
Проверить работу можно отправив запрос на указанный адрес и порт:
# curl http://127.0.0.1:5000/global/ping
"pong"
Можно настроить запуск через systemd (поменяйте пути на свои):
[Unit]
Description=fail2ban REST server
Documentation=man:fail2rest(1)
ConditionPathExists=/etc/fail2rest.json
After=fail2ban.service

[Service]
ExecStart=/usr/bin/fail2rest -config=/etc/fail2rest.json

[Install]
WantedBy=multi-user.target

Теперь качаем веб интерфейс:
# git clone --depth=1 https://github.com/Sean-Der/fail2web.git /var/www/fail2web
# rm -rf /var/www/fail2web/.git
И настраиваем виртуальный хост apache или nginx. Я для простоты nginx взял:
server {
  listen    80;
  server_name YOUR_SERVER_NAME;
  auth_basic "Restricted";
  auth_basic_user_file /var/www/htpasswd;
  location / {
    root /var/www/fail2web;
  }
  location /api/ {
    proxy_pass     http://127.0.0.1:5000/;
    proxy_redirect   off;
  }
}

Не забудьте создать файл /var/www/htpasswd и добавить туда юзера. Ну и конечно желательно на HTTPS перейти, если реально будете использовать.

На этом собственно всё, можно заходить на настроенный виртуальный хост и управлять fail2ban. Сделано простенько, но функционально. Если реально постоянно какая-то движуха идёт с fail2ban, может быть полезно. Я нашёл всё то же самое, только на Docker, но уже не стал проверять.

Сразу подскажу тем, кто будет реально разбираться. Если видите в веб интерфейсе ошибку:
502 Bad Gateway - Couldn't contact fail2rest
Смотрите лог или настройки fail2ban. Например, если нет ни одного jail, будет эта ошибка. Если неправильно настроены action тоже будут ошибки. В общем, если есть какие-то проблемы с fail2ban, вы будете видеть ошибку соединения с fail2rest, что несколько сбивает с толку.

По сути эта заметка готовая инструкция. Других в интернете вообще нет, так что можно сохранить на память.

Исходники: https://github.com/Sean-Der/fail2rest
https://github.com/Sean-Der/fail2web
Обсуждение: https://www.reddit.com/r/linux/comments/294fn3/fail2web_a_fail2ban_web_gui/

إرسال تعليق

Комментировать (0)

أحدث أقدم