Linux审计工具auditd使用与日志收集

auditd.conf的详细参数说明 ``` # 本地的事件是否记录,设置为no的场景应该是只作为远程日志收集的服务器,但自身的日志大多数时候也是有必要记录的 local_events = yes # 日志是否落盘,设置为no的场景应该是将会把日志存储到远程服务器的客户端(没有足够空间的情况下) write_logs = yes # 日志记录的文件 log_file = /var/log/audit/audit.log # 日志文件默认所属的组 log_group = adm # 日志的格式,一般设置为RAW即可 log_f 阅读详情
AI摘要

本文介绍Linux下的Auditd审计工具,涵盖其安装、配置及常用命令的使用方法。详细解析如何通过Auditd监控系统活动,保障系统安全。

0 概述

Auditd工具可以帮助运维人员审计Linux,分析发生在系统中的发生的事情。Linux 内核有用日志记录事件的能力,包括记录系统调用和文件访问。管理员可以检查这些日志,确定是否存在安全漏洞(如多次失败的登录尝试,或者用户对系统文件不成功的访问)。

1 安装

Centos7默认已安装Audit
在这里插入图片描述
使用命令service auditd status可查看该服务是否开启
在这里插入图片描述

2 配置文件

在/etc/audit路径下
在这里插入图片描述
auditd.conf文件 ----审计工具的配置文件
audit.rules文件 ----审计的规则,该文件由/etc/audit/rules.d产生
audit-stop.rules文件 ----审计停止规则,该文件定义了停止检测
rules.d目录 ----定义需要审计的规则,写到文件之后会永久有效

如下是auditd.conf,审计工具配置文件。在该文件中,用中文增加了对应的参数值解释。详细解释,可查阅官方解释:https://linux.die.net/man/8/auditd.conf
在这里插入图片描述

3 auditd工具

 auditctl:auditd默认操作命令
 aureport:生成和查看审计规则的文件
 ausearch:是一个搜索各种事件的工具
 autrce:用于跟踪进程的命令

3.1 auditctl命令

auditctl –l 查看当前定义的规则
auditctl –a 添加一条检测规则(当前添加的规则临时有效,永久生效需要修改配置文件)
auditctl -a action,filter -S system_call -F field=value -k key_name

action和filter 明确一个事件被记录。action可以为always或者never,filter明确出对应的匹配过滤,filter可以为:task、exit、user、exclude。
system_call 明确出系统调用的名字,几个系统调用可以写在一个规则里,如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到。其中字段中具体解释,参考: https://blog.youkuaiyun.com/xiyangfan/article/details/5259258
field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。具体有哪些字段,可以参考https://linux.die.net/man/8/auditctl
如:一个文件被user ID为1000或者更大的用户删除,或重命名,记录审计,命令如下:

auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
auditctl -a always,exit -F path=/etc/shadow -F perm=wa

等价于 auditctl –w /etc/shadow –p wa

auditctl –d 删除一条规则
auditctl –D 删除所有规则
auditctl –w 指定要审计的文件或目录路径
auditctl –p[r|w|x|a] 和-w一起使用指定触发审计的文件/目录的访问权限

rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(改变在文件或者目录中的属性)

auditctl –k 指定别名,方便下次审计时可以根据该名字进行调用,并查看相关的信息
auditctl –s 查看auditd服务状态
auditctl -e  设置使能标志

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

3.2 aureport命令

aureport 生成总结性记录

-au	关于身份验证的报表
-c	关于配置更改的报表
-cr	关于加密事件的报表
-e	关于事件的报表
-f	关于文件的报表
-i	解释模式
-if<输入文件名>	使用文件作为输入
-h	关于主机的报表
-l	有关登录的报表
-k	关于key的报表
-m	关于账户修改的报表
-ma	关于强制访问控制(MAC)事件的报表
-p	关于进程的报表
-s	关于系统调用的报表
-tm	关于终端的报表
--node<节点名>	特定节点的事件
--success	在报表中只显示成功的事件
--failed	在报表中只显示失败的事件
-n	关于异常事件的报表
--summary	在报表中为主要对象排序总数
-r	关于异常事件响应的报表
-t	日志时间范围报表
-te<结束日期><结束时间>	报表结束时间
-ts<开始日期><开始时间>	报表起始时间
--tty	关于tty的报表
-u	关于用户的报表
-x	关于可执行文件的报表

3.3 ausearch命令

ausearch -a 5207   搜寻当前audit服务中event ID等于5207的log

ausearch –k xx 按指定别名查看审计内容

ausearch –i  格式化输出

ausearch –f  根据指定的审计目录或文件查看审计内容

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设定的字符串查找

3.4 autrce

为了跟踪设置的rule有没有生效,我们经常会追踪指定的进程,autrace生成的log会存放在/var/log/audit/audit.log。 当用autrace去跟踪一个进程时,为了保证避免autrace与之前audit rule生成的日志冲突,使用auditctl -D去停止所有的audit log, 当autrace结束后,使用systemctl restart auditd重启audit服务。

autrace /usr/bin/less

在这里插入图片描述

4 审计日志

4.1 例子

添加如下两条审计的规则:

auditctl -w /root/chen/test.sh -p wxra -F uid=root -k auditest1
auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -S mkdir -S rmdir -S creat -F uid!=root -F dir=/root/chen/test -k auditest2

添加完成之后用auditctl –l查看相关信息:

在这里插入图片描述
使用ausearch -k auditest1 -i 和ausearch -k auditest2 -i查看当前的审计日志
在这里插入图片描述
审计日志内容显示,当前审计规则已经录入
分别使用root和非root用户运行test.sh脚本,sh test.sh,此时再查看审计日志
在这里插入图片描述
此时可以使用命令ausearch –k auditest1 -i查看审计内容,只有root用户执行的命令被审计日志记录下来
在这里插入图片描述
同样在/root/chen/test目录下分别使用root和非root用户创建文件root和chen目录
在这里插入图片描述
使用命令ausearch -k auditest2 –i –c mkdir,只有非root用户创建文件夹的操作会被记录
在这里插入图片描述

4.2 审计日志内容分析

type=SYSCALL

每条记录都是以type=”keyword“开头,SYSCALL表示这条记录是向内核的系统调用触发产生的。更详细的type值和解释可以参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-Audit_Record_Types

audit

在audit(time_stamp:ID)格式中,记录时间戳,从1970年1月1日00:00:00到现在的时间,ID为记录中唯一的ID标识,同一个事件产生的ID是相同的。

arch=c000003e

表示系统的CPU架构,这个十六进制表示”x86_64“,使用命令ausearch -i --arch c000003e可以打印出有这部分内容的audit.log中日志的解释。需要注意的是,使用ausearch来查询时,需要保证audit log中有这样的日志记录。

syscall=257

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

success=yes

表示系统调用成功与否

exit=3

系统调用结束时的返回码,可以使用如下命令来查看返回值为3的日志解释,不同的系统调用,返回值不同

#ausearch --interpret --exit 3
a0=ffffffffffffff9c a1=21e0550 a2=90800 a3=0

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

items=1

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

ppid=2354

父进程ID,如bash的ID。

pid=30729

进程Id,即为ls进程的ID。我们通过ps来查询,可以看到bash的进程与ppid是对应的

auid=0

auid记录Audit user ID,that is the loginuid。auid为登录用户的ID,如果是root,ID为0。
uid=1001,gid=1001, euid=1001, suid=1001, fsuid=1001, egid=1001, sgid=1001, fsgid=1001
uid为启动这个分析进程的用户的ID,即具体执行进程的用户ID。后面分别对应着,group ID组用户ID,effective user ID有效用户ID, set user ID设置用户ID, file system user ID文件系统用户ID, effective group ID有效组用户ID, set group ID设置组用户ID, file system group ID文件系统组ID

tty=pts0

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

ses=10868  

session ID,对话ID。

comm=ls

什么命令导致的审计记录。

exe=“/usr/bin/ls”

记录可执行文件的具体路径

type=CWD

type值为CWD,即current working directory。记录的是当前进程的位置

inode=99213313 

inode表示这个文件或目录的inode number,可以用如下命令来查询当前inode对应的文件

find / -inum 99213313 -print
dev=08:11

dev字段,指明device的minor和major ID。

mode=040755

mode字段表示文件或路径的权限。

ouid=0

对象所有者的ID

ogid=0

对象所有组者ID.

4.3 审计日志报告

使用aureport命令可以生成日志报告
在这里插入图片描述

aureport –au 生成关于身份验证的报告

在这里插入图片描述

aureport –k –i 按之前设置的关键字生成报表 

在这里插入图片描述

aureport –s 按系统调用生成报表

在这里插入图片描述

aureport –ts 02/02/2021 00:00:00 –te today 按指定时间生成报表

在这里插入图片描述

aureport -p –i 按进程的pid生成报表

在这里插入图片描述

aureport –t 按时间查看日志

在这里插入图片描述

aureport –if <文件名> 按文件名生成报表

在这里插入图片描述

Linux auditd.conf详解 研究audit日志规则,本文为进程配置。 # 审计日志文件的完整路径。如果您配置守护进程向除默认/var/log/audit/外的目录中写日志文件时, # 一定要修改它上面的文件权限,使得只有根用户有读、写和执行权限。所有其他用户都不能访问这个 # 目录或这个目录中的日志文件。 log_file =/var/log/audit/audit.log # 写日志时要使用的格式。当设置为RAW 阅读详情

相关推荐

audit安装配置及使用

官网链接:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/chap-system_auditing。

weixin_45630387的博客 3682

Linux安全之auditd审计工具使用说明

audited是Linux审核系统的用户空间组件。它负责将审核记录写入磁盘。查看日志是通过ausearch或aureport实用程序完成的。审核系统或加载规则的配置是使用auditctl实用程序完成的。在启动过程中,/etc/audit/audit.rules中的规则由auditctl读取并加载到内核中。另外,还有一个augenrules程序,它读取/etc/audit/rules.d/中的规则,并将它们编译为audit.rules文件。

Innocence_0的博客 7279

Linux auditd主机系统安全审计服务配置技术方案

Auditd是什么 Auditd是Linux审计系统的用户空间组件。Auditd是Linux审计守护进程的缩写。在Linux中,daemon被称为后台运行服务,当它在后台运行时,应用程序服务的末尾附加了一个“d”。auditd的工作是作为后台服务收集审计日志文件并将其写入磁盘。 审计系统由两个主要部分组成:用户空间应用程序和实用程序,以及内核端系统调用处理。内核组件接收来自用户空间应用程序的系统调用,并通过以下过滤器之一对其进行过滤:user、task、fstype或exit。 一旦系统调用通过了excl

watermelonbig的专栏 1万+

auditd-attack与SIEM集成:如何将Linux审计日志导入安全信息事件管理系统

auditd-attack是一个映射MITRE攻击框架的Linux审计规则集,能够帮助系统管理员监控和记录各类安全事件。本文将详细介绍如何将auditd-attack生成的Linux审计日志导入安全信息事件管理(SIEM)系统,实现集中化的安全事件监控与分析。 ## 为什么需要将auditd-attack与SIEM集成? 在当今复杂的网络环境中,单一的审计工具难以应对日益增长的安全威胁。aud

gitblog_00139的博客 325

Linux日志审计与故障追踪:从日志收集到根因定位的工程实践

日志是系统运行状态的忠实记录,其核心价值在于将海量、分散的时序信息转化为可检索、可关联的线索链。其基本原理是通过统一的收集、解析和索引,将非结构化的文本数据转化为结构化的字段,从而支持高效的查询与分析。在技术实现上,这通常涉及日志收集器(如Fluent Bit)、中心化存储(如Elasticsearch或Loki)以及查询分析界面。这套技术体系对于保障系统稳定性、快速故障恢复以及满足安全合规要求至关重要,尤其适用于微服务、容器化等复杂分布式环境下的问题诊断。本文聚焦于Linux环境,详细阐述了如何构建一个从

weixin_30268071的博客 843

Linux Audit系统配置与安全审计实践指南

Linux系统安全审计是信息安全领域的基础设施,通过内核级事件监控实现细粒度的行为追踪。其核心原理是通过hook系统调用和文件访问,记录包括用户登录、特权操作等关键事件。作为CIS安全基线的重要组成部分,审计系统能有效满足等保合规要求,同时为入侵检测提供原始数据。典型的应用场景包括监控敏感文件访问、追踪特权命令执行以及分析异常登录行为。本文以auditd框架为例,详解规则配置技巧与ausearch日志分析方法,特别针对/etc/passwd等关键文件的监控方案,帮助构建企业级安全审计体系。

weixin_29324877的博客 30

Linux系统之auditd详解

auditd 是 Linux 审计系统的核心守护进程,它负责从内核审计框架收集信息,并将其写入磁盘上的日志文件中。通过 auditd,管理员可以监控系统的各种活动,包括文件访问、权限更改、系统调用等,这对于提高系统的安全性以及满足合规性要求非常重要。

weixin_56303229的博客 1209

Linux安全审计实战:auditd核心功能与高级配置指南

本文详细介绍了Linux系统中auditd审计工具的核心功能与高级配置方法。从基础安装、规则配置到日志分析与性能优化,全面解析如何利用auditd实现系统安全监控,包括文件访问、用户行为等关键审计场景,帮助管理员构建完善的安全审计体系。

weixin_29224589的博客 451

auditd-attack:Linux安全监控的终极武器 - 基于MITRE ATT&CK框架的完整审计规则集

auditd-attack是一个将Linux Auditd规则集与MITRE ATT&CK框架映射的安全工具,为系统管理员提供了全面的安全审计解决方案。通过预定义的规则集,用户可以快速部署符合行业标准的安全监控策略,有效检测和响应各类攻击行为。 ## 🛡️ 什么是auditd-attack? auditd-attack是一个开源项目,它将Linux系统自带的auditd审计工具与MITRE

gitblog_00744的博客 863

Linux 命令 | 每日一学,Audit 安全审计相关工具

描述: Linux 审计系统提供了一种方式来跟踪系统上与安全相关的信息。根据预配置的规则,审计会生成日志条目,来尽可能多地记录系统上所发生的事件的相关信息。对于关键任务环境而言至关重要,可用来确定安全策略的违反者及其所执行的操作。审计不会为您的系统提供额外的安全,而是用于发现系统上使用的安全策略的违规。可以通过其他安全措施(如 SELinux)进一步防止这些违规。

全栈工程师修炼指南-IT知识分享 1190

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1005

麒麟系统关闭auditd

【代码】麒麟系统关闭auditd。

喝醉酒的小白 2037

C++利用spdlog生成日志

C++利用spdlog生成日志下载编译spdlog配置并使用 环境:Win10-x64+VS2015 spdlog是一个快速的C++日志库,能够兼容C++11,具备快速、无需依赖第三方库、支持多线程、多平台的优良特性! 下载编译spdlog 1.第一步,下载spdlog 下载spdlog,下载地址:https://github.com/gabime/spdlog#header-only-version,从Github上下载zip压缩包。下载完成后会获取一个名为spdlog-1.x.zip的压缩包 2.第二步

weixin_42975610的博客 3222

Linux audit详解

什么是audit The Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s) ,Kernel events (syscall events), User events (audit-enabled programs) syslog记录的信息有限,主要...

whuzm08的专栏 3万+

网络可视化工具netron详细安装流程

netron安装目录1.netron 简介2.不同操作系统下的安装使用方式2.1 在线版本:只要有浏览器就可以2.2 不同操作系统安装使用3.netron支持的网络框架4.netron测试演示 1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。 这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,而且支持各种不同网络框架,简单好用。 2.不同操作系统下的安装使用方式 2.1

江南研习社 12万+

Pinocchio 结合 CasADi 进行 IK 逆运动学及 Mujoco 仿真

摘要:本视频演示了如何利用Pinocchio和CasADi实现机械臂逆运动学(IK)求解,并在Mujoco中进行仿真。通过构建优化问题(最小化位姿误差),结合IPOPT求解器对机械臂关节角度进行优化。代码支持导入URDF/MJCF模型,并以so100机械臂为例,实现了末端执行器位置跟踪的仿真测试。关键步骤包括:建立平移/旋转误差函数、设置约束条件、调用CasADi求解,最终在Mujoco中实时更新关节状态完成运动控制。

darcsdn 1003

Linux日志管理实战:从收集分析到存储优化

日志作为系统运行的核心数据载体,记录了硬件状态、软件行为和用户操作等关键信息。其技术原理是通过syslog协议或应用内置记录功能,将事件按时间序列结构化存储。在运维领域,日志分析能实现故障快速定位(如RH134认证要求的排错能力)、安全威胁发现(通过auditd监控敏感文件)以及性能瓶颈识别(借助sar日志)。典型应用场景包括服务器崩溃诊断、异常登录检测和资源利用率优化。本文重点演示了rsyslog收集方案与logrotate存储策略的工程实践,并给出ELK Stack在分布式环境中的部署方法,其中正则表达

weixin_30701575的博客 301

大象机器人myAGV移动机器人+mechArm六轴机械臂,开源复合机器人开发与实践!

我们这章节的内容是将协作性机械臂打破距离上的限制,跟移动机器人(myAGV)相连接,实现一个案例。

m0_71627844的博客 1488

Linux系统日志实战:从故障排查到安全审计的完整指南

在服务器运维与安全应急中,日志是还原事故现场的关键依据。Linux系统通过/var/log目录和systemd-journald形成了统一的日志体系,涵盖内核、服务、认证等多类信息。理解日志的产生原理与存储机制,是高效排查故障、发现入侵痕迹的基础。借助journalctl、logrotate、rsyslog等工具,运维人员可以按时间线精确定位异常,实现日志轮转与远程集中收集,从而保障数据的完整性和可追溯性。安全审计则依赖/var/log/secure、auditd等记录登录、提权与文件变更行为,为渗透复盘提

weixin_31528001的博客 275

用scons编译STM32F103工程

想用vscode来实现代码的编辑与调试代码,原先这个工程是用STM32CUBEIDE建立的,参照STM32CUBEIDE的编译过程,编写了下面的scons脚本,scons是初次了解,既然是python脚本,那么会什么就怎么写吧。 import os import sys import glob cross_compiler_prefix = 'arm-none-eabi-' CC = cross_compiler_prefix+'gcc' CXX = cross_compiler_prefix+'g+

cylinc的专栏 1623

Doris磁盘空间管理(生命周期管理、清理磁盘空间方法)

在进行数据仓库开发时,比较头疼的是历史数据不删除,磁盘空间不断增长,如果磁盘空间不足时,spark调度任务写入时就会报错。

大模型大数据攻城狮的专栏 1719

mysql5.7审计功能开启_linux audit审计系统

前言audit子系统在linux安全领域应用广泛。本文主要介绍linux审计系统原理、安装配置、使用方法,以及内核中syscall 审计源码分析,争取展现一个立体的linux audit。本文篇幅较长且包含大量源码,对某个方面感兴趣的,建议直接滑动跳至相关章节。注:本文所有kernel 源码均来自kernel 4.18.0,实验平台是centos8.1什么是audit?linux audit子系统...

weixin_33788424的博客 1545

保研考研机试攻略:python笔记(4)

保研考研机试攻略:python笔记(4)二分法+最大公约数+最小公倍数+素数判断+幂次方mod方法+匹配问题+哈希算法+哈夫曼编码+二叉树

qq_63349644的博客 1097

Linux日志体系实战:从故障排查到安全审计与渗透复盘

日志系统是Linux运维与安全工作中最基础也最关键的数据源,它记录了系统内核、服务进程、用户登录及权限操作的完整轨迹。现代Linux发行版普遍采用传统文本日志与systemd-journald并行的双轨制,理解rsyslog与journalctl各自的特性和适用场景,是高效读取日志、快速定位问题的前提。日志轮转机制则保障了海量日志下磁盘空间的稳定,避免因日志增长拖垮业务。在实际运维中,围绕/var/log下的关键文件,利用时间窗口过滤、关键字检索和上下文分析等手法,可以高效完成故障排查;在安全场景中,通过审

weixin_33391446的博客 51

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

别再只盯着history了!用Auditd在Ubuntu 20.04上打造企业级命令审计日志(附ausearch/aureport实战解析)

本文详细介绍了在Ubuntu 20.04上使用Auditd打造企业级命令审计日志的完整方案。通过配置Auditd监控execve系统调用,解析原始日志,并结合ausearch和aureport工具进行高效查询与报告生成,帮助系统管理员实现防篡改、完整时间戳和用户关联的命令审计,满足企业合规需求。

weixin_33725807的博客 648

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: Linux-ARM版kibana7.3.2镜像离线编译
下一篇: 对比Auditbeat和Filebeat(auditd模块)采集linux审计日志(audit.log)
不以物喜2020
博客等级 码龄8年 85粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值