linux内核2.6以上自带的审计模块audit
linux 记录删除动作的审计日志

linux 记录删除动作的审计日志在Linux中,要记录删除动作(如文件删除)的审计日志,通常需要使用审计框架(Audit Framework)或称为Linux审计系统(Linux Audit System,简称auditd)。
auditd是Linux内核的一部分,它可以跟踪系统上发生的安全相关事件,并将这些事件记录到审计日志中。
以下是设置Linux审计系统以记录删除动作的步骤:安装auditd服务:1.对于大多数Linux发行版,auditd服务默认已经安装。
如果没有,你可以使用包管理器安装它。
例如,在Debian/Ubuntu上,可以使用apt安装:复制代码bash`sudo apt updatesudo apt install auditd`在Red Hat/CentOS上,可以使用yum或dnf安装:复制代码bash`sudo yum install audit# 或者sudo dnf install audit`启动并启用auditd服务:2.启动auditd服务:复制代码bash`sudo systemctl start auditd`3.设置auditd服务在系统启动时自动启动:复制代码bash`sudo systemctl enable auditd`配置audit规则:4.auditd使用规则来确定要跟踪哪些事件。
你可以使用auditctl 命令来添加规则。
要跟踪文件删除事件,你可以使用-w选项来指定要监视的文件或目录,并使用-p选项来指定要跟踪的权限(在这种情况下是删除权限)。
例如,要跟踪/etc/passwd文件的删除事件,你可以执行:复制代码bash`sudo auditctl -w /etc/passwd -p wa`这里,-w指定了要监视的文件,-p wa指定了要跟踪的权限(w 表示写权限,用于跟踪文件删除;a表示属性更改)。
5.你可以根据需要添加更多的规则来跟踪其他文件或目录的删除事件。
audit_backlog_limit参数

audit_backlog_limit参数
在Linux 操作系统中,`audit_backlog_limit` 参数与Linux 审计系统(Linux Audit)相关。
Linux Audit 是一个强大的工具,用于记录系统中发生的各种安全相关事件,以便审计和分析。
`audit_backlog_limit` 参数用于配置内核中审计事件的日志缓冲区大小。
以下是关于`audit_backlog_limit` 参数的一些信息:
1. 含义:
- `audit_backlog_limit` 定义了内核审计子系统的事件日志缓冲区的大小限制。
2. 作用:
-当系统上发生大量的审计事件时,这个参数决定了内核能够缓存的事件数量。
3. 设置方法:
-你可以通过修改`/etc/audit/auditd.conf` 文件中的`audit_backlog_limit` 参数的值来进行设置。
在配置文件中,你可能会找到类似如下的行:
```
audit_backlog_limit = 8192
```
这表示缓冲区的大小为8192。
4. 默认值:
-默认情况下,`audit_backlog_limit` 的值可能因Linux 发行版而异,但通常会有一个合理的默认值。
5. 注意事项:
-如果系统上的审计事件非常频繁,你可能需要根据实际需要调整`audit_backlog_limit` 的值,以确保不会丢失任何关键的审计信息。
请注意,以上信息可能随时间和Linux 发行版的更新而变化。
要获取最准确和最新的信息,请查阅你使用的Linux 发行版的官方文档或手册。
添加audit规则

添加audit规则在Linux系统中,audit是一个非常重要的安全工具,它可以记录系统中发生的各种事件,如用户登录、文件访问、进程启动等等。
通过对这些事件的记录和分析,可以帮助管理员及时发现系统中的安全问题,并采取相应的措施进行处理。
本文将介绍如何添加audit 规则来记录系统中的事件。
1. 安装audit在添加audit规则之前,需要先安装audit工具。
在大多数Linux 发行版中,audit都是默认安装的,如果没有安装,可以使用以下命令进行安装:```sudo apt-get install auditd```2. 添加audit规则添加audit规则的方法有很多种,这里介绍两种常用的方法。
方法一:使用auditctl命令添加规则auditctl是audit工具的一个命令行工具,可以用来添加、删除、修改audit规则。
以下是一个添加规则的示例:```sudo auditctl -a always,exit -F arch=b64 -S execve```这个规则的含义是:每当有一个64位进程执行execve系统调用时,就会记录一条日志。
方法二:编辑audit规则文件audit规则文件位于/etc/audit/rules.d/目录下,可以使用文本编辑器进行编辑。
以下是一个添加规则的示例:```sudo nano /etc/audit/rules.d/audit.rules```在文件中添加以下内容:```-a always,exit -F arch=b64 -S execve```保存文件后,使用以下命令重启audit服务:```sudo service auditd restart```3. 查看audit日志添加了audit规则后,系统会自动记录相应的事件,并将日志保存在/var/log/audit/目录下。
可以使用以下命令查看audit日志:```sudo ausearch -m USER_LOGIN -ts today```这个命令的含义是:查找今天发生的所有用户登录事件。
linux audit.rules 常用规则

