建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
鲲鹏论坛 主题:8006帖子:270356

【技术干货】

使用Linux审核系统

全栈小娇妻 2020/9/30 1187

介绍

Linux审核系统可以帮助系统管理员创建一个审计跟踪,日志服务器上的每一个动作。我们可以跟踪与安全相关的事件,将事件记录在日志文件中,并通过检查审核日志文件来检测滥用或未经授权的活动。我们可以选择监视服务器上的哪些操作以及监视到什么程度。审核不会为您的系统提供额外的安全性,而是可以帮助您跟踪任何违反系统策略的情况,并使您能够采取其他安全措施来防止这种情况的发生。

本教程介绍了审计系统,如何配置审计系统,如何生成报告以及如何阅读这些报告。我们还将看到如何在审核日志中搜索特定事件。


回复9

2020/9/30 23:19

先决条件

对于本教程,您需要以下内容:

  • CentOS 7 Droplet(也可与CentOS 6一起使用)

  • 具有sudo特权的非root用户。要设置此类型的用户,请遵循“使用CentOS 7进行初始服务器设置”教程。所有命令将以该用户身份运行。


2020/9/30 23:19

验证审核安装

审核系统有两个主要部分:

  1. 审核内核组件拦截来自用户应用程序的系统调用,记录事件,并将这些审核消息发送到审核守护程序

  2. auditd守护进程从内核收集信息,并在日志文件中创建条目

审核系统使用以下软件包:auditaudit-libs。这些软件包默认安装在新的CentOS 7 Droplet(和新的CentOS 6 Droplet)上。最好使用以下方法验证它们是否已安装在服务器上:

sudo yum list audit audit-libs

您应该Installed Packages在输出中看到两个包:

Installed Packagesaudit.x86_64audit-libs.x86_64


2020/9/30 23:20

配置审核

的主要配置文件auditd/etc/audit/auditd.conf。该文件由配置参数组成,这些配置参数包括在何处记录事件,如何处理完整的磁盘以及日志轮换。要编辑此文件,您需要使用sudo:

sudo nano /etc/audit/auditd.conf

例如,要将保留在服务器上的审核日志文件的数量增加到10,请编辑以下选项:

/etc/audit/auditd.conf
num_logs = 10

您还可以配置最大日志文件大小(以MB为单位),以及配置达到该大小后应采取的措施:

/etc/audit/auditd.conf
max_log_file = 30max_log_file_action = ROTATE

更改配置时,需要使用以下方法重新启动审核的服务:

sudo service auditd restart

使更改生效。

另一个配置文件是/etc/audit/rules.d/audit.rules。(如果您使用的是CentOS 6,则使用该文件/etc/audit/audit.rules。)它用于永久添加审核规则。

auditd运行,审核信息将被记录在文件中/var/log/audit/audit.log


2020/9/30 23:21

了解审核日志文件

默认情况下,审核系统将审核消息记录到/var/log/audit/audit.log文件中。审核日志文件包含许多有用的信息,但是由于提供的信息量巨大,使用的缩写和代码等原因,对于许多用户而言,阅读和理解日志文件似乎很困难。在本节中,我们将尝试了解一些信息。审核日志文件中典型审核消息中的字段。

'注意:如果auditd由于某种原因没有运行,审核消息将发送到rsyslog。

