首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >几种方法有效屏蔽国外IP恶意扫描

几种方法有效屏蔽国外IP恶意扫描

作者头像
李俊鹏
发布于 2020-06-12 07:02:30
发布于 2020-06-12 07:02:30
11.7K0
举报
文章被收录于专栏:运维研习社运维研习社

最近有朋友说,查看nginx访问日志,发现大量的恶意扫描,分析发现比正常业务访问量都大,且IP大部分来自国外,服务器用的按量付费,这刷的都是白花花的银子,想问下有没有解决方案

今天就介绍几种方法,来屏蔽这些脚本小子的恶意扫描

GeoDNS

GeoDNS是基于地域的DNS解析,可以将DNS的解析,根据地域划分,解析到不同的IP地址,现在很多免费的运营商都支持GeoDNS,比如google的Route53、阿里云的智能dns、腾讯的DNSpod、华为云等,都有这种服务,通常我们是用来做地域访问控制的,不同的地区用户,访问就近地区部署的服务

对于上面提到的恶意请求,大多来源于国外,而业务根本不可能有国外用户的情况下,可以直接将国外的dns解析到随便找个国外的IP上面,可以是一些DNS节点IP或者其他,也就是将恶意请求的IP引入黑洞

这种方法不需要技术、不需要配置服务器,从根源上直接解决

防火墙屏蔽

这里说的防火墙是服务器内置防火墙,防火墙本身就是起屏蔽、拦截作用的,我们可以通过配置防火墙来进行屏蔽国外的IP,或恶意IP

在linux中我们通常都是通过iptables来封IP,首先我们需要获取所有的IP地址段,才能进行封IP的操作

IP地址段,我们可以通过APNIC获取,APNIC是全球5个地区级的Internet注册机构之一,主要负责亚太地区,而且每日更新,信息列表地址:http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-late

思路就是使用Iptables添加CN部分的IP到ACCEPT规则中,其余的全部DROP,这里有个问题就是,即便只是添加CN部分的IP段,量也比较大,这样逐条添加和加载IPtables规则的时候,很影响并发性能

在iptables中,包含几个表,每个表由链组成,默认是filter表,最常用的也是filter表,另外一个比较常用的是nat表,封IP就是在filter表的INPOUT链添加规则

在进行规则匹配的时候,是从规则列表中从头到尾一条一条进行匹配,所以当规则太多的时候,加载就会影响性能,所以这里推荐用ipset的方式,ipset能把这种O(n)的操作变成O(1),就是把要处理的IP放进一个集合,对这个集合设置一条iptables规则

ipset可以直接通过yum安装,安装完成之后可以创建ip集合

通过创建一个ip集合,然后再通过iptables将来源为这个集合中的IP允许,其他的全部DROP掉

集合有了,内容还需要添加,ipset通过ipset add来添加ip,这里直接献上一个简单的脚本

脚本很简单,从APNIC下载最新的IP表,然后截取除CN部分的IPv4,然后保存为一个白名单列表,然后从白名单列表中遍历,通过ipset添加到ip集合中,把这个脚本定时任务做一下,就可以定时更新ipset的集合

ipset常用的几个命令这里简单说一下

  • ipset del yoda x.x.x.x # 从 yoda 集合中删除内容
  • ipset list yoda # 查看 yoda 集合内容
  • ipset list # 查看所有集合的内容
  • ipset flush yoda # 清空 yoda 集合
  • ipset flush # 清空所有集合
  • ipset destroy yoda # 销毁 yoda 集合
  • ipset destroy # 销毁所有集合
  • ipset save yoda # 输出 yoda 集合内容到标准输出
  • ipset save # 输出所有集合内容到标准输出
  • ipset restore # 根据输入内容恢复集合内容

通过这样的方式对恶意请求IP进行控制,可以相对更灵活的划分地区、国家、IP段等

Nginx的GeoIP

nginx中有一个GeoIP模块,也是用来做地域识别,该模块依赖于GeoIP,并且需要从geolite下载最新的IP数据包

nginx的geoip模块,默认未开启,需要重新编译添加该模块

编译之前,需要确保服务器已经安装了geoip和geoip-devel两个库

IP数据包,需要从geolite2下载,现在由于数据隐私法规的问题,需要注册账户才能免费下载,地址:https://dev.maxmind.com/geoip/geoip2/geolite2/

下载完成后,将包放在/usr/share/GeoIP下面即可,然后在nginx的http模块中配置ip数据包的地址

接着就可以通过geoip模块解析ip地址来进行操作,对于上面遇到的问题,我们可以通过设置geo_country_code=CN,以允许访问,其他则全部return 444来拒绝恶意访问

