首页 > 系统相关 >Linux--审计工具Audit

Linux--审计工具Audit

时间:2024-10-08 10:33:03浏览次数:6  
标签:Audit audit -- auditd Linux 日志 ID 审计

一、简介

Linux 审计系统提供了一种方式来跟踪系统上与安全相关的信息,根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。对于关键任务环境而言至关重要,可用来确定安全策略的违反者及其所执行的操作,便于在发生网络入侵等安全事件时,能够为追踪溯源提供日志及时间节点的支撑。

 

在 Linux 服务器主机系统中常常使用 audit 相关工具来对账户管理、权限管理、文件系统管理、日志文件操作管理以及网络配置管理等资源的操作监控,并根据审计规则进行对应的日志记录,最后使用 syslog 服务进行将日志转发到企业的日志中心服务器上,以便于发生安全事件后溯源查询。

 

主要功能:

  • 安全审计audit 用于记录与安全相关的事件,包括用户身份验证、文件访问、系统调用等。
  • 合规性:帮助组织满足各种合规性要求(如 PCI-DSS、HIPAA 等),确保系统活动的可追溯性。
  • 问题追踪:能够追踪系统中的可疑活动,帮助系统管理员识别潜在的安全威胁。

 

主要组件:

  • auditd:审计守护进程,负责收集、记录和管理审计事件。
  • auditctl:命令行工具,用于配置和控制审计规则。
  • ausearch:用于搜索审计日志的工具,可以根据特定条件过滤和查找事件。
  • aureport:用于生成审计报告的工具,提供易于理解的输出格式。

 

二、各步骤简叙

2.1 安装

# Debian/Ubuntu
sudo apt-get install auditd

# CentOS/RHEL
sudo yum install audit -y

# Fedora
sudo dnf install audit

# SUSE
sudo zypper install audit

 

2.2 配置文件

在 /etc/audit/目录下主要有3个配置文件:

  • /etc/audit/auditd.conf:主要配置文件,定义了审计守护进程的行为和日志记录策略
  • /etc/audit/audit.rules:用于定义审计规则,通常在系统启动时加载;在某些系统中,这个文件可能会被 /etc/audit/rules.d/audit.rules 文件覆盖
  • /etc/audit/audit-stop.rules:在停止 auditd 守护进程时需要应用的审计规则,比如在服务停止时移除或禁用特定的审计规则,防止在下次启动时继续监控不再需要的事件;确保在停止审计守护进程时,相关的审计规则不会影响系统的正常运行。

 

/etc/audit/auditd.conf文件:

#
# This file controls the configuration of the audit daemon
#
# 是否记录本地事件,开启后,即使不手动编写审计规则,系统仍然会记录一些基本的事件
local_events = yes

# 是否将审计事件写入日志文件
write_logs = yes

# 审计日志文件的路径
log_file = /var/log/audit/audit.log

# 定义日志文件的组权限
log_group = root

# 指定审计日志的格式,默认 ENRICHED 将解析所有uid、gid、syscall、体系结构和套接字地址信息同时意味着需要更大的空间,更适合用于日常审计和调查活动。
# RAW 格式:只包含原始的系统调用信息,不包含额外的上下文信息,以减少日志文件大小和性能开销,更适合用于高性能环境。
log_format = RAW

# 定义日志刷新策略,none(日志不写到磁盘),incremental (日志写到磁盘),incremental-async (日志异步写到磁盘),data(保持部分数据和磁盘的一直同步),sync(每次记录都写到磁盘)
flush = INCREMENTAL_ASYNC

# 设置日志刷新的频率(以行数为单位)
freq = 50

# 设置单个审计日志文件的最大大小(单位为 MB)
max_log_file = 8

# 设置保留的旧日志文件数量
num_logs = 5

# 设置审计守护进程的优先级提升
priority_boost = 4

# 设置分发服务的服务质量(QoS),lossy 表示可以接受丢失一些日志
disp_qos = lossy

# 指定事件分发器程序的路径
dispatcher = /sbin/audispd

