EAK运维架构审计Linux事件
架构图(如下):
Auditbeat
介绍:
Auditbeat是一种轻量级的数据收集器,可以收集linux审计框架的数据、监控文件完整性,您可以将其安装在服务器上,以审核系统上的用户和进程的活动。 例如,您可以使用Auditbeat从Linux Audit Framework收集和集中审核事件。 您还可以使用Auditbeat来检测对关键文件(如二进制文件和配置文件)的更改,Auditbeat是一种Elastic Beat。 它基于libbeat框架
架构:
整个架构分采集器和存储、查询三个部分。
【采集】:采集器使用Auditbeat进行审计日志采集
【存储】:采集后的日志直接输出到ElasticSearch
【查询】:查询使用Kibana与ElasticSearch对接,进行日志可视化分析
场景(审计):
1.实时监控系统进程
2.系统文件属性事件
3.系统用户登陆事件
4.系统用户执行命令
5.系统用户事件审计
6.系统安装所需安装包
官网链接:https://www.elastic.co/guide/en/beats/auditbeat/7.4/index.html
下载:
Linux System Package:
7.4.2): :
curl -L -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-7.4.2-linux-x86_64.tar.gz
7.4.2): :
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
7.4.2): :
//artifacts.elastic.co/downloads/kibana/kibana-7.4.2-linux-x86_64.tar.gz :
解压:
tar -xvf auditbeat-7.4.2-linux-x86_64.tar.gz
tar -xvf elasticsearch-7.4.2-linux-x86_64.tar.gz
tar -xvf kibana-7.4.2-linux-x86_64.tar.gz
禁用:系统守护进程 auditd 会影响 Auditbeat Audited 模块的正常使用,所以必须将其禁用。
service auditd stop #停止
systemctl disable auditd.service #禁用
配置Java环境(ES)
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
java -version
ElasticSearch:
配置并启动ES(配置文件如下图):
ulimit -a #此时我们默认的Open Files 是1024,需要调整限制
vim /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
vim /etc/sysctl.conf
添加以下内容
vm.max_map_count=655360 #设置单个JVM下支撑线程数
然后如下:
sysctl -p #使其生效
ES不允许用root启动,所以需要创建普通用户EAK然后启动ES~
useradd EAK #创建用户
chown EAK.EAK /usr/local/elasticsearch -R #修改用户属性
#相对路径
./bin/elasticsearch-setup-passwords interactive #开启安全认证 输入Y然后设置各个用户密码
使用普通用户启动ES:
su - EAK -c /usr/local/elasticsearch/bin/elasticsearch #启动
验证:
建议直接用web输入密码访问9200端口验证
ES Config:
#################################### Http #####################################
http.port: 9200
network.host: 0.0.0.0 #定义访问地址
http.max_content_length: 100mb
#################################### Node #####################################
node.name: node-1 #定义节点名字
cluster.initial_master_nodes: ["node-1"]
#################################### security #####################################
xpack.security.enabled: true #开启密码认证
xpack.security.transport.ssl.enabled: true
#################################### Paths ####################################
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
############## Memory ################
#设置内存熔断参数,防止写入或查询压力过高导致OOM
#indices.breaker.total.limit: 30%
#
#indices.breaker.request.limit: 6%
#
#indices.breaker.fielddata.limit: 3%
##调小查询使用的cache,避免cache占用过多的jvm内存,具体数值可根据使用场景调整
#indices.queries.cache.count: 500
#
#indices.queries.cache.size: 5%
##适当增大写入buffer和bulk队列长度,提高写入性能和稳定性
#indices.memory.index_buffer_size: 15%
#
##读写文件方式
#index.store.type: niofs
Kibana:
配置好kibana的配置文件后直接启动:
./bin/kibana --allow-root #允许root启动
#设置kibana启动端口
server.port: 9090
#允许访问IP地址的网段
server.host: "0.0.0.0"
#将kibana设置为中文
i18n.locale: "zh-CN"
#设置es地址
elasticsearch.hosts: ["http://127.0.0.1:9200"]
#xpack认证配置
xpack.security.encryptionKey: "something_at_least_32_characters"
xpack.reporting.encryptionKey: "b_random_string"
#配置es访问密码
elasticsearch.username: "kibana"
elasticsearch.password: ""
#使用高德地图
map.tilemap.url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
#Kibana刚启动时等待Elasticsearch的时间,单位ms
elasticsearch.startupTimeout: 5000
#Elasticsearch等待分片响应的时间
elasticsearch.requestTimeout: 30000
启动成功后,我们直接访问Kibana服务(如下)
需要密码验证 端口:9090 用户为:elastic
AuditBeat:
./auditbeat test config -e #测试配置
./auditbeat setup --dashboards #手动加载模板 模板路径为:kibana下的11个json
配置文件自动加载配置:
setup.dashboards.enabled: true #自动加载模板
auditbeat.modules:
- 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: |
-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
- module: file_integrity
paths:
- /bin
- /usr/bin
- /sbin
- /usr/sbin
- /etc
- module: system
datasets:
- host # General host information, e.g. uptime, IPs
- login # User logins, logouts, and system boots.
- package # Installed, updated, and removed packages
- process # Started and stopped processes
- socket # Opened and closed sockets
- user # User information
exclude_files:
- '(?i)\.sw[nop]$'
- '~$'
- '/\.git($|/)'
state.period: 12h
user.detect_password_changes: true
login.wtmp_file_pattern: /var/log/wtmp*
login.btmp_file_pattern: /var/log/btmp*
setup.template.settings:
index.number_of_shards: 1
setup.template.name: "auditbeat"
setup.template.pattern: "auditbeat-*"
#setup.template.enabled: 'false' #这里表示是否启用模板
setup.kibana:
host: "127.0.0.1:9090"
# setup.dashboards.enabled: true
output.elasticsearch:
# # Array of hosts to connect to.
hosts: ["127.0.0.1:9200"]
username: "elastic"
password: ""
index: "other.auditbeat-%{[beat.version]}-%{+yyyy.MM.dd}"
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
shell命令过滤:
示出Kibana user.name,process.executable,process.args和tags选定的字段。
过滤器是user.name: root和auditd.data.syscall: execve。
每秒刷新一次数据
命令审计:
TTY审核
当系统中发生TTY事件时,Auditbeat Audited模块也可以拾取它们。配置system-authPAM配置文件以启用TTY音频。只有根TTY事件将被实时记录。用户事件通常会缓冲到exit。TTY审计需要捕获内置外壳命令等pwd,test等。
追加以下内容以/etc/pam.d/system-auth对所有用户启用审核
-
session required pam_tty_audit.so enable=*
实时监控系统进程
审计 系统一些正在使用的pid
系统文件属性事件
审计 执行 可读 可写 权限
系统用户登陆事件
审计 成功用户 & 失败用户
系统用户执行命令
审计 普通用户 & 管理员
系统用户事件
审计 对用户 新增 改密 删除
系统安装所需安装包
审计 安装mariadb安装包
演示完毕
,欢迎大家关注哈,学到即赚到,谢谢支持