Linux测评延展 — audit 审计

admin 2024年2月18日09:07:24评论9 views字数 12688阅读42分17秒阅读模式

知识宝库在此藏,一键关注获宝藏

1. 启动audit内核模块
有些系统audit的内核模块时默认关闭。可以查看/proc/cmdline,若存在audit=0,则默认不启动audit。通过设置/boot/grub2/grub.cfg文件,使audit=1,或者去掉audit=0,然后重启系统,使audit内核模块启动。在此查看/proc/cmdline已修改为audit=1
即没有audit=0即可
Linux测评延展 — audit 审计
如果audit的内核模块启动了,用auditctl -s 查询enabled为1,但是用户空间的auditd守护进程没有运行(auditd进程为dead状态),审计日志无人接管,就会被写入到/var/log/messages 中。(PS:自己测试centos 7.x,已证实该结论正确。)
Linux测评延展 — audit 审计
1.1 测试enabled对应值对审计记录的影响:
1)  enabled为0的情况
此时auditd,rsyslog进程正常运行
Linux测评延展 — audit 审计
观察audit.log、messages文件不再记录audit日志
结论:当enable值为0 时,不记录任何事件
2) 当enabled为1时
①此时auditd,rsyslog进程正常运行
结论:audit日志将写入audit.log文件
②此时auditd进程关闭,rsyslog进程正常运行

Linux测评延展 — audit 审计

Linux测评延展 — audit 审计


经测试,使用passwd test 命令,结果如下

Linux测评延展 — audit 审计

/var/log/messages日志:

Linux测评延展 — audit 审计

结论:audit日志将记录在messages文件中,audit.log文件中将不再记录相应日志信息
③ 此时audit、rsyslog进程均关闭

messages、audit.log文件均不再记录相应日志信息

2. 启动auditd守护进程
我们习惯使用systemctl start xxx 来启动一个服务,但是auditd手册中,明确指出使用service命令是唯一一个正确开启auditd守护进程的方式。
测试:①停止服务
systemctl  stop auditd.service 无法关闭
Linux测评延展 — audit 审计
service auditd stop 即可
Linux测评延展 — audit 审计
② 开启服务
systemctl start auditd.service 可以开启
Linux测评延展 — audit 审计
service audit start 先确认服务为关闭状态
Linux测评延展 — audit 审计
虽然显示要你用systemctl 但是还是启动成功了
Linux测评延展 — audit 审计
正常一个服务,我们使用service xx start 时都会显示Redirecting to /bin/systemctl start xxx.service。我们可以通过which service来查看这个命令的源文件,/usr/sbin/service。这里对于不同的情况,有不同的处理。
1)  /etc/init.d目录下有这个服务;
2)  /usr/libexec/initscripts/legacy-actions目录下有这个服务;
3)  除了以上两种情况,其他情况下会定向到systemctl cmd xxx.service
auditd属于第二种情况,/usr/libexec/initscripts/legacy-actions目录有auditd目录,如下:
Linux测评延展 — audit 审计
① 设置开机启动/不启动
systemctl enable auditd
systemctl disable auditd
Linux测评延展 — audit 审计
② stop
service auditd stop
③ reload
service auditd reload
systemctl reload auditd.service
两个命令均生效,重新加载auditd的配置文件/etc/audit/auditd.conf
虽然提示,然是仍生效
Linux测评延展 — audit 审计
④ rotate
service auditd rotate
强制立即循环日志文件,老的日志文件将被命名为audit.log.N
Linux测评延展 — audit 审计
⑤ resume
service auditd resume
当日志记录停止时,用于恢复日志记录(暂不清楚什么情况下用的)。
Linux测评延展 — audit 审计
⑥ condrestart
service auditd condrestart
condrestart是conditional restart(条件重新启动)的意思,如果服务当前已经是运行的话,它可以重启这个服务,但是如果服务没有运行,condrestart是无法启动这个服务的,而restart都可以。
但好像对于centos 7.x这块好像都一样,condrestart也能启动未启动的服务。

Linux测评延展 — audit 审计

3. auditctl -s
通过auditctl -s查询可以看到audit的状态,这个是查询audit内核模块的状态
Linux测评延展 — audit 审计
其中“enabled”这个选项很重要,如果值为0,贼代表audit不工作,看不到任何审计日志,哪怕是系统日志messages。无论是使用auditctl临时配置规则、还是用/etc/audit/audit.rules文件永久配置规则,所有规则设定都要在enabled为1时才可以生效。
当enabled为2时,则表示规则锁定,所有设置都不起作用。
服务和enable:

服务是服务,enable是enable,这两者没有关系,服务启动或停止是针对auditd这个守护进程。auditctl -s查询的enabled的状态为audit内核模块的状态。内核模块主要用来获取审计信息,用户态的守护进程主要用来收集信息和记录日志。enabled为1,服务停止,日志会记录在messages中;enable为0,服务启动,没有任何审计信息,不会记录日志。也就是auditd服务是否启动,决定日志记录在哪里,启动了,日志记录在配置文件指定的路径,没有启动,记录在messages日志中。enable决定内核是否开始审计,为0,不启动,为1,启动。

4. auditd守护进程配置文件
通过/etc/audit/auditd.conf 文件进行配置,默认的auditd配置文件可以满足大多数环境要求。
Linux测评延展 — audit 审计
#日志存放路径
log_file = /var/log/audit/audit.log
#写日志时要使用的格式。
#当设置为RAW时,数据会以从内核中检索到的格式写到日志文件中。
#当设置为NOLOG时,数据不会写到日志文件中,但是如果用dispatcher选项指定了一个,则数据仍然会发送到审计事件调度程序中
log_format = RAW
#日志所属组
log_group = root
#审计应采用多少优先级推进守护进程。必须是非负数。0表示没有变化。
priority_boost = 4
#多长时间向日志文件中写一次数据。值可以是NONE、INCREMENTAL、DATA和SYNC之一。
#如果设置为NONE,则不需要做特殊努力来将数据刷新到日志文件中。
#如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。
#如果设置为DATA,则审计数据和日志文件一直是同步的。
#如果设置为SYNC,则每次写到日志文件时,数据和元数据是同步的
flush = INCREMENTAL
#如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前从内核中接收的记录数
freq = 20
#max_log_file_action设置为ROTATE时要保存的日志文件数目。必须是0~99之间的数。如果设置为小于2,则不会循环日志。如果递 增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。如果没有设 置num_logs值,它就默认为0,意味着从来不循环日志文件。
num_logs = 5
#控制调度程序与审计守护进程之间的通信类型。有效值为lossy和lossless。
#如果设置为lossy,若审计守护进程与调度程序之间的缓冲区已满 (缓冲区为128千字节),则发送给调度程序的引入事件会被丢弃。然而,只要log_format没有设置为nolog,事件就仍然会写到磁盘中。如果设置为lossless,则在向调度程序发送事件之前和将日志写到磁盘之前,调度程序会等待缓冲区有足够的空间。
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
name = mydomain
#以兆字节表示的最大日志文件容量。当达到这个容量时,会执行max_log_file _action指定的动作
max_log_file = 6
#当达到max_log_file的日志文件大小时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、ROTATE和KEEP_LOGS之一。
#如果设置为IGNORE,则在日志文件达到max_log_file后不采取动作。
#如果设置为SYSLOG,则当达到文件容量时会向系统日志/var /log/messages中写入一条警告。
#如果设置为SUSPEND,则当达到文件容量后不会向日志文件写入审计消息。
#如果设置为ROTATE,则当达到指定文件容量后会循环日志文件,但是只会保存一定数目的老文件,这个数目由num_logs参数指定。老文件的文件名将为audit.log.N,其中 N是一个数字。这个数字越大,则文件越老。
#如果设置为KEEP_LOGS,则会循环日志文件,但是会忽略num_logs参数,因此不会删除日志文件。
max_log_file_action = ROTATE
#以兆字节表示的磁盘剩余空间。当达到这个水平时,会采取space_left_action参数中的动作
space_left = 75
#当磁盘空间量达到space_left中的值时,采取这个动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和 HALT。
#如果设置为IGNORE,则不采取动作。
#如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息,停止记录日志。
#如果设置为EMAIL,则从action_mail_acct向这个地址发送一封电子邮件向/var/log/messages中写一条警告消息。
#如果设置为SUSPEND,则不再向审计日志文件中写警告消息。
#如果设置为SINGLE,则系统将在单用户模式下运行,让管理员释放磁盘空间。
#如果设置为SALT,则系统会关闭。
space_left_action = SYSLOG
#负责维护审计守护进程和日志的管理员的电子邮件地址。如果地址没有主机名,则假定主机名为本地地址,比如root。
#必须安装sendmail并配置为向指定电子邮件地址发送电子邮件
action_mail_acct = root
#以兆字节表示的磁盘空间数量。用这个选项设置比space_left_action更多的主动性动作,以防万一space_left_action没有让管理员释放任何磁盘空间。这个值应小于space_left_action。如果达到这个水平,则会采取admin_space_left_ action所指定的动作。
admin_space_left = 50
#如果含有这个审计文件的分区已满,则采取这个动作。可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT。与这些值关联的动作,与space_left_action中的相同。
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
这是在范围1、65535,一个数字值
tcp_listen_port =
tcp_listen_queue = 5
这是一个数字值,该值表示一个地址允许有多少个并发连接。默认为1,最大为1024。设置过大可能会允许拒绝服务攻击的日志服务器。
tcp_max_per_addr = 1
tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
如果设置为“yes”,Kerberos 5将用于认证和加密。默认是“no”
enable_krb5 = no
krb5_principal = auditd

