На одном из чужих серверов, на котором пришлось выполнять некоторые работы, заметил новый для себя инструмент 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/
Отправить комментарий