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 部署的。
您可以在此页面[https://www.elastic.co/cn/cloud/elasticsearch-service/signup]进行为期 14 天的 ESS 免费使用。
本文详细介绍的大多数步骤都适用于部署自托管的 Elasticsearch 和 Kibana。
系统守护进程 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 守护进程将事件数据发送到一个 Elasticsearch Service(ESS)集群。有关更多详细信息,请参见配置Auditbeat[https://www.elastic.co/guide/en/beats/auditbeat/master/configuring-howto-auditbeat.html] 部分的文档。要想获取工作示例,必须配置Auditbeat 的 cloud.id
和 cloud.auth
参数,详情参见此(文档[])。
编辑/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]。
Audited 模块订阅内核以接收系统事件。定义规则以捕获这些事件,并且使用Linux auditctl
实用程序所使用的格式,详情查看(此处[https://linux.die.net/man/8/auditctl])。
/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 <key>
用于为事件分配任意“键”,它将显示在tags
字段中。它可以在Kibana 中用对事件进行过滤和分类。运行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中就会发现这些事件。
user.name
,process.executable
,process.args
和tags
这些选定的字段。user.name: root
和auditd.data.syscall: execve
。当系统中发生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
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])该链接[https://www.elastic.co/guide/en/beats/auditbeat/current/index.html]提供了Auditbeat文档。