auditd

auditd是Linux审计系统的用户空间组件。它负责把审计记录写到磁盘上。
审计系统提供了一种方式来跟踪系统上与安全相关的信息。根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。
审计不会为您的系统提供额外的安全,而是用于发现系统上使用的安全策略的违规。
便于发生安全事件后溯源查询。
查看日志是通过ausearch或aureport工具完成的。配置审计系统或加载规则是通过auditctl工具完成的。在启动过程中,/etc/audit/audit.rules中的规则由auditctl读取并加载到内核。另外,还有一个augenrules程序,它读取位于/etc/audit/rules.d/中的规则,并将其编译成audit.rules文件。审计守护程序本身有一些配置选项,管理员可能希望对其进行自定义。它们可以在 auditd.conf 文件中找到

参考: https://cloud.tencent.com/developer/article/2407426

  • CentOS/Rocky 已经默认安装 yum install -y auditd*
  • Debian/Ubuntu 需要手工安装
yum install audit audispd-plugins
apt-get install -y auditd 


systemctl status auditd
dpkg -l | grep "audit"


#相关命令
auditctl : 即时控制审计守护进程的行为的工具,比如如添加规则等等
aureport : 查看和生成审计报告的工具
ausearch : 查找审计事件的工具
auditspd : 转发事件通知给其他应用程序,而不是写入到审计日志文件中
autrace : 一个用于跟踪进程的命令
aulast: 与last类似,但使用审计框架安装
aulastlog: 与lastlog类似,也使用审计框架
ausyscall: 映射syscall ID和名称
auvirt: 显示关于虚拟机的审计信息

配置

  • 相关配置文件
    /etc/audit/auditd.conf : auditd工具的配置文件
    /etc/audit/rules.d/audit.rules:包含审核规则的文件
    /etc/audit/audit.rules : 记录审计规则的文件
#vi /etc/audit/auditd.conf
local_events = yes        #本地的事件是否记录,设置为no的场景应该是只作为远程日志收集的服务器
write_logs = yes    日志是否落盘,设置为no的场景应该是将会把日志存储到远程服务器的客户端
log_file = /var/log/audit/audit.log        #指定存储审计记录的日志文件的完整路径名
log_group = adm            #日志文件权限的组。默认为root。组名可以是数字,也可以拼写出来
log_format = ENRICHED  #日志格式描述了信息应该如何存储在磁盘上
flush = INCREMENTAL_ASYNC  #none、incremental、data和sync; 如果设置为none,则不会进行特殊操作将审计记录刷新到磁盘。如果设置为增量,那么freq参数用于确定显式刷写磁盘的频率。data参数告诉审计守护进程始终保持磁盘文件的数据部分同步。sync选项告诉审计守护进程在每次写入磁盘时保持数据和元数据完全同步
freq = 50  #这是一个非负数,告诉审计守护进程在发出显式刷写到磁盘命令之前要写入多少条记
max_log_file = 8   #以兆字节为单位的最大文件大小。当达到这个限制时,它将触发一个可配置的操作。给定的值必须是数值
num_logs = 5  # 如果rotate指定了max_log_file_action,则该关键字指定了保留的日志文件数。如果数字是<2、日志不旋转。这个数字必须小于等于99。默认值为0,表示没有旋转。随着要旋转的日志文件数量的增加,可能需要向上调整内核积压工作表的设置,因为旋转文件需要更多的时间。这通常在/etc/audit/audit.rules中完成。如果配置日志轮换,守护进程将检查多余的日志并删除它们,以保持磁盘空间可用。只有在启动和重新配置导致空间检查时,才会进行多余的日志检查。 
priority_boost = 4     这是一个非负数,告诉审计守护进程应该提高多少优先级。默认值为4。没有变化是0
name_format = NONE
##name = mydomain   #这是管理员定义的字符串,如果user被指定为name_format选项,它将标识该机器。
max_log_file_action = ROTATE  #当系统检测到已达到最大文件大小限制时采取什么操作, 有效值为ignore、syslog、suspend、rotate和keep_logs。如果设置为ignore,审计守护进程什么都不做。Syslog表示它将向Syslog发出警告。Suspend将导致审计守护进程停止向磁盘写入记录。守护进程还会活着。rotate选项将导致审计守护进程旋转日志。需要注意的是,数值大的日志比数值小的日志要早。这与logrotate实用程序使用的约定相同。keep_logs选项类似于rotate,只是它不使用num_logs设置。这可以防止审计日志被覆盖。 
space_left = 75        #告诉审计守护进程何时执行可配置的操作,因为系统的磁盘空间开始不足
space_left_action = SYSLOG  #当系统检测到磁盘空间开始变少时,应该采取什么行动。有效值为:ignore、syslog、email、exec、suspend、single和halt
verify_email = yes        
action_mail_acct = root        
admin_space_left = 50        #它告诉审计守护进程何时执行可配置的操作,因为系统磁盘空间不足
admin_space_left_action = SUSPEND     #当系统检测到磁盘空间不足时采取什么操作。有效值为:ignore、syslog、email、exec、suspend、single和halt
disk_full_action = SUSPEND            #当系统检测到日志文件写入的分区已满时,应该采取什么行动。有效值为ignore、syslog、exec、suspend、single和halt
disk_error_action = SUSPEND            #在将审计事件写入磁盘或循环日志时,如果检测到错误,应该采取什么操作。有效值为ignore、syslog、exec、suspend、single和halt
use_libwrap = yes
##tcp_listen_port = 60                #如果指定,将导致auditd在对应的TCP端口上监听来自远程系统的审计记录
tcp_listen_queue = 5                #表示允许的挂起(请求但未接受的)连接数。默认值为5。如果在同一时间启动的主机太多,例如停电后,这个值设置得太小可能会导致连接被拒绝
tcp_max_per_addr = 1                #表示一个IP地址允许的并发连接数。默认值为1,最大1024
##tcp_client_ports = 1024-65535        #客户端端口允许传入的连接
tcp_client_max_idle = 0                #客户端可能空闲的秒数
transport = TCP
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
q_depth = 2000
overflow_action = SYSLOG
max_restarts = 10
plugin_dir = /etc/audit/plugins.d
end_of_event_timeout = 2

日志文件

/var/log/audit/audit.log





参考: https://blog.csdn.net/daibaohui/article/details/132561659