【发布时间】:2022-12-05 07:13:09
【问题描述】:
我正在努力创建一些格式正确且高效的正则表达式条目。我会强调高效的,因为这些正则表达式条目每秒可以看到数千条日志。低效的正则表达式条目可能会导致严重的性能影响。
问题:regex101(通过一种风格)是否支持 POSIX ERE Regex?谷歌搜索表明 PCRE2 应该支持 BRE+ERE 等等。
正则表达式类型:POSIX ERE
系统日志应用程序:rsyslog (EL7)
示例有效负载(格式正确 - 敏感信息已删除):
Jul 10 00:00:00 Firewall-Name-Removed CEF:0|Fortinet|FortiGate-removed|1.2.3,build1111 (GA)|0000000013|转发流量接受|5|start=2022 年 7 月 10 日 00:00:00 logver =604091966 deviceExternalId=FG9A9A9A9999999 dvchost=Firewall-Name-Removed ad.vd=root ad.eventtime=1111111111111111111 ad.tz=-9999 ad.logid=0000000013 cat=traffic ad.subtype=转发设备1hostSeverity=1.notice sever =RandomHost1 spt=62119 deviceInboundInterface=DII-Out ad.srcintfrole=lan ad.srcssid=SSID 已删除 ad.apsn=ABC123D ad.ap=CHL-07 ad.channel=157 ad.radioband=802.11ac n-only ad .signal=-40 ad.snr=55 dst=2.2.2.2 dpt=53 deviceOutboundInterface=DOI-Out ad.dstintfrole=undefined ad.srccountry=Reserved ad.dstcountry=CountryRemoved externalID=123456789 proto=00 act=accept ad.policyid =000 ad.policytype=policy ad.poluuid=UUID-Removed ad.policyname=policy_name_removed app=DNS ad.trandisp=noop ad.appid=16195 ad.app=DNS ad.appcat=Network.Service ad.apprisk=elevated ad .applist=UTM 名称 - 删除了 ad.duration=180 out=0 in= 205 ad.sentpkt=0 ad.rcvdpkt=1 ad.utmaction=允许 ad.countdns=1 ad.osname=Windows ad.srcswversion=10 ad.mastersrcmac=MAC 已删除 ad.srcmac=MAC 已删除 ad.srcserver=0 tz= “-9999”
我试图做的是删除不需要的特定日志。通常我会在 SIEM 级别通过路由规则(我可以在其中使用字段)之类的东西来执行此操作,但在可预见的未来这是不可能的。在这种特殊情况下:我试图排除以下信息。
源IP:在特定范围内
deviceOutboundInterface:是 DOI-Out
当前正则表达式:“\bsrc=1.1.1[4-5]{0,1}.[0-9]{0,3}\b.*?\bdeviceOutboundInterface=DOI-Out\b“(PCRE2 中的Regex101 链接)。如果匹配,则拒绝日志(通过停止调用)。否则,它会移至其他条目以检查不必要的日志。
我的大多数正则表达式条目都是低两位数,因为它们要简单得多。有没有更好的方法可以使更复杂的正则表达式更高效?
感谢您提供的任何见解。
【问题讨论】: