هناك العديد من الأصدقاء الذين أنشأوا مواقع التجارة الخارجية ويريدون تقييد الوصول إلى مواقعهم الإلكترونية عن طريق عناوين IP المحلية. وهناك أيضًا بعض الأصدقاء الذين تخزن مواقعهم الإلكترونية موارد يجب حظرها من عناوين IP محددة لأسباب مختلفة. وقد شهد بعض الأصدقاء هجمات. معظم عناوين IP المصدر تأتي من الخارج، وتريد منع عناوين IP الأجنبية من الوصول إلى موقع الويب.

بغض النظر عن السبب، غالبًا ما يتم استخدام حظر وحظر الوصول إلى IP من مناطق وبلدان محددة في بناء مواقع الويب اليومية لدينا. إذا كنت تستخدم PHP، فإن الطريقة البسيطة نسبيًا هي إضافة التعليمات البرمجية لتحديد عنوان IP في ملف PHP واستخدام مكتبة IP للمقارنة. إذا كان عنوان IP ضمن نطاق الوصول المقيد، فامنعه من الاستمرار في الوصول.

إذا كان موقع الويب هو Nginx، فيمكنك استخدام وحدة Nginx-ngx_http_geoip_module مباشرة، ويمكن أن تكون هذه الوحدة دقيقة لعنوان IP الخاص بالبلد والمقاطعة والمدينة وما إلى ذلك، ويتم تنفيذ جميع عمليات تحديد الهوية وحظر الوصول بواسطة Nginx، لذلك فهي كذلك. أكثر توفيرًا للموارد مقارنةً بـ PHP، لكن Nginx أكثر صعوبة في التجميع.

إذا كان موقع الويب مبنيًا على خادم VPS أو خادم مستقل، فيمكنك استخدام جدار حماية Linux مباشرةً واستخدام قواعد iptables لمنع الوصول إلى IP من بلدان ومقاطعات محددة. بالطبع، لا داعي للقلق لمستخدمي WordPress بشأن Nginx وiptables ومشكلات التكوين الأخرى، لأن WordPress يحتوي بالفعل على العديد من المكونات الإضافية التي تقيد الوصول إلى IP.

ستشارك هذه المقالة أربع طرق لحظر مواقع الويب وحظر إعدادات الوصول إلى IP في مناطق وبلدان محددة: كود PHP ووحدة Nginx وجدار الحماية iptables ومكون WordPress الإضافي. إذا كنت منزعجًا دائمًا من الهجمات الضارة المختلفة أثناء عملية إنشاء موقع الويب، فيمكنك تجربة الطرق التالية:

  1. خمس نصائح أمنية لاستخدام لوحة تحكم VPS مجانية - لا تدع المتسللين يستغلون ذلك
  2. يمكّن WordPress طريقة تسريع ذاكرة التخزين المؤقت Nginx fastcgi_cache - مثال لتكوين Nginx
  3. عشر نصائح مجانية لتسريع CDN من CloudFlare قد لا تعرفها -SSLDDOSCache

ملاحظة: تم التحديث في 25 مارس 2019، فيما يتعلق بمشكلات أمان VPS، قد يتجاهل العديد من الأصدقاء تكوين SSH لـ VPS نفسه، فيما يلي إستراتيجيات التعزيز: حماية أمان مضيف VPS والخادم: منفذ تعديل SSH ، أضف القائمة البيضاء، تسجيل الدخول بالمفتاح فقط.

ملاحظة: تم التحديث في 19 مارس 2020 ، إذا تم اختراق موقع الويب الخاص بك، فيمكنك الرجوع إلى الطرق التالية لحل المشكلة: تحليل استكشاف أخطاء اختراق حصان طروادة وخادم موقع الويب وإصلاحها - أساليب الأمان المحسنة لمضيف VPS والخادم.

1. يحظر كود PHP عنوان IP محددًا

رمز PHP بسيط نسبيًا. ما عليك سوى وضع الكود التالي في ملف PHP الخاص بك لمنع عناوين IP ضمن نطاق معين من الوصول إلى موقع الويب وفقًا لدقة مكتبة IP، ويمكن أن يكون دقيقًا لعنوان IP والكود على المستوى الوطني. المستويات الإقليمية والبلدية وغيرها من الأمثلة على ذلك (يمكن استخدام هذا الرمز أثناء مكتبة الإسكندرية):

<?php
/**
 *
 * test.php(屏蔽国家IP)
 *
 */

