From 52aa6f783559ce38f4599b50439a1e7e324b40f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD?= Date: Sun, 1 Oct 2023 02:31:11 +0600 Subject: [PATCH] Create README.md --- README.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..41bcb58 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# envip +Небольшая утилита, которая позволяет реализовать динамический whitelist для caddy: +Часть поддоменов будут доступны списку явно разрешённых IP. +Список IP автоматически пополняется при успешном прохождении basic auth на отдельном поддомене. + +## Установка +### Caddy + +В Caddyfile необходимо добавить секцию с поддоменом для обновления whitelist (необходимо заменить [строку basic auth](https://caddyserver.com/docs/caddyfile/directives/basicauth)): +```sh +wh. { + @block { + not remote_ip forwarded {$WHITE_LIST} + } + handle @block { + basicauth { + Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG + } + reverse_proxy localhost:50009 { + header_up X-Real-IP {remote_host} + } + } + respond "IP already added! :)" +} +``` + +Пример поддомена, доступ до которого разрешён только с IP из whitelist: +```sh +sub. { + @allow { + remote_ip forwarded {$WHITE_LIST} + } + handle @allow { + reverse_proxy localhost:50001 + } + respond 403 +} +``` + +В `caddy.service` необходимо добавить следующую строку в секцию `[Service]`: +```sh +Environment="WHITE_LIST=127.0.0.1/8" +``` + +Необходимо перезагрузить caddy: +```shell +systemctl daemon-reload +systemctl restart caddy +``` + +### envip +Добавление бинарника: +```shell +mkdir /opt/envip +wget https://github.com/fruworg/envip/raw/main/envip -O /opt/envip/envip +``` + +Добавление демона systemd: +```shell +wget https://raw.githubusercontent.com/fruworg/envip/main/envip.service -O /etc/systemd/system/envip.service +``` + +Запуск envip: +```shell +systemctl enable --now envip +``` +`````