Auditbeat日志审计方案
【架构】
整个架构分采集器和存储、查询三个部分。
【采集器】
采集器使用Auditbeat进行审计日志采集。
【存储】
采集后的日志直接输出到ElasticSearch,考虑到我们的日志较少切Auditbeat具备重传功能,因此,第一个版本先使用单节点的ElasticSearch进行试运行,实际运行过程中做好ElasticSearch的监控,遇到ElasticSearch故障时可以及时启动。
【查询】
查询使用Kibana,与ElasticSearch对接,进行日志分析和监控。
【配置管理】
通过Ansible来管理Auditbeat,Auditbeat安装在各个主机上,如果有版本升级或者审计规则修改一般是大规模批量升级,通过Ansible可以很方便的管理批量的主机升级,配合Auditbeat的动态读取审计配置可以很方便的进行审计规则的调整,不需要重启Auditbeat。
【进化版】
【安装部署】
【安装ElasticSearch】
版本:elasticsearch-7.9.2
安装环境:JDK1.8
【安装步骤】
- 下载elasticsearch-7.9.2-linux-x86_64.tar.gz安装包
下载地址:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz
- 解压到安装目录,修改config/elasticsearch.yml,配置如下
cluster.name: es-audit
- 启动elasticsearch
./bin/elasticsearch -d
说明:本次为单机部署,只设置好集群名称,为后续的集群扩容做准备。
【路径说明】
logs:日志存放路径
data:数据存放路径
config:配置文件存放路径,elasticsearc.yml用来配置端口、集群、日志路径、数据路径等,jvm.options用来配置JVM的启动参数,根据需要的运行内存可以调整该参数。
卸载ElasticSearch
通过tar包安装的ElasticSearch只需要删除ElasticSearch目录即可,数据和日志都在该目录下。
【安装Auditbeat】
版本:auditbeat-7.9.2
【RPM 安装auditbeat-7.9.2-1.x86_64】
注意使用Auditd模块,有的系统需要先关闭auditd服务,执行” service auditd stop”。
【安装】
1、通过RPM安装
curl -L -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-7.9.2-x86_64.rpm
sudo rpm -vi auditbeat-7.9.2-x86_64.rpm
2、通过RPM安装后系统通过service 命令启动进程
默认安装在/etc/auditbeat/目录
启动:
service auditbeat start
停止:
service auditbeat stop
状态:
service auditbeat status
【RPM卸载auditbeat-7.9.2-1.x86_64】
1、rpm查询安装包
rpm -qa|grep beat
查询已经安装的包信息如下:
auditbeat-7.9.2-1.x86_64
2、rpm卸载安装包
rpm -e auditbeat-7.9.2-1.x86_64
【添加审计】
让审计规则动态生效
1、修改auditbeat.yml,配置动态加载,添加如下配置:
auditbeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
reload.period: 10s
说明:
path:制定动态的目录,当目录下的文件发生变化时,auditbeat会监听到变化,重新加载配置让新规则生效。
reload.enabled:配置是否启动动态加载,true:启动,false:不启动
reload.period:检查配置变化的频率,例如10s表示每10秒检查一次,建议配置不要低于1s,对审计来说10s完全足够了。
2、结合步骤一,我们需要创建modules.d目录,将自己的配置放在该目录下,例如,创建auditd.yml文件,配置audit的审计规则,配置如下:
- module: auditd
# Load audit rules from separate files. Same format as audit.rules(7).
#audit_rule_files: [ '${path.config}/audit.rules.d/*.conf' ]
audit_rules: |
## Define audit rules here.
## Create file watches (-w) or syscall audits (-a or -A). Uncomment these
## examples or add your own rules.
## If you are on a 64 bit platform, everything should be running
## in 64 bit mode. This rule will detect any use of the 32 bit syscalls
## because this might be a sign of someone exploiting a hole in the 32
## bit API.
#对/etc/group、/etc/passwd、/etc/gshadow文件做审计,记录用户身份验证的变化
-w /etc/group -p wa -k identity
-w /etc/passwd -p wa -k identity
-w /etc/gshadow -p wa -k identity
-w /etc/shadow -p wa -k identity
#记录文件打开、修改等因没有权限或不被允许的事件
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -F key=access
-a always,exit -F arch=b32 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -F key=access
-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -F key=access
-a always,exit -F arch=b64 -S open,truncate,ftruncate,creat,openat,open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -F key=access
#当用户执行一些类似于 whoami,ls 以及 lsblk 的 shell 命令时,kibana 中就会发现这些事件。euid 是用户的有效ID。0 代表会获取 root 用户和 uid >=1000 或者权限更高的其他用户的所有活动
-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>=1000 -F key=user_acct
-a always,exit -F arch=b32 -S execve -F euid>=1000 -F key=user_acct
3、配置好之后重新启动应用让规则生效,如需动态更改配置则只需要修改auditd.yml的配置,不需要再重启应用,其余module的动态配置也是一样,当修改配置之后会看到如下日志:
2020-10-21T02:07:16.118Z INFO [auditd] auditd/audit_linux.go:243 Deleted 13 pre-existing audit rules.
2020-10-21T02:07:16.119Z INFO [auditd] auditd/audit_linux.go:262 Successfully added 12 of 12 audit rules.
以上日志说明规则动态生效了。
每一次修改规则都可以通过如下命令查看修改后的规则:
./auditbeat show auditd-rules
auditbeat动态审计配置参考链接:
https://www.elastic.co/guide/en/beats/auditbeat/current/auditbeat-configuration-reloading.html#auditbeat-configuration-reloading
4、管理大规模集群
当机器数量上升到一定程度时,手动修改会造成大量工作量,为方便管理,我们通过配置管理工具,例如Ansible来管理,统一修改配置,修改之后随机抽取其中几台机器进行检查是否生效即可。
【路径说明】
/etc/auditbeat:安装目录,通过rpm默认安装在此目录
/var/log/auditbeat/:日志目录。
详细的目录说明参考如下链接:
https://www.elastic.co/guide/en/beats/auditbeat/current/directory-layout.html
【Linux内核事件】
https://linux.die.net/man/8/auditctl
【安装kibana】
【安装】
- 下载kibana-7.9.2-linux-x86_64.tar.gz
下载地址:
https://artifacts.elastic.co/downloads/kibana/kibana-7.9.2-linux-x86_64.tar.gz
- 解压到安装目录,配置config,修改kibana.yml,配置如下:
修改server.host: "10.1.75.141"为对应的主机IP
修改elasticsearch.hosts: ["http://localhost:9200"]为对应的elasticsearch地址,如果有多个可以逗号分隔。
- 启动kibana,查看进程是否监听了5601端口(默认端口)
bin/kibana > kibana.log &
- 访问,通过https://localhost:5601即可访问
【附录】
此次安装的版本是基础班,永久免费,详细的功能说明见如下链接:
https://www.elastic.co/cn/subscriptions