$verification = '美国';//需要屏蔽国家的IP
function get_client_ip() { 
               $ip = $_SERVER['REMOTE_ADDR'];     
         if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {            
         $ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];       
         }          
         elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {             
         $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];       
         }          
         elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {           
         $ip = $_SERVER['HTTP_CLIENT_IP'];       
         }          
         return $ip;    
         }
$ip = get_client_ip();//获取访客IP
$antecedents = $_SERVER['HTTP_REFERER'];//访客来路地址
$result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。
$address = json_decode($result,true);
//判断访客是否属于美国,是否来自百度,是否来自谷歌
if($address['data']['country'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
        sleep(10);//设置一个10秒等待。
        header('HTTP/1.1 503 Service Temporarily Unavailable');
        header('Status: 503 Service Temporarily Unavailable');
        header('Retry-After: 3600000');
        exit;
}


/****** 如果需要阻止某一个省份的IP访问,使用以下代码*********/


<?php
/**
 *
 * test.php(屏蔽地方IP)
 *
 */

$verification = '江西省';//需要屏蔽省份的IP
function get_client_ip() { 
               $ip = $_SERVER['REMOTE_ADDR'];     
         if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) {            
         $ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR'];       
         }          
         elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) {             
         $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];       
         }          
         elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {           
         $ip = $_SERVER['HTTP_CLIENT_IP'];       
         }          
         return $ip;    
         }
