中间平台工具 - graylog

graylog是非常好用的数据处理平台,可以对数据进行:streams分类、pipeline、正则匹配、统计汇总、定制化配置Alerts 等处理。

graylog的一些概念:

索引(消息存储的位置,默认indices default)

streams(从inputs里面,通过stream rules匹配某些字段条件,route to streams)

1,stream 如何与 inputs 消息关联?

//通过 stream rules 字段匹配做关联,比如需要做falco stream,则可根据 program=Falco做分流

2,stream 如何与 索引 关联?

stream消息存储在指定的索引中,通过 Editing Stream 来指定 索引 Index Set

3,stream 与 pipeline 是什么关系?

如果配置了 pipeline,可以在 pipeline Edit connections 里面指定 stream

伪流程 stream msg -> pipeline rules opr -> stream msg storage index

stream rules 可以为消息填充一些数据字段,比如根据 ip 查 ip负责人等。

rule语句:lookup("cmd_risk_rank_analyze", cmdb64);

其中 cmd_risk_rank_analyze 是数据库表->Lookup Tables 的一个表名

Data Adapter 可以编辑具体发送远程请求的 url

4,pipeline 如何与 alert 关联 ?

配置就可以了,有选择的。

5,graylog 搜索使用正则表达式:

rule:"System procs network activity" AND output_fields_proc_cmdline:/bash -c.*/

注意,/reg表达式/

++++++++++++++++++++
具体问题:

1,如何解析 syslog message 的 fd 字段 ? 

output

17:10:40.381138356: Notice (name=nginx p1=nginx p2=nginx p3=bash p4=docker-containe p5=docker-containe p6=dockerd pid=2518459 user=www loginuid=-1 tty=0 exepath=/usr/local/openresty_1.13.6.2/nginx/sbin/nginx cwd=/data1/htdocs/lua_v2/module/vip_user_idc_cn/ cmdline=nginx fd=10.24.78.203:41590->10.5.121.221:3306 l4p=tcp l3p=4 k8s_vip-user-idc-cn-batcha_vip-user-idc-cn-batcha-7cf754f9f8-65fwc_vipservice_c05b0ae3-0d05-40c8-84f6-511745224560_0 (id=09b5a1b70bc1) container_id=09b5a1b70bc1 image=43.docker.registry.idc.cn/basetechnical/vipservice/vip.user.idc.cn fd.num=1 fd.type=ipv4)

提取规则:
 

Condition
  • Will only attempt to run if the message matches the regular expression fd=[0-9].*->[0-9]
Configuration
  • grok_pattern: %{DATA}\sfd=%{IP:net_sip}:%{BASE10NUM:net_sport}->%{IP:net_dip}:%{BASE10NUM:net_dport}
  • named_captures_only:

那么graylog 日志将新增4个字段,net_sip, net_sport, net_dip, net_dport,表示fd的4元组tupe信息

2,如何根据 net_dip 值,查询连接情报库,如果恶意则设置 threat_result:"threat" 字段?

2.1 首先配置 lookup Tables

Lookup Tables

Lookup tables can be used in extractors, converters and processing pipelines to translate message fields or to enrich messages.

查询威胁情报信息

根据ip,域名,MD5查询威胁情报

Data adapter

威胁情报查询

Cache

NotCache

Edit

主要是配置 Cache 方式 以及 Data adapter 

威胁情报查询 (HTTP JSONPath)

Description

从威胁情报中心查询数据

Configuration

Lookup URL

http://10.5.140.173:13469/ThreatIntelligence/gpget?value=${key}

Single value JSONPath

$.res

Multi value JSONPath

$

2.2 再配置 Pipeline
pipeline 是非常强大的,分有多个stage,每个stage可以设置field值,在下一个stage中使用

pipeline 规则:

rule "connect_public_ip_search_threat_intelligence"

when
    $message.gprule == "outbound connection" AND 
    to_string($message.net_dip, "unknown") != to_string($message.net_sip, "unknown")
then
    let key = join(["ip", to_string($message.net_dip, "unknown")], "-");
    let threati = lookup("threatintelligence_search", key);
    set_field("threat_result", threati["res"]);
    set_field("threat_result_from", threati["from"]);
    set_field("threat_level", threati.extra.confidence_level);
    set_field("threat_info", threati.extra.judgments);
    set_field("threat_severity", threati.extra.severity);
end
 

2.3 总的数据流程

streams -> Pipeline connections -> stageN (rules)

+++++++++++++++++++++
graylog问题的一些排查:

@1,node节点端口有数据,但是界面上查询不到数据?

可能是 Nodes 节点挂了,需要重启:
ps axuf | grep graylog
rm -f /dev/shm/graylog.pid
kill -9 [graylog PID]

执行 /usr/local/graylog/bin/graylogctl start

+++++++++++++++++++++++
graylog(ES)的一些查询技巧例子:
​​​​​​​threat_result:"threat" AND NOT net_dip:/10\..*/ AND NOT busi2_name:"安全扫描" AND NOT busi_name:/.*竞品监控服务.*/ AND NOT output_fields_proc_cmdline:(/ping .*/ OR /nmap .*/ OR /HttpProxy .*/ OR /nginx/ OR /.*b-monitor.*/) AND ((threat_level:"high" AND threat_severity:"high") OR (NOT threat_result_from:"weibu"))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值