krb5_key_file = /etc/audit/audit.key

5. audit 审计规则配置
audit可以配置审计规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志。
规则类型可以分为:
控制规则:控制audit系统的规则。
文件系统规则:也可以认为是文件监控,可以监控一个特定文件或者一个路径。
系统调用规则:可以记录特定程序的系统调用。
audit规则可以通过auditctl,在命令行里输入,这些设置的规则为临时的,当系统重启后就不存在了。可以通过配置/etc/audit/audit.rules文件,当每次audit服务启动后,都会从这个文件来加载规则。
1)控制规则

auditctl [options]

-b <backlog>

设置在内核中audit缓冲空间的最大值(默认为64),若缓冲沾满了,则kernel会发出一个失败标记。

-e [0|1|2]

设置0,关闭audit;设置1,开启audit;设置2,表示锁定,一般在设置完其他规则后最后设置,防止其他人修改规则,任何修改规则的行为都会被拒绝,并且记录审计日志,只有当系统重启后,这个使能标志才能被修改。

-f 这个选项来决定内核如何处理,设置失败标记的等级,值为0,1,2三种,0为不输出日志,1为输出printk日志,2为最高级,将大量输出日志信息。

-s 输出audit内核状态信息

-l 列出所有当前配置的规则

-D 删除所有当前加载的规则
2)文件系统规则

auditctl -w path_to_file -p permissions -k key_name

path_to_file 要做审计的文件或路径;

permissions 要记录的许可:rwx文件或路径的读写执行,a修改文件或路径的属性

key_name 为一个可选字符串,明确哪些规则产生的日志。过滤时可使用
例子:
定义规则,记录所有对/etc/passwd文件的写入以及属性修改:
auditctl -w /etc/passwd -p wa -k passwd_chages
记录所有对/etc/selinux/目录的写入以及属性修改:
auditctl -w /etc/selinux -p wa -k selinux_chages
记录所有执行了/sbin/insmod命令,向内核插入模块的:
auditctl -w /sbin/insmod -p x -k module_insertion
3)系统调用规则
auditctl -a action,filter -S system_call -F field=value -k key_name
action和filter 明确一个事件被记录。action可以为always或者never,fileter明确出对应的匹配过滤,filter可以为:task,exit,user,exclude。
system_call 明确出系统调用的名字,几个系统调用可以卸载一个规则里,
如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到。
field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。
如auditctl -a exit,always -S umask -S chown是监控对umask、chown命令的调用
例子:
定义一个规则,当每次使用系统调用adjtimex或者settimeofday时,
auditctl -a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_chage
一个文件被user ID为1000或者更大的用户删除,或重命名,记录审计:
auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 auid!=4294967295 -k delete
注意, -F auid!=4294967295 这个是为了排除login UID没有被设置的用户。
也可以通过系统调用规则,用来定义文件系统规则,如下的系统调用规则,与-w /etc/shadow -p wa 的文件系统规则等同:

auditctl -a always,exit -F path=/etc/shadow -F perm=wa

6. audit永久生效的规则配置
定义reboot系统后,仍然生效的审计规则,有两种办法:
1)  直接写入/etc/audit/audit.rules文件中
在service文件中需要加入
ExecStartPost=-/sbin/auditctl -R /etc/audit/audit.rules
对应命令:
auditctl -R path-to-rules,如
auditctl -R /etc/audit/reles.d/30-pci-dss.rules 
2)  将规则文件放入到/etc/audit/rules.d
● 7.x以后不能直接卸载audit.rules文件中
Linux测评延展 — audit 审计

这个文件是从/etc/audit/rules.d 自动生成的

在service文件中加入 augenrules --load (7.x自带)

Linux测评延展 — audit 审计
使用这个命令可以将/etc/audit/rules.d目录下的规则,按照顺序编辑到audit.rules中。
/usr/share/doc/audit-2.8.5/rules/  路径下,audit包提供了已经配置好的规则文件,用于各种认证,如PCI  DSS,STIG等。如下:

Linux测评延展 — audit 审计

