浅析使用 Auditbeat 模块监控 shell 命令的问题

 更新时间:2022年02月18日 15:22:10   作者:三度  
Auditbeat Audited 模块可以用来监控所有用户在系统上执行的 shell 命令,在终端用户偶尔才会登录的服务器上,通常需要进行监控,本文给大家介绍使用 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 命令的文章就介绍到这了,更多相关Auditbeat 模块shell 命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一个可交互的并发ping检测脚本

    一个可交互的并发ping检测脚本

    可交互的并发ping检测脚本,供大家学习参考。重点& 跟wait,这样“并发”的结果是输出结果不是能按顺序,后台返回。如果需要再排序下
    2013-02-02
  • 一些Linux Shell中的权限相关知识总结

    一些Linux Shell中的权限相关知识总结

    这篇文章主要介绍了一些Linux Shell中的权限相关知识总结,使Linux入门学习中的基础知识,需要的朋友可以参考下
    2015-07-07
  • shell清理指定目录中指定天数之前的旧文件

    shell清理指定目录中指定天数之前的旧文件

    本文主要介绍了shell清理指定目录中指定天数之前的旧文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Shell脚本实现监控rsync数据是否传输完

    Shell脚本实现监控rsync数据是否传输完

    这篇文章主要介绍了Shell脚本实现监控rsync数据是否传输完,本文直接给出实现代码,需要的朋友可以参考下
    2014-12-12
  • 如何利用 tee 命令调试shell脚本中的管道

    如何利用 tee 命令调试shell脚本中的管道

    在编写shell脚本时,调试是个比较麻烦的事,特别是涉及到多层管道命令的时候,会产生多个中间结果,tee命令的作用是从标准输入中读取数据写入标准输出或文件中,利用它可以从管道中读取中间结果并写入本地临时文件中,通过中间结果可以一步一步的定位到脚本的错误
    2021-05-05
  • shell 脚本自动搭建nfs服务的方法示例

    shell 脚本自动搭建nfs服务的方法示例

    这篇文章主要介绍了shell 脚本自动搭建nfs服务的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Shell脚本中$符号的几种用法小结

    Shell脚本中$符号的几种用法小结

    本文主要介绍了Shell 脚本中 '$' 符号的多种用法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 每天一个linux命令之locate 命令

    每天一个linux命令之locate 命令

    locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,这篇文章主要介绍了每天一个linux命令之locate 命令的相关资料,需要的朋友可以参考下
    2016-11-11
  • Linux用户在第一次登录时强制更改初始密码

    Linux用户在第一次登录时强制更改初始密码

    在多用户Linux环境下,创建使用某个随机默认密码的用户帐户是标准做法。之后在成功登录后,新用户可以将默认密码更改成自己的密码。出于安全方面的原因,常常建议“迫使”用户在第一次登录后更改默认密码,以确保最初的一次性密码不再使用,需要的朋友可以参考下
    2015-10-10
  • Shell脚本实现查杀子进程、僵尸进程

    Shell脚本实现查杀子进程、僵尸进程

    这篇文章主要介绍了Shell脚本实现查杀子进程、僵尸进程,本文直接给出实现代码,实现递归找到导致进程僵死的最底层子进程并杀除,需要的朋友可以参考下
    2015-01-01

最新评论