# 指定日志文件命名格式,NONE 表示不使用特定命名格式
name_format = NONE
# name = mydomain

# 定义日志文件达到最大大小后的操作,默认为轮询(ROTATE),其他可选值 ignore、syslog、suspend and keep_logs
max_log_file_action = ROTATE

# 设置剩余空间低于该值时的警告阈值(单位:MB)
space_left = 75

# 定义当剩余空间低于 space_left 时的操作,默认值为 syslog ,其他有效值为 ignore, syslog, rotate, email, exec, suspend, single, and halt.
space_left_action = SYSLOG

# 是否验证电子邮件地址
verify_email = yes

# 指定接收审计警告邮件的账户
action_mail_acct = root

# 设置在磁盘剩余空间低于该值时的阈值(单位:MB)
admin_space_left = 50

# 定义当剩余空间低于 admin_space_left 时的操作,默认值为 suspend(暂停审计) ,其他有效值为 ignore, syslog, rotate, exec, suspend, single, and halt.
admin_space_left_action = SUSPEND

# 设置磁盘已满时的操作
disk_full_action = SUSPEND

# 设置磁盘错误时的操作
disk_error_action = SUSPEND

# 是否使用 TCP Wrapper 来控制访问
use_libwrap = yes
# tcp_listen_port = 60

# 设置 TCP 监听队列的最大连接数
tcp_listen_queue = 5

# 每个地址允许的最大连接数,默认值为 1,最大值为 1024
tcp_max_per_addr = 1

# 监听端口范围
# tcp_client_ports = 1024-65535

# 客户端最大空闲时间(单位:秒),0 表示没有限制
tcp_client_max_idle = 0

# 是否启用 Kerberos 5 认证
enable_krb5 = no

# 指定 Kerberos 主体名称
krb5_principal = auditd
# krb5_key_file = /etc/audit/audit.key

# 是否启用网络分发审计事件
distribute_network = no

 

2.3 启动

# systemctl管理
systemctl start auditd

# 绝对路径启动
/usr/sbin/auditd

# 容器里启动,由于audit涉及到内核,需要以privilege权限启动才能正常使用
docker run --privileged -it your_image_name bash

 

2.4 auditctl

auditctl 是用于管理 Linux 审计系统 (auditd) 的命令行工具,允许用户添加、删除和查看审计规则。

 

添加规则

auditctl -w /path/to/file -p rwxa -k key_name
    • -w:监控指定的文件或目录
-p
    :指定权限,使用字母组合(不指定时默认监控所有事件):
    • r:读取
    • w:写入
    • x:执行
    • a:属性修改
  • -k:为规则指定一个关键字,便于后续搜索日志。

为了在系统重启后自动加载规则,可以将规则添加到 /etc/audit/rules.d/ 目录下的文件中。

echo "-w /etc/passwd -p wa -k passwd_changes" >> /etc/audit/rules.d/audit.rules

 

使用 auditctl -s 可以查看当前审计系统的状态信息

enabled 1                         # 指示审计系统是否启用:1 启用,0 禁用
failure 1                         # 指示当审计记录失败时的处理方式:1 记录失败信息,0 忽略失败
pid 1527                          # 前审计守护进程 (auditd) 的进程 ID
rate_limit 0                      # 设置审计事件的速率限制,用于防止过多事件导致的日志膨胀,后面的值表示每秒允许的最大事件数,0 不限制
rate_limit_action 1               # 当达到速率限制时的处理方式:1 记录到日志,0 忽略
backlog_limit 8192                # 审计事件的最大积压数量,值:表示可以在内存中等待处理的最大事件数
lost 0                            # 表示由于速率限制或其他原因而丢失的事件数量
backlog 0                         # 当前积压的事件数量
loginuid_immutable 0 unlocked     # 指示 login UID 的可变性:1 不可变,0 可变

 

2.5 日志

auditd 生成的审计日志记录了系统中的各种安全事件,通常存储在 /var/log/audit/audit.log 中

 

日志类型