nginx中其他的geoip模块的指令还包括:

  • $geoip_country_code; – 两个字母的国家代码,如:”RU”, “US”
  • $geoip_country_code3; – 三个字母的国家代码,如:”RUS”, “USA”
  • $geoip_country_name; – 国家的完整名称,如:”Russian Federation”, “United States”
  • $geoip_region – 地区的名称(类似于省,地区,州,行政区,联邦土地等),如:”30”。30代码就是广州的意思
  • $geoip_city – 城市名称,如”Guangzhou”, “ShangHai”(如果可用)
  • $geoip_postal_code – 邮政编码
  • $geoip_city_continent_code
  • $geoip_latitude – 所在维度
  • $geoip_longitude – 所在经度
  • $geoip_org – 所在组织
  • $geoip_proxy – 定义可信地址
  • $geoip_proxy_recursive – 整个代理链中是否递归匹配,不递归的话,默认用x-forwarded-for中最后一个地址

所以还可以更精确或者更细致的通过地域来控制访问,这种方式虽然可以更细致的划分地域,但是请求也是到达nginx上的,虽然可以防范web的恶意扫描,但是更推荐在系统层直接iptables drop掉

nginx的geoip更合适的地方在于,根据用户地域,返回不同后端业务,做页面定制化等

对于没有国际业务的网站、应用等,通过屏蔽国外IP或者国内IP白名单的方式,可以屏蔽掉很大一部分恶意扫描,从根源上来降低被攻击面,可以起到一定的防护作用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
屏蔽国外IP访问的几种常用方法
网站的客户和受众人群都是国内的,不想让国外访问;或者站长监测到国外肉鸡一直有扫描或攻击。这时就需要对境外IP进行进行过滤和屏蔽;对IP进行过滤屏蔽一般有两种方法:加白和加黑。
腾讯云售后支持
2023/11/20
23.8K1
Linux如何屏蔽国外IP-宝塔如何屏蔽国外IP-appnode如何屏蔽国外IP
自己做了个论坛,论坛里面发了一个cc工具,有人用我发的工具打我论坛,都是国外流量,很强的,基本秒杀我,当时没有做策略服务器硬抗,只是变慢了。
开心分享
2020/08/10
26.9K2
Linux如何屏蔽国外IP-宝塔如何屏蔽国外IP-appnode如何屏蔽国外IP
9.Nginx实践之使用MaxMind的GeoIP2实现处理不同国家或城市的访问最佳实践指南
描述: 为了实现根据访问者访问我们的网站时根据其IP显示其所属地,也为获取不同地区访问者的IP地址等相关信息为目的,所以在搜索引擎中查找解决方案,在网络上查询到如下几种方案Nginx+GeoIP2、使用收费 IP 识别接口、DNS 根据地域解析,然后经过多方面考究,最终还是使用Nginx+GeoIP2解决方案。
全栈工程师修炼指南
2022/09/29
6.4K0
9.Nginx实践之使用MaxMind的GeoIP2实现处理不同国家或城市的访问最佳实践指南
京东一面:Nginx 禁止国外 IP 访问网站!
先来说说为啥要写这篇文章,之前小编看了下nginx 的访问日志,发现每天有好多国外的IP地址来访问我的网站,并且访问的内容基本上都是恶意的。因此 我决定 禁止国外IP 来访问我的网站
搜云库技术团队
2023/03/15
3.9K0
京东一面:Nginx 禁止国外 IP 访问网站!
golang源码分析之geoip2-golang
https://github.com/oschwald/geoip2-golang用来解析
golangLeetcode
2022/08/02
8190
服务器配置黑名单白名单的方法
服务器配置黑名单(Blacklist)和白名单(Whitelist)是一种常见的访问控制策略,用于管理对服务器的访问权限。这两种列表分别代表了不同的安全策略:
用户11163528
2024/12/19
1.1K0
VPS屏蔽国外IP访问脚本
如何防CC攻击,其中一种方法是禁止国外IP访问,可以有所缓解,因此有了如下脚本,在CENTOS 6下调试通过。
wo.
2021/06/15
6.9K0
全网的 IP 归属地显示,带你5分钟加上,就是这么简单!
最近,继新浪微博之后,今日头条、腾讯、抖音、知乎、快手、小红书、百家号等各大平台陆陆续续都上线了"网络用户IP地址显示功能",境外用户显示的是国家,国内的用户显示的省份,而且此项显示无法关闭,归属地强制显示;
一行Java
2022/05/17
2.4K0
全网的 IP 归属地显示,带你5分钟加上,就是这么简单!
nginx安全加固心得
nginx发展多年,自身的安全漏洞比较少,发现软件漏洞,一般利用软件包管理器升级一下就好了。 本文侧重讲述的不是nginx自身的安全,而是利用nginx来加固web应用,干一些应用防火墙(WAF)干的活。 在做安全加固的时候,我们一定要头脑清晰,手里拿着刀,一刀一刀的切,将我们不想要的流量干掉,除去隐患。
后端技术探索
2018/08/10
4K0
挺带劲!通过 Nginx 来实现封杀恶意访问
先来说说为啥要写这篇文章,之前小编看了下 nginx 的访问日志,发现每天有好多国外的 IP 地址来访问我的网站,并且访问的内容基本上都是恶意的。因此我决定禁止国外 IP 来访问我的网站
民工哥
2021/05/11
1K0
openresty基于lua/geoIp/redis实现ip限制
一、问题背景二、聊一嘴ip库三、解决方案四、下载安装openresty五、验证效果六、geoIp自动更新七、参考
叔牙
2023/02/26
4.6K0
openresty基于lua/geoIp/redis实现ip限制
iptables防封_iptables屏蔽ip
iptables封掉少量ip处理是没什么问题的,但是当有大量ip攻击的时候性能就跟不上了,iptables是O(N)的性能。而ipset就像一个集合,把需要封闭的ip地址放入这个集合中,ipset 是O(1)的性能,用的hash方式所以特别快。ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加的入ipset的ip也生效。
全栈程序员站长
2022/11/10
2.6K0
DDOS攻击来袭?这份免费防御秘籍助你轻松应对!
我相信你在技术探索的过程中,你一定遇到过DDOS攻击。服务器黑洞或者导致你项目不能正常请求,这都是DDOS攻击导致的。DDOS攻击通过大量虚假流量淹没目标服务器,使其瘫痪,导致正常用户无法访问服务。这种攻击不仅会给企业/个人带来巨大的经济损失,还会带来名誉上的损害。可能各位觉得面对攻击我们会束手无策,那么这篇文章可能会改变你的想法。
VyrnSynx
2025/01/23
3212
iptables防火墙的实例教程
iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。术语 iptables 也经常代指该内核级防火墙。iptables 可以直接配置,也可以通过许多 前端 和 图形界面 配置。iptables 用于 ipv4,ip6tables 用于 ipv6。 iptables 可以检测、修改、转发、重定向和丢弃 IPv4 数据包。过滤 IPv4 数据包的代码已经内置于内核中,并且按照不同的目的被组织成 表 的集合。表 由一组预先定义的 链 组成,链 包含遍历顺序规
用户1203875
2018/07/20
1.5K0
ipsec iptables_iptables -p
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
全栈程序员站长
2022/11/10
2.3K0
iptables速查
iptables -L -n           查询当前iptables的规则 iptables -F              清除预设表fliter中的所有规则链的规则 iptabl e -X  (OUTPUT)   可以指定链清理 清除预设表filter中使用者自定链中的规则
憧憬博客
2020/07/20
7790
加固你的服务器,防止SSH攻击
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。它通常用于远程控制计算机系统或传输文件。当SSH暴露给公网时,它会有安全隐患。您会发现一些恶意程序试图破解您的密码。
苏子晨
2018/07/25
2.1K0
掌握Linux安全,SSH限制IP登录绕不开这3种方法!
为了加强集团服务器的安全性,近期启用了堡垒机,同时就需要对所有业务服务器的ssh进行访问限制,仅允许指定IP访问(堡垒机),其他IP来源则不允许放行。
ICT系统集成阿祥
2024/12/03
8910
掌握Linux安全,SSH限制IP登录绕不开这3种方法!
通过ModSecurity防御一个C段IP发起的CC、扫描、采集等恶意行为
目前,很多WEB服务都具备了能够防御单IP发起的CC、扫描、采集等恶意行为的工具或模块,如Nginx的HttpLimitReqModule模块,Apache的mod_evasive模块,而且OWASP规则自身也包含了针对单IP发起的DOS攻击防护,但通过在云计算行业的多年工作经验中发现,为了避免单IP的恶意行为被拦截,黑客甚至会直接在运营商处租赁1个,或多个C的IP段,然后使用C段内的IP循环发起恶意行为,降低了单个IP单位时间内的访问频率,导致上述防御手段无法触发。
FB客服
2021/09/16
1.6K0
嵌入式Linux可用的防火墙——iptables:实现ip白名单、mac地址白名单 (转载非原创)
iptables是linux系统下的一个功能强大的模块,不仅可以用作防火墙,还可以实现NAT等众多路由功能。iptables的容器有很清晰的层次关系:
xlj
2021/11/12
5.5K0
推荐阅读
相关推荐
屏蔽国外IP访问的几种常用方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档