envip/README.md

67 lines
2.1 KiB
Markdown
Raw Normal View History

2023-09-30 23:39:54 +03:00
## envip
2023-09-30 23:31:11 +03:00
Небольшая утилита, которая позволяет реализовать динамический whitelist для caddy:
Часть поддоменов будут доступны списку явно разрешённых IP.
Список IP автоматически пополняется при успешном прохождении basic auth на отдельном поддомене.
## Установка
### Caddy
В Caddyfile необходимо добавить секцию с поддоменом для обновления whitelist (необходимо заменить [строку basic auth](https://caddyserver.com/docs/caddyfile/directives/basicauth)):
2023-10-08 23:09:59 +03:00
```
2023-09-30 23:31:11 +03:00
wh.<your.domain> {
@block {
2023-10-08 23:09:59 +03:00
not client_ip {$WHITE_LIST}
2023-09-30 23:31:11 +03:00
}
handle @block {
basicauth {
Bob $2a$14$Zkx19XLiW6VYouLHR5NmfOFU0z2GTNmpkT/5qqR7hx4IjWJPDhjvG
}
reverse_proxy localhost:50009 {
header_up X-Real-IP {remote_host}
}
}
2023-10-08 23:09:59 +03:00
respond "IP bleached! :)"
2023-09-30 23:31:11 +03:00
}
```
Пример поддомена, доступ до которого разрешён только с IP из whitelist:
2023-10-08 23:09:59 +03:00
```
2023-09-30 23:31:11 +03:00
sub.<your.domain> {
2023-10-08 23:09:59 +03:00
@block {
not client_ip {$WHITE_LIST}
2023-09-30 23:31:11 +03:00
}
2023-10-08 23:09:59 +03:00
handle @block {
redir https://wh.<your.domain>
2023-09-30 23:31:11 +03:00
}
2023-10-08 23:09:59 +03:00
reverse_proxy localhost:50001
2023-09-30 23:31:11 +03:00
}
```
В `caddy.service` необходимо добавить следующую строку в секцию `[Service]`:
```sh
Environment="WHITE_LIST=127.0.0.1/8"
```
2023-09-30 23:32:36 +03:00
Необходимо перезагрузить `caddy`:
2023-09-30 23:31:11 +03:00
```shell
systemctl daemon-reload
systemctl restart caddy
```
### envip
2023-09-30 23:32:36 +03:00
Установка бинарника:
2023-09-30 23:31:11 +03:00
```shell
mkdir /opt/envip
wget https://github.com/fruworg/envip/raw/main/envip -O /opt/envip/envip
```
2023-09-30 23:32:36 +03:00
Установка systemd-демона `envip`:
2023-09-30 23:31:11 +03:00
```shell
wget https://raw.githubusercontent.com/fruworg/envip/main/envip.service -O /etc/systemd/system/envip.service
```
Запуск envip:
```shell
systemctl enable --now envip
```