auditd 主要记录以下几种类型的日志:

  • 用户活动日志:记录用户登录、登出、执行命令等活动。
  • 文件访问日志:监控对特定文件或目录的读取、写入和执行操作。
  • 系统调用日志:记录特定系统调用的执行情况,例如 openreadwrite 等。
  • 权限变更日志:记录对系统权限和配置的修改,如用户添加、删除或权限更改。
  • 安全事件日志:记录与安全相关的事件,如 SELinux 相关的操作和其他安全策略的执行。

 

日志格式

审计日志的格式通常为文本格式,每条日志记录包含多个字段,如

type=SYSCALL msg=audit(1633044800.123:123): arch=c000003e syscall=2 success=yes exit=3 a0=0x7fffa3f4d720 a1=0x0 a2=0x0 a3=0x0 items=1 ppid=1234 pid=5678 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=1 comm="cat" exe="/usr/bin/cat" key="file_access"

主要字段解释:

  • type:事件类型,如 SYSCALLUSER_LOGIN 等。
  • msg:包含时间戳和事件 ID,格式为 audit(timestamp:ID)
  • arch:系统架构(例如 c000003e 表示 x86_64)。
  • syscall:系统调用编号,表示执行的系统调用。
  • success:表示系统调用是否成功(yes 或 no)。
  • exit:系统调用的退出状态。
  • a0, a1, a2, a3:系统调用的参数。
  • items:相关项的数量。
  • ppid:父进程 ID。
  • pid:进程 ID。
  • auid:审计用户 ID,表示启动进程的用户。
  • uid:用户 ID。
  • gid:组 ID。
  • euidsuidfsuid:有效用户 ID、设置用户 ID 和文件系统用户 ID。
  • egidsgidfsgid:有效组 ID、设置组 ID 和文件系统组 ID。
  • tty:终端类型。
  • ses:会话 ID。
  • comm:执行的命令。
  • exe:命令的完整路径。
  • key:与该事件关联的关键字,便于后续检索。

 

2.6 ausearch

ausearch 是 auditd 审计系统中用于查询和过滤审计日志的命令行工具。它允许用户根据多种条件检索特定的审计事件,帮助系统管理员分析和审计系统活动。

常用参数:

参数描述示例
-k 根据关键字搜索 ausearch -k file_access
-c 根据命令名过滤 ausearch -c passwd
-ts 指定开始时间 ausearch -ts today,ausearch -ts "18:00:00"
-te 指定结束时间 ausearch -te now
-ua 根据审计用户 ID 过滤 ausearch -ua 1000
-p 根据进程 ID 过滤 ausearch -p 1234
-m 根据事件类型过滤 ausearch -m USER_LOGIN
-f 根据文件路径过滤 ausearch -f /etc/passwd
-i 以可读格式显示输出,转换事件代码为文本 ausearch -i

 

2.7 aureport

aureport 是 auditd 审计系统中的一个工具,用于生成审计报告,提供系统活动的汇总和统计信息。它可以帮助系统管理员快速了解审计日志中的重要信息。

常用参数

参数描述示例
--users 生成用户活动的汇总报告 aureport --users
--comm 生成命令执行的汇总报告 aureport --comm
--syscall 生成系统调用的汇总报告 aureport --syscall
--file 生成文件访问的汇总报告 aureport --file
--start,--end 指定时间范围 aureport --users --start today --end now
--html 生成 HTML 格式的报告 aureport --users --html > user_report.html
--csv 生成 CSV 格式的报告 aureport --comm --csv > command_report.csv

 

示例

运行 aureport --users

================================================================================
# date            login      logout     tty         pid    exec
================================================================================
2023-09-29 12:00:00  user1     12:30:00   pts/0      1234  bash
2023-09-29 12:05:00  user2     12:35:00   pts/1      5678  ssh

运行 aureport --comm 

================================================================================
# command             count
================================================================================
ssh                   50
bash                  30
passwd                10

 

标签:Audit,audit,--,auditd,Linux,日志,ID,审计
From: https://www.cnblogs.com/Xinenhui/p/18439195

