Linux安全之auditd审计工具使用阐明

打印 上一主题 下一主题

主题 895|帖子 895|积分 2685

一、auditd工具简介

audited是Linux审核系统的用户空间组件。它负责将审核记录写入磁盘。检察日记是通过ausearch或aureport实用程序完成的。审核系统或加载规则的设置是使用auditctl实用程序完成的。在启动过程中,/etc/audit/audit.rules中的规则由auditctl读取并加载到内核中。另外,还有一个augenrules程序,它读取/etc/audit/rules.d/中的规则,并将它们编译为audit.rules文件。审核守卫进程本身有一些管理员可能希望自定义的设置选项,它们位于audited.conf文件中。
二、auditd设置文件阐明

1、设置文件关键字阐明

关键字关键字阐明num_days日记保留的天数idletime空闲时间max_log_file这个关键字指定了以兆字节为单位的最大文件巨细。当达到这个限定时,它将触发一个可设置的操作。给定的值必须是数值。max_log_file_action此参数告诉系统当系统检测到已达到最大文件巨细限定时接纳什么操作。有效值为ignore、syslog、suspend、rotate和keep_logs。如果设置为ignore,审计守卫进程什么都不做。Syslog表示它将向Syslog发出警告。Suspend将导致审计守卫进程停止向磁盘写入记录。守卫进程还会在世。rotate选项将导致审计守卫进程旋转日记。需要注意的是,数值大的日记比数值小的日记要早。这与logrotate实用程序使用的约定雷同。keep_logs选项类似于rotate,只是它不使用num_logs设置。这可以防止审计日记被覆盖。space_left这是一个以兆字节为单位的数值,它告诉审计守卫进程何时实行可设置的操作,因为系统的磁盘空间开始不足。space_left_action这个参数告诉系统,当系统检测到磁盘空间开始变少时,应该接纳什么行动。有效值为:ignore、syslog、email、exec、suspend、single和halt。如果设置为ignore,审计守卫进程什么都不做。Syslog表示它将向Syslog发出警告。Email意味着它将向action_mail_acct中指定的电子邮件帐户发送警告,同时将消息发送到syslog。Exec/path-to-script将实行脚本。您不能将参数传递给脚本。Suspend将导致审计守卫进程停止向磁盘写入记录。守卫进程还会在世。single选项将导致审计守卫进程将盘算机系统置于单用户模式。Halt选项将导致审计守卫进程关闭盘算机系统。local_events当地的变乱是否记录,设置为no的场景应该是只作为长途日记收集的服务器,但自身的日记大多数时候也是有必要记录的write_logs日记是否落盘,设置为no的场景应该是将会把日记存储到长途服务器的客户端(没有足够空间的情况下)log_file此关键字指定存储审计记录的日记文件的完整路径名。它必须是一个普通文件。log_format日记格式形貌了信息应该如何存储在磁盘上。有两个选项:raw和nolog。如果设置为RAW,审计记录将按照内核发送的格式存储。如果该选项设置为NOLOG,那么所有审计信息将被丢弃,而不会写入磁盘。该模式不影响发送到审计变乱分配器的数据。log_group此关键字指定应用于日记文件权限的组。默以为root。组名可以是数字,也可以拼写出来。priority_boost这是一个非负数,告诉审计守卫进程应该进步多少优先级。默认值为4。没有变化是0。flush有效值为none、incremental、data和sync。如果设置为none,则不会进行特殊操作将审计记录刷新到磁盘。如果设置为增量,那么freq参数用于确定显式刷写磁盘的频率。data参数告诉审计守卫进程始终保持磁盘文件的数据部分同步。sync选项告诉审计守卫进程在每次写入磁盘时保持数据和元数据完全同步。freq这是一个非负数,告诉审计守卫进程在发出显式刷写到磁盘命令之前要写入多少条记录。只有将flush关键字设置为incremental时,这个值才有效。num_logs如果rotate指定了max_log_file_action,则该关键字指定了保留的日记文件数。如果数字是<2、日记不旋转。这个数字必须小于等于99。默认值为0,表示没有旋转。随着要旋转的日记文件数目的增长,可能需要向上调解内核积压工作表的设置,因为旋转文件需要更多的时间。这通常在/etc/audit/audit.rules中完成。如果设置日记轮换,守卫进程将检查多余的日记并删除它们,以保持磁盘空间可用。只有在启动和重新设置导致空间检查时,才会进行多余的日记检查。disp_qos此选项控制您想要在审计守卫进程和调度程序之间进行阻塞/无损通讯照旧非阻塞/有损通讯。在审计守卫进程和分配器之间有一个128k的缓冲区。对于大多数应用来说,这已经足够了。如果选择了lossy,那么当队列满时,进入分派器的变乱将被丢弃。(如果log_format不是nlog,变乱仍旧写入磁盘。)否则,auditd守卫进程将等候队列有一个空位,然后将日记记录到磁盘。风险在于,当守卫进程等候网络IO时,变乱不会被记录到磁盘上。有效值有:lossy和lossless。默认值为Lossy。dispatcherdispatcher是一个由审计守卫进程在启动时启动的程序。它将把所有审计变乱的副本传递给应用程序的stdin。请确保您信任添加到这一行的应用程序,因为它以root权限运行。name_format该选项控制盘算机节点名如何插入到审计变乱流中。它有以下选项:none、hostname、fqd、numeric和user。None表示没有向审计变乱插入盘算机名。Hostname是gethostname系统调用返回的名称。fqd意味着它接收主机名并通过dns解析为该呆板的完全限定域名。Numeric类似于fqd,只是它可以解析呆板的IP地址。为了使用这个选项,你可能想测试`hostname-i或domainname-i`是否返回一个数字地址。别的,如果使用dhcp,则不发起使用此选项,因为随着时间的推移,同一台呆板可能有不同的地址。User是一个从name选项中定义的管理员字符串。默认值为none。name这是管理员定义的字符串,如果user被指定为name_format选项,它将标识该呆板。action_mail_acct此选项应包含有效的电子邮件地址或别名。默认地址为root。如果电子邮件地址不是本机的,你必须确保在你的呆板和网络上正确设置了电子邮件。别的,该选项要求盘算机上存在/usr/lib/sendmail。admin_space_left这是一个以兆字节为单位的数值,它告诉审计守卫进程何时实行可设置的操作,因为系统磁盘空间不足。这应该被视为耗尽磁盘空间之前实行某些操作的最后机会。该参数的数值应该小于space_left的数值。admin_space_left_action此参数告诉系统当系统检测到磁盘空间不足时接纳什么操作。有效值为:ignore、syslog、email、exec、suspend、single和halt。如果设置为ignore,审计守卫进程什么都不做。Syslog表示它将向Syslog发出警告。Email意味着它将向action_mail_acct中指定的电子邮件帐户发送警告,同时将消息发送到syslog。Exec/path-to-script将实行脚本。您不能将参数传递给脚本。Suspend将导致审计守卫进程停止向磁盘写入记录。守卫进程还会在世。single选项将导致审计守卫进程将盘算机系统置于单用户模式。停止disk_full_action这个参数告诉系统,当系统检测到日记文件写入的分区已满时,应该接纳什么行动。有效值为ignore、syslog、exec、suspend、single和halt。如果设置为ignore,审计守卫进程将发出syslog消息,但不接纳其他操作。Syslog表示它将向Syslog发出警告。Exec/path-to-script将实行脚本。您不能将参数传递给脚本。Suspend将导致审计守卫进程停止向磁盘写入记录。守卫进程还会在世。single选项将导致审计守卫进程将盘算机系统置于单用户模式。Halt选项将导致审计守卫进程关闭盘算机系统。disk_error_action这个参数告诉系统,在将审计变乱写入磁盘或循环日记时,如果检测到错误,应该接纳什么操作。有效值为ignore、syslog、exec、suspend、single和halt。如果设置为ignore,审计守卫进程将不实行任何操作。Syslog表示对Syslog一连发出的警告不超过5次。Exec/path-to-script将实行脚本。您不能将参数传递给脚本。Suspend将导致审计守卫进程停止向磁盘写入记录。守卫进程还会在世。single选项将导致审计守卫进程将盘算机系统置于单用户模式。Halt选项将导致审计守卫进程关闭盘算机系统。tcp_listen_port这是一个范围为1的数值。65535,如果指定,将导致auditd在对应的TCP端口上监听来自长途系统的审计记录。审计守卫进程可以链接到tcp_wrapper。您可能希望通过主机中的一个条目来控制访问。答应和拒绝文件。tcp_listen_queue这是一个数值,表示答应的挂起(请求但未接受的)毗连数。默认值为5。如果在同一时间启动的主机太多,例如停电后,这个值设置得太小可能会导致毗连被拒绝。tcp_max_per_addr这是一个数值,表示一个IP地址答应的并发毗连数。默认值为1,最大1024。设置得太大可能导致对日记服务器的拒绝服务攻击。还要注意,内核有一个内部的最大值,纵然auditd通过config答应这样做,最终也会制止该操作。默认值在大多数情况下应该足够了,除非运行自定义编写的规复脚本来转发未发送的变乱。在这种情况下,你只需要增长足够大的数字就可以让它进来。use_libwrap该设置确定是否使用tcp_wrapper来识别来自答应的盘算机的毗连实验。合法的取值包罗“yes”和“no”。默认值为“yes”。tcp_client_ports这个参数可以是一个数值,也可以是两个由破折号分隔的值(不答应有空格)。它表明客户端端口答应传入的毗连。如果没有指定,则答应任何端口。答应取值为1 ~65535。例如,要要求客户端使用特权端口,请将此参数指定为1-1023。你还需要在audio-remote.conf文件中设置local_port选项。确保客户发送从特权端口安全功能,以防止不可信用户日记注入攻击。tcp_client_max_idle该参数表示在auditd发出报警之前,客户端可能空闲的秒数(即根本没有数据)。如果客户端呆板出现标题,无法干净地关闭毗连,则用于关闭非活动毗连。注意,这是一个全局设置,必须比任何单独的客户端heartbeat_timeout设置高,最好是2倍。默以为零,禁用此检查。enable_krb5如果设置为“yes”,Kerberos 5将用于身份验证和加密。默认值为no。krb5_principal这是此服务器的主体。默认值是auditd。有了这个默认值,服务器将查找存储在/etc/audit/audit.中名为auditd/hostname@EXAMPLE.COM的键key进行身份验证,其中hostname是服务器主机的规范名称,通过DNS查找其IP地址返回。krb5_key_file此客户端主体的密钥位置。注意,密钥文件必须为root用户所有,模式为0400。默认的是/etc/audit/audit.key 2、默认设置释义

   [root@s166 audit]# cat /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
