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

如何在Logstash中移除command-shell字段的 字符

解决Logstash解析/etc/passwd时command-shell字段残留\r字符的问题

问题描述

出于安全审计需求,需解析/etc/passwd文件排查过期或异常账户。使用以下Logstash过滤器后,其他字段解析均正常,但command-shell字段始终残留\r字符,即使已通过mutate/gsub处理,Logstash无报错且运行正常。

当前使用的过滤器配置

filter {
    grok {
        match => {"message" => [ "%{WORD:username}:%{WORD:password}:%{NUMBER:userid}:%{NUMBER:groupid}:%{DATA:useridinfo}:%{DATA:homedir}:%{GREEDYDATA:command-shell}" ]
        }
    }
    mutate {
            remove_field => [ "@version", "log", "host", "@timestamp", "event", "message" ]
    }
    mutate {
        gsub => [ "command-shell", "\\r", "" ]
        }
}

示例输出

{"useridinfo":"guest","userid":"405","groupid":"100","homedir":"/dev/null","username":"guest","password":"x","command-shell":"/sbin/nologin\r"}
{"useridinfo":"nobody","userid":"65534","groupid":"65534","homedir":"/","username":"nobody","password":"x","command-shell":"/sbin/nologin\r"}

原始文件内容

guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin

已尝试将GREEDYDATA替换为DATA,但在Grok Debugger中无效,故保留GREEDYDATA;尝试过现有gsub规则但问题未解决。

解决方案

方案1:修正gsub的转义写法

你当前的gsub规则中,"\\r"会被Logstash解析为匹配字符\和r,而非回车符\r。需要将转义符调整为单个\:

mutate {
    gsub => [ "command-shell", "\r", "" ]
}

如果只想移除字段结尾的\r,可以用正则限定位置,避免误删字段内的合法字符:

mutate {
    gsub => [ "command-shell", "\r$", "" ]
}

方案2:在Grok阶段直接排除\r

修改Grok匹配规则,通过正向预查忽略行尾的\r,从根源避免捕获该字符:

grok {
    match => {"message" => [ "%{WORD:username}:%{WORD:password}:%{NUMBER:userid}:%{NUMBER:groupid}:%{DATA:useridinfo}:%{DATA:homedir}:%{GREEDYDATA:command-shell}(?=\r?$)" ]
    }
}

(?=\r?$)表示匹配行尾可选的\r,但不会将其捕获到command-shell字段中。

方案3:在Input阶段统一处理换行符

如果你的/etc/passwd文件实际是Windows格式(CRLF换行),可以在Input配置中直接指定换行格式,提前处理\r:

input {
    file {
        path => "/etc/passwd"
        codec => plain {
            newline => "LF"
            charset => "UTF-8"
        }
    }
}

这样Logstash读取文件时会自动将CRLF转换为LF,后续无需额外处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:44:56