首页
学习
活动
专区
圈层
工具
发布
28 篇文章
1
使用Telegraf+GrayLog实现Linux业务系统服务异常时自动推送钉钉告警
2
GrayLog使用HTTP JSONPath方式调用微步在线云API识别威胁IP
3
使用GrayLog对PrometheusAlert推送的安全告警进行图形报表统计与分析
4
Windows服务器安装graylog-sidecar实现系统日志快速接入Graylog
5
​数据采集神器Telegraf对接开源日志服务器GrayLog
6
利用GrayLog的output功能实现简单的GrayLog分布式级联
7
GrayLog+nxlog采集邮箱登录日志csv文件并实现邮箱异地登录钉钉机器人告警
8
只能使用UDP:514端口接收Syslog日志的两种解决方法
9
开源蜜罐Hfish的简单部署并接入到GrayLog
10
一键安装脚本实现快速部署GrayLog Server 4.2.10单机版
11
利用GrayLog告警功能实现钉钉群机器人定时工作提醒
12
Linux主机安装NetFlow采集器并使用Graylog进行网络流量分析
13
CentOS7下部署OSSEC开源主机入侵检测系统(HIDS)并接入到GrayLog
14
Sysmon+Nxlog+GrayLog实现Windows服务器安全日志监控
15
Linux防暴力破解工具Fail2ban的日志接入到GrayLog并实现GeoIP展示
16
Nginx访问日志接入GrayLog4.2.5并通过GeoIP展现访问者IP的地理位置信息
17
商业堡垒机对接GrayLog实现生产服务器高危命令钉钉机器人自动告警
18
使用腾讯云SSL证书为GrayLog Web接口配置nginx HTTPS/SSL反向代理
19
GrayLog中使用Prometheus Alert实现钉钉群机器人自动告警
20
Graylog4.2集群部署完整教程
21
GrayLog配置SSH暴力破解攻击日志告警并推送到钉钉机器人
22
【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人
23
【已修复Log4j2漏洞】GrayLog安全版本4.2.3升级实践
24
利用pipeline实现GrayLog中用日志源IP地址区分主机
25
Graylog4.2+GeoIP2获取SSH暴力破解攻击者IP的地理位置信息
26
使用EVE-NG模拟山石网科防火墙syslog日志接入GrayLog4.1
27
开源日志管理系统Graylog之Sidecar功能实践
28
CentOS7下部署Graylog开源日志管理系统

【实践】GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人

GrayLog4.2使用webhook成功推送日志告警到钉钉群机器人实践

GrayLog4.2可以使用HTTP告警和邮件告警两种方式进行日志告警

下面同时测试这两种告警方式

准备条件

  • 1、QQ邮箱为例,QQ邮箱授权码

以QQ邮箱为例

  • 2、下载webhook
代码语言:javascript
复制
https://github.com/adnanh/webhook

(图片可点击放大查看)

  • 3、准备一个钉钉群机器人

参考钉钉开放文档,添加自定义机器人

代码语言:javascript
复制
https://open.dingtalk.com/document/robots/custom-robot-access

钉钉机器人安全设置中为webhook所在服务器的公网出口IP

(图片可点击放大查看)

(图片可点击放大查看)

  • 4、GrayLog日志分析服务器及测试机器

GrayLogServer:192.168.31.127

测试机 192.168.31.232

具体步骤

1、Graylog配置文件进行修改

代码语言:javascript
复制
cd /etc/graylog/server/
vim server.conf

配置文件中添加邮箱服务器的配置

代码语言:javascript
复制
transport_email_enabled = true
transport_email_hostname = smtp.qq.com
transport_email_port = 587
transport_email_use_auth = true
transport_email_use_tls = true
transport_email_use_ssl = false
transport_email_auth_username = 1187724389@qq.com
transport_email_auth_password = rrXXXXXXXXXXX
transport_email_subject_prefix = [graylog]
transport_email_from_email = graylog@walkingcloud.cn
transport_email_web_interface_url = https://graylog.walkingcloud.cn

(图片可点击放大查看)

(图片可点击放大查看)

2、重启服务

代码语言:javascript
复制
systemctl restart graylog-server.service 
tail -f /var/log/graylog-server/server.log

(图片可点击放大查看)

3、部署webhook

下载webhook后上传到Graylog服务器