#日记文件格式
log_format = RAW
#异步增量方式刷新到磁盘
flush = INCREMENTAL_ASYNC
#记录数目达到此数值时写入磁盘,与flush结合使用
freq = 50
#单个日记文件巨细,单位为M,超过8M进行日记分割
max_log_file = 8
#日记文件保存数目,超过的会被清除
num_logs = 5
#守卫进程优先级
priority_boost = 4
#队列满是,丢弃变乱记录
disp_qos = lossy
#守卫进程启动的程序
dispatcher = /sbin/audispd
#审计变乱不插入主机名
name_format = NONE
#管理员可以指定主机名,默认注释,未启用
##name = mydomain
#日记文件超过巨细时的动作,ROTATE表示将日记轮转分割
max_log_file_action = ROTATE
#系统磁盘空间剩余巨细时实行动作,但是为M
space_left = 75
#系统磁盘空间不足时实行的操作,发送SYSLOG告警
space_left_action = SYSLOG
#是否发送邮件,取值yes或者no
verify_email = yes
#发送邮箱的账户,默认root@localhost,如果设置的是网络邮箱,/usr/lib/sendmail确保正确设置
action_mail_acct = root
#磁盘空间剩余巨细,剩余不足50M时停止审计记录写入
admin_space_left = 50
admin_space_left_action = SUSPEND
#磁盘满或者磁盘错误的时候停止写入审计记录
disk_full_action = SUSPEND
disk_error_action = SUSPEND
#如下是审计客户端毗连相关参数
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
  三、auditd相关命令与设置文件