对于本示例,假设我们在服务器上配置了带有标签(key的审核规则,sshconfigchange以记录对文件的每次访问或修改/etc/ssh/sshd_config如果需要,可以使用以下方法临时添加此规则:

sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k sshconfigchange

运行以下命令以查看sshd_config文件,将在审核日志文件中创建一个新事件

sudo cat /etc/ssh/sshd_config

audit.log文件中的此事件如下所示:

/var/log/audit/audit.log
type=SYSCALL msg=audit(1434371271.277:135496): arch=c000003e syscall=2 success=yes exit=3 a0=7fff0054e929 a1=0 a2=1fffffffffff0000 a3=7fff0054c390 items=1 ppid=6265 pid=6266 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=113 comm="cat" exe="/usr/bin/cat" key="sshconfigchange"type=CWD msg=audit(1434371271.277:135496):  cwd="/home/sammy"type=PATH msg=audit(1434371271.277:135496): item=0 name="/etc/ssh/sshd_config" inode=392210 dev=fd:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

上面的事件包含三个记录(每个记录都以type=关键字开头),它们共享相同的时间戳记(1434371271.277)和ID(135496)。每个记录由几个由空格或逗号分隔的名称=值组成我们将详细了解其中一些领域的含义。

在第一条记录中:

  • type=SYSCALL

type字段包含审核消息的类型。在这种情况下,该SYSCALL值表示此消息是由对内核的系统调用触发的。

  • msg=audit(1434371271.277:135496):

审核消息的时间戳和ID格式audit(time_stamp:ID)如果多个审核消息/记录是作为同一审核事件的一部分生成的,则它们可以共享相同的时间戳和ID。在我们的示例中,我们可以在审核事件生成的所有三个消息上看到相同的时间戳(1434371271.277)和ID(135496)。

  • arch=c000003e

arch字段包含有关系统的CPU体系结构的信息。值c000003e用十六进制表示,代表x86_64。

  • syscall=2

syscall字段表示发送到内核的系统调用的类型。在这种情况下,2是open系统调用。ausyscall实用程序允许您将系统电话号码转换为其人类可读的等效项。例如,运行以下命令以将值2转换为其人类可读的等效项:

sudo ausyscall 2

输出显示:

open

注意:您可以使用该sudo ausyscall --dump命令查看所有系统调用及其编号的列表。

  • success=yes

success字段显示该特定事件中的系统调用是成功还是失败。在这种情况下,呼叫成功。运行命令sshd_config时,sammy用户能够打开并读取文件sudo cat /etc/ssh/sshd_config

  • ppid=6265

ppid字段记录父进程ID(PPID)。在这种情况下,6265bash流程的PPID 

  • pid=6266

pid字段记录进程ID(PID)。在这种情况下,6266cat进程的PID 

  • auid=1000

auid是审核UID或触发此审核消息的用户的原始UID。即使您在初次登录后通过su或sudo提升特权,审核系统也会记住您的原始UID。

  • uid=0

uid字段记录了开始分析过程的用户的用户ID。在这种情况下,该cat命令由用户root以uid 0启动。

  • comm="cat"

comm 记录触发此审核消息的命令的名称。

  • exe="/usr/bin/cat"

exe字段记录用于触发该审核消息的命令的路径。

  • key="sshconfigchange"

key字段记录与在日志中生成此事件的审核规则相关的管理员定义的字符串。通常在创建自定义审核规则时设置密钥,以使从审核日志中搜索某些类型的事件更加容易。

对于第二条记录:

  • type=CWD

在第二条记录中,类型为“CWD当前工作目录”。此类型用于记录工作目录,从该工作目录执行了触发第一条记录中指定的系统调用的进程。

  • cwd="/home/sammy"

cwd字段包含从中调用系统调用的目录的路径。在我们的例子中,从目录执行了在第一条记录中cat触发opensyscall命令/home/sammy

对于第三条记录:

  • type=PATH

在第三条记录中,类型为PATH审核事件包含PATH作为参数传递给系统调用的每个路径记录。在我们的审核事件中,仅一个路径(/etc/ssh/sshd_config)被用作参数。

  • msg=audit(1434371271.277:135496):

msg字段显示与第一条记录和第二条记录相同的时间戳和ID组合,因为所有三个记录都是同一审核事件的一部分。

  • name="/etc/ssh/sshd_config"

name字段记录作为参数传递给系统调用(打开)的文件或目录的完整路径。在这种情况下,它就是/etc/ssh/sshd_config文件。

  • ouid=0

ouid字段记录对象所有者的用户ID。这里的对象是文件/etc/ssh/sshd_config

注意:有关审核记录类型的更多信息,请参见本教程末尾的链接。


2020/9/30 23:21

在审核日志中搜索事件

Linux审核系统附带了一个功能强大的工具,ausearch用于搜索审核日志。使用ausearch,您可以过滤和搜索事件类型。它还可以通过将数字值转换为人类可读的值(例如系统调用或用户名)来为您解释事件。

让我们看几个例子。

以下命令将从今天开始在审核日志中搜索LOGIN类型的所有审核事件,并解释用户名。

sudo ausearch -m LOGIN --start today -i

下面的命令将搜索事件ID为27020的所有事件(如果存在具有该ID的事件)。

sudo ausearch -a 27020

此命令将搜索所有与文件有关的事件(如果有)/etc/ssh/sshd_config并解释它们:

sudo ausearch -f /etc/ssh/sshd_config -i


2020/9/30 23:22

生成审计报告

您可以使用工具来获取审核消息摘要,而不是读取原始审核日志aureport它以人类可读的格式提供报告。这些报告可以用作进行更复杂分析的基础。如果aureport运行时不带任何选项,它将显示审核日志中存在的不同类型事件的摘要。与搜索选项一起使用时,它将显示符合搜索条件的事件列表。

让我们尝试一些示例aureport如果要生成服务器上所有命令执行的摘要报告,请运行:

sudo aureport -x --summary

输出看起来像这样,具有不同的值:

Executable Summary Report=================================total  file=================================117795  /usr/sbin/sshd1776  /usr/sbin/crond210  /usr/bin/sudo141  /usr/bin/date24  /usr/sbin/autrace18  /usr/bin/su

第一列显示执行命令的次数,第二列显示执行的命令。请注意,并非默认情况下会记录所有命令。仅记录与安全性相关的记录。

以下命令将为您提供所有失败事件的统计信息:

sudo aureport --failed

输出看起来类似于:

Failed Summary Report======================Number of failed logins: 11783Number of failed authentications: 41679Number of users: 3Number of terminals: 4Number of host names: 203Number of executables: 3Number of files: 4Number of AVC's: 0Number of MAC events: 0Number of failed syscalls: 9

生成有关使用系统调用和用户名访问的文件的报告:

sudo aureport -f -i

样本输出:

File Report===============================================# date time file syscall success exe auid event===============================================1. Monday 15 June 2015 08:27:51 /etc/ssh/sshd_config open yes /usr/bin/cat sammy 1354962. Tuesday 16 June 2015 00:40:15 /etc/ssh/sshd_config getxattr no /usr/bin/ls root 1474813. Tuesday 16 June 2015 00:40:15 /etc/ssh/sshd_config lgetxattr yes /usr/bin/ls root 1474824. Tuesday 16 June 2015 00:40:15 /etc/ssh/sshd_config getxattr no /usr/bin/ls root 1474835. Tuesday 16 June 2015 00:40:15 /etc/ssh/sshd_config getxattr no /usr/bin/ls root 1474846. Tuesday 16 June 2015 05:40:08 /bin/date execve yes /usr/bin/date root 148617

要以摘要格式查看相同内容,可以运行:

sudo aureport -f -i --summary

注意:aureport工具也可以从标准输入而不是日志文件中获取输入,只要输入为原始日志数据格式即可。


2020/9/30 23:23

使用autrace分析过程

要审核单个流程,我们可以使用该autrace工具。该工具跟踪进程执行的系统调用。这在调查可疑的特洛伊木马程序或有问题的过程中可能很有用。的输出将autrace写入/var/log/audit/audit.log标准的审计日志条目并且看起来与标准的审计日志条目相似。执行后,autrace将为您提供示例ausearch命令以调查日志。始终使用二进制文件的完整路径来跟踪autrace,例如sudo autrace /bin/ls /tmp

注意:请注意,运行autrace将删除所有自定义审核规则。它用跟踪您指定的过程所需的特定规则替换它们。之后autrace完成,它会清除它添加新的规则。出于同样的原因,autrace当您的审核规则设置为不可变时将无法使用。

让我们尝试一个示例,例如,我们要跟踪该进程date并查看其使用的文件和系统调用。运行以下命令:

sudo autrace /bin/date

您应该看到类似于以下内容:

Waiting to execute: /bin/dateWed Jun 17 07:22:03 EDT 2015Cleaning up...Trace complete. You can locate the records with 'ausearch -i -p 27020'

您可以使用ausearch上述输出中命令来查看相关日志,甚至可以将其传递aureport给格式良好的可读文件:

sudo ausearch -p 27020 --raw | aureport -f -i

此命令27020从审计日志中搜索具有事件ID的事件,以原始日志格式提取该事件,然后将其传递给aureport,后者进而以更好的格式解释并给出结果,以便于阅读。

您应该看到类似于以下内容的输出:

File Report===============================================# date time file syscall success exe auid event===============================================1. Wednesday 17 June 2015 07:22:03 /bin/date execve yes /usr/bin/date sammy 1696602. Wednesday 17 June 2015 07:22:03 /etc/ld.so.preload access no /usr/bin/date sammy 1696633. Wednesday 17 June 2015 07:22:03 /etc/ld.so.cache open yes /usr/bin/date sammy 1696644. Wednesday 17 June 2015 07:22:03 /lib64/libc.so.6 open yes /usr/bin/date sammy 1696685. Wednesday 17 June 2015 07:22:03 /usr/lib/locale/locale-archive open yes /usr/bin/date sammy 1696836. Wednesday 17 June 2015 07:22:03 /etc/localtime open yes /usr/bin/date sammy 169691


2020/9/30 23:23

结论

在本教程中,我们介绍了Linux Auditing System的基础。现在,您应该对审核系统的工作原理,如何阅读审核日志以及可以使您更轻松地审核服务器的各种可用工具有了很好的了解。

默认情况下,审核系统仅在日志中记录一些事件,例如登录的用户和使用sudo的用户。与SELinux相关的消息也会被记录。审计守护程序使用规则来监视特定事件并创建相关的日志条目。可以创建自定义审核规则来监视和记录我们想要的任何日志。这是审核系统对系统管理员强大的地方。我们可以使用命令行工具auditctl或在文件中永久添加规则/etc/audit/rules.d/audit.rules


火灵
0 0
2020/10/10 22:30

谢谢分享!

上划加载中
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年09月30日 23:18:21 1187 9
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 使用Linux审核系统

介绍

Linux审核系统可以帮助系统管理员创建一个审计跟踪,日志服务器上的每一个动作。我们可以跟踪与安全相关的事件,将事件记录在日志文件中,并通过检查审核日志文件来检测滥用或未经授权的活动。我们可以选择监视服务器上的哪些操作以及监视到什么程度。审核不会为您的系统提供额外的安全性,而是可以帮助您跟踪任何违反系统策略的情况,并使您能够采取其他安全措施来防止这种情况的发生。

本教程介绍了审计系统,如何配置审计系统,如何生成报告以及如何阅读这些报告。我们还将看到如何在审核日志中搜索特定事件。


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年09月30日 23:19:10
直达本楼层的链接
沙发
显示全部楼层

先决条件

对于本教程,您需要以下内容:

  • CentOS 7 Droplet(也可与CentOS 6一起使用)

  • 具有sudo特权的非root用户。要设置此类型的用户,请遵循“使用CentOS 7进行初始服务器设置”教程。所有命令将以该用户身份运行。


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年09月30日 23:19:41
直达本楼层的链接
板凳
显示全部楼层

验证审核安装

审核系统有两个主要部分:

  1. 审核内核组件拦截来自用户应用程序的系统调用,记录事件,并将这些审核消息发送到审核守护程序

  2. auditd守护进程从内核收集信息,并在日志文件中创建条目

审核系统使用以下软件包:auditaudit-libs。这些软件包默认安装在新的CentOS 7 Droplet(和新的CentOS 6 Droplet)上。最好使用以下方法验证它们是否已安装在服务器上:

sudo yum list audit audit-libs

您应该Installed Packages在输出中看到两个包:

Installed Packagesaudit.x86_64audit-libs.x86_64


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年09月30日 23:20:14
直达本楼层的链接
地板
显示全部楼层

配置审核

的主要配置文件auditd/etc/audit/auditd.conf。该文件由配置参数组成,这些配置参数包括在何处记录事件,如何处理完整的磁盘以及日志轮换。要编辑此文件,您需要使用sudo:

sudo nano /etc/audit/auditd.conf

例如,要将保留在服务器上的审核日志文件的数量增加到10,请编辑以下选项:

/etc/audit/auditd.conf
num_logs = 10

您还可以配置最大日志文件大小(以MB为单位),以及配置达到该大小后应采取的措施:

/etc/audit/auditd.conf
max_log_file = 30max_log_file_action = ROTATE

更改配置时,需要使用以下方法重新启动审核的服务:

sudo service auditd restart

使更改生效。

另一个配置文件是/etc/audit/rules.d/audit.rules。(如果您使用的是CentOS 6,则使用该文件/etc/audit/audit.rules。)它用于永久添加审核规则。

auditd运行,审核信息将被记录在文件中/var/log/audit/audit.log


点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

全栈小娇妻

发帖: 178粉丝: 17

发消息 + 关注

发表于2020年09月30日 23:21:00
直达本楼层的链接
5#
显示全部楼层

了解审核日志文件

默认情况下,审核系统将审核消息记录到/var/log/audit/audit.log文件中。审核日志文件包含许多有用的信息,但是由于提供的信息量巨大,使用的缩写和代码等原因,对于许多用户而言,阅读和理解日志文件似乎很困难。在本节中,我们将尝试了解一些信息。审核日志文件中典型审核消息中的字段。

'注意:如果auditd由于某种原因没有运行,审核消息将发送到rsyslog。

对于本示例,假设我们在服务器上配置了带有标签(key的审核规则,sshconfigchange以记录对文件的每次访问或修改/etc/ssh/sshd_config如果需要,可以使用以下方法临时添加此规则:

sudo auditctl -w /etc/ssh/sshd_config -p rwxa -k sshconfigchange

运行以下命令以查看sshd_config文件,将在审核日志文件中创建一个新事件

sudo cat /etc/ssh/sshd_config

audit.log文件中的此事件如下所示:

/var/log/audit/audit.log
type=SYSCALL msg=audit(1434371271.277:135496): arch=c000003e syscall=2 success=yes exit=3 a0=7fff0054e929 a1=0 a2=1fffffffffff0000 a3=7fff0054c390 items=1 ppid=6265 pid=6266 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=113 comm="cat" exe="/usr/bin/cat" key="sshconfigchange"type=CWD msg=audit(1434371271.277:135496):  cwd="/home/sammy"type=PATH msg=audit(1434371271.277:135496): item=0 name="/etc/ssh/sshd_config" inode=392210 dev=fd:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

上面的事件包含三个记录(每个记录都以type=关键字开头),它们共享相同的时间戳记(1434371271.277)和ID(135496)。每个记录由几个由空格或逗号分隔的名称=值组成我们将详细了解其中一些领域的含义。

在第一条记录中:

  • type=SYSCALL

type字段包含审核消息的类型。在这种情况下,该SYSCALL值表示此消息是由对内核的系统调用触发的。

  • msg=audit(1434371271.277:135496):

审核消息的时间戳和ID格式audit(time_stamp:ID)如果多个审核消息/记录是作为同一审核事件的一部分生成的,则它们可以共享相同的时间戳和ID。在我们的示例中,我们可以在审核事件生成的所有三个消息上看到相同的时间戳(1434371271.277)和ID(135496)。

  • arch=c000003e

arch字段包含有关系统的CPU体系结构的信息。值c000003e用十六进制表示,代表x86_64。

  • syscall=2

syscall字段表示发送到内核的系统调用的类型。在这种情况下,2是open系统调用。ausyscall实用程序允许您将系统电话号码转换为其人类可读的等效项。例如,运行以下命令以将值2转换为其人类可读的等效项:

sudo ausyscall 2

输出显示:

open

注意:您可以使用该sudo ausyscall --dump命令查看所有系统调用及其编号的列表。

  • success=yes

success字段显示该特定事件中的系统调用是成功还是失败。在这种情况下,呼叫成功。运行命令sshd_config时,sammy用户能够打开并读取文件sudo cat /etc/ssh/sshd_config

  • ppid=6265

ppid字段记录父进程ID(PPID)。在这种情况下,6265bash流程的PPID 

  • pid=6266

pid字段记录进程ID(PID)。在这种情况下,6266cat进程的PID 

  • auid=1000

auid是审核UID或触发此审核消息的用户的原始UID。即使您在初次登录后通过su或sudo提升特权,审核系统也会记住您的原始UID。

  • uid=0

uid字段记录了开始分析过程的用户的用户ID。在这种情况下,该cat命令由用户root以uid 0启动。

  • comm="cat"

comm 记录触发此审核消息的命令的名称。

  • exe="/usr/bin/cat"

exe字段记录用于触发该审核消息的命令的路径。

  • key="sshconfigchange"

key字段记录与在日志中生成此事件的审核规则相关的管理员定义的字符串。通常在创建自定义审核规则时设置密钥,以使从审核日志中搜索某些类型的事件更加容易。

对于第二条记录:

  • type=CWD

在第二条记录中,类型为“CWD当前工作目录”。此类型用于记录工作目录,从该工作目录执行了触发第一条记录中指定的系统调用的进程。

  • cwd="/home/sammy"

cwd字段包含从中调用系统调用的目录的路径。在我们的例子中,从目录执行了在第一条记录中cat触发opensyscall命令/home/sammy

对于第三条记录:

  • type=PATH

在第三条记录中,类型为PATH审核事件包含PATH作为参数传递给系统调用的每个路径记录。在我们的审核事件中,仅一个路径(/etc/ssh/sshd_config)被用作参数。

  • msg=audit(1434371271.277:135496):

msg字段显示与第一条记录和第二条记录相同的时间戳和ID组合,因为所有三个记录都是同一审核事件的一部分。

  • name="/etc/ssh/sshd_config"

name字段记录作为参数传递给系统调用(打开)的文件或目录的完整路径。在这种情况下,它就是/etc/ssh/sshd_config文件。

  • ouid=0

ouid字段记录对象所有者的用户ID。这里的对象是文件/etc/ssh/sshd_config

注意:有关审核记录类型的更多信息,请参见本教程末尾的链接。


点赞 评论 引用 举报