注意,每个rules有一个数字,这些表示的是加载顺序。如果需要pci-dss认证的规则,可以将10-base-config,30-pci-dss-v31,一级99-finalize拷贝到rules.d目录下。然后再使用augenrules --load 命令将这些规则加载进来。

这些规则分类如下:

10 - Kernel and auditctl configuration

20 - Rules that could match general rules but you want a different match

30 - Main rules

40 - Optional rules

50 - Server-specific rules

70 - System local rules

90 - Finalize (immutable)

使用audictl -R 可以加载多个规则文件,不会覆盖,使用augenrules --load后,之前的规则就没有了。

7. 读懂audit日志
1) 构造一条audit日志
首先我们来构造一条audit日志。在home目录下新建一个目录,然后配置一条audit规则,对这个目录的wrax,都记录审计日志:
auditctl -w /home/test/ -p wrax -k audit_test
Linux测评延展 — audit 审计

root用户访问/home/test/目录时,即使用ls /home/test/命令,审计日志如下:

type=SYSCALL msg=audit(1591087544.072:570): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=dc25b0 a2=90800 a3=0 items=1 ppid=10893 pid=13492 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="audit_test"

type=CWD msg=audit(1591087544.072:570):  cwd="/"

type=PATH msg=audit(1591087544.072:570): item=0 name="/home/test" inode=16932 dev=fd:00 mode=040700 ouid=1000 ogid=1000 rdev=00:00 obj=unconfined_u:object_r:user_home_dir_t:s0 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0

type=PROCTITLE msg=audit(1591087544.072:570): proctitle=6C73002D2D636F6C6F723D6175746F002F686F6D652F74657374
2)  日志分析
当我使用su命令切换到test用户时,再访问/home/test目录,具体日志如下:
Linux测评延展 — audit 审计

type=SYSCALL msg=audit(1591088222.887:678): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=1e645b0 a2=90800 a3=0 items=1 ppid=14147 pid=14190 auid=0 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=17 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="audit_test"

type=CWD msg=audit(1591088222.887:678):  cwd="/home/test"

type=PATH msg=audit(1591088222.887:678): item=0 name="/home/test" inode=16932 dev=fd:00 mode=040700 ouid=1000 ogid=1000 rdev=00:00 obj=unconfined_u:object_r:user_home_dir_t:s0 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0

type=PROCTITLE msg=audit(1591088222.887:678): proctitle=6C73002D2D636F6C6F723D6175746F002F686F6D652F74657374
第一段:

type=SYSCALL

每条记录都是以type=“keyword”开头,SYSCALL表示这条记录是向内核的系统调用触发产生的。

msg=audit(1591088222.887:678)

在audit(time_stamp:ID)格式中,记录的时间,从1970年1月1日00:00:00到现在的时间,ID为记录中唯一的ID标识,同一个事件产生的ID是相同的,如上访问test目录会触发产生三条日志,但是事件ID是相同的。

其中,时间可以用date命令转换格式,date --date=@******

Linux测评延展 — audit 审计

arch=c000003e

表示系统CPU架构,这个十六进制表示“x86_64”。

syscall=257 

向内核的系统调用的类型,类型值为257,在/usr/include/asm/unistd_64.h定义,这里257表示openat,可以使用命令ausyscall来查询不同的数字对应的系统调用名称。或者使用ausyscall --dump命令来显示所有的系统调用。

Linux测评延展 — audit 审计

success=yes

表示调用成功与否

exit=3

系统调用结束时的返回码,不同的系统调用,返回值不同。

a0=ffffffffffffff9c a1=1e645b0 a2=90800 a3=0

为系统调用时的前四个arguments,这些arguments依赖于使用的而系统调用,可以使用ausearch来查看解释(部分参数可以打印出数值具体的解释)

items=1

表示跟在系统调用后,补充记录的个数。

ppid=14147 

父进程ID。

pid=14190

进程ID,该处表示ls进程的ID。

audit=0

auid记录Audit user ID,that is the loginuid。当我使用root账户登录系统时,再使用su命令切换到test用户,使用ls命令,此时auid为0。

auid为登录用户的ID,如果是root,ID为0,并且即使使用su更换了用户,每个进程事件的auid还是初始那个登录用户的ID。

uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000

uid为启动这个分析进程的用户的ID,即具体执行进程的用户ID。后面分别对应,group ID,effective user ID, set user ID, file system user ID, effective group ID, set group ID, file system group ID。

tty=pts1

具体在哪个终端tty执行的操作。如执行passwd这个操作是在哪个终端进行的。

ses=17

session ID,对话ID

comm="ls" 

什么命令导致的审计记录,这里是ls,ls访问读取了这个目录,故记录了审计日志。