1、auditd相关命令



  • auditctl : 即时控制审计守卫进程的行为的工具,如添加规则等。
  • **auditd :**audit 守卫进程负责把内核产生的信息写入到硬盘上,这些信息由应用程序和系统活动触发产生。用户空间审计系统通过 auditd 配景进程接收内核审计系统传送来的审计信息,将信息写入到 /var/log/audit/audit.log。
  • aureport : 检察和生成审计陈诉的工具。
  • ausearch : 查找审计变乱的工具
  • auditspd : 转发变乱关照给其他应用程序,而不是写入到审计日记文件中。
  • autrace : 一个用于跟踪进程的命令。类似于 strace,跟踪某一个进程,并将跟踪的效果写入日记文件之中。
  • aulast: 与last类似,但使用审计框架安装
  • aulastlog: 与lastlog类似,也使用审计框架
  • ausyscall: 映射syscall ID和名称
  • auvirt: 表现关于捏造机的审计信息
2、auditd相关设置文件



  • /etc/audit/auditd.conf : auditd工具的设置文件
  • /etc/audit/rules.d/audit.rules:包含审核规则的文件,如果我们需要修改审计范围,直接编辑该文件,并使用auditctl -R 命令重载审计规则设置文件
  • /etc/audit/audit.rules : 记录审计规则的文件,该设置文件是根据etc/audit/rules.d/audit.rules下的设置文件自动生成