$ip = get_client_ip();//获取访客IP
$antecedents = $_SERVER['HTTP_REFERER'];//访客来路地址
$result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。
$address = json_decode($result,true);
//判断访客是否属于江西省,是否来自百度,是否来自谷歌
if($address['data']['region'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){
  sleep(99999999);//设置一个999999秒的等待。
  Header("HTTP/1.1 204 No Content");
  exit;
}

2. وحدة Nginx-ngx_http_geoip_module

تنزيل مكتبة IP:

  1. HTTPS://Dev.马Xiumin's.com/Geo IP/legacy/geohlit/

2.1  حظر الوصول من عناوين IP لدولة معينة

تسمح وحدة ngx_http_geoip_module لـ Nginx بتنفيذ احتياجات مختلفة بناءً على عنوان IP الخاص بالزائر. نستخدم هنا وحدة ngx_http_geoip_module لمنع عناوين IP محددة من الوصول إلى موقع الويب.

الأول هو تجميع ngx_http_geoip_module في Nginx. إذا كنت تستخدم لوحة Pagoda BT، فيمكنك استخدام الأمر التالي:

#安装geoip库
yum -y install epel-release
yum -y install geoip-devel


#先查看一下本机的Nginx配置情况
[root@cs ~]# nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
built with OpenSSL 1.0.2l  25 May 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.40 --with-ld-opt=-ljemalloc

#开始下载Nginx,这里用的是1.15.1,你也可以下载其它的版本
wget http://nginx.org/download/nginx-1.15.1.tar.gz
tar -xzvf nginx-1.15.1.tar.gz
cd nginx-1.15.1

#下面的命令只是在上面的Nginx -v得到的配置详情后加上了--with-http_geoip_module,目的是为了保持原来的配置不变同时又增加新的模块

./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.40 --with-ld-opt=-ljemalloc --with-http_geoip_module

#只编译不安装
make

إذا كنت تستخدم البرنامج النصي LNMP أو Oneinstack، فيمكنك الرجوع إلى هنا: Oneinstack. تمكين وحدة Nginx-ngx_http_geoip_module. قم بتعطيل Nginx أولاً.

ثم استبدل Nginx الجديد وتأكد من تحميل وحدة Geoip. الأمر كما يلي:

mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx-lala.im
cp objs/nginx /www/server/nginx/sbin/nginx
ldd /www/server/nginx/sbin/nginx

انتقل إلى لوحة Pagoda، وانقر فوق Nginx، وقم بتعديل ملف التكوين، وأضف الكود التالي:

geoip_country /usr/share/GeoIP/GeoIP.dat;

العملية هي كما يلي:

الآن ابدأ تشغيل Nginx، ويمكنك إضافة قواعد إلى تكوين Nginx لموقع الويب، على سبيل المثال، يمكنك إرجاع خطأ محدد أو الوصول المباشر إلى IP إلى صفحة أخرى أو موقع ويب من بلد محدد:

#返回403 502 404等错误
location / {
default_type text/html;
charset utf-8;
if ($geoip_country_code = CN) {
return 403;
}
}
#导向另一个网站目录
location / {
default_type text/html;
charset utf-8;
if ($geoip_country_code = CN) {
root /home/www/wzfou.com-cn/;
}
}

هذا لإضافة تكوين موقع الويب.

التأثير النهائي هو كما يلي:

2.2  السماح بالوصول إلى IP من بلدان محددة فقط

الطريقة هي نفسها المذكورة أعلاه. قم أولاً بتقديم مكتبة IP في تكوين Nginx الرئيسي، ثم قم بإضافة التعليمات البرمجية التي تحظر أي عنوان IP وطني ولكنها تسمح بعناوين IP وطنية محددة في تكوين Nginx لموقع الويب.

 # 引入IP库
     
  geoip_country /usr/share/GeoIP/GeoIP.dat;
  geoip_city /usr/share/GeoIP/GeoLiteCity.dat;


 map $geoip_country_code $allowed_country {
                default no;
                CN yes;
        }
    
# 在配置中阻止IP
        if ($allowed_country = no) {
                return 403;
        }

3. جدار الحماية iptables

أولاً، تعرف على استخدام iptables وipset:

1. يحتوي iptables على عدة جداول، كل جدول مكون من سلاسل. الافتراضي هو جدول التصفية، والأكثر استخدامًا هو جدول التصفية، والآخر الأكثر استخدامًا هو جدول nat. بشكل عام، يهدف حظر IP إلى إضافة قواعد إلى سلسلة INPUT لجدول التصفية.

2. عند مطابقة القواعد، قم بمطابقتها واحدة تلو الأخرى من البداية إلى نهاية قائمة القواعد.

3. يوفر ipset طريقة لتحويل عملية O(n) هذه إلى O(1): ضع عنوان IP المراد معالجته في مجموعة وقم بتعيين قاعدة iptables لهذه المجموعة. مثل iptable، مجموعات IP هي شيء موجود في Linux kernel، والأمر ipset هو أداة لتشغيلها.

يسمح iptables لعنوان IP المحدد فقط بالوصول إلى المنفذ المحدد للجهاز، ويكون الأمر كما يلي:

1、在tcp协议中,禁止所有的ip访问本机的3306端口。

iptables -I INPUT -p tcp –dport 3306 -j DROP

2、允许123.456.789访问本机的3306端口

iptables -I INPUT -s 123.456.789 -p tcp –dport 3306 -j ACCEPT

以此类推…………………………………

封掉一个IP段:
iptables -I INPUT -s 121.0.0.0/8 -j DROP

以上命令的顺序不能错

然后保存iptables
# service iptables save
重启防火墙
#service iptables restart

كيفية حذف قواعد iptables ومسحها وإغلاقها وحفظها:

#CentOS 7请停止firewalld并安装iptables-services
systemctl stop firewalld
systemctl mask firewalld

#安装 iptables-services
yum install iptables-services

################
保存 iptables 规则
service iptables save

重启 iptables
service iptables restart

#################
执行清除命令 iptables -F时可能会断开与服务器的连接,如果想清空的话,先执行
/sbin/iptables -P INPUT ACCEPT
然后执行
/sbin/iptables -F

如果关闭防火墙,执行 
/etc/init.d/iptables stop   
或者是 services iptables stop  

#######################
iptables 规则若重启后消失,请用以下方法
步骤1:备份
iptables-save > /etc/iptables.up.rules.bak

步骤2:删除规则
vim /etc/sysconfig/iptables
或 vim /etc/iptables.up.rules

手动删除即可。

步骤3:导入新规则

iptables-restore < /etc/sysconfig/iptables

最后,重启VPS就可以生效了。

3.1  منع الوصول إلى IP من بلدان محددة بنقرة واحدة

  1. HTTPS://GitHub.com/III i III1/block-IPS-from-countries

المبدأ هو تنزيل مقطع IP الخاص بالبلد المحدد، ثم إضافة مقطع IP إلى قواعد iptables، وتنفيذ الأمر التالي مباشرة:

wget https://raw.githubusercontent.com/iiiiiii1/Block-IPs-from-countries/master/block-ips.sh
chmod +x block-ips.sh
./block-ips.sh

سيُطلب منك بعد ذلك اختيار ما إذا كنت تريد حظر عنوان IP أو إلغاء حظر IP.

بعد اختيار حظر IP، سيُطلب منك إدخال رمز البلد، يرجى التحقق من هنا: http://www.ipdeny.com/ipblocks، على سبيل المثال، بالنسبة للولايات المتحدة، أدخل إلينا الحظر للولايات المتحدة بأكملها.

إذا كنت تريد إلغاء حظره، فقم بتنفيذ الأمر مرة أخرى وحدد 2.

3.2  السماح فقط بالوصول إلى عنوان IP لبلد محدد بنقرة واحدة

لقد قمنا أعلاه بتنفيذ حظر الوصول إلى IP من بلد معين بنقرة واحدة، ولكن العديد من الأشخاص يريدون السماح بالوصول إلى مواقعهم على الويب فقط عن طريق عناوين IP من بلد معين، ومنع الوصول إلى الآخرين، وفي هذه الحالة، يمكننا استخدام ما يلي يأمر:

wget https://do.wzfou.net/wzfou/block-any.sh
chmod +x block-ips.sh
./block-ips.sh

الكود أعلاه يسمح فقط بالوصول إلى IP المحلي، وسيكتب القواعد في: /etc/rc.d/rc.local. ستتم إعادة استيراد قواعد iptables في كل مرة يتم فيها إعادة تشغيل النظام بحاجة إلى التعديل: /etc/rc.d/rc.local احذف رمز التشغيل الذاتي المقابل لبدء التشغيل. كود block-any.sh هو كما يلي:

#! /bin/bash
#判断是否具有root权限
root_need() {
    if [[ $EUID -ne 0 ]]; then
        echo "Error:This script must be run as root!" 1>&2
        exit 1
    fi
}

#检查系统分支及版本(主要是:分支->>版本>>决定命令格式)
check_release() {
    if uname -a | grep el7  ; then
        release="centos7"
    elif uname -a | grep el6 ; then
        release="centos6"
        yum install ipset -y
    elif cat /etc/issue |grep -i ubuntu ; then
        release="ubuntu"
        apt install ipset -y
    fi
}

#安装必要的软件(wget),并下载中国IP网段文件(最后将局域网地址也放进去)
get_china_ip() {
  #安装必要的软件(wget)
  rpm --help >/dev/null 2>&1 && rpm -qa |grep wget >/dev/null 2>&1 ||yum install -y wget ipset >/dev/null 2>&1 
  dpkg --help >/dev/null 2>&1 && dpkg -l |grep wget >/dev/null 2>&1 ||apt-get install wget ipset -y >/dev/null 2>&1

  #该文件由IPIP维护更新,大约一月一次更新(也可以用我放在国内的存储的版本,2018-9-8日版)
  [ -f china_ip_list.txt ] && mv china_ip_list.txt china_ip_list.txt.old
  wget https://github.com/17mon/china_ip_list/blob/master/china_ip_list.txt
  cat china_ip_list.txt |grep 'js-file-line">' |awk -F'js-file-line">' '{print $2}' |awk -F'<' '{print $1}' >> china_ip.txt
  rm -rf china_ip_list.txt
  #wget https://qiniu.wsfnk.com/china_ip.txt

  #放行局域网地址
  echo "192.168.0.0/18" >> china_ip.txt
  echo "10.0.0.0/8" >> china_ip.txt
  echo "172.16.0.0/12" >> china_ip.txt
}

#只允许国内IP访问
ipset_only_china() {
  echo "ipset create whitelist-china hash:net hashsize 10000 maxelem 1000000" > /etc/ip-black.sh
  for i in $( cat china_ip.txt )
  do
        	echo "ipset add whitelist-china $i" >> /etc/ip-black.sh
  done
  echo "iptables -I INPUT -m set --match-set whitelist-china src -j ACCEPT" >> /etc/ip-black.sh
  #拒绝非国内和内网地址发起的tcp连接请求(tcp syn 包)(注意,只是屏蔽了入向的tcp syn包,该主机主动访问国外资源不用影响)
  echo "iptables  -A INPUT -p tcp --syn -m connlimit --connlimit-above 0 -j DROP" >> /etc/ip-black.sh
  #拒绝非国内和内网发起的ping探测(不影响本机ping外部主机)
  echo "iptables  -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP" >> /etc/ip-black.sh
  #echo "iptables -A INPUT -j DROP" >> /etc/ip-black.sh
  rm -rf china_ip.txt
}

run_setup() {
  chmod +x /etc/rc.local
  sh /etc/ip-black.sh
  rm -rf /etc/ip-black.sh
  #下面这句主要是兼容centos6不能使用"-f"参数
  ipset save whitelist-china -f /etc/ipset.conf || ipset save whitelist-china > /etc/ipset.conf
  [ $release = centos7 ] && echo "ipset restore -f /etc/ipset.conf" >> /etc/rc.local
  [ $release = centos6 ] && echo "ipset restore < /etc/ipset.conf" >> /etc/rc.local
  echo "iptables -I INPUT -m set --match-set whitelist-china src -j ACCEPT" >> /etc/rc.local
  echo "iptables  -A INPUT -p tcp --syn -m connlimit --connlimit-above 0 -j DROP" >> /etc/rc.local
  echo "iptables  -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP" >> /etc/rc.local
  #echo "iptables -A INPUT -j DROP" >> /etc/rc.local
}

main() {
  check_release
  get_china_ip
  ipset_only_china

case "$release" in
centos6)
  run_setup
  ;;
centos7)
  chmod +x /etc/rc.d/rc.local
  run_setup
  ;;
