暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

构建基于IP地域信息的防火墙策略

生有可恋 2022-05-06
1086

IP地址信息早期设计时是没有地区、使用人等属性的,如今需要对属地进行防御,就只能根据第三方IP库进行识别。

比如一个公有IP,为了最大化使用,在公有IP接入的地方会设置出口防火墙,用来实现NAT映射。同时利用防火墙的防护功能,可以对IP对象组定制一些策略,比如禁止国外的IP访问内部服务器。定义好策略的方向,可以做到单向通。可以做到不让国外网站主动访问内部服务器,但允许内部终端访问国外网站。

如何区分国内IP和国外IP?目前网络上的IP使用的都是无类别域间路由(CIDR )。无类别域间路由(Classless Inter-Domain Routing、CIDR)区别于以前的A类、B类、C类地址,对IP不再分类,而是通过网段加掩码的形式来定义网段。目前IP段都是被各国家的公司通过购买注册的形式拥有,比如各大运营商,以及公有云厂商。公有IP可以通过在运营商购买专线的形式获得,或者在云服务厂那里购买服务器的形式获得。IP拥有者实际上是运营商和云厂商,我们获取的公有IP有可能是动态的或静态的。当IP被封时,可以向ISP(Internet service provider)申请更换IP或解封。

IP的地域信息是网络空间测绘领域研究的对象,我们如果需要对区域进行限制,就需要获取到某区域的IP段。目前省、市级的IP信息属于战略级信息,需要付费获取,并且信息更新很快,离线信息目前是以天为单位进行更新。

国内的 ipip.net 提供省市级的离线IP查询,注册 ipip.net 账号后可以获取到离线版数据库文件,无法查看数据源,只能通过接口对IP信息进行查询。

下载试用版离线库,使用 ipip-ipdb 接口进行数据查询。

    C:\> pip install ipip-ipdb
    C:\> python
    >>> import ipdb
    >>> db = ipdb.City(r'D:\ipipfree.ipdb')
    >>> ip = db.find_info("61.183.231.226","CN")
    >>> ip.country_name
    '中国'
    >>> ip.region_name
    '湖北'
    >>> ip.city_name
    '武汉'

    Python接口 github 项目地址:

    • https://github.com/ipipdotnet/ipdb-python

    IPIP官网:

    • https://www.ipip.net/

    因为只能反向通过IP去查地域信息,没法通过数据库文件确定某个区域的IP段。如果有防火墙日志,可以对日志中的IP进行解析,从而确定相应网段。也可以构造一些网段的IP来批量测试属地信息。

    如果不是用来限制省、市的IP访问,只是想精确到国家级别的IP段,这个在网上有数据可供查询。

    国家级的网段信息可以在以下项目获取:

    • https://github.com/ipverse/rir-ip

    rir-ip项目提供了各个国家的网段数据,更新比较及时:

    网段文件以国家代码进行区分:

    文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论