[linux运维] 利用zabbix监控linux高危命令并发送告警(基于Zabbix 6)

之前写过一篇是基于zabbix 5.4的实现文章,但是不太详细,最近已经有两个小伙伴在zabbix 6上操作,发现触发器没有str函数,所以更新一下本文,基于zabbix 6

0x01 来看看效果

高危指令出发问题告警:

图片

发出邮件告警:

图片

     

通过历史记录回溯用户指令

图片


0x02 如何实现命令记录?

1)Linux操作系统可以通过history命令查询执行的历史命令信息

图片

2)BASH在每次显示PS1之前都会执行PROMPT_COMMAND定义的内容 -- 可以理解为,每次用户在命令行点击一个回车之后,PROMPT_COMMAND都会被执行一次

3)利用上面两个特性,就可以实现命令行的记录

实现:修改Linux系统的/etc/bashrc文件

# 创建命令行记录文件
log_file=/var/log/cmd.log
# 如果是root的话就创建文件
if [[ $UID -eq 0 ]];then
  # 判断文件是否存在,不存在就创建
  if [ ! -f $log_file ]
  then
      touch $log_file
      chmod 777 $log_file
      chattr +a $log_file
  fi
fi
# 定义PROMPT_COMMAND的内容为函数__set_prompt
export PROMPT_COMMAND=__set_prompt
# 定义PROMPT_COMMAND变量为只读变量
readonly PROMPT_COMMAND
# 定义最后一个history id
Last_Hit_Num=`history 1 | awk '{print $1}'`
__set_prompt (){
    local EXIT=$? # 定义命令执行的结果  
    # 获取本次命令执行的history id
    export Cur_HIT_NUM=`history 1 | awk '{print $1}'`  
    # 如果本次执行的命令和上次执行的命令一样,则id没有变化,不需要进行记录
    # 如果这里不处理,空白回车也会导致记录,记录的值就是上次执行的命令
    if [[ $Cur_HIT_NUM -ne $Last_Hit_Num ]];then
       # 判断命令是否执行成功
       if [[ $EXIT -ne 0 ]];then
           echo "执行时间:$(date '+%y-%m-%d %T') 用户:$(who am i | awk "{print \$1\" \"\$2\" \"\$5}") 当前目录:$(pwd) 执行命令:$(history 1 | sed 's/^[ \t]*//g' | cut -d " " -f2-) 执行失败" >>$log_file
  else
           echo "执行时间:$(date '+%y-%m-%d %T') 用户:$(who am i | awk "{print \$1\" \"\$2\" \"\$5}") 当前目录:$(pwd) 执行命令:$(history 1 | sed 's/^[ \t]*//g' | cut -d " " -f2-) 执行成功" >>$log_file
      fi
    fi
    # Cur_Hit_Num赋值给Last_Hit_Num
    export Last_Hit_Num=$Last_Hit_Num
    return $EXIT
}

退出用户重新登录,或者source一下/etc/bashrc使之生效。

查看记录是否成功

图片


0x03 在Zabbix上配置监控

1)创建一个模板Linux_Securtiry

图片

2)创建监控项Linuxshell

图片

键值是:logrt[/var/log/cmd.log,,,,,,,,]

3)新建一个触发器(触发告警),添加表达式

图片

     4)监控项选择上面创建的监控项,功能选择find(),O为匹配模式,我们用like,和数据库中的like是一样的意思,V是需要匹配的值,结果为1,填完之后点插入即可。

图片

    插入之后就会生成一条表达式

find(/Linux_Security/logrt[/var/log/cmd_log,,,,,,,,],,"like"," rm ")=1

如果要匹配多个命令,可以复制表达式,使用or连接,如:

find(/Linux_Security/logrt[/var/log/cmd_log,,,,,,,,],,"like"," rm ")=1 or
find(/Linux_Security/logrt[/var/log/cmd_log,,,,,,,,],,"like"," touch ")=1 or 
find(/Linux_Security/logrt[/var/log/cmd_log,,,,,,,,],,"like"," vi ")=1

最后把问题时间生成模式设置为多重即可。

图片

以下操作沿用5.4的配置,没有更新

5)配置一个发送邮件的动作

图片

图片



 

0x04 测试一下

    执行命令

图片

    查看Zabbix告警

图片

    可以看到已经发送了邮件,啥时候发恢复邮件呢?等最后一条命令不是高危命令就执行恢复了。

图片

    查看告警邮件

图片

    选择问题,点击历史记录可以查看历史的命令记录

图片

图片

--完,我是运维少年,欢迎关注我的微信公众号~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/227204.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2、Redis变慢原因排查(下)

感觉Redis变慢了,这些可能的原因你查了没 ?(下) Redis变慢排查的上一篇【感觉Redis变慢了,这些可能的原因你查了没 ?(上)】,我们是基于Redis命令为入口,比如命令使用不得当,bigkey问题&#xf…

STM32F1的TIM输出比较(PWM)

目录 1. OC(Output Compare)输出比较 2. PWM简介 3. 输出比较通道(高级) 4. 输出比较通道(通用) 5. PWM基本结构 6. 配置介绍 6.1 输出比较模块配置 6.2 给输出比较结构体赋一个默认值 6.3 配置强制输出模式 6.4 配置CRR寄存器的预装…

Python Appium Selenium 查杀进程的实用方法

一、前置说明 在自动化过程中,经常需要在命令行中执行一些操作,比如启动应用、查杀应用等,因此可以封装成一个CommandExecutor来专门处理这些事情。 二、操作步骤 # cmd_util.pyimport logging import os import platform import shutil i…

