帝国模板之家为广大用户提供专业、一站式建站服务。

网站开发

网站开发栏目,介绍前端、后台、服务器、数据库、建站工具等实用网站开发教程。

当前位置:首页 > 教程 > 网站开发 > 正文

如何屏蔽禁止国外IP访问网站的思路和方法

帝国模板之家 2020-11-01 网站开发 评论

最近查看网站日志发现有大量海外ip浏览,扫描比较敏感文件目录,全是一些进攻网址的IP,因此针对国外IP而言,我们要阻拦掉,避免 网址遭受毁坏,手动式严禁IP的作法,真是太累,例如英国IP、日本国IP、日本IP…,不管你怎么严禁仍然还会有,由于IP段过多,!
有什么方法可以解决呢?下面帝国模板之家小编给大家分析一下思路和解决方法。

禁止国外IP思路:

很多人都是,发现国外IP就屏蔽,发现就屏蔽,其实你根本屏蔽不完,国外IP几百万个IP段,你能屏蔽过来么,所以要换一个思路,我们收集国内所有IP段,只允许收集的国内IP段访问,其他的IP(国外)的IP,都无法访问,无论是新加坡,美国,韩国、日本等等都没用,这就有效的阻止了国外IP。

下面分享方法。

 1,登录自己的Linux服务器,执行以下代码,会把国内所有IP段下载到自己的服务器中(建议每个月执行一次),因为国内有IP段更新,执行后,linux窗口不会有反应,txt文件自动会进行下载,一般执行5分钟左右,大家关闭窗口就可以了。

wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\|'/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ssr.txt

2,将下面脚本保存为/root/allcn.sh ,设置可执行权限(755)。

    mmode=$1
  #下面语句可以单独执行,不需要每次执行都获取网段表
  #wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\|'/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ssr.txt
  CNIP="/root/china_ssr.txt"
  gen_iplist() {
  cat 《-EOF
  $(cat ${CNIP:=/dev/null} 2>/dev/null)
  EOF
  }
  flush_r() {
  iptables  -F ALLCNRULE 2>/dev/null
  iptables -D INPUT -p tcp -j ALLCNRULE 2>/dev/null
  iptables  -X ALLCNRULE 2>/dev/null
  ipset -X allcn 2>/dev/null
  }
  mstart() {
  ipset create allcn hash:net 2>/dev/null
  ipset -! -R 《-EOF
  $(gen_iplist | sed -e "s/^/add allcn /")
  EOF
  iptables -N ALLCNRULE
  iptables -I INPUT -p tcp -j ALLCNRULE
  iptables -A ALLCNRULE -s 127.0.0.0/8 -j RETURN
  iptables -A ALLCNRULE -s 169.254.0.0/16 -j RETURN
  iptables -A ALLCNRULE -s 224.0.0.0/4 -j RETURN
  iptables -A ALLCNRULE -s 255.255.255.255 -j RETURN
  #可在此增加你的公网网段,避免调试ipset时出现自己无法访问的情况
  iptables -A ALLCNRULE -m set --match-set allcn  src -j RETURN
  iptables -A ALLCNRULE -p tcp -j DROP
  }
  if [ "$mmode" == "stop" ] ;then
  flush_r
  exit 0
  fi
  flush_r
  sleep 1
  mstart

值得注意的是:.sh文件,大家去服务器中下载一个sh文件,重命名,然后把下面的复制粘贴进去,就行了,如果用txt改sh文件,会乱码,执行不成功,sh的格式很严谨(另外下面的代码不要有换行符)。

3,打开linux服务器,执行下面代码,执行后国外ip将无法打开网站:/root/allcn.sh

4,如果要停止的话执行下面这个命令可恢复国外ip访问网站:/root/allcn.sh stop

以上就是禁止国外IP思路和方法,上面的IP段,大家每个月执行一次代码就行了,不需要每天执行,每个月更新一次IP库,sh文件这个很关键,一般都是在这个地方出错,大家可以下载sh文件,然后在改下内容就行。

这世上无忧无虑的人,反而相对寿命会长点。

已有 位小伙伴发表了看法

欢迎 发表评论

  • 匿名发表

关于

帝国cms模板

网页插件

帝国模板之家 | www.moyouyouw.cn

本站所有模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系站长删除,谢谢! 寻找帝国cms模板首选帝国模板之家,用心做站,上线至今广受好评,值得信赖!

  • 交流群1:帝国cms交流群1
  • 交流群2:帝国cms交流群2
在线QQ 给我留言