На одном из чужих серверов, на котором пришлось выполнять некоторые работы, заметил новый для себя инструмент 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 serverDocumentation=man:fail2rest(1)ConditionPathExists=/etc/fail2rest.jsonAfter=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/fail2resthttps://github.com/Sean-Der/fail2web
Обсуждение: www.reddit.com/r/linux…_web_gui
#security #fail2ban