ubuntu)
  sed -i '/exit 0/d' /etc/rc.local
  run_setup
  echo "exit 0" >> /etc/rc.local
  ;;
esac
}
main

إذا كنت تريد استبعاد بعض عناوين IP والسماح لعناوين IP هذه بمواصلة الوصول كاستثناءات، فيمكنك استخدام الأمر iptables -I لإضافة قواعد iptables، أو إضافة قواعد iptables يدويًا تنفيذ iptables من الأعلى إلى الأسفل.

3.3  تم ضبطه يدويًا للسماح بالوصول إلى IP من بلدان محددة فقط

الإعداد اليدوي هو نفس طريقة الإعداد بنقرة واحدة أعلاه. ما عليك سوى اتباع الأوامر التالية واحدًا تلو الآخر.

1、安装ipset

#Debian/Ubuntu系统
apt-get -y install ipset

#CentOS系统
yum -y install ipset
CentOS 7还需要关闭firewall防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service

2、清空之前的规则

#防止设置不生效,建议清空下之前的防火墙规则
iptables -P INPUT ACCEPT
iptables -F

3、创建新规则

#创建一个名为cnip的规则
ipset -N cnip hash:net
#下载国家IP段,这里以中国为例,其它国家IP下载参考:http://www.ipdeny.com/ipblocks/
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone
#将IP段添加到cnip规则中
for i in $(cat /root/cn.zone ); do ipset -A cnip $i; done