四、auditd使用举例

1、检察当前审计规则

   [root@s166 audit]# auditctl -l
No rules
  2、设置一条审计规则

   [root@s166 audit]# echo “-w /etc/hosts -p wa -k hosts_change” >>
rules.d/audit.rules
  3、重载设置

   [root@s166 audit]# auditctl -R /etc/audit/rules.d/audit.rules
  4、再次检察审计规则

   [root@s166 audit]# auditctl -l
-w /etc/hosts -p wa -k hosts_change
  5、修改/etc/hosts文件

   [root@s166 audit]# vim /etc/hosts

192.168.0.186 s186
  6、检察审计记录

   [root@s166 audit]# ausearch --start today -k “hosts_change”
![在这里插入图片形貌](https://img-
blog.csdnimg.cn/1e7b157d51ac49018af40df0d8795580.png)
  五、auditd服务管理

auditd服务默认开机自启动,设置了禁止手动启停服务,如果我们需要启动或者停止服务,需要修改/usr/lib/systemd/system/auditd.service中的RefuseManualStop=no,否则服务启停服务命令,修改完成后实行systemctl
daemon-reload ,然后就可以手动启停管理服务了。实际上我们也可以不绝止服务的情况下停止审计,只需要实行auditd -s
disable命令就可以停止审计记录。


  • 检察auditd服务状态:systemctl status auditd
  • 设置服务开机自启动:systemctl enable auditd
  • 取消服务开机自启动:systemctl disable auditd
  • 停止auditd服务:systemctl stop auditd
  • 启动auditd服务:systemctl start auditd
  • 重启auditd服务:systemctl restart auditd
  • 重载审计规则设置:auditctl -R /etc/audit/rules.d/audit.rules
  • 停止审计:auditd -s disable
  • 开启审计:auditd -s enable
六、auditctl命令简介

