如何写在CentOS 7自定义系统审核规则

介绍

Linux审核系统创建审核跟踪,以跟踪系统上的各种信息。 它可以记录大量的数据,如事件类型,日期和时间,用户ID,系统调用,进程,使用的文件,SELinux上下文和灵敏度级别。 它可以跟踪文件是否已被访问,编辑或执行。 它甚至可以跟踪文件属性的更改。 它能够记录系统调用的使用,用户执行的命令,失败的登录尝试和许多其他事件。 默认情况下,审计系统只记录日志中的几个事件,例如用户登录,用户使用sudo和SELinux相关的消息。 它使用审计规则监视特定事件并创建相关日志条目。 可以创建审核规则。

在本教程中,我们将讨论不同类型的审计规则以及如何在服务器上添加或删除自定义规则。

先决条件

开始使用本教程之前,您应该具有以下内容:

查看审核规则

您可以查看当前的一组使用命令审核规则auditctl -l

sudo auditctl -l

如果没有规则,它将不显示规则(这是默认值):

No rules

在本教程中添加规则时,可以使用此命令验证是否已添加它们。

可以使用以下方式查看审计系统的当前状态:

sudo auditctl -s

输出将类似于:

AUDIT_STATUS: enabled=1 flag=1 pid=9736 rate_limit=0 backlog_limit=320 lost=0 backlog=0

enabled=1值显示审核该服务器上启用。 pid值是审计守护进程的进程号。 pid为0表示审计守护程序未在运行。 lost进入会告诉你很多事件记录怎么有
被丢弃,由于内核审计队列溢出。 backlog字段显示许多事件记录如何当前排队等待auditd调用的阅读。 我们将在本教程的下一部分讨论其余的输出字段。

添加审核规则

您可以添加使用命令行工具自定义审核规则auditctl 默认情况下,规则将添加到当前列表的底部,但也可以插入到顶部。 为了使您的规则永久性的,你需要将它们添加到文件/etc/audit/rules.d/audit.rules 每当auditd服务启动时,它会激活从文件中的所有规则。 你可以阅读更多关于我们的其他文章审计守护进程和审计系统在CentOS 7理解审计制度 ,审计规则,在第一场比赛赢得工作的基础-一个规则匹配的时候,它不会评价规则进一步下跌。 正确排序规则很重要。

如果你是在CentOS 6,审核规则文件位于/etc/audit/audit.rules代替。

有三种类型的审计规则:

  • 控制规则:这些规则用于更改审计系统本身的配置和设置。

  • 文件系统规则:这些是文件或目录监视。 使用这些规则,我们可以审核对特定文件或目录的任何类型的访问。

  • 系统调用规则:这些规则用于监视由任何进程或特定用户进行的系统调用。

控制规则

让我们看看一些我们可以添加的控制规则:

  • auditctl -b <backlog> -优秀审计缓冲区设置最大数量允许的。 如果所有缓冲区都已满,则内核会查询故障标志以进行操作。 在CentOS服务器上设置的默认积压限额为320.您可以使用以下方式查看此积分:
sudo auditctl -s

在输出中,你可以看到当前backlog_limit值:

AUDIT_STATUS: enabled=1 flag=1 pid=9736 rate_limit=0 backlog_limit=320 lost=0 backlog=0

如果您的积压值大于当前设置的backlog_limit多,你可能需要增加backlog_limit为审计日志正常工作。 例如,要将值增加到1024,请运行:

sudo auditctl -b 1024

输出将显示状态:

AUDIT_STATUS: enabled=1 flag=1 pid=9736 rate_limit=0 backlog_limit=1024 lost=0 backlog=0
  • auditctl -f [0 1 2] -设置故障标志(0 =静音,1 = 2的printk =恐慌。)。 此选项允许您确定您希望内核如何处理关键错误。 如果设置为0,则无法记录的审核消息将被静默丢弃。 如果设置为1,则将消息发送到内核日志子系统。 如果设置为2,它将触发内核崩溃。 查询此标志的示例条件包括超出了积压限制,超出内核内存和超出速率限制。 默认值为1.除非服务器上的审计守护程序有任何主要问题,否则不需要更改此值。

  • auditctl -R <filename> -从指定的文件中读取审核规则。 当您正在测试一些临时的规则,并希望从再次使用老的规则,这很有用audit.rules文件。

我们通过添加规则auditctl是不是永久性的。 为了让他们在重新启动后持久的,可以将其添加到文件/etc/audit/rules.d/audit.rules 此文件使用相同的auditctl命令行语法指定的规则,但没有auditctl命令本身在前面。 任何空行或任何在散列符号(#)后面的文本都将被忽略。 默认规则文件如下所示:

/etc/audit/rules.d/audit.rules
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page

要改变积压价值的说法,8192,您可以更改-b 320 -b 8192,并使用重新启动审计服务:

sudo service auditd restart

如果不重新启动守护程序,它将在下次服务器重新启动时仍然从配置中设置新值。

文件系统规则

可以对文件和目录设置文件系统监视。 我们还可以指定要监视的访问类型。 文件系统规则的语法是:

auditctl -w path_to_file -p permissions -k key_name

哪里

path_to_file是文件或进行审核目录permissions是记录的权限。 这个值可以是一个或r(读取)的组合,w(写),x(执行)和(属性更改)。 key_name是一个可选的字符串,可以帮助你确定哪些规则(S)产生的特定日志条目。

让我们来看一些例子。

sudo auditctl -w /etc/hosts -p wa -k hosts_file_change

上述规则要求审计系统来监视任何写访问或属性更改文件/etc/hosts ,并将它们记录到审计日志由我们指定的自定义密钥字符串- hosts_file_change

如果你想使这个规则永久性的,然后将其添加到文件/etc/audit/rules.d/audit.rules在这样的底部:

/etc/audit/rules.d/audit.rules
-w /etc/hosts -p wa -k hosts_file_change

要确保规则已成功添加,您可以运行:

sudo auditctl -l

如果一切顺利,输出应显示:

LIST_RULES: exit,always watch=/etc/hosts perm=wa key=hosts_file_change

我们还可以将手表添加到目录。

sudo auditctl -w /etc/sysconfig/ -p rwa -k configaccess

上述规则将手表添加到目录/etc/sysconfig和任何读取所有文件和目录在它下面,写或属性改变的访问。 它还将标示与自定义键configaccess日志消息。

要添加规则来监控执行/sbin/modprobe命令(此命令可以添加/删除从服务器内核模块):

sudo auditctl -w /sbin/modprobe -p x -k kernel_modules

注意:您不能插入一个手表的顶级目录。 这是内核禁止的。 通配符也不受支持,并将生成警告。

要搜索特定事件的审计日志,你可以使用命令ausearch 例如,要搜索标有钥匙的所有事件的审计日志configaccess ,你可以运行:

sudo ausearch -k configaccess

ausearch进行了详细我们其他的教程中讨论在CentOS 7理解审计制度

系统调用规则

通过审计系统调用,您可以跟踪应用程序级别之外的服务器上的活动。 系统调用规则的语法是:

auditctl -a action,filter -S system_call -F field=value -k key_name`

哪里:

  • 更换-a-A在上面的命令将在顶部而不是底部插入规则。

  • actionfilter当记录特定事件指定。 action可以是alwaysneverfilter指定哪些内核规则匹配滤波器应用到该事件。 该规则匹配滤波器可以是下列之一: taskexituser ,和excludeaction,filteralways,exit在大多数情况下,它告诉auditctl你想退出时审核本系统调用。

  • system_call指定由它的名字系统调用。 几个系统调用可以归为一个规则,每个之后指定-S选项。 all也可以使用。 您可以使用sudo ausyscall --dump命令来查看所有系统的列表,包括他们的号码的呼叫一起。

  • field=value指定修改规则匹配基于指定的体系结构,用户ID,进程ID,路径和其他事件的附加选项。

  • key_name是一个可选的字符串,可帮助您以后识别规则或者一组规则生成特定的日志条目。

现在让我们看看一些示例系统调用规则。

定义创建标记的一个日志条目的审核规则rename的每一个文件由ID为1000或更大的用户重新命名时,执行命令

sudo auditctl -a always,exit -F arch=b64 -F "auid>=1000" -S rename -S renameat -k rename

-F arch=b64说,审计系统的64位版本的规则调用。

要定义记录有哪些文件,特定用户(UID为1001)访问和标签的日志条目的规则userfileaccess

sudo auditctl -a always,exit -F arch=b64 -F auid=1001 -S open -k userfileaccess

如果你想使这个规则永久性的,然后将其添加到文件/etc/audit/rules.d/audit.rules在这样的底部:

/etc/audit/rules.d/audit.rules
-a always,exit -F arch=b64 -F auid=1001 -S open -k userfileaccess

您还可以使用系统调用规则语法定义文件系统规则。 例如,以下规则:

sudo auditctl -a always,exit -F path=/etc/hosts -F perm=wa -k hosts_file_change

做与我们在前面部分中看到的文件系统规则相同的工作:

sudo auditctl -w /etc/hosts -p wa -k hosts_file_change

递归使用系统调用规则看目录,你可以使用选项-F "dir=/path/to/dir"

注:请注意,所有的进程早于审计守护程序本身开始将有auid4294967295 要排除那些来自你的规则,你可以添加-F "auid!=4294967295"你的规则。 为了避免这个问题,你可以添加audit=1到内核引导参数。 这使得内核审计系统在启动审计守护程序之前启动,所有进程都将具有正确的登录uid。

删除审计规则

要删除所有当前的审核规则,你可以使用命令auditctl -D 要删除文件系统监视规则使用添加-w选项,可以替换-w-W在原来的规则。 系统调用规则使用选项添加-a或者-A可以使用删除-d与原来的规则选项。 例如,假设我们添加了以下规则:

sudo auditctl -w /etc/passwd -p wa -k passwdaccess

查看规则集使用:

sudo auditctl -l

输出应包括:

LIST_RULES: exit,always watch=/etc/passwd perm=wa key=passwdaccess

要删除这条规则,我们可以使用下面的命令,只需更换-w-W

sudo auditctl -W /etc/passwd -p wa -k passwdaccess

现在,查看规则集使用:

sudo auditctl -l

该规则现在不应该在列表中。

注意:如果在里面添加任何永久性的审核规则audit.rules文件,审计守护进程重新启动或重新启动系统会加载从文件中的所有规则。 要永久删除审核规则,您需要从文件中删除它们。

锁定审计规则

它可以禁用或启用审计系统,并且使用锁定的审核规则auditctl -e [0 1 2] 例如,要临时禁用审计,请运行:

auditctl -e 0

1被作为参数传递,它会启用审核。 要锁定审计配置,使之不能改变,通过2作为参数。 这使得当前的审计规则集不可变。 无法再添加,删除或编辑规则,并且无法再停止审核守护程序。 锁定结构旨在是在最后的命令audit.rules为希望此功能是活跃的任何人。 在此模式下更改配置的任何尝试都将被审计和拒绝。 只能通过重新启动服务器来更改配置。

结论

Linux审计系统提供的信息对入侵检测非常有用。 您现在应该能够添加自定义审核规则,以便可以记录特定事件。

请记住,你总是可以参考auditctl添加自定义日志记录规则时,手册页。 它提供了命令行选项,性能提示和示例的完整列表。 /usr/share/doc/audit- <version> /目录包含基于一些共同的认证标准预配置的审核规则文件。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