某企业安全团队在复盘季度告警时发现,EDR系统记录了数百条来自"广东省深圳市"的SSH爆破告警,但攻击IP归属地显示为深圳,而企业在该城市并无分支机构。进一步排查确认,攻击者租用了深圳某数据中心的云主机发起扫描,利用地理位置"看上去正常"绕过了地理白名单策略。IP数据云的风险识别服务能在内网环境中离线判断IP的网络类型(数据中心/住宅/移动)、网络出口属性及风险评分 ,帮助安全运营在攻击链路早期就发现异常终端,将响应时间从小时级压缩到分钟级 。下面拆解落地步骤。
一、为什么IP风险识别是异常终端的"照妖镜"?
企业内网终端访问外网时,通常经过统一的出口网关。正常终端(办公PC、服务器)的IP具有稳定性、住宅/企业网络类型的特征。而异常终端(失陷主机、攻击跳板)往往表现出以下特征:
|-----------|--------------------------------------|---------------------|
| 风险特征 | IP画像表现 | 安全意义 |
| 代理/隧道外联 | net_type=数据中心、proxy_type非空 | 攻击者可能通过网络出口节点隐藏真实位置 |
| 高风险历史行为 | risk_score>70,threat_tags含"扫描"、"爆破" | IP曾被用于攻击,可信度低 |
| 地理位置突变 | 30分钟内IP归属地跨省/跨国 | 极不可能是正常员工行为 |
| 非常规工作时间活跃 | IP请求发生在凌晨 | 配合时间窗口规则 |
企业安全运营的核心挑战是从海量网络日志中快速筛选出这些异常IP 。IP风险识别工具通过本地离线库,可以在不依赖外网的情况下,对每个外连IP进行实时画像打分。
二、三步落地:用IP离线库构建异常终端发现能力
第一步:部署IP风险识别数据底座
以IP数据云离线库为例,下载.mmdb格式的风险数据库文件(含IPv4/IPv6,每日更新),部署到安全日志分析服务器(如ELK、Splunk)所在内网。
import ipdatacloud
# 加载离线风险库(应用启动时加载)
risk_db = ipdatacloud.OfflineIPLib('/data/ipdb/ip_risk.mmdb', enable_risk=True)
第二步:编写风险评分函数
对防火墙、代理服务器或EDR上报的每个外连IP执行如下检测:
def analyze_external_ip(ip: str) -> dict:
info = risk_db.query(ip)
score = 0
reasons = [ ]
# 风险权重累加
if info.get('net_type') == '数据中心':
score += 40
reasons.append('数据中心IP')
if info.get('is_proxy'):
score += 30
reasons.append('网络出口节点')
if info.get('risk_score', 0) > 70:
score += 30
reasons.append('历史高风险')
return {
'ip': ip,
'risk_score': score,
'risk_level': '高危' if score >= 70 else ('中危' if score >= 40 else '低危'),
'reasons': reasons,
'geo': f"{info.get('country')} {info.get('city')}"
}
第三步:配置自动化告警与处置规则
|------|----------------------------------------|-----------------|
| 风险等级 | 触发条件 | 处置动作 |
| 高危 | 风险总分≥70 或 net_type=数据中心+risk_score>80 | 自动隔离终端,发送SOC工单 |
| 中危 | 风险总分40-69 | 记录审计日志,触发低优先级告警 |
| 低危 | 风险总分<40 且非工作时间/非常规地区 | 仅记录,供分析师巡检 |
将上述脚本集成到日志解析管道(如Logstash filter、Fluentd),对流经的每个外连IP实时执行,输出带风险标签的增强日志。
三、实战案例:EDR告警降噪与失陷主机发现
某制造企业安全团队每天收到3000+条来自防火墙的"异常外联"告警,其中绝大部分是误报。引入IP风险识别离线库后,采用如下策略:
- 过滤掉所有
net_type=住宅且risk_score<30的IP(正常员工家庭宽带访问,直接忽略) - 对
net_type=数据中心或risk_score>70的IP,输出为高危告警 - 结合资产信息,若高危IP对应的终端为服务器,则重点排查是否存在挖矿或C2通信
实施效果:
|------------|-------|-------------|
| 指标 | 优化前 | 优化后 |
| 日均告警量 | 3200条 | 180条(降噪94%) |
| 真实威胁发现数(月) | 2-3起 | 11起(提升4倍) |
| 平均响应时间 | 4.5小时 | 30分钟 |

其中一起典型事件:某员工终端通过数据中心IP访问了境外矿池,risk_score=89,系统自动触发隔离,30分钟内完成处置,避免了内网横向扩散。
四、落地注意事项
- 数据新鲜度 :攻击者使用的IP段变化快,建议IP风险库至少日更。IP数据云离线库支持每日自动下载与热切换,无需重启服务。
- 白名单机制:将企业内部已知的云服务商IP(如Office 365 CDN节点)加入白名单,避免误报。
- 灰度上线:初期仅记录不拦截,观察一周确认规则合理性后再开启自动化处置。
五、总结
企业安全运营中,异常终端的网络行为往往首先体现在其连接的外部IP上。通过部署IP离线风险库 ,安全团队可以在内网环境下实时判断每个外连IP的网络类型、风险评分及地理位置,从而实现精准的异常发现与告警降噪 。该方案不依赖外网API,数据闭环在内网,单机可支撑百万级QPS,适合大中型企业安全运营中心落地。从告警降噪到失陷主机定位,IP风险识别已成为安全分析师高效工作的基础设施。