(图片可点击放大查看)

代码语言:javascript
复制
cd /opt
tar -zxvf webhook-linux-amd64.tar.gz -C ./
cp webhook-linux-amd64/webhook ./
chmod 755 webhook
./webhook --help

vi /opt/hooks.json
[
 {
  "id": "push2dingtalk",
  "execute-command" : "/opt/push2robot.sh",
 "pass-arguments-to-command":
  [
    {
      "source":"entire-payload",
      #"name":"parameter-name"
    }
  ]
 } 
]

(图片可点击放大查看)

(图片可点击放大查看)

启动webhook

代码语言:javascript
复制
 ./webhook -hooks /opt/hooks.json -port 8080 --verbose

(图片可点击放大查看)

代码语言:javascript
复制
firewall-cmd --add-port=8080/tcp --permanent --zone=public 
firewall-cmd --reload
并测试
curl -H "Content-Type: application/json" -X POST -d 'test' http://192.168.31.127:8080/hooks/push2dingtalk

(图片可点击放大查看)

发送POST请求到http://192.168.31.127:8080/hooks/push2dingtalk

(图片可点击放大查看)

可以看到请求可以收到

4、配置GrayLog Alert告警流程

参考如下文档

代码语言:javascript
复制
https://zhuanlan.zhihu.com/p/342764427

1、新建用户

(图片可点击放大查看)

(图片可点击放大查看)

再新建告警通知类型Email Notification

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

2、再新建HTTP Notification

Title:钉钉机器人告警

URL http://192.168.31.127:8080/hooks/push2dingtalk

(图片可点击放大查看)

3、并执行测试告警

可以看到webhook有收到post请求

然后保存

(图片可点击放大查看)

(图片可点击放大查看)

4、接下来配置Alert

比如SSH 登录失败告警

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

(图片可点击放大查看)

5、接下配置推送到钉钉机器人的脚本

提前yum安装jq工具

(图片可点击放大查看)

推送到钉钉机器人的脚本脚本内容如下

(图片可点击放大查看)

代码语言:javascript
复制
[root@centos ~]# vi /opt/push2robot.sh 
[root@centos ~]# vi /opt/alert.json
[root@centos ~]# 
[root@centos ~]# chmod 755 /opt/push2robot.sh 
[root@centos ~]# cat /opt/push2robot.sh 
#!/bin/bash
PAYLOAD= $1
echo $1 >> /var/log/test.log
PAYLOAD1=`echo $1 | jq '.event_definition_title' | sed 's/"//g'`
PAYLOAD2=`echo $1 | jq '.backlog[].fields.full_message' | sed 's/"//g'`
echo $PAYLOAD1 >> /var/log/payload1.log
echo $PAYLOAD2  >> /var/log/payload2.log
sed -i "s/PAYLOAD1/$PAYLOAD1/g" /opt/alert.json
sed -i "s/PAYLOAD2/$PAYLOAD2/g" /opt/alert.json
curl -H "Content-Type: application/json" -X POST -d @/opt/alert.json https://oapi.dingtalk.com/robot/send?access_token=413d9a8435aeaXXXXXXXXX91648b73a069c7aa2e709595

cat  > /opt/alert.json << \EOF
{
 "msgtype": "markdown",
 "markdown": 
         {
         "title":"PAYLOAD1",
         "text": "#### PAYLOAD1 \n #####原始日志:PAYLOAD2 \n"
     }
}
EOF
代码语言:javascript
复制
[root@centos ~]# cat /opt/alert.json 
{
 "msgtype": "markdown",
 "markdown": 
         {
         "title":"PAYLOAD1",
         "text": "#### PAYLOAD1 \n #####原始日志:PAYLOAD2 \n"
     }
}

6、接下触发一下SSH登录失败

192.168.31.232测试机触发登录失败的日志

(图片可点击放大查看)

验证是否有收到钉钉告警和邮件告警

(图片可点击放大查看)

(图片可点击放大查看)

可以看到已经收到邮件和钉钉告警

总结:

当然单条登录失败就触发一条告警,当SSH攻击日志较多时,告警就会很频繁

但在研究聚合,比如登录失败的数量达到一定数量时才触发告警,测试时未能成功,后续有时间再研究

(图片可点击放大查看)

下一篇
举报
领券