使用 Auditbeat 模块监控 shell 命令
使用 Auditbeat 模块监控 shell 命令
Auditbeat Audited 模块可以用来监控所有用户在系统上执行的 shell 命令。在终端用户偶尔才会登录的服务器上,通常需要进行监控。
该示例是在 CentOS Linux 7.6 上使用 Auditbeat 7.4.2 RPM 软件包和 Elasticsearch Service(ESS)[https://www.elastic.co/products/elasticsearch/service]上的 Elastic Stack ] 7.4.2 部署的。
可以参考其中的思路,配置流程等,使用本机自建的ES,不使用Elasticsearch Service(ESS)集群
禁用 Auditd
系统守护进程 auditd 会影响 Auditbeat Audited 模块的正常使用,所以必须将其禁用。
# 停止 auditd:
service auditd stop
# 禁用服务:
systemctl disable auditd.service
如果您在使用 Auditbeat Auditd 模块的同时也必须要运行 Audited 进程,那么在内核版本为 3.16 或者更高的情况下可以考虑设置 socket_type: multicast 参数。默认值为 unicast。有关此参数的更多信息,请参见文档[https://www.elastic.co/guide/en/beats/auditbeat/master/auditbeat-module-auditd.html#_configuration_options_14]的配置选项部分。
配置 Auditbeat
Auditbeat 守护进程将事件数据发送到一个 Elasticsearch Service(ESS)集群中。有关更多详细信息,请参见文档Auditbeat[https://www.elastic.co/guide/en/beats/auditbeat/master/configuring-howto-auditbeat.html]
中的配置部分。
要想获取工作示例,必须配置 Auditbeat 的 cloud.id 和 cloud.auth 参数,详情参见此文档[https://www.elastic.co/guide/en/beats/auditbeat/master/configure-cloud-id.html]。
编辑 /etc/auditbeat/auditbeat.yml:
cloud.id: <your_cloud_id>
cloud.auth: ingest_user:password
如果您要将数据发送到 Elasticsearch 集群(例如本地实例),请参见此文档:[https://www.elastic.co/guide/en/beats/auditbeat/master/configure-cloud-id.html]。
Auditbeat 模块规则
Audited 模块订阅内核以接收系统事件。定义规则以捕获这些事件,并且使用Linux Auditctl 进程所使用的格式,详情参见此文档:[https://linux.die.net/man/8/auditctl]。
# cat /etc/auditbeat/audit.rules.d/rules.conf
-a exit,always -F arch=b64 -F euid=0 -S execve -k root_acct
-a exit,always -F arch=b32 -F euid=0 -S execve -k root_acct
-a exit,always -F arch=b64 -F euid>=1000 -S execve -k user_acct
-a exit,always -F arch=b32 -F euid>=1000 -S execve -k user_acct
- euid 是用户的有效ID。0 代表会获取 root 用户和 uid >=1000 或者权限更高的其他用户的所有活动。
- -k 用于为事件分配任意“键”,它将显示在 tags 字段中。它还可以在 Kibana 中用来对事件进行过滤和分类。
Auditbeat 设置命令
运行Auditbeat 加载索引模板,读取 node pipelines,索引文件周期策略和Kibana 仪表板。
auditbeat -e setup
如果您不使用ESS,欢迎参考此文档[https://www.elastic.co/guide/en/beats/auditbeat/current/setup-kibana-endpoint.html] 来设置您的 Kibana 端点。
开始使用
systemctl start auditbeat
# 列出启用的规则:
auditbeat show auditd-rules
-a never,exit -S all -F pid=23617
-a always,exit -F arch=b64 -S execve -F euid=root -F key=root_acct
-a always,exit -F arch=b32 -S execve -F euid=root -F key=root_acct
-a always,exit -F arch=b64 -S execve -F euid>=vagrant -F key=user_acct
-a always,exit -F arch=b32 -S execve -F euid>=vagrant -F key=user_acct
监控数据
当用户执行一些类似于 whoami,ls 以及 lsblk 的 shell 命令时,kibana 中就会发现这些事件。
- Kibana 会显示出 user.name,process.executable,process.args 和 tags 这些选定的字段。
- 过滤的字段是 user.name: root 和 auditd.data.syscall: execve。
- 每秒刷新一次数据。
TTY 审计
当系统中发生 TTY 事件时,Auditbeat Audited 模块也可以接收它们。配置system-auth PAM 配置文件以启用 TTY。只有 root 用户的 TTY 事件将被实时记录。其他用户的事件通常会被缓冲直到 exit。TTY 审计会捕获系统内置命令像pwd,test 等。
追加以下内容到 /etc/pam.d/system-auth 便可以对所有用户启用审核,关于 pam_tty_audit 的详细信息,参见此文档:[https://linux.die.net/man/8/pam_tty_audit]。
session required pam_tty_audit.so enable=*
测试
$ sudo su -
Last login: Fri Nov 22 23:43:00 UTC 2019 on pts/0
$ helllloooo there!
-bash: helllloooo: command not found
$ exit
Kibana 发现
思考
Auditbeat 还可以做什么:
- 当一个文件在磁盘上更改(创建,更新或删除)时可以发送事件,得益于 file_integrity 模块,详情参考此文档:[https://www.elastic.co/guide/en/beats/auditbeat/current/auditbeat-module-file_integrity.html]。
- 通过 system 模块发送有关系统的指标,详情参考此文档:[https://www.elastic.co/guide/en/beats/auditbeat/current/auditbeat-module-system.html]。
该链接还提供了 Auditbeat 的相关文档,详情参考此文档:[https://www.elastic.co/guide/en/beats/auditbeat/current/index.html]。
文章转载自:https://mp.weixin.qq.com/s/_-rtOq0KrzbatEVm2Yhsag
使用 Auditbeat 模块监控 shell 命令的更多相关文章
- 利用commands模块执行shell命令
利用commands模块执行shell命令 用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态 ...
- python的subprocess模块执行shell命令
subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...
- subprocess模块还提供了很多方便的方法来使得执行 shell 命令
现在你可以看到它正常地处理了转义. 注意 实际上你也可以在shell=False那里直接使用一个单独的字符串作为参数, 但是它必须是命令程序本身,这种做法和在一个列表中定义一个args没什么区别.而如 ...
- day20 二十、加密模块、操作配置文件、操作shell命令、xml模块
一.加密模块 1.hashlib模块:加密 ①有解密的加密方式 ②无解密的加密方式:碰撞检查 -- 1)不同数据加密后的结果一定不一致 -- 2)相同数据的加密结果一定是一致的 import hash ...
- Ansible 命令相关模块command, shell, raw, expect, script, telnet[转]
本文主要介绍Ansible的几个命令模块,包括: command - 在远程节点上执行命令 shell - 让远程主机在shell进程下执行命令 script - 将本地script传送到远程主机之后 ...
- [Python2.x] 利用commands模块执行Linux shell命令
用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要 ...
- lite-monitor 一款基于shell命令的监控系统
介绍 lite-monitor 一款基于shell命令的监控系统,可以根据项目中输出的日志定时输出或者统计输出,并发送钉钉机器人报警消息. lite-monitor能做什么: 定时监控某个服务进程是否 ...
- 【AMAD】watchdog -- 用于监控文件系统的事件,并且提供了shell命令行工具
简介 动机 作用 用法 个人评分 简介 用于监控文件系统的事件的Python库,并且提供了shell命令行工具 动机 有很多情况下,我们希望监控文件的变化,在变化之后作出一些响应. 比如flask,d ...
- python之commands和subprocess入门介绍(可执行shell命令的模块)
一.commands模块 1.介绍 当我们使用Python进行编码的时候,但是又想运行一些shell命令,去创建文件夹.移动文件等等操作时,我们可以使用一些Python库去执行shell命令. com ...
随机推荐
- 字符输出流_Writer类&FileWriter类介绍和字符输出流的基本使用_写出单个字符到文件
java.io.Writer:字符输出流,是所有字符输出流的最顶层的父类,是一个抽象类 共性的成员方法: - void write(int c) 写入单个字符 - void write(char[] ...
- 本机通过IP地址连接Ubuntu18.04+ on Vmware
一.Vmware-顶部菜单栏-编辑-虚拟网络编辑器: 点一下 添加一个NAT模式的网络:要记住名称,比如这里我的是VMnet8 子网ip可以自己写,建议全程就都按我这个写,后续方便校对. 点一下 NA ...
- net core 3.1使用identityServer登录时signin-oidc报Correlation failed的解决方法
此问题全网找了很久,也困扰了我很久,始终没有找到解决方法.今天结合网上其他问题的帖子,自己研究的半天,终于找到了这个解决方法,经亲自测试可行.欢迎大牛指导指正. 有时客户收藏的系统地址是认证端的,然后 ...
- WSL2安装Ubuntu20.04
前言:听说WSL2需要Window版本在1904以上(我的window版本是1909,所以未能验证真实性) 启用WSL 控制面板 → 程序 → 程序和功能 → 启用或关闭Windows功能 勾选 适用 ...
- 2022-7-20 第七组 pan小堂 String
字符串 String 字符串部分方法 字符串对象的特点: 1.Java程序中所有双引号引起来的内容,都是String类的对象 2.字符串内容不可变,它们的值在创建后不能被更改(在底层被final修饰, ...
- ubu18时间设置
ubu18 日期设置 1.date date 命令修改系统时间,重启失效,需要写入硬件Bios #查看日期 date #修改日期 date -s "2022-01-14 09:32:00&q ...
- 浅谈Meet in the middle——MITM
目测观看人数 \(0+0+0=0\) \(\mathrm{Meet\;in\;the\;middle}\)(简称 \(\rm MITM\)),顾名思义就是在中间相遇. 可以理解为就是起点跑搜索树基本一 ...
- 43%非常看好TypeScript…解读“2022前端开发者现状报告”
摘要:近日,The Software House 发布了"2022前端开发者现状报告",笔者在此对报告内容进行解读,供大家参考. 本文分享自华为云社区<"2022前 ...
- DolphinScheduler JSON拆解详解
本次活动邀请DolphinScheduler社区活跃贡献者,开源积极分子,现就职于政采云大数据部门,从事大数据平台架构工作的李进勇同学给大家分享相关内容. 同时也特别感谢示说网对本次直播活动的大力支持 ...
- LuoguP2953 [USACO09OPEN]牛的数字游戏Cow Digit Game(博弈论)
1~9显然,后面平\(A\)过去 #include <iostream> #include <cstdio> #include <cstring> #include ...