Linux审计系统auditd 套件
步骤:安装 auditd
REL/centos默认已经安装了此套件,如果你使用ubuntu server,则要手工安装它:
sudo apt-get install auditd
它包括以下内容:
auditctl : 即时控制审计守护进程的行为的工具,比如如添加规则等等。
/etc/audit/audit.rules : 记录审计规则的文件。
aureport : 查看和生成审计报告的工具。
ausearch : 查找审计事件的工具
auditspd : 转发事件通知给其他应用程序,而不是写入到审计日志文件中。
autrace : 一个用于跟踪进程的命令。
/etc/audit/auditd.conf : auditd工具的配置文件。
Audit 文件和目录访问审计
首次安装 auditd 后, 审计规则是空的。可以用 sudo auditctl -l 查看规则。文件审计用于保护敏感的文件,如保存系统用户名密码的passwd文件,文件访问审计方法:
sudo auditctl -w /etc/passwd -p rwxa
-w path : 指定要监控的路径,上面的命令指定了监控的文件路径 /etc/passwd
-p : 指定触发审计的文件/目录的访问权限
rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(attr)
目录进行审计和文件审计相似,方法如下:
$ sudo auditctl -w /production/
以上命令对/production目录进行保护。
3. 查看审计日志
添加规则后,我们可以查看 auditd 的日志。使用 ausearch 工具可以查看auditd日志。
sudo ausearch -f /etc/passwd
-f 设定ausearch 调出 /etc/passwd文件的审计内容
4. 查看审计报告
以上命令返回log如下:
time->Mon Dec 22 09:39:16 2016
type=PATH msg=audit(1419215956.471:194): item=0 name="/etc/passwd"
inode=142512 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
type=CWD msg=audit(1419215956.471:194): cwd="/home/somebody"
type=SYSCALL msg=audit(1419215956.471:194): arch=40000003 syscall=5
success=yes exit=3 a0=b779694b a1=80000 a2=1b6 a3=b8776aa8 items=1 ppid=2090 pid=2231 auid=4294967295 uid=1000 gid=1000 euid=0 suid=0 fsuid=0 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=4294967295
comm="sudo" exe="/usr/bin/sudo" key=(null)
time : 审计时间。
name : 审计对象
cwd : 当前路径
syscall : 相关的系统调用
auid : 审计用户ID
uid 和 gid : 访问文件的用户ID和用户组ID
comm : 用户访问文件的命令
exe : 上面命令的可执行文件路径
以上审计日志显示文件未被改动。
WindowsNT/2000的系统日志文件有应用程序日志AppEvent.Evt、安全日志SecEvent.Evt、系统日志SysEvent.Evt,根据系统开通的服务还会产生相应的日志文件。例如,DNS服务器日志DNS Serv.evt,FTP日志、WWW日志等。
日志文件默认存放位置:%systemroot%\system32\config,默认文件大小512KB。这些日志文件在注册表中的位置为HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog,可以修改相应键值来改变日志文件的存放路径和大小。
概述
查看系统日志方法:开始→设置→控制面板→管理工具中找到的“事件查看器”,或者在【开始】→【运行】→输入 eventvwr.msc 也可以直接进入“事件查看器”在“事件查看器”当中的系统日志中包含了windows XP 系统组建记录的事件,在启动过程中加载驱动程序和其他一些系统组建的成功与否都记录在系统日志当中。
SQLSERVER2008新增的审核功能在sqlserver2008新增了审核功能,可以对服务器级别和数据库级别的操作进行审核/审计,事实上,事件通知、更改跟踪、变更数据捕获(CDC)都不是用来做审计的,只是某些人乱用这些功能,也正因为乱用这些功能导致踩坑事件通知:性能跟踪更改跟踪:用Sync Services来构建偶尔连接的系统变更数据捕获(CDC):数据仓库的ETL 中的数据抽取(背后使用logreader) 而审核是SQLSERVER专门针对数据库安全的进行的审核,记住,他是专门的! 我们看一下审核的使用方法 审核对象步骤一:创建审核对象,审核对象是跟保存路径关联的,所以如果你需要把审核操作日志保存到不同的路径就需要创建不同的审核对象我们把审核操作日志保存在文件系统里,在创建之前我们还要在相关路径先创建好保存的文件夹,我们在D盘先创建sqlaudits文件夹,然后执行下面语句--创建审核对象之前需要切换到master数据库USE [master]GOCREATE SERVER AUDIT MyFileAudit TO FILE(FILEPATH='D:\sqlaudits') --这里指定文件夹不能指定文件,生成文件都会保存在这个文件夹GO实际上,我们在创建审核对象的同时可以指定审核选项,下面是相关脚本把日志放在磁盘的好处是可以使用新增的TVF:sys.[fn_get_audit_file] 来过滤和排序审核数据,如果把审核数据保存在Windows 事件日志里查询起来非常麻烦USE [master]GOCREATE SERVER AUDIT MyFileAudit TO FILE(FILEPATH='D:\sqlaudits',MAXSIZE=4GB,MAX_ROLLOVER_FILES=6) WITH (ON_FAILURE=CONTINUE,QUEUE_DELAY=1000)ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)MAXSIZE:指明每个审核日志文件的最大大小是4GBMAX_ROLLOVER_FILES:指明滚动文件数目,类似于SQL ERRORLOG,达到多少个文件之后删除前面的历史文件,这里是6个文件ON_FAILURE:指明当审核数据发生错误时的操作,这里是继续进行审核,如果指定shutdown,那么将会shutdown整个实例queue_delay:指明审核数据写入的延迟时间,这里是1秒,最小值也是1秒,如果指定0表示是实时写入,当然性能也有一些影响STATE:指明启动审核功能,STATE这个选项不能跟其他选项共用,所以只能单独一句在修改审核选项的时候,需要先禁用审核,再开启审核ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)ALTER SERVER AUDIT MyFileAudit WITH(QUEUE_DELAY =1000)ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)审核规范在SQLSERVER审核里面有审核规范的概念,一个审核对象只能绑定一个审核规范,而一个审核规范可以绑定到多个审核对象我们来看一下脚本CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileFOR SERVER AUDIT MyFileAuditADD (failed_login_group),ADD (successful_login_group)WITH (STATE=ON)GOCREATE SERVER AUDIT MyAppAudit TO APPLICATION_LOGGOALTER SERVER AUDIT MyAppAudit WITH(STATE =ON)ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)GOALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFileFOR SERVER AUDIT MyAppAuditADD (failed_login_group),ADD (successful_login_group)WITH (STATE=ON)GO我们创建一个服务器级别的审核规范CaptureLoginsToFile,然后再创建多一个审核对象MyAppAudit ,这个审核对象会把审核日志保存到Windows事件日志的应用程序日志里我们禁用审核规范CaptureLoginsToFile,修改审核规范CaptureLoginsToFile属于审核对象MyAppAudit ,修改成功 而如果要把多个审核规范绑定到同一个审核对象则会报错CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileAFOR SERVER AUDIT MyFileAuditADD (failed_login_group),ADD (successful_login_group)WITH (STATE=ON)GOCREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileBFOR SERVER AUDIT MyFileAuditADD (failed_login_group),ADD (successful_login_group)WITH (STATE=ON)GO--消息 33230,级别 16,状态 1,第 86 行--审核 'MyFileAudit' 的审核规范已经存在。这里要说一下 :审核对象和审核规范的修改 ,无论是审核对象还是审核规范,在修改他们的相关参数之前,他必须要先禁用,后修改,再启用--禁用审核对象ALTER SERVER AUDIT MyFileAudit WITH(STATE =OFF)--禁用服务器级审核规范ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=OFF)GO--禁用数据库级审核规范ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=OFF)GO--相关修改选项操作--启用审核对象ALTER SERVER AUDIT MyFileAudit WITH(STATE =ON)--启用服务器级审核规范ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE=ON)GO--启用数据库级审核规范ALTER DATABASE AUDIT SPECIFICATION CaptureDBLoginsToFile WITH (STATE=ON)GO审核服务器级别事件审核服务级别事件,我们一般用得最多的就是审核登录失败的事件,下面的脚本就是审核登录成功事件和登录失败事件CREATE SERVER AUDIT SPECIFICATION CaptureLoginsToFileFOR SERVER AUDIT MyFileAuditADD (failed_login_group),ADD (successful_login_group)WITH (STATE=ON)GO修改审核规范--跟审核对象一样,更改审核规范时必须将其禁用ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =OFF)ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFileADD (login_change_password_gourp),DROP (successful_login_group)ALTER SERVER AUDIT SPECIFICATION CaptureLoginsToFile WITH (STATE =ON)GO审核操作组每个审核操作组对应一种操作,在SQLSERVER2008里一共有35个操作组,包括备份和还原操作,数据库所有权的更改,从服务器和数据库角色中添加或删除登录用户添加审核操作组的只需在审核规范里使用ADD,下面语句添加了登录用户修改密码操作的操作组ADD (login_change_password_gourp)这里说一下服务器审核的内部实际上使用的是SQL2008新增的扩展事件里面的其中一个package:SecAudit package,当然他内部也是使用扩展事件来收集服务器信息 审核数据库级别事件 数据库审核规范存在于他们的数据库中,不能审核tempdb中的数据库操作CREATE DATABASE AUDIT SPECIFICATION和ALTER DATABASE AUDIT SPECIFICATION工作方式跟服务器审核规范一样在SQLSERVER2008里一共有15个数据库级别的操作组7个数据库级别的审核操作是:select ,insert,update,delete,execute,receive,references 相关脚本如下:--创建审核对象USE [master]GOCREATE SERVER AUDIT MyDBFileAudit TO FILE(FILEPATH='D:\sqldbaudits') GOALTER SERVER AUDIT MyDBFileAudit WITH (STATE=ON)GO--创建数据库级别审核规范USE [sss]GOCREATE DATABASE AUDIT SPECIFICATION CaptureDBActionToEventLogFOR SERVER AUDIT MyDBFileAuditADD (database_object_change_group),ADD (SELECT ,INSERT,UPDATE,DELETE ON schema::dbo BY PUBLIC)WITH (STATE =ON)我们先在D盘创建sqldbaudits文件夹第一个操作组对数据库中所有对象的DDL语句create,alter,drop等进行记录第二个语句监视由任何public用户(也就是所有用户)对dbo架构的任何对象所做的DML操作 创建完毕之后可以在SSMS里看到相关的审核欢迎分享,转载请注明来源:夏雨云
评论列表(0条)