Traefik — 2. блокировка по странам
3 июля 2023
В предыдущей статье я рассказывал как установить и настроить обратный прокси Traefik для организации доступа к различным сервисам и сайтам. Теперь займёмся немного безопасностью и запретим (или разрешим) доступ из некоторых стран.
Для этого будем использовать плагин GeoBlock.
Описание плагина и список стран для указания в конфигурации можно найти по ссылке.
Для подключения плагина необходимо добавить в конец файла статической конфигурации /data/traefik.yml следующие строки:
experimental: plugins: geoblock: moduleName: "github.com/PascalMinder/geoblock" version: "v0.2.6"
Теперь в файл динамической конфигурации (/data/custom/host.yml) добавляем ещё один middleware в соответствующий раздел:
http: middlewares: my-geoblock: plugin: geoblock: allowLocalRequests: "true" allowUnknownCountries: "false" api: https://get.geojs.io/v1/ip/country/{ip} apiTimeoutMs: "750" cacheSize: "15" blackListMode: false countries: - RU - BY forceMonthlyUpdate: "true" logAllowedRequests: "false" logApiRequests: "true" logLocalRequests: "false" unknownCountryApiResponse: nil
Здесь необходимо обратить внимание на следующие параметры:
- allowLocalRequests — разрешать запросы из локальной сети. Ставим true, если это необходимо.
- blackListMode — режим чёрного списка. Ставим true, если вам нужно по-умолчанию разрешать доступ всем, кроме указанных в списке. false — режим белого списка.
- countries — здесь перечисляем список стран, которые нам нужно запретить (или разрешить).
Осталось лишь добавить созданный модификатор к необходимым доменам в разделе routers. Например:
http: routers: example-ssl: entryPoints: - https service: web-server1 middlewares: - "my-geoblock" rule: Host(`example.com`) || Host(`www.example.com`)
