1.
简介与目标
目标:在日本机房遇到大规模扫段(大量来源IP对端口/服务扫描)时,快速识别攻击源并用ACL+黑白名单降低影响。小分段:1) 明确受保护服务和接口;2) 统计流量峰值和正常基线;3) 决定拦截粒度(/24、单IP或按ASN)。
2.
第一步:收集与识别攻击IP
步骤:1) 开启系统日志(/var/log/secure、nginx/access.log);2) 用awk/grep统计访问频次:例如:awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -200;3) 将可疑IP输出到文件 suspicious.txt,按/24聚合:awk -F. '{print $1"."$2"."$3".0/24"}' suspicious.txt | sort | uniq -c。
3.
第二步:选择过滤工具(ipset+iptables示例)
推荐:使用ipset配合iptables提高性能。小分段:1) 安装:apt install ipset iptables;2) 创建集合:ipset create jp_bad hash:net maxelem 65536;3) 将集合挂到iptables:iptables -I INPUT -m set --match-set jp_bad src -j DROP。
4.
添加IP/网段到黑名单操作示例
具体命令:1) 单条加入:ipset add jp_bad 203.0.113.45;2) 网段加入:ipset add jp_bad 203.0.113.0/24;3) 批量导入:cat blocklist.txt | xargs -n1 -I{} ipset add jp_bad {};4) 持久化:ipset save > /etc/ipset.conf,并在开机脚本中恢复 ipset restore < /etc/ipset.conf。
5.
使用nftables或iptables-nft的等效配置
nft例子:1) 创建表链:nft add table inet filter; nft add set inet filter jp_bad { type ipv4_addr\; flags interval\; } ;2) 加规则:nft add rule inet filter input ip saddr @jp_bad drop;3) 保存:nft list ruleset > /etc/nftables.conf 并启用服务。
6.
白名单(允许列表)实践建议
白名单原则:优先匹配白名单再命中黑名单。步骤:1) 建立ipset白名单 jp_allow;2) 在iptables/nft中先放行:iptables -I INPUT -m set --match-set jp_allow src -j ACCEPT;3) 自动同步可信IP(业务合作方、监控节点)并限制白名单变更权限。
7.
自动化更新黑名单与限速
自动化脚本示例:1) 用curl获取公共黑名单(如Spamhaus、AbuseIPDB导出)并转换成ipset格式;2) 每5分钟运行:crontab -e -> */5 * * * * /usr/local/bin/update_blacklist.sh;3) 限速规则:iptables -A INPUT -p tcp --dport 22 -m recent --name SSH --update --seconds 60 --hitcount 10 -j DROP 或使用hashlimit。
8.
在交换机/路由器上使用ACL
厂商示例(Cisco):1) 生成ACL:ip access-list extended BLOCK_JP; deny ip 203.0.113.0 0.0.0.255 any; permit ip any any;2) 应用接口:interface GigabitEthernet0/0; ip access-group BLOCK_JP in;注意先在测试端口验证,避免误封业务。
9.
检测、回滚与验证步骤
验证命令:1) iptables -L -n --line-numbers 或 nft list ruleset;2) ipset list jp_bad;3) 测试:从测试机模拟连接被拦截IP,检查tcpdump -i eth0 'host
' 是否入流并被DROP;4) 回滚:保留上次备份规则文件,出现误封立即 restore。
10.
日志与报警集成
集成建议:1) 将防火墙日志集中到ELK或Graylog;2) 设置动态告警(如某/24被加入黑名单次数暴增触发人工介入);3) 保存黑名单修改审计记录(who/when/why)。
11.
扩展策略:BGP Flowspec 与上游合作
当攻击量超出机房带宽:1) 联系上游或CDN(Cloudflare、Akamai)申请DDoS防护或BGP Flowspec黑洞;2) 提供攻击特征(源IP段、目的端口);3) 在极端情况下请求上游做null-route以保护核心服务。
12.
Q: 当日本机房扫段攻击频繁时,先做哪一步?
答: 先迅速收集高频IP并临时使用ipset+iptables按/24或高频IP封堵,同时将这些IP写入黑名单并触发报警以便后续分析,避免直接在交换机做全局ACL导致误封。
13.
Q: 如何避免误封正常日本客户的IP?
答: 建立白名单(ipset jp_allow),把已知客户和监控源加入;在规则链中把白名单放在黑名单前面;并在封堵前做频率阈值与行为分析(端口+速率),必要时采用限速而非直接DROP。
14.
Q: 是否有推荐的自动化更新模板?
答: 推荐模板流程:1) 定时拉取可信黑名单源并校验(签名/来源);2) 合并本地检测结果生成候选名单;3) 先导入临时ipset测试5分钟并观察误报;4) 自动化脚本(bash/python)完成入库、持久化并在日志中写审计记录。
来源:流量过滤策略 日本机房扫段攻击 中的ACL与黑白名单实践建议