Linux篇之在Centos环境下搭建Nvidia显卡驱动

一、前提条件 1、首先确认内核版本和发行版本,再确认显卡型号 uname -a // Linux localhost.localdomain 4.18.0-408.el8.x86_64 #1 SMP Mon Jul 18 17:42:52 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux1.2 cat /etc/redhat-release // CentOS Stream release 81.3…

TCP单聊和UDP群聊

TCP协议单聊 服务端: import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.V…

从Centos-7升级到Centos-Stream-8

如果在正式环境升级,请做好数据备份以及重要配置备份!因为升级会造一部分应用被卸载。 注意:升级前请备份好数据,升级可能会导致ssh的root用户无法登陆、网卡名称发生改变、引导丢失无法开机等问题。 1.安装epel源 yum -y install…

QT作业1

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 头文件代码&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include <QLabel> //标签类 #include <QMovie> //动图类 #include <…

【华为数据之道学习笔记】3-4主数据治理

主数据是参与业务事件的主体或资源&#xff0c;是具有高业务价值的、跨流程和跨系统重复使用的数据。主数据与基础数据有一定的相似性&#xff0c;都是在业务事件发生之前预先定义&#xff1b;但又与基础数据不同&#xff0c;主数据的取值不受限于预先定义的数据范围&#xff0…

AI助力智慧农业,基于DETR【DEtection TRansformer】模型开发构建田间作物场景下庄稼作物、杂草检测识别系统

智慧农业随着数字化信息化浪潮的演变有了新的定义&#xff0c;在前面的系列博文中&#xff0c;我们从一些现实世界里面的所见所想所感进行了很多对应的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《自建数据集&#xff0c;基于YOLOv7开发构建农田场景下杂草…

Java 第21章 网络通信

网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java 已经将网络程序所需要的元素封装成不同的类&#xff0c;用户只要创建这些类的对象&#xff0c;使用相应的方法&#xff0c;即使不具备有关的网络支持&#xff0c;也可以编写出高质量的网络通信程序。 …

Python-Opencv图像处理的小坑

1.背景 最近在做一点图像处理的事情&#xff0c;在做处理时的cv2遇到一些小坑&#xff0c;希望大家遇到的相关的问题可以注意&#xff01;&#xff01; 2. cv2.imwrite保存图像 cv2.imwrite(filename, img, [params]) filename&#xff1a;需要写入的文件名&#xff0c;包括路…

一键AI智能改写,一键AI智能生成原创文章

在数字化时代&#xff0c;创作内容已经成为大家日常生活和工作中不可或缺的一部分。本文将深入探讨一键AI智能改写的概念&#xff0c;剖析其背后的技术原理&#xff0c;同时聚焦于147原创助手这一代表性工具&#xff0c;解读其在改写文案上的独特之处&#xff0c;以及在各大平台…

JavaWeb-Tomcat

1. Web服务器 web服务器由硬件和软件组成&#xff1a; 硬件&#xff1a;计算机系统软件&#xff1a;计算机上安装的服务器软件&#xff0c;安装后可以为web应用提供网络服务。 常见的JavaWeb服务器&#xff1a; Tomcat&#xff08;Apache&#xff09;&#xff1a;应用最广泛的…

B站缓存视频M4S合并MP4(js + ffmpeg )

文章目录 B站缓存视频转MP4&#xff08;js ffmpeg &#xff09;1、说明 2、ffmpeg2.1 下载地址2.2 配置环境变量2.3 测试2.4 转换MP4命令 3、处理程序 B站缓存视频转MP4&#xff08;js ffmpeg &#xff09; 注意&#xff1a;这样的方式只用于个人之间不同设备的离线观看。请…

Docker构建自定义镜像

创建一个docker-demo的文件夹,放入需要构建的文件 主要是配置Dockerfile文件 第一种配置方法 # 指定基础镜像 FROM ubuntu:16.04 # 配置环境变量&#xff0c;JDK的安装目录 ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo…

进行生成简单数字图片

1.之前只能做一些图像预测,我有个大胆的想法,如果神经网络正向就是预测图片的类别,如果我只有一个类别那就可以进行生成图片,专业术语叫做gan对抗网络 2.训练代码 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transfo…

数据分析基础之《matplotlib(3)—散点图》

一、常见图形种类及意义 1、matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。我们需要知道不同的统计图的意义&#xff0c;以此来决定选择哪种统计图来呈现我们的数据 2、折线图plot 说明&#xff1a;以折线的上升或下降来表示统计数量的增减变化的统计图 特点&…

Django + Matplotlib:实现数据分析显示与下载为PDF或SVG

写作背景 首先&#xff0c;数据分析在当前的信息时代中扮演着重要的角色。随着数据量的增加和复杂性的提高&#xff0c;人们对于数据分析的需求也越来越高。 其次&#xff0c;笔者也确确实实曾经接到过一个这样的开发需求&#xff0c;甲方是一个医疗方面的科研团队&#xff0…

网络安全(五)--Linux 入侵检测分析技术

8. Linux 入侵检测分析技术 目标 了解入侵检测分析的基本方法掌握查看登录失败用户的方法掌握查阅历史命令的方法掌握检查系统开机自启服务的方法 8.1. 概述 最好的安全防护当然是“域敌于国门之外”&#xff0c; 通过安全防护技术&#xff0c;来保证当前主机不被非授权人员…

【链表Linked List】力扣-117 填充每个节点的下一个右侧节点指针II

目录 问题描述 解题过程 官方题解 问题描述 给定一个二叉树&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 N…