使用 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 还可以做什么:

文章转载自:https://mp.weixin.qq.com/s/_-rtOq0KrzbatEVm2Yhsag

使用 Auditbeat 模块监控 shell 命令的更多相关文章

  1. 利用commands模块执行shell命令

    利用commands模块执行shell命令 用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态 ...

  2. python的subprocess模块执行shell命令

    subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...

  3. subprocess模块还提供了很多方便的方法来使得执行 shell 命令

    现在你可以看到它正常地处理了转义. 注意 实际上你也可以在shell=False那里直接使用一个单独的字符串作为参数, 但是它必须是命令程序本身,这种做法和在一个列表中定义一个args没什么区别.而如 ...

  4. day20 二十、加密模块、操作配置文件、操作shell命令、xml模块

    一.加密模块 1.hashlib模块:加密 ①有解密的加密方式 ②无解密的加密方式:碰撞检查 -- 1)不同数据加密后的结果一定不一致 -- 2)相同数据的加密结果一定是一致的 import hash ...

  5. Ansible 命令相关模块command, shell, raw, expect, script, telnet[转]

    本文主要介绍Ansible的几个命令模块,包括: command - 在远程节点上执行命令 shell - 让远程主机在shell进程下执行命令 script - 将本地script传送到远程主机之后 ...

  6. [Python2.x] 利用commands模块执行Linux shell命令

    用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要 ...

  7. lite-monitor 一款基于shell命令的监控系统

    介绍 lite-monitor 一款基于shell命令的监控系统,可以根据项目中输出的日志定时输出或者统计输出,并发送钉钉机器人报警消息. lite-monitor能做什么: 定时监控某个服务进程是否 ...

  8. 【AMAD】watchdog -- 用于监控文件系统的事件,并且提供了shell命令行工具

    简介 动机 作用 用法 个人评分 简介 用于监控文件系统的事件的Python库,并且提供了shell命令行工具 动机 有很多情况下,我们希望监控文件的变化,在变化之后作出一些响应. 比如flask,d ...

  9. python之commands和subprocess入门介绍(可执行shell命令的模块)

    一.commands模块 1.介绍 当我们使用Python进行编码的时候,但是又想运行一些shell命令,去创建文件夹.移动文件等等操作时,我们可以使用一些Python库去执行shell命令. com ...

随机推荐

  1. 发现Mapstruct的一个bug

    前言 在一次需求的开发过程中,发现一个对象插入数据库时某个字段总是为空.简化后的代码如下: @Autowired private PersonService personService; public ...

  2. Linux 更改家目录下的目录为英文

    export LANG=en_US xdg-user-dirs-gtk-update

  3. Ubuntu出现视频无法正常播放的问题

    原因是没有安装相关的解码包,参考这个方法: ubuntu下B站(bilibili)视频无法播放 一条命令解决 sudo apt install ubuntu-restricted-extras 要是有 ...

  4. Python图像处理丨三种实现图像形态学转化运算模式

    摘要:本篇文章主要讲解Python调用OpenCV实现图像形态学转化,包括图像开运算.图像闭运算和梯度运算 本文分享自华为云社区<[Python图像处理] 九.形态学之图像开运算.闭运算.梯度运 ...

  5. Office共享协作方法——Office共享的正确打开方式、office365白嫖

    OFFICE共享协作方法: 1.OFFICE365激活<推荐.一劳永逸.体验最新版office,协作体验更佳> 一部分用户自带的Office可以用KMS直接激活,那就ok了,注意激活前关闭 ...

  6. Scala的基础用法 和 Java相对应学习(二)变量、循环、语法

    一.配置相关环境 1.增加项目 在idea里面创建新的maven项目 2. 在pom文件中增加依赖 <?xml version="1.0" encoding="UT ...

  7. 【每天学一点-01】 在SpringBoot项目中使用Swagger2

    今天在做毕设的时候,发现在前后端分离的情况下,去调用接口数据时很不方便,然后回想过去,和同学一起做项目的时候,他负责后端,我负责前端,当时调用他的弄好的接口可以说是非常方便,主要是可以通过UI页面直接 ...

  8. GitLab:Your account has been blocked.

    使用git pull 出现"GitLab:Your account has been blocked."错误 背景 多人使用服务器同一用户,在~/.ssh 目录下的公私钥是之前一个 ...

  9. AtCoder Beginner Contest 261 F // 树状数组

    题目链接:F - Sorting Color Balls (atcoder.jp) 题意: 有n个球,球有颜色和数字.对相邻的两球进行交换时,若颜色不同,需要花费1的代价.求将球排成数字不降的顺序,所 ...

  10. linux nginx启用php

    cd /usr/local/php/etc mv php-fpm.conf.default php-fpm.conf vi /usr/local/nginx/conf/nginx.conf # 删除如 ...