You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用awk从httpd错误日志中提取纯IP,适配已有SSH拦截脚本逻辑

httpd错误日志异常IP筛选方案

失效原因

原有命令无法生效有两个核心问题:

  • 提取的$10/$12字段末尾自带]符号,并非纯IP:端口内容
  • IP与端口绑定在一起,需要拆分出单独IP后再统计

适配后的命令

可以通过awk的split函数拆分字段提取纯IP,完全保留原有统计逻辑的命令如下:

tail -1000 /var/log/httpd/error_log | awk '/denied/ && /client/ {
    if (/invalid user/) {
        split($12, addr_arr, /:|\]/)
    } else {
        split($10, addr_arr, /:|\]/)
    }
    try[addr_arr[1]]++
}
END {
    # 可自定义异常次数阈值,示例为出现5次即判定为异常
    for(ip in try) if(try[ip] >= 5) print ip
}'

对接拦截逻辑说明

直接将上述awk逻辑替换原有SSH拦截脚本中的日志筛选部分,输出的异常IP直接传入iptables/firewalld封禁命令即可,和原有SSH暴力破解拦截逻辑完全兼容。

补充说明:如果你的httpd错误日志为自定义格式,字段位置可能有变动,可以先执行tail -1 /var/log/httpd/error_log | awk '{print $10}'确认IP:端口]所在字段序号,将上述命令中的$10/$12修改为对应序号即可。

内容的提问来源于stack exchange,提问作者striker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:27:00