exe="/usr/bin/ls"

记录可执行文件的具体路径。
第二段:
type=CWD
type值为CWD,即current working directory(当前工作目录)。
记录的是当前进程的位置,目的如下:
Linux测评延展 — audit 审计
第三段:
type=PATH
在第三条记录中,type字段值是PATH。审核事件包含作为参数传递给系统调用的每个路径的路径类型记录。在此审核事件中,只有一个路径用作参数。
item=0
item字段指示在SYSCALL类型记录中引用的项目总数中,当前记录是哪个项目。这个数字是从零开始的;值0表示它是第一项。
name=
当我访问test这个目录时,是直接在这个目录下执行ls的,这个name字段记录系统调用时文件或目录的full path(完整路径)。
若我直接在test目录下执行ls,name值为.    完整命令就对应为ls .
Linux测评延展 — audit 审计
若我在/test/test1目录中访问test目录,则完整命令为ls ../test1
Linux测评延展 — audit 审计
Linux测评延展 — audit 审计
inode=16932
inode表示这个文件或目录的inode number,可以使用如下命令来查询当前inode对应的文件。
find / -inum 16932 -print
Linux测评延展 — audit 审计
也可以使用stat命令来查询文件或目录的inode number
Linux测评延展 — audit 审计
dev=fd:00
dev字段,指明device的minor和major ID。
mode=040700
mode字段表示文件或路径的权限。
ouid=1000
the object owner's user ID,对象所有者的用户ID。
ogid=1000
the object owner's group ID,对象所用户组ID。
rdev=00:00
rdev字段只包含记录的特殊文件的设备标识符。在这种情况下,不会使用它,因为记录的文件是常规文件。
objtype=NORMAL
objtype字段记录给定系统调用上下文中每个路径记录操作的意图。
3) 使用ausearch查看日志
ausearch这个工具,可以针对指定的事件来搜索audit日志文件。默认情况下,ausearch搜索/var/log/audit/audit.log 这个文件。
Linux测评延展 — audit 审计
经过测试,应该是能在/var/log/audit/目录下搜索通过轮替后产生的audit.log.N文件
自身重命名的N也可以,但是N必须是连贯的,如果N=10,但是没有1-9的文件,他就无法读取到audit.log.10中的内容
Linux测评延展 — audit 审计
ausearch命令常用的选项:
-a <number>
#只显示事件ID为指定数字的日志信息,如只显示470事件
Linux测评延展 — audit 审计
-c <commond>
#只显示和指定命令有关的事件,如只显示touch命令产生的事件
Linux测评延展 — audit 审计
-i 
#显示出的信息更清晰,如事件事件、相关用户名都会直接显示出来,而不再是数字形式
Linux测评延展 — audit 审计
-k
#显示出和之前auditctl -k 所定义的关键词相匹配的事件信息,如audit_test
Linux测评延展 — audit 审计

ausearch -m    #按消息类型查找

ausearch -ul   #按登陆ID查找

ausearch -ua    #按uid和euid查找

ausearch -ui    #按uid查找

ausearch -ue    #按euid查找

ausearch -ga    #按gid和egid查找

ausearch -gi    #按gid查找

ausearch -ge    #按egid查找

ausearch -c     #按cmd查找

ausearch -x     #按exe查找

ausearch -sc   #按syscall查找

ausearch -p    #按pid查找

ausearch -sv    #按syscall的返回值查找(yes/no)

ausearch -f     #按文件名查找

ausearch -tm   #按连接终端查找(term/ssh/tty)

ausearch -hn    #按主机名查找

ausearch -k     #按特定的key值查找

ausearch -w     #按在audit rule设定的字符串查找
以上的命令可以联合使用,例如我查询使用touch命令,关键词定义audit_test,更清晰的显示日志
Linux测评延展 — audit 审计
使用ausearch搜索审计日志文件
① 搜索/var/log/audit/audit.log对于失败的登录尝试
ausearch --message USER_LOGIN --success no --interpret
Linux测评延展 — 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
Linux测评延展 — audit 审计
③搜索特定用户(auid)执行的所有记录的操作
ausearch -ua 1000 -i
Linux测评延展 — audit 审计
④ 搜索从昨天到现在所有失败的系统调用
ausearch --start yesterday --end now -m SYSCALL -sv no -i
Linux测评延展 — audit 审计

原文始发于微信公众号(等保不好做啊):Linux测评延展知识 — 读懂audit 审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月18日09:07:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux测评延展 — audit 审计http://cn-sec.com/archives/2136202.html

发表评论

匿名网友 填写信息