linux audit.rules 常用规则Linux audit.rules是Linux操作系统中一个系统审计框架,可以用来记录各种系统事件和行为,如登录、文件访问、进程启停等等,从而提高系统的安全性和可审计性。
以下是一些常用的audit.rules规则:1. 监控特定目录或文件的访问:```-w /etc/passwd -p wa -k passwd-file```该规则用于监控/etc/passwd文件的写入和修改操作,并将相关事件标记为passwd-file。
2. 监控用户或用户组的变更:```-w /etc/group -p wa -k group-file-w /etc/passwd -p wa -k passwd-file-w /etc/gshadow -p wa -k gshadow-file-w /etc/shadow -p wa -k shadow-file```该规则用于监控/etc/group、/etc/passwd、/etc/gshadow、/etc/shadow 这几个敏感文件的写入和修改操作,并将相关事件标记为group-file、passwd-file、gshadow-file、shadow-file。
3. 监控系统的网络连接:```-a exit,always -F arch=b64 -S socket -F success=1 -k network-a exit,always -F arch=b32 -S socket -F success=1 -k network```该规则用于监控系统中所有成功的网络连接,并将相关事件标记为network。
4. 监控用户登录和退出:```-w /var/log/faillog -p wa -k login-failures-w /var/log/lastlog -p wa -k login-failures-w /var/log/btmp -p wa -k login-failures-w /var/log/wtmp -p wa -k login```该规则用于监控/var/log/faillog、/var/log/lastlog、/var/log/btmp、/var/log/wtmp这些文件的读写操作,从而监控用户的登录和退出行为,并将相关事件标记为login-failures和login。
Linux中与安全审计有关的函数audit

static DECLARE_WAIT_QUEUE_HEAD(audit_backlog_wait);
struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,int type)
ab->gfp_mask = gfp_mask;
//扩展套接字缓冲区skb的已使用数据区,将netlink消息头数据nlmsghdr加到
skbnlh = (struct nlmsghdr *)skb_put(ab->skb, NLMSG_SPACE(0));
nlh->nlmsg_type = type;
remove_wait_queue(&audit_backlog_wait, &wait);continue;
}
//检查每秒发送的记录数不能超过上限,以防止受非法攻击
if (audit_rate_check())
printk(KERN_WARNING "audit: audit_backlog=%d > " "audit_backlog_limit=%d\n", skb_queue_len(&audit_skb_queue), audit_backlog_limit);
return ab;
}
函数audit_buffer_alloc申请审计缓冲区,先尝试从空闲链表上取下一个缓冲区,如果空闲链表中没有,就分配一个缓冲区。然后,填充netlink消息头。
该函数列出如下:
static DEFINE_SPINLOCK(audit_freelist_lock);//定义自旋锁,用于锁住链表
auditd审计历史命令

auditd是Linux系统下的一个审计工具,可以用来对系统中的各种活动进行监控和记录。
默认情况下,auditd只会记录当前时间点之后的活动。
如果要查看之前的命令记录,需要使用工具进行查询。
要查看auditd审计历史命令,可以使用以下步骤:1. 安装auditd工具。
在大多数Linux发行版中,auditd已经预装。
如果没有预装,可以从官方网站下载并安装。
2. 启动auditd服务。
使用命令service auditd start或/etc/init.d/auditd start启动auditd服务。
3. 查看auditd日志文件。
默认情况下,auditd的日志文件位于/var/log/audit/audit.log。
使用cat或less等命令可以查看该文件的内容。
4. 使用ausearch命令搜索历史命令记录。
ausearch命令是auditd 提供的一个工具,可以用来搜索审计日志文件中的历史命令记录。
使用命令ausearch -m command可以搜索所有包含"command"关键词的记录。
例如,ausearch -m ls将搜索所有包含"ls"命令的记录。
5. 查看特定用户的命令记录。
如果要查看特定用户的命令记录,可以在ausearch命令中指定-u参数,后跟用户名。
例如,ausearch -u username将搜索所有该用户执行的命令记录。
需要注意的是,由于auditd的日志文件可能会非常大,因此需要使用适当的工具或脚本进行筛选和分析。
同时,为了保护系统安全,应该谨慎处理和存储审计日志文件。
linux audit审计日志