audit 我们可以使用auditctl暂时设置规则,服务重启失效,如果需要设置永久生效,我们需要将规则写入到设置文件中。auditd审计规则分成三个部分,


  • 控制规则:这些规则用于更改审计系统本身的设置和设置。
  • 文件系统规则:这些是文件或目录监视。 使用这些规则,我们可以检察对特定文件或目录的任何类型的访问。
  • 系统调用规则:这些规则用于监视由任何进程或特定用户进行的系统调用。
1、命令语法

   #auditctl [选项] filter,action -S syscall -F condition -k label
  2、命令参数阐明

参数参数阐明-w path指定要监控的路径-p指定触发审计的文件/目录的访问权限rwxa,指定的触发条件,r 读取权限,w 写入权限,x 实行权限,a 属性(attr)-k在审核规则上设置过滤名称,方便后面使用ausearch查找-D删除所有规则和监控-W删除指定path的规则和-w对应,参数都要一样才气删除-b在 Kernel 中设定最大数目的已存在的审核缓冲区-R读取审计规则设置-l列表展示审计规则-s检察审计状态-v检察命令帮助-h获取命令帮助-a添加一条系统调用规则-d删除一条系统调用规则-r设置每秒生成信息的速率-S表示系统调用号或名字-F表示规则域 3、命令选项阐明

项目可选参数阐明filteruser,exit,task,exclude filter具体阐明哪个内核规则匹配过滤器应用在变乱中。以下是其中之一的与规则匹配的过滤器: task、exit、user 以及 excludeactionalways, never是否审核变乱(always 表示是)(never 表示否)syscallall, 2, open 等所有的系统调用都可以在/usr/include/asm/unistd_64.h文件中找到。许多系统调用都能形成一个规则conditioneuid=0, arch=b64具体阐明其他选项,进一步修改规则来与以特定架构、组 ID、进程 ID 和其他内容为底子的变乱相匹配label恣意笔墨标志审核变乱并检索日记 4、命令使用示例



  • 添加一条指定路径规则
   [root@s166 audit]# auditctl -w /mnt/testfile -p wa -k config-change
[root@s166 audit]# auditctl -l
-w /etc/hosts -p wa -k hosts_change
-w /mnt/testfile -p wa -k config-change
  

  • 删除一条指定路径规则
   [root@s166 audit]# auditctl -W /mnt/testfile -p wa -k config-change
[root@s166 audit]# auditctl -l
-w /etc/hosts -p wa -k hosts_change
  

  • 删除所有规则
   [root@s166 audit]# auditctl -D
No rules
[root@s166 audit]# auditctl -l
No rules
  

  • 检察规则
   [root@s166 audit]# auditctl -l
No rules
  七、ausearch命令简介

使用 ausearch ,您可以过滤和搜索变乱类型。 它还可以通过将数值转换为更加直观的值(如系统调用或用户名)来表明变乱。以根用户身份实行
ausearch 命令,当表现效果时,每个记录用 4 条虚线组成的一行隔开,每个记录前均表现时间标志。
1、常用参数阐明

参数参数阐明-f,–file <文件名>根据文件名搜索-c,–comm根据命令行名称搜索-ui,–uid<用户id> 根据用户id搜索-p,–pid<进程id> 根据进程id搜索-k,–key根据key字段搜索-te,–end[结束日期] [结束时间] 搜索的结束日期和时间-ts,–start[开始日期] [开始时间] 开始数据和搜索时间-m指定消息类型 2、命令使用示例



  • 查询所有变乱
   [root@s166 audit]# ausearch -m all
  

  • 查询指定时间段的日记
   [root@s166 audit]# ausearch --start today --end “now”
  

  • 查询指定用户日记
   [root@s166 audit]# ausearch -ua kingbase
  

  • 根据文件路径查找日记
   [root@s166 audit]# ausearch -f /etc/hosts
  

  • 根据系统调用查询日记
   [root@s166 audit]# ausearch -sc open
  

  • 根据过滤关键字查询日记
   [root@s166 audit]# ausearch -k “hosts_change”
  

  • 搜索系统登录失败日记
   [root@s166 audit]# ausearch --message USER_LOGIN --success no --interpret
  

  • 搜索所有的账户,群组,脚色变动
   [root@s166 audit]# ausearch -m ADD_USER -m DEL_USER -m ADD_GROUP -m
