Проблема с блокировкой страны GeoIP в Apache 2.4 при использовании модулей geoip/maxminddb

Недавно мы перенесли мой сервер Apache с версии 2.2 на версию 2.4. Сейчас мы пытаемся заблокировать трафик из определенных стран, используя MaxMindDB и GeoIP. Мы пытались использовать старые модули и конфигурацию geoip, а также модуль mod_maxminddb, но безуспешно.

Ссылаясь на репозиторий GitHub, расположенный по адресу https://github.com/maxmind/geoip-api-c . Пытаясь решить эту проблему, мы также поэкспериментировали с модулем mod_maxminddb, как предложено в другом репозитории: https://github.com/maxmind/mod_maxminddb . Однако даже после внедрения этого модуля мы так и не добились ожидаемых результатов.

Я проверил документацию для обоих модулей и не вижу очевидных ошибок в моей конфигурации. Я также попытался перезапустить Apache, но проблема не устранена.

Я не уверен, что еще попробовать. Может ли кто-нибудь помочь мне решить эту проблему?

Шаги, которые уже опробованы:

Установите httpd, используя официальную документацию, в ОС RHEL 9. Установите модуль mod_geoip2, но не смогли установить его с помощью yum, перепробовали много вещей, но не смогли установить этот модуль. Модуль modgeoip не установлен, поэтому проверьте maxminddb, который уже установлен. Настройте модуль для блокировки трафика из определенных стран. И перезапустите Apache.

Ожидаемое поведение:

Трафик из заблокированных стран должен быть заблокирован для доступа к сайту.

Фактическое поведение:

Трафик из заблокированных стран по-прежнему может получить доступ к сайту.

ПРИЛОЖЕННЫЙ ФАЙЛ Конф. виртуального хоста

      <VirtualHost *:80>
ServerName URL
DocumentRoot "/var/www/html"
<Location />
    MaxMindDBEnable On
    SetEnvIf CLIENTIP "(.*)" MMDB_ADDR=$1
    MaxMindDBEnv CB_COUNTRY_CODE COUNTRY_DB/country/iso_code
    MaxMindDBEnv CB_COUNTRY_NAME COUNTRY_DB/country/names/en
    SetEnvIfExpr "env('CB_COUNTRY_CODE') =~ /^US$|^CA$|^IN$/i" match
    Header always set X-Country-Code_match "%{match}e"
    SetEnvIf CB_COUNTRY_CODE ^(US|CA|IN) AllowCountry
    Header always set MMDB_ADDR "%{MMDB_ADDR}e"
    Header always set CB_COUNTRY_CODE "%{CB_COUNTRY_CODE}e"
    Header always set X-Country-Allow "%{AllowCountry}e"

</Location>

SetEnvIf REMOTE_ADDR "(.+)" CLIENTIP=$1
SetEnvIf X-Forwarded-For "^([0-9.]+)" CLIENTIP=$1
ErrorLog /var/log/httpd/error_log-web1
CustomLog /var/log/httpd/access_log-web1 combined env=!forwarded
LogFormat "%{CLIENTIP}e %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog /var/log/httpd/URL.log proxy env=forwarded

LogFormat "%{CLIENTIP}e \"%{Referer}i\" %h %l %u %t \"%r\" %>s %b duration:%T/%D balancer:%{BALANCER_WORKER_NAME}e Changed:%{BALANCER_ROUTE_CHANGED}e Sticky:%{BALANCER_SESSION_STICKY}e" enhancedlog
SetEnvIf Request_URI "^/zkau$" tzkau
CustomLog  /var/log/httpd/enhancedlog.log-web1 enhancedlog env=tzkau

LogFormat "%{CLIENTIP}e \"%{Referer}i\" url:%U %h %l %u %t \"%r\" %>s %b clientip:%a duration:%T/%D balancer:%{BALANCER_WORKER_NAME}e sessionRoute:%{BALANCER_SESSION_ROUTE}e workerRoute:%{BALANCER_WORKER_ROUTE}e Changed:%{BALANCER_ROUTE_CHANGED}e Sticky:%{BALANCER_SESSION_STICKY}e"
TransferLog     /var/log/httpd/new-log-web1 

RewriteEngine on

Header always set Strict-Transport-Security "max-age=63072000"

RewriteCond %{REQUEST_URI} ^/Keyword/index\.zul
RewriteRule (.*) /index\.zul [L,R]
RewriteRule ^(.*)/Keyword/?(.*) $1/$2 [L,R]
RewriteRule ^(.*)/Keyword/ $1 [L,R]

RewriteCond %{REQUEST_URI} ^/bizclub [or]
RewriteCond %{REQUEST_URI} ^/bizbox
RewriteRule (.*) https://URL [L,R=301]

RewriteCond %{HTTP_USER_AGENT} "^ELB-HealthChecker" [NC,OR]
RewriteRule .* - [S=3]
RewriteCond %{HTTP_HOST} !^Keyword\.com [or]
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule (.*) https://URL$1 [L,R=301]
ProxyPreserveHost On
ProxyPass /index.html !
ProxyPass /favicon.ico !
ProxyErrorOverride on
ProxyPass /error !
ProxyPass /error/ !
ErrorDocument 500 /error/error.html
ErrorDocument 503 /error/error.html
ErrorDocument 404 /error/error.html

ProxyPass / balancer://wwwcluster/ stickysession=JSESSIONID|jsessionid scolonpathdelim=On
ProxyPassReverse / balancer://wwwcluster/
ProxyTimeout 60000
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://wwwcluster>
BalancerMember http://<IP>:8090 route=node1 keepalive=on
ProxySet lbmethod=bytraffic
ProxySet stickysession=ROUTEID
</Proxy>
</VirtualHost>

1 ответ

Вот пример, который я сейчас использую для ограничения доступа некоторых стран:

      <IfModule mod_maxminddb.c>
MaxMindDBEnable On
MaxMindDBFile DB /usr/share/GeoIP/GeoLite2-Country.mmdb

MaxMindDBEnv MM_COUNTRY_CODE DB/country/iso_code

SetEnvIf MM_COUNTRY_CODE ^(RU|IR|IQ|IN|UA) BlockCountry
Deny from env=BlockCountry
</IfModule>
Другие вопросы по тегам