Graylog与SIEM

Graylog是一个开源的SIEM系统,在国外有一定的群众基础, 国内也有很多人用。但是关于Graylog的中文资料一直很少,搜索引擎的找出来的结果,要么是过时的,要么涉及的知识应用点不是太深入,所以想在小专栏开一个帖子专门写这个。

和以前一样,这个文章就是在线编辑,写那是那,尽量和网上的文章有差异化, 太多重复的东西,就是一笔代过,官方网有的也一笔代过。

Graylog对Input的操作,是整个Graylog使用过程中,最常的一种操作,所以,以下的技能十分有必要掌握:

1.使用NC向 Input端口发送UDP包数据。

echo -n '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }' | nc -w1 -u 0.0.0.0 10000

2.使用NC向 Input端口发送TCP包数据。

echo -n -e '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }'"\0" | nc -w0 0.0.0.0 10000

3.使用CURL向 Input端口发送HTTP请求。

curl -X POST -H 'Content-Type: application/json' -d '{ "version": "1.1", "host": "example.org", "short_message": "A short message", "level": 5, "_some_info": "foo" }' 'http://0.0.0.0:10000/gelf'

这种基于HTTP的GELF格式的Input创建方式,对于快速创建HTTP REST接口,接受数据就非常的方便了。
这个curl中的json数据是标注json,但要保证服务器收到数据,有一个字段是不能没有的, 如果没有,数据不会被Graylog接收,就是message这个字段, 如果你传的时候传的是short_mesage,其实graylog也会把名字转成message这个名,然后再存。

curl -XPOST 0.0.0.0:10001/gelf -p0 -d '{"short_message":"Hello there", "host":"example.org", "facility":"test", "_foo":"bar"}'

发送数以外,我们还要判断数据日志,是否被正常的接受,需要监听对应的端口。

sudo tcpdump  -i eth0  dst port 510    -l -s 0 -w -  | strings

在Graylog里账号密码不是明语言的,需要加密转换, 用下面的命令就可以完成。

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

这样把加密会的密码添加到server.conf里对应密码的位置就可以。

sudo tcpdump -i enp2s0f1 dst port 16017 -l -s 0 -w - | strings

用户账号密码管理

pwgen -N 1 -s 96
echo -n 123456 | sha256sum

mongoDB数据备份

一个MongoDB集群需要三个结点,要对单点数据进行备份:

mongodump --db databasename --out file directory
mongorestore -u superuser -p 123456 --port 27017 --authenticationDatabase databasename -d databasename /backup/mongodb/

创建mongoDB数据库用户

  • use tdp

  • db

  • db.tdp.insert({“key”:“value”})

  • db.createUser({

  • user:‘username’,

  • pwd:‘userpasswd’,

  • roles:[

  • {role:‘readWrite’,db:‘admin’}

  • ]

  • })