Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

希望能增加屏蔽国外IP访问功能 / 根据地理位置拦截或人机验证 #88

Closed
ezjbc opened this issue Jun 1, 2023 · 21 comments
Labels
enhancement New feature or request released

Comments

@ezjbc
Copy link

ezjbc commented Jun 1, 2023

希望能增加屏蔽国外IP访问功能
点个赞,给师傅看看呼声会有多大。

@zclaiqcc zclaiqcc added the enhancement New feature or request label Jun 1, 2023
@imgfile
Copy link

imgfile commented Jun 21, 2023

@ZTfred
Copy link

ZTfred commented Jul 8, 2023

这个功能,可以给nginx增加 geoip 的模块实现,看产品会不会给添加了

@zclaiqcc
Copy link
Collaborator

这个功能,可以给nginx增加 geoip 的模块实现,看产品会不会给添加了

还是倾向于在检测引擎实现,转发侧只负责转发就好了,这样解耦一些。当然也有一些统计和服务降级机制相关的考虑。如果是基于 nginx 就可以实现的话,师傅甚至可以尝试自己 DIY 一个 nginx,https://zhuanlan.zhihu.com/p/641116243 ,在 nginx 继承 geoip + lua-t1k,自己搞定转发引擎的部分。美滋滋

@zhuanmentiwen
Copy link

很多国内站点根本不需要国外访问,我希望能够在黑名单添加中源IP组可以选择:国外IP组,禁止访问。这个组可以自动调取咱内置的IP库国外ip段。。

这样可以有效避免国外ip的攻击,毕竟站点不需要国外访问的应用较多,如有国内特定地区允许访问的,可以自己自定义添加ip组即可。

希望先把这个单独禁止国外ip段的功能先上上,感谢。。

@Lorna0 Lorna0 changed the title 希望能增加屏蔽国外IP访问功能 希望能增加屏蔽国外IP访问功能 / 根据地理位置拦截 Aug 4, 2023
@zh-mead
Copy link

zh-mead commented Aug 21, 2023

希望先把这个单独禁止国外ip段的功能先上上,感谢。。

@hongfs
Copy link

hongfs commented Sep 8, 2023

这个功能,可以给nginx增加 geoip 的模块实现,看产品会不会给添加了

还是倾向于在检测引擎实现,转发侧只负责转发就好了,这样解耦一些。当然也有一些统计和服务降级机制相关的考虑。如果是基于 nginx 就可以实现的话,师傅甚至可以尝试自己 DIY 一个 nginx,https://zhuanlan.zhihu.com/p/641116243 ,在 nginx 继承 geoip + lua-t1k,自己搞定转发引擎的部分。美滋滋

自己 DIY 一个 nginx 不利于升级吧,如果 nginx 支持 geoip 模块,我们直接在 custom_params 做处理就可以了。

@jssolo
Copy link

jssolo commented Sep 21, 2023

支持

@Lorna0 Lorna0 changed the title 希望能增加屏蔽国外IP访问功能 / 根据地理位置拦截 希望能增加屏蔽国外IP访问功能 / 根据地理位置拦截或人机验证 Oct 9, 2023
@williamtsang88
Copy link

williamtsang88 commented Nov 28, 2023

这边找到一个国家/地区IP段的数据库,仅供参考:https://www.ipdeny.com/ipblocks/ ,希望对大家或者开发者有所帮助。
使用方法:需要屏蔽一些境外 IP,新建两个IP 组,中国大陆地区 IPv4 和 中国大陆地区 IPv6 两个组,然后将 cn-zone IP 段数据库文本文件下载并打开复制IP段到内容中即可。
IPv4:https://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
IPv6:https://www.ipdeny.com/ipv6/ipaddresses/blocks/cn.zone
image
image

之后在防护设置,新建黑名单,设置如下:
image

@ezjbc
Copy link
Author

ezjbc commented Nov 28, 2023

这边找到一个国家/地区IP段的数据库,仅供参考:
https://ipv4.fetus.jp/
https://github.com/fetus-hina/ipv4.fetus.jp-exports

@Mikeliao123
Copy link

可以参考 :
如何通过openresty 限制国外Ip访问 :
https://blog.csdn.net/qq_41506710/article/details/135522099
代码如下:
https://gitee.com/xiaoyun461/blocking-external-networks

@baibaiii
Copy link

请问目前有师傅 实现国外IP触发人机验证吗?
我想实现当 国外IP访问demo.com 触发人机验证,而不是触发黑名单规则。【当host等于demo.com and 源IP不属于IP组 国内IP and 源IP不属于内网IP组】当按照规则写入人机验证规则,会导致国内的IP和内网也触发人机验证。

@gearfox
Copy link

gearfox commented Feb 2, 2024

希望粒度能精确到省份,有些业务真不需要外省访问

@Lorna0
Copy link
Collaborator

Lorna0 commented Feb 20, 2024

雷池社区版计划在即将推出的专业版(预计 4.4)上支持 ”根据地理位置库进行拦截“。主要原因是目前的地理位置库是商业化的,不容易直接下放到社区版。

社区版的师傅有需要的话,可以通过 黑白名单 -> 添加黑名单 -> 匹配条件选 “源 IP”“不属于 IP 组” 来实现(IP 组内填中国大陆的 IP 段,上面师傅们分享的列表都可以尝试)。因为中国大陆的 IP 段变化小,所以这个方法的准确性还不错,未来我们也会继续探索能否优化社区版上的相关能力。

@Lorna0 Lorna0 removed the released label Feb 20, 2024
@safe1ine
Copy link
Collaborator

4.4.0 版本已支持,考虑到雷池采购外部 IP 库有成本,目前该功能仅对专业版用户开放