相关文章

  • 非煤矿山电子封条视频监控系统
    非煤矿山电子封条视频监控系统采用现场摄像头和图像分析终端等设备,非煤矿山电子封条视频监控系统通过对煤矿关键地点进行实时监测和数据分析。当有异常情况发生时,非煤矿山电子封条视频监控系统可以通过人工智能算法将自动识别异常情况并记录信息,及时通知现场管理人员进行处理。非......
  • svnhook-在提交时,检查redmine问题当前状态是否已关闭
    为了防止svn仓库的乱提交,我们规定了提交时,提交日志必须输入需求单或者bug链接,而且我们需要去检测当前的链接是有效并且状态时处于非关闭的,主要操作是下面两个步骤 1:验证输入链接的有效性:使用 curl 检查链接是否可以访问。2:获取问题状态:通过RedmineAPI获取问题的状态,并检......
  • 【2024-10-02】连岳摘抄
    23:59为什么我的眼里常含泪水?因为我对这土地爱得深沉......                                                 ——艾青一、恭喜你及时回头,女性35岁,婚育还来得及,再迟......
  • [AGC061C] First Come First Serve 题解
    Description有\(n\)个人来过,第\(i\)个人在\(a_i\)时刻来在\(b_i\)时刻走,每个人可以在来时或走时登记,问可能的登记顺序有多少种。\(n\leq5\times10^5\),\(a_i,b_i\)互不相同,\(\foralli<n,a_i<a_{i+1},b_{i}<b_{i+1}\)。Solution首先如果每个人随便选,有\(2^n\)种方......
  • lightdb pllua存储过程实测
    根据对pl/lua的相关介绍和一些说明如http://www.pgsql.tech/project_305_10000096,其性能相比plpgsql和plsql快不少,那实际到底如何呢?下面拿demo和一些实际的来对比下。1、lua安装。从https://www.lua.org/download.html下载最新版。因为pllua需要依赖lua.so动态库,所以不......
  • 25N10-智能调光N通道MOS管--HG024N10L 100V 25A 低Vth 低结电容 开关损耗小
    25N10-智能调光N通道MOS管工作原理主要依赖于栅极电压来控制导电沟道的状况。具体来说:工作原理:当加在MOS管栅极上的电压改变时,PN结之间的沟道内载流子的数量会随之改变,沟道电阻也会发生改变,进而控制漏极电流的大小。N沟道MOS管:N沟道加强型MOS管需在栅极上施加正向偏压,且栅源电压大......
  • 代购系统是什么?
    一、代购系统的定义与背景代购系统,作为一种新兴的电子商务模式,近年来在全球范围内迅速崛起。该系统主要是指一种由代购者(或个人、或企业)作为中间商,通过在线平台或应用程序,为消费者提供从海外购买商品并运送到其所在地的服务。代购系统的出现,极大地满足了消费者对海外优质商品的需求......
  • 如何保护网站免受未经授权的机器人访问
    在数字化时代,机器人流量已成为网站管理员和安全团队面临的重大挑战。机器人流量,即由自动化软件而非人类产生的网络流量,可能对网站的数据分析、安全性和整体性能产生重大影响。为了有效应对这一问题,本文将探讨一系列先进的策略,以检测和防止未经授权的机器人访问。1.使用验证码验证......
  • 优化网页抓取:轻松提升抓取效率的小妙招
    今天来聊一个实用的话题——如何优化网页抓取。无论你是数据科学家、爬虫开发者,还是对网页数据感兴趣的普通网友,相信这篇文章都能帮到你。一、明确目标,规划先行在开始抓取网页之前,最重要的一步就是明确你的抓取目标。你想抓取哪些网站的数据?需要哪些字段?抓取频率是多少?这些问题都得......
  • 网站被篡改怎么办,如何进行有效的防护
    当发现网站被篡改时,应立即采取措施以防止进一步的损害,并逐步恢复网站的正常运行。以下是一些处理和预防网站被篡改的有效步骤:立即断开服务器网络连接将受影响的服务器从网络中隔离出来,避免攻击者进一步利用该服务器进行横向移动或数据泄露。备份当前系统状态在进行任何......