4、设置IP段白名单

#放行IP段
iptables -A INPUT -p tcp -m set --match-set cnip src -j ACCEPT
#关掉所有端口
iptables -P INPUT DROP
这时候就只有指定国家的IP能访问服务器了。

#如果你在国内,网站不允许被国内人访问,建议别关所有端口,这样你的S-S-H会上不去,我们可以只关闭80/443端口。

#关闭指定端口,比如80/443
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
这时候其他国家的IP是无法访问你服务器的80/443端口,等于无法访问你的网站,其它端口还是可以访问的。

5、删除规则

#将参数里的-A改成-D就是删除规则了,如
iptables -D INPUT -p tcp -m set --match-set cnip src -j ACCEPT
iptables -D INPUT -p tcp --dport 443 -j DROP

4. يقوم WordPress بحظر عناوين IP محددة

البرنامج المساعد ووردبريس

  1. HTTPS://WordPress.org/plugins/word Volume/
  2. HTTPS://WordPress.org/plugins/all-in-one-I'm Fear-security-安定-firewall/
  3. HTTPS://WordPress.org/plugins/IP-geoh-block/

تحتوي جميع المكونات الإضافية للأمان الثلاثة المذكورة أعلاه في WordPress على إعدادات لمنع الوصول إلى IP، والذي يمكن حظره بناءً على المصدر والبلد والنطاق واسم المجال لعنوان IP. (اضغط للتكبير)

يعد IP Geo Block أكثر احترافية إلى حد ما، بالإضافة إلى حظر عناوين IP محددة، يمكنه أيضًا حظر أو منع عناوين IP المختلفة من الوصول إلى صفحات مختلفة. (اضغط للتكبير)

5. ملخص

إن أبسط طريقة يمكن أن يقوم بها موقع ويب بحظر عنوان IP لبلد معين هو رمز PHP المقدم في هذه المقالة، والذي يشير إلى مكتبة Taobao IP. دقة عالية جدًا، ويمكن أيضًا أن تكون دقيقة بالنسبة للمقاطعة والمدينة يمكن تعديله وفقا لاحتياجاتك. العيب هو أنه لا يدعم HTTPS ويمكن تشغيله فقط في PHP.

في الواقع، الأكثر استخدامًا هو iptables، الذي يمنع الوصول إلى IP مباشرة عن طريق جدار حماية Linux، ولا يستهلك الموارد ويحظرها بشكل نظيف وكامل. تحتوي وحدة Geo IP الخاصة بـ Nginx على مجموعة واسعة من التطبيقات، وبدمجها مع Nginx، يمكنك عرض محتوى مختلف لمستخدمي IP المختلفين.

اترك رد