USER_CHAUTHTOK -m DEL_GROUP -m CHGRP_ID -m ROLE_ASSIGN -m ROLE_REMOVE -i
  

  • 征采从制定时间段的失败的系统调用
   [root@s166 audit]# ausearch --start “2023年10月22日” --end “now” -m SYSCALL -sv
no -i
  八、aureport命令简介

要生成审计消息的报表,可使用 aureport 命令。如果实行 aureport 时没有使用任何选项,则会表现如汇总报表。
1、常用参数阐明

参数参数阐明-a、 --avcavc陈诉-au,–auth身份验证陈诉–comm命令运行陈诉-c、 --config设置更改陈诉-cr,–crypto加密陈诉-e、 --event变乱陈诉-f、 --file文件名陈诉–failed报表中只有失败的变乱-h、 --主机长途主机名陈诉–help帮助-i、 --interpret表明模式-if,–input<input File name>使用此文件作为输入–input logs纵然stdin是管道,也要使用日记–integrity完整性变乱陈诉-l、 --login登录陈诉-k、 --key密钥陈诉-m、 --mods修改帐户陈诉-ma,–mac强制访问控制(mac)陈诉-n、 --非常anomaly陈诉-nc,–no config不包罗设置变乱–node<node name>仅来自特定节点的变乱-p、 --pidpid陈诉-r、 --相应对非常陈诉的相应-s、 --syscall系统调用陈诉–success报表中只有成功变乱–summary报表中主对象的排序汇总-t、 --log日记时间范围陈诉-te,–end[结束日期][结束时间]报表的结束日期和时间-tm,–terminalterminal名称陈诉-ts,–开始[开始日期][开始时间]开始数据和陈诉时间–tty关于tty击键的陈诉-u、 --user用户名陈诉-v、 --版本版本–virt捏造化陈诉-x、 --可实行文件可实行名称陈诉 2、命令使用示例



  • 生成所有陈诉
   [root@s166 audit]# aureport
![在这里插入图片形貌](https://img-
blog.csdnimg.cn/614c33ce30854285bda11640cde80418.png)
  

  • 生成文件相关的陈诉
   [root@s166 audit]# aureport -f
![在这里插入图片形貌](https://img-
blog.csdnimg.cn/a1b8a2a8697c410a90e1c03c7937b714.png)
  

  • 生成用户相关的陈诉
   [root@s166 audit]# aureport -u
  

  • 生成设置变动陈诉
   [root@s166 audit]# aureport -c
  

  • 生成登录记录陈诉
   [root@s166 audit]# aureport -l
  

  • 生成指定时间段的陈诉
   [root@s166 audit]# aureport -ts “8:00:00” -te “now” -l -i
  Login Report

  date time auid host term exe success event

  ============================================
\1. 2023年10月25日 11:01:08 root 192.168.0.186 ssh /usr/sbin/sshd no 1413
  

  • 生成所有用户失败变乱的总结陈诉
   [root@s166 audit]# aureport -u --failed --summary -i
  Failed User Summary Report

  total auid

  34 root
20 unset
  

  • 生成系统调用变乱陈诉
   [root@s166 audit]# aureport -s -i --summary
  Syscall Summary Report

  total syscall

  161 setsockopt
57 execve
30 init_module
27 unshare
5 ioctl
4 open
2 write
2 rename
2 chmod
2 setxattr
1 fchmodat
1 unlinkat
  网络安全工程师(白帽子)企业级学习门路

第一阶段:安全底子(入门)


第二阶段:Web渗透(低级网安工程师)


第三阶段:进阶部分(中级网络安全工程师)


如果你对网络安全入门感爱好,那么你需要的话可以点击这里

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表