Geo-blocking в nginx через ngx_http_geoip2_module + MaxMind GeoLite2 database. Lookup IP → country code → allow/deny через map или if. Полезно для compliance (GDPR, sanctions), reducing bot traffic. Минусы: VPN легко обходит, legitimate travellers блокируются, MaxMind требует регистрации (free tier OK).
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
apt install libnginx-mod-http-geoip2geoip2 /path/GeoLite2-Country.mmdb { $geoip_country_code country iso_code; }map $geoip_country_code $blocked { default 0; CN 1; RU 1; }if ($blocked) { return 403; }geoipupdate daemon (monthly)curl -H "X-Forwarded-For: 1.2.3.4" https://example.com| Сценарий | Конфиг |
|---|---|
| Basic country blocking | # nginx.conf http:
geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
$geoip_country_code country iso_code;
}
map $geoip_country_code $blocked {
default 0;
CN 1;
KP 1;
}
# server:
if ($blocked) { return 403; } |
| Whitelist only (allow only some) | map $geoip_country_code $allowed {
default 0;
US 1;
CA 1;
GB 1;
DE 1;
}
if ($allowed = 0) { return 403; } |
| Custom page для blocked | location = /blocked.html {
internal;
root /var/www/static;
}
if ($blocked) { error_page 403 /blocked.html; return 403; } |
| Allow admin IP bypass | set $skip 0;
if ($remote_addr = "1.2.3.4") { set $skip 1; }
if ($blocked = 1) { set $skip "${skip}1"; }
if ($skip = 1) { return 403; } |
| geoipupdate daemon | # /etc/GeoIP.conf
AccountID XXX
LicenseKey YYY
EditionIDs GeoLite2-Country
# Cron: 0 3 1 * * /usr/bin/geoipupdate |
$http_cf_ipcountry или real_ip_headerИнструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.
Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.
Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.
Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.
Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.
аудит HTTP-заголовков
проверка конфигурации
CSP и HSTS настройка
соответствие стандартам
Strict-Transport-Security.Server: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.DENY или SAMEORIGIN.nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.Server, X-Powered-By, X-AspNet-Version из ответов.История security-проверок и мониторинг HTTP-заголовков безопасности.
Зарегистрироваться (FREE)Cloudflare: simple dashboard toggle, работает до вашего origin. nginx: гибче, нет зависимости от CDN. Для критичных security layer — оба.
MaxMind GeoLite2 — free, good accuracy, standard. IP2Location — commercial, больше деталей (proxy/VPN detection).
Whitelist его IP ДО country check. Или отдельный admin.example.com без geo-block.
Compliance sanctions: CU, IR, KP, SY. Security: countries с высокой bot activity. Business: где у вас нет support.