使用 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 模块的正常使用,所以必须将其禁用。

  1. # 停止 auditd:
  2. service auditd stop
  3. # 禁用服务:
  4. 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:

  1. cloud.id: <your_cloud_id>
  2. 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]。

  1. # cat /etc/auditbeat/audit.rules.d/rules.conf
  2. -a exit,always -F arch=b64 -F euid=0 -S execve -k root_acct
  3. -a exit,always -F arch=b32 -F euid=0 -S execve -k root_acct
  4. -a exit,always -F arch=b64 -F euid>=1000 -S execve -k user_acct
  5. -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 端点。

开始使用

  1. systemctl start auditbeat
  2. # 列出启用的规则:
  3. auditbeat show auditd-rules
  4. -a never,exit -S all -F pid=23617
  5. -a always,exit -F arch=b64 -S execve -F euid=root -F key=root_acct
  6. -a always,exit -F arch=b32 -S execve -F euid=root -F key=root_acct
  7. -a always,exit -F arch=b64 -S execve -F euid>=vagrant -F key=user_acct
  8. -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=*

测试

  1. $ sudo su -
  2. Last login: Fri Nov 22 23:43:00 UTC 2019 on pts/0
  3. $ helllloooo there!
  4. -bash: helllloooo: command not found
  5. $ 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. 万字干货|Java基础面试题(2022版)

    目录 概念常识 Java 语言有哪些特点? JVM.JRE和JDK的关系 什么是字节码? 为什么说 Java 语言是"编译与解释并存"? Oracle JDK 和OpenJDK的区 ...

  2. postgresql自增id

    drop index Ix_product_define_id; drop index Ix_user_umid; drop table invims_product_attention; /*=== ...

  3. 从零开始实现lmax-Disruptor队列(五)Disruptor DSL风格API原理解析

    MyDisruptor V5版本介绍 在v4版本的MyDisruptor实现多线程生产者后.按照计划,v5版本的MyDisruptor需要支持更便于用户使用的DSL风格的API. 由于该文属于系列博客 ...

  4. LAMP架构部署及配置

    httpd编译安装 1.关闭防火墙,将安装Apache所需软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld seten ...

  5. MLX90640 红外热成像仪测温模块简要介绍说明

    MLX90640 红外热成像仪测温模块简要介绍说明 (1) A 型和 B 型的区别 区别主要有以下几点 视场角不同: A 型为 110*75° , B 型为 55*35° ,通俗一点讲就是 A 型是广 ...

  6. zabbix 6.2.0部署

    zabbix 6.2官方部署文档 https://www.zabbix.com/documentation/6.2/en/manual/installation/install下载zabbix6.2安 ...

  7. 6.22 NOI 模拟

    \(T1\)递归 给出 \(Thue-Morse\) 序列的定义三 每次 \(0\rightarrow 01\),\(1\rightarrow 10\) \(0\rightarrow 01 \righ ...

  8. 【Meetup回顾】Apache DolphinScheduler在联通的实践和二次开发经验分享

    在由 openLooKeng 社区主办,Apahce DolphinScheduler社区.Apache Pulsar 社区.示说网协办的联合 Meetup 上,来自联通数字科技的王兴杰老师分享了Do ...

  9. DolphinScheduler & K8s 在优路科技的实践

    T 摘要 · 本文通过介绍DolphinScheduler on Kubernetes 在优路科技的实践,阐述了DolphinScheduler如何在云原生时代,更好地助力企业实现高效的数据调度解决方 ...

  10. Luogu2251 质量检测 (ST表)

    我怎么开始划水了... #include <iostream> #include <cstdio> #include <cstring> #include < ...