@AlliotTech
Copy link

AlliotTech commented Apr 10, 2024

可以尝试用脚本+定时任务来实现, 这里为了方便,我封装了一个雷池的Python API: python-safeline (有兴趣的同学可以一块完善一下),

可以参考如下代码:

from safeline import SafeLine
import requests


def get_ips() -> list:
    response = requests.get('https://ispip.clang.cn/all_cn_cidr.txt')
    return response.text.split('\n')


def get_ipv6_ips() -> list:
    response = requests.get('https://ispip.clang.cn/all_cn_ipv6.txt')
    return response.text.split('\n')


def get_ustc_deny_ips() -> list:
    response = requests.get('https://blackip.ustc.edu.cn/list.php?txt')
    return response.text.split('\n')



if __name__ == '__main__':
    BASE_URL = "https://waf.xxx.com"
    USERNAME = "admin"
    PASSWORD = "xxxx"

    OTP_SECRET = "IXXXXXX4C"  

    waf = SafeLine(BASE_URL,
                   USERNAME,
                   PASSWORD,
                   OTP_SECRET
                   )

    waf.ip_group.update(3, "ustc恶意IP列表", ips_list=get_ustc_deny_ips())
    waf.ip_group.update(4, "国内IP列表", ips_list=get_ips() + get_ipv6_ips())

需要注意的是,当前社区版本5.2.0雷池的ip组的接口没有做分页,有一定的性能问题。 IP组规则尽量不要太多。

@20has
Copy link

20has commented Apr 11, 2024

雷池社区版计划在即将推出的专业版(预计 4.4)上支持 ”根据地理位置库进行拦截“。主要原因是目前的地理位置库是商业化的,不容易直接下放到社区版。

社区版的师傅有需要的话,可以通过 黑白名单 -> 添加黑名单 -> 匹配条件选 “源 IP”“不属于 IP 组” 来实现(IP 组内填中国大陆的 IP 段,上面师傅们分享的列表都可以尝试)。因为中国大陆的 IP 段变化小,所以这个方法的准确性还不错,未来我们也会继续探索能否优化社区版上的相关能力。

目前来看,中国区的IP组数量大约是5k多点,请问能不能放行IP组订阅手动更新记录为5000条呢?

@20has
Copy link

20has commented Apr 11, 2024

虽然现在也可以切分5个IP组 来作为黑名单来使用,但是就不太好使用订阅更新的功能了。
社区版要是能放开这个记录限制功能就更好了。

@AlliotTech
Copy link

AlliotTech commented Apr 11, 2024

雷池社区版计划在即将推出的专业版(预计 4.4)上支持 ”根据地理位置库进行拦截“。主要原因是目前的地理位置库是商业化的,不容易直接下放到社区版。
社区版的师傅有需要的话,可以通过 黑白名单 -> 添加黑名单 -> 匹配条件选 “源 IP”“不属于 IP 组” 来实现(IP 组内填中国大陆的 IP 段,上面师傅们分享的列表都可以尝试)。因为中国大陆的 IP 段变化小,所以这个方法的准确性还不错,未来我们也会继续探索能否优化社区版上的相关能力。

目前来看,中国区的IP组数量大约是5k多点,请问能不能放行IP组订阅手动更新记录为5000条呢?

使用接口是可以突破这个限制的。 参照:#88 (comment)

@20has
Copy link

20has commented Apr 11, 2024

雷池社区版计划在即将推出的专业版(预计 4.4)上支持 ”根据地理位置库进行拦截“。主要原因是目前的地理位置库是商业化的,不容易直接下放到社区版。
社区版的师傅有需要的话,可以通过 黑白名单 -> 添加黑名单 -> 匹配条件选 “源 IP”“不属于 IP 组” 来实现(IP 组内填中国大陆的 IP 段,上面师傅们分享的列表都可以尝试)。因为中国大陆的 IP 段变化小,所以这个方法的准确性还不错,未来我们也会继续探索能否优化社区版上的相关能力。

目前来看,中国区的IP组数量大约是5k多点,请问能不能放行IP组订阅手动更新记录为5000条呢?

使用接口是可以突破这个限制的。 参照:#88 (comment)

嗯 多谢老哥提醒 我去搭配1panel来调试下这个python脚本试试
我需求 只需要这个ip组的订阅更新就好了
https://mirror.ghproxy.com/https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt

@20has
Copy link

20has commented May 9, 2024

雷池社区版计划在即将推出的专业版(预计 4.4)上支持 ”根据地理位置库进行拦截“。主要原因是目前的地理位置库是商业化的,不容易直接下放到社区版。
社区版的师傅有需要的话,可以通过 黑白名单 -> 添加黑名单 -> 匹配条件选 “源 IP”“不属于 IP 组” 来实现(IP 组内填中国大陆的 IP 段,上面师傅们分享的列表都可以尝试)。因为中国大陆的 IP 段变化小,所以这个方法的准确性还不错,未来我们也会继续探索能否优化社区版上的相关能力。

目前来看,中国区的IP组数量大约是5k多点,请问能不能放行IP组订阅手动更新记录为5000条呢?

使用接口是可以突破这个限制的。 参照:#88 (comment)

嗯 多谢老哥提醒 我去搭配1panel来调试下这个python脚本试试 我需求 只需要这个ip组的订阅更新就好了 https://mirror.ghproxy.com/https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt

最近的进度再来更新下: 目前手动复制这8k多个IP粘贴到输入框即可!!!

@charnet1019
Copy link

https://mailfud.org/geoip-legacy/ 这边可以下载免费的geo库,如果tengine支持加载这个库的话可以让社区用户自己上传也可以

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request released
Projects
None yet
Development

No branches or pull requests