linux audit审计日志摘要:一、Linux 审计概述1.审计的作用2.审计的种类3.审计日志的存储位置二、Linux audit 审计日志工具1.auditctl2.ausearch3.aureport三、如何进行Linux 审计日志分析1.使用ausearch 搜索审计日志文件2.分析audit.log 文件3.使用aureport 生成审计报告四、案例分享1.Oracle 审计2.MySQL 审计正文:一、Linux 审计概述审计是系统安全和合规性的重要组成部分。
在Linux 系统中,审计可以记录系统的操作和事件,以便管理员能够监控和审查系统的活动。
审计分为两种类型:日志审计和文件审计。
日志审计主要用于记录系统的事件,如登录、登录失败、文件访问等。
文件审计则用于记录文件的访问和修改情况。
审计日志文件通常存储在/var/log/audit目录下。
这个目录包含了所有审计日志文件,例如audit.log、audit.log.1、audit.log.2等。
二、Linux audit 审计日志工具在Linux 系统中,有多个工具可以用于审计日志。
下面介绍三个常用的工具:1.auditctlauditctl 是Linux 系统中的一个审计工具,可以用于控制审计日志的开启和关闭,以及设置审计日志的级别。
它位于/usr/bin/auditctl。
使用方法如下:```auditctl -l /path/to/audit.log```2.ausearchausearch 是Linux 系统中的一个审计工具,可以用于搜索审计日志文件中的特定事件。
它位于/usr/bin/ausearch。
使用方法如下:```ausearch /path/to/audit.log "event_name"```3.aureportaureport 是Linux 系统中的一个审计工具,可以用于生成审计报告。
linux audit 例子

