=Start=
缘由:
在我们使用Linux作为自己的服务器时,安全防护是一个不得不要考虑的问题。为了避免别人盗取我们的数据,我们需要时刻关注它。安全防护包括很多东西,审计是其中之一。
正文:
参考解答:
理解审计日志文件
/var/log/audit/audit.log
文件中;如果启用日志旋转,就可以旋转储存在同一目录中的 audit.log
文件。/etc/ssh/sshd_config
文件的尝试:-w /etc/ssh/sshd_config -p warx -k sshd_config
auditd
守护程序在运行,就需在审核日志文件中运行以下命令创造新事件:~]# cat /etc/ssh/sshd_config
audit.log
文件中的事件如下所示:type=SYSCALL msg=audit(1364481363.243:24287): arch=c000003e syscall=2 success=no exit=-13 a0=7fffd19c5592 a1=0 a2=7fffd19c4b50 a3=a items=1 ppid=2686 pid=3538 auid=500 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts0 ses=1 comm="cat" exe="/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config" type=CWD msg=audit(1364481363.243:24287): cwd="/home/shadowman" type=PATH msg=audit(1364481363.243:24287): item=0 name="/etc/ssh/sshd_config" inode=409248 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0
type=
字符串作为开始),共享相同的时间戳和编号。每个记录包含好几对 name=value
,由空格或者逗号分开。以下是关于以上事件的详细分析:第一个记录
type=SYSCALL
-
type
输入栏包含这类记录。在这个例子中,SYSCALL
数值详细说明连接到 Kernel 的系统调用触发了这个记录。为了列出所有可能的类型值和它们的解释,请参考〈第 B.2 节 “审核记录类型”〉。 msg=audit(1364481363.243:24287):
-
msg
输入栏记录:-
audit(time_stamp:ID)
表格中记录的时间戳和特殊 ID。如果多种记录生成为相同审核事件的一部分,那么它们可以共享相同的时间戳和 ID。 -
Kernel 或者用户空间应用提供不同的事件特定
name=value
组。
-
arch=c000003e
-
arch
输入栏包括关于系统CPU架构的信息。值c000003e
是使用 16 进制表示法编码。当使用ausearch
命令搜寻审核记录时, 使用-i
或者--interpret
选项自动转化为 16 进制值可供人读取的对等语。c000003e
值被解释为x86_64
。 syscall=2
-
syscall
输入栏记录了传输给 Kernel 的输入栏类型。值2
可以与在/usr/include/asm/unistd_64.h
文件中可供人读取的对等语相匹配。 在这种情况下,2
是open
系统调用。 请注意 ausyscall 实用程序允许您把系统调用数字转换成可供人读取的对等语。 使用ausyscall --dump
命令来展示所有的系统调用和它们的号码。如想要获取更多信息,请参考 ausyscall(8) 手册页。 success=no
-
success
输入栏记录了系统调用是否被成功地记录在特定事件中。在这种情况下,调用不会成功。 exit=-13
-
exit
输入栏包含详细说明由系统调用所返回的退出代码的值。在不同的系统调用中,值各不相同。您可以用以下命令把值解释为可供人读取的对等语:ausearch --interpret --exit -13
(假设您的审核日志中包含的事件没有退出代码-13
)。 a0=7fffd19c5592
,a1=0
,a2=7fffd19c5592
,a3=a
-
a0
到a3
输入栏记录了前四个参数,在这个事件中使用 16 进制编码系统调用。这些参数取决于使用的系统调用;它们可以通过 ausearch 实用程序来解释。 items=1
-
items
输入栏包含事件中路径记录的数量。 ppid=2686
-
items
输入栏记录了父进程 ID(PPID)。在这个情况下,2686
是bash
进程的 PPID。 pid=3538
-
pid
输入栏记录了进程 ID(PID)。在这个情况下,3538
是cat
进程的 PID。 auid=500
-
auid
输入栏记录了审核用户 ID,这个是 loginuid。这个ID是用户在登录时使用的并且即使当用户身份改变时,也可以通过每个进程获取该ID。(例如,通过切换用户账户,使用su - john
命令)。 uid=500
-
uid
输入栏记录了开始分析进程的用户 ID。使用以下指令:ausearch -i --uid UID
,用户 ID 就可以被解释为用户名字。在这个情况下,500
是shadowman
的用户 ID。 gid=500
-
gid
输入栏记录了开始分析进程用户的 ID组。 euid=500
-
euid
输入栏记录了开始分析进程用户的有效用户 ID。 suid=500
-
suid
输入栏记录了开始分析进程的用户的设置用户 ID。 fsuid=500
-
fsuid
输入栏记录了开始分析进程用户的文件系统用户 ID。 egid=500
-
egid
输入栏记录了开始分析进程用户的有效群组 ID。 sgid=500
-
sgid
输入栏记录了开始分析进程用户的设置群组 ID。 fsgid=500
-
fsgid
输入栏记录了开始分析进程的用户的文件系统群组 ID。 tty=pts0
-
tty
输入栏记录了调用分析进程的终端。 ses=1
-
ses
输入栏记录了调用分析进程会话的会话 ID。 comm="cat"
-
comm
输入栏记录了命令行的名字,它被用于调用分析进程。在这种情况下cat
命令被用来触发审核事件。 exe="/bin/cat"
-
exe
输入栏记录了被用来调用分析进程的可执行的路径。 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
-
subj
输入栏记录了 SELinux 语境,运用此语境可以在执行时间中标注分析进程。 key="sshd_config"
-
key
输入栏记录了所有管理者定义的字符串,它与在审核日志中生成该事件的规则有关。第二记录
type=CWD
-
在第二记录中,
type
输入栏数值是CWD
— 当前工作目录。这种类型用于记录在被执行的第一记录中详细说明的触发系统调用的进程。这个记录的目的是为了记录当前进程的位置以防在相关的 PATH 记录中捕捉到相对路径。运用这个方法可以重塑绝对路径。 msg=audit(1364481363.243:24287)
-
msg
输入栏持有与第一记录中的数值相同的时间戳和 ID 值。 cwd="/home/shadowman"
-
cwd
输入栏含有进入目录的路径,在目录中触发系统调用。第三记录
type=PATH
-
在第三记录中,
type
输入栏值是PATH
。每个审核事件包含一个PATH
对于每条路径种类的记录作为一个参数,传输给系统调用。在审核事件中,只有一条路径(/etc/ssh/sshd_config
)被用来作为参数。 msg=audit(1364481363.243:24287):
-
msg
输入栏持有与第一和第二记录中的值相同的时间戳和 ID 值。 item=0
-
item
输入栏表明在所有项目中,哪个项目在SYSCALL
类型记录中,参考了当前记录。这个是数字是以零为基准;值0
意味着它是第一项。 name="/etc/ssh/sshd_config"
-
name
输入栏记录了文件或者目录的所有路径,作为参数被传输给系统调用。在这种情况下,它是/etc/ssh/sshd_config
文件。 inode=409248
-
inode
输入栏包含索引结点数字,与记录在事件中的文件和目录有关。以下命令体现了与409248
索引结点数字相关的文件和目录:~]# find / -inum 409248 -print /etc/ssh/sshd_config
dev=fd:00
-
dev
输入栏明确说明了设备的次要和主要 ID,它包含记录在事件中的文件和目录。在这种情况下,值代表/dev/fd/0
设备。 mode=0100600
-
mode
输入栏记录了文件和目录权限,用 16 进制表示法编码。在这种情况下,0100600
可以被解释为-rw-------
,意味着对于/etc/ssh/sshd_config
文件,只有 root 用户拥有读取并且输入权限。 ouid=0
-
ouid
输入栏记录了对象所有者的用户 ID。 ogid=0
-
ogid
输入栏记录对象拥有者的群组 ID。 rdev=00:00
-
rdev
输入栏包含记录的设备识别器只用于特殊文件。在这种情况下,正常文件是不用来作为记录文件的。 obj=system_u:object_r:etc_t:s0
-
obj
输入栏记录了 SELinux 语境,运用此语境可以在执行时间中标注分析进程。
audit.log
事件auditd
守护程序。 ver
位置栏显示了已经开始的审核守护程序的版本。type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success
type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=500 auid=500 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/0 res=failed'
搜索审核日志文件(ausearch)
/var/log/audit/audit.log
文件。您可以使用 ausearch options -if file_name
命令来显示指定搜索不同的文件。在一个 ausearch
命令中提供多种选择等同于使用 AND 运算符。举例. 使用 ausearch
搜索审核日志文件
/var/log/audit/audit.log
文件,请使用以下命令。~]# ausearch --message USER_LOGIN --success no --interpret
~]# 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
auid
),请使用以下命令:~]# ausearch -au 500 -i
~]# ausearch --start yesterday --end now -m SYSCALL -sv no -i
ausearch
选项,请参考 ausearch(8) 手册页。创建审核报告(aureport)
/var/log/audit/
目录中的所有 audit.log
文件来创建报告。您可以指定不同的文件来运行报告而不使用 aureport options -if file_name
命令。举例. 使用 aureport
来生成审核报告。
~]# aureport --start 04/08/2013 00:00:00 --end 04/11/2013 00:00:00
~]# aureport -x
~]# aureport -x --summary
~]# aureport -u --failed --summary -i
~]# aureport --login --summary -i
ausearch
查询搜索 用户 500
所有的文件访问事件生成一份报告,请使用以下命令:~]# ausearch --start today --loginuid 500 --raw | aureport -f --summary
~]# aureport -t
aureport
选项,请参考 aureport(8) 手册页。参考链接:
How To Use the Linux Auditing System on CentOS 7 #需要详细研读
https://www.digitalocean.com/community/tutorials/how-to-use-the-linux-auditing-system-on-centos-7
如何使用Linux审核系统在CentOS 7
https://www.howtoing.com/how-to-use-the-linux-auditing-system-on-centos-7/
定制审计策略
http://developer.huawei.com/ict/cn/doc/site-euleros-security-guide/index.html/zh-cn_topic_0012735987
在Linux上,如何跟踪由我的用户创建的可执行文件?
https://gxnotes.com/article/133385.html
https://unix.stackexchange.com/questions/104751/how-can-i-track-executables-created-by-my-user-on-linux
http://www.man7.org/linux/man-pages/man8/auditd.8.html
http://www.man7.org/linux/man-pages/man8/audispd.8.html
http://www.man7.org/linux/man-pages/man8/auditctl.8.html
http://www.man7.org/linux/man-pages/man8/augenrules.8.html
How to use audit to monitor a specific SYSCALL?
https://access.redhat.com/solutions/36278
=END=
《 “CentOS下audit的使用#理解审计日志文件” 》 有 4 条评论
`
sudo aureport –syscall # 生成所有系统调用事件的一份报告 (-s)
sudo aureport –anomaly # 生成所有「异常」事件的一份报告,比如网卡进入混杂模式,程序出现段错误 (-n)
sudo aureport –response # 生成对所有异常事件的响应的一份报告 (-r)
sudo aureport –tty # 生成所有tty按键操作的一份报告
sudo aureport –terminal # 生成所有和终端有关事件的一份报告 (-tm)
sudo aureport –user # 生成所有和用户相关事件的一份报告 (-u)
sudo aureport –executable # 生成所有可执行文件事件的一份报告 (-x)
sudo aureport –file # 生成所有和文件相关事件的一份报告 (-f)
sudo aureport –interpret # 将一些数字内容解释为文本,比如对十六进制命令字符串进行解码 (-i)
sudo aureport –config # 生成所有配置文件变化事件的一份报告 (-c)
sudo aureport –no-config # 配置文件变化中过滤掉审计规则的变化 (-nc)
sudo aureport –auth # 生成所有认证尝试事件的一份报告 (-au)
sudo aureport –login # 生成所有登录事件的一份报告 (-l)
sudo aureport –mods # 生成所有账户修改事件的一份报告 (-m)
sudo aureport -x –summary # 生成所有可执行文件事件的总结
sudo aureport –failed # 生成所有错误事件的一份报告
sudo aureport -f -i –summary # 生成所有使用系统调用和用户名访问的文件的报告摘要
sudo aureport -u –failed –summary -i # 生成所有用户失败事件的总结报告
sudo aureport –login –summary -i # 生成每个系统用户登录失败的总结报告
`
Linux下利用auditd监控JAVA执行命令并通过OSSEC告警
http://vinc.top/2017/07/17/linux%E4%B8%8B%E5%88%A9%E7%94%A8auditd%E7%9B%91%E6%8E%A7java%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E5%B9%B6%E9%80%9A%E8%BF%87ossec%E5%91%8A%E8%AD%A6/
`
# grep ‘\-a’ /etc/audit/audit.rules
-a exclude,always -F msgtype=CONFIG_CHANGE
-a exit,always -F arch=b32 -F uid=99 -S execve -k webshell
`
http://www.man7.org/linux/man-pages/man8/auditctl.8.html#RULE_OPTIONS
`
auditctl -a exit,always -S execve -F arch=b64 -F path!=/usr/bin/rrdtool
auditctl -a exit,always -S execve -F arch=b64 -F uid=0
auditctl -R /etc/audit/audit.rules
`
【技术分享】另类WebShell监测机制–基于auditd
https://mp.weixin.qq.com/s/arF1PKKfZ143XxcqnwKSiA
`
如果你希望将其(基于auditd的webshell检测)产品化实现,可能还需要考虑如下问题:
• 实时收集操作系统进程和进程PID等信息
• 主动识别Web进程和Web目录信息
• 对audit.log日志文件进行采集,发送到远程服务器进行收集
• 采集和关联分析Web访问日志
• 部署自研或第三方日志管理系统对进程信息进行分析
• 深入学习和理解auditd的运行机制和参数配置
• 合理配置auditd的运行参数,准确评估审计功能对系统性能的影响
• Windows平台是否有同样的检测机制?
基于auditd的审计信息对于关键任务环境来说是至关重要的,可以用于确定安全策略的违反和审计用户操作行为。审计本身不会为您的系统提供额外的安全性,但它可以用于发现违背安全策略的行为。
`