linux audit 例子Linux Audit是一种用于记录系统事件的安全审计工具。
它可以跟踪并记录与系统安全相关的事件,例如用户登录、文件访问、系统调用、系统配置更改等。
在这篇文章中,我们将探讨一些Linux Audit 的实际应用例子。
首先,让我们看一个简单的例子。
假设我在一个多用户的Linux 系统上进行管理,我想要监控用户登录活动。
我可以使用Linux Audit 来审计登录事件并记录下来。
为了实现这一点,我需要编辑Audit规则配置文件`/etc/audit/rules.d/login.rules`,并添加以下规则:```-w /var/log/lastlog -p wa -k login```上述规则中,“-w”用于监控文件`/var/log/lastlog`的写入操作,“-p wa”表示监控写操作和属性更改,“-k login”表示将审计事件与登录相关的关键字“login”关联起来。
一旦有用户登录系统并写入了`/var/log/lastlog`文件,Linux Audit将记录这一事件。
此外,我们还可以使用Linux Audit来监控敏感文件的访问。
例如,我想要监控`/etc/passwd`文件的读取操作。
为了实现这一点,我需要编辑Audit规则配置文件`/etc/audit/rules.d/passwd.rules`,并添加以下规则:```-w /etc/passwd -p r -k passwd```上述规则中,“-w”用于监控文件`/etc/passwd`的读取操作,“-p r”表示监控读操作,“-k passwd”表示将审计事件与密码文件相关的关键字“passwd”关联起来。
一旦有用户读取了`/etc/passwd`文件,Linux Audit将记录这一事件。
除了文件访问审计,我们还可以使用Linux Audit来跟踪系统调用。
例如,我想要监控系统中的所有fork()系统调用,我可以编辑Audit规则配置文件`/etc/audit/rules.d/fork.rules`,并添加以下规则:```-a always,exit -F arch=b64 -S fork -k fork```上述规则中,“-a always,exi t”表示监控所有退出的系统调用,“-F arch=b64”表示监控64位系统调用,“-S fork”表示监控fork()系统调用,“-k fork”表示将审计事件与fork相关的关键字“fork”关联起来。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux内核2.6以上版本自带的审计模块audit查看linux下是否已安装audit 模块:rpm –qa|grep audit启动audit模块:auditd启动审计:service auditd start/var/log/audit只有根用户有读、写和执行权限。
所有其他用户都不能访问这个目录或这个目录中的日志文件chmod 600 /var/log/auditchmod 600 /var/log/audit/audit.log25.1 配置审计守护进程默认审计守护进程参数/etc/audit/auditd.conf可以配置下面这些选项:log_file审计日志文件的完整路径。
如果您配置守护进程向除默认/var/log/audit/外的目录中写日志文件时,一定要修改它上面的文件权限,使得只有根用户有读、写和执行权限。
所有其他用户都不能访问这个目录或这个目录中的日志文件。
log_format写日志时要使用的格式。
当设置为RAW时,数据会以从内核中检索到的格式写到日志文件中。
当设置为NOLOG时,数据不会写到日志文件中,但是如果用dispatcher选项指定了一个,则数据仍然会发送到审计事件调度程序中。
priority_boost审计应采用多少优先级推进守护进程。
必须是非负数。
0表示没有变化。
flush多长时间向日志文件中写一次数据。
值可以是NONE、INCREMENTAL、DATA和SYNC 之一。
如果设置为NONE,则不需要做特殊努力来将数据刷新到日志文件中。
如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。
如果设置为DA TA,则审计数据和日志文件一直是同步的。
如果设置为SYNC,则每次写到日志文件时,数据和元数据是同步的。
freq如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前从内核中接收的记录数。
num_logsmax_log_file_action设置为ROTATE时要保存的日志文件数目。
必须是0~99之间的数。
如果设置为小于2,则不会循环日志。
如果递增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。
如果没有设置num_logs值,它就默认为0,意味着从来不循环日志文件。
dispatcher当启动这个守护进程时,由审计守护进程自动启动程序。
所有守护进程都传递给这个程序。
可以用它来进一步定制报表或者以与您的自定义分析程序兼容的不同格式产生它们。
自定义程序的示例代码可以在/usr/share/doc/audit- <version>/skeleton.c中找到。
由于调度程序用根用户特权运行,因此使用这个选项时要极其小心。
这个选项不是必需的。
disp_qos控制调度程序与审计守护进程之间的通信类型。
有效值为lossy和lossless。
如果设置为lossy,若审计守护进程与调度程序之间的缓冲区已满(缓冲区为128千字节),则发送给调度程序的引入事件会被丢弃。
然而,只要log_format没有设置为nolog,事件就仍然会写到磁盘中。
如果设置为lossless,则在向调度程序发送事件之前和将日志写到磁盘之前,调度程序会等待缓冲区有足够的空间。
max_log_file以兆字节表示的最大日志文件容量。
当达到这个容量时,会执行max_log_file _action指定的动作。
max_log_file_action当达到max_log_file的日志文件大小时采取的动作。
值必须是IGNORE、SYSLOG、SUSPEND、ROTA TE和KEEP_LOGS之一。
如果设置为IGNORE,则在日志文件达到max_log_file后不采取动作。
如果设置为SYSLOG,则当达到文件容量时会向系统日志/var /log/messages中写入一条警告。
如果设置为SUSPEND,则当达到文件容量后不会向日志文件写入审计消息。
如果设置为ROTATE,则当达到指定文件容量后会循环日志文件,但是只会保存一定数目的老文件,这个数目由num_logs参数指定。
老文件的文件名将为audit.log.N,其中N是一个数字。
这个数字越大,则文件越老。
如果设置为KEEP_LOGS,则会循环日志文件,但是会忽略num_logs参数,因此不会删除日志文件。
space_left以兆字节表示的磁盘空间数量。
当达到这个水平时,会采取space_left_action参数中的动作。
space_left_action当磁盘空间量达到space_left中的值时,采取这个动作。
有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。
如果设置为IGNORE,则不采取动作。
如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息。
如果设置为EMAIL,则从action_mail_acct向这个地址发送一封电子邮件,并向/var/log/messages中写一条警告消息。
如果设置为SUSPEND,则不再向审计日志文件中写警告消息。
如果设置为SINGLE,则系统将在单用户模式下。
如果设置为HALT,则系统会关闭。
action_mail_acct负责维护审计守护进程和日志的管理员的电子邮件地址。
如果地址没有主机名,则假定主机名为本地地址,比如root。
必须安装sendmail并配置为向指定电子邮件地址发送电子邮件。
admin_space_left以兆字节表示的磁盘空间数量。
用这个选项设置比space_left_action更多的主动性动作,以防万一space_left_action没有让管理员释放任何磁盘空间。
这个值应小于space_left。
如果达到这个水平,则会采取admin_space_left_ action所指定的动作。
admin_space_left_action当自由磁盘空间量达到admin_space_left指定的值时,则采取动作。
有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和HALT。
与这些值关联的动作与space_left_action 中的相同。
disk_full_action如果含有这个审计文件的分区已满,则采取这个动作。
可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT。
与这些值关联的动作与space_left _action中的相同。
提示:如果不循环审计日志文件,则含有/var/log/audit/的分区可能变满并引起系统错误。
因此,建议让/var/log/audit/位于一个单独的专用分区。
disk_error_action如果在写审计日志或循环日志文件时检测到错误时采取的动作。
值必须是IGNORE、SYSLOG、SUSPEND、SINGLE和HALT之一。
与这些值关的动作与space_left_action中的相同。
/etc/sysconfig/auditd文件可以用来设置带EXTRAOPTIONS参数的auditd的命令行选项。
唯一的命令行选项-f以调试模式安排守护进程。
如果启用了调试模式,则会出现标准错误消息而不是日志文件。
AUDITD_LANG设置值可以用来修改守护进程的位置。
如果设置为none,则所有位置信息会从审计环境中删除。
如果AUDITD_CLEAN _STOP选项设置为yes,则当用service auditd stop命令停止守护进程时,会删除审计规则与观察器。
要了解关于审计规则的更多信息,请参见下一节。
25.2 编写审计规则与观察器Linux Auditing System可以用来为事件写规则,比如系统调用,比如用auditctl命令行实用程序观察文件或目录上的操作。
如果用初始化脚本启动auditd(用service auditd start命令),则规则和观察器可以添加到/etc/audit/audit.rules中,以便在启动守护进程时执行它们。
只有根用户可以读或修改这个文件。
/etc/audit.audit.rules中的每个规则和观察器必须单独在一行中,以#开头的行会被忽略。
规则和观察器是auditctl命令行选项,前面没有auditctl命令。
它们从上到下阅读文件。
如果一个或多个规则或观察器互相冲突,则使用找到的第一个。
25.2.1 编写审计规则要添加审计规则,可在/etc/audit/audit.rules文件中用下面的语法:-a <list>,<action> <options>警告:如果在运行守护进程时添加规则/etc/audit/audit.rules,则一定要以根用户身份用service auditd restart命令启用修改。
也可以使用service auditd reload命令,但是这种方法不会提供配置文件错误的消息。
<list>列表名必须是下列名称之一。
task每个任务的列表。
只有当创建任务时才使用。
只有在创建时就已知的字段(比如UID)才可以用在这个列表中。
entry系统调用条目列表。
当进入系统调用确定是否应创建审计时使用。
exit系统调用退出列表。
当退出系统调用以确定是否应创建审计时使用。
user用户消息过滤器列表。
内核在将用户空间事件传递给审计守护进程之前使用这个列表过滤用户空间事件。
有效的字段只有uid、auid、gid和pid。
exclude事件类型排除过滤器列表。
用于过滤管理员不想看到的事件。
用msgtype字段指定您不想记录到日志中的消息。
<action>这个动作必须下面的动作之一:never不生成审计记录。
always分配审计上下文,总是把它填充在系统调用条目中,总是在系统调用退出时写一个审计记录。
<options>可以包括下面几个选项中的一个或多个。
-s <syscall>根据名称或数字指定一个系统。
要指定所有系统调用,可使用all作为系统调用名称。
如果程序使用了这个系统调用,则开始一个审计记录。
可以为相同的规则指定多个系统调用,每个系统调用必须用-S启动。
在相同的规则中指定多个系统,而不是列出单独的规则,这样可以导致更好的性能,因为只需要评价一个规则。
- F <name[=,!=,<,>,<=]value>指定一个规则字段。
如果为一个规则指定了多个字段,则只有所有字段都为真才能启动一个审计记录。
每个规则都必须用-F启动,最多可以指定64个规则。
如果用用户名和组名作为字段,而不是用UID和GID,则会将它们解析为UID和GID以进行匹配。