对sys用户进行行为审计

  • 1、Sys用户审计
  • 2、OS层面审计记录
  • 3、Sys用户的SQL审计
  • 4、结论

转载自(文字有删减): https://blog.51cto.com/itbull/1177652

1、Sys用户审计

Sys用户是Oracle系统中很特殊的一个用户,类似于Linux/Unix中的root,具有绝对的超级权限。除了允许访问、操作大多数数据之外,Sys用户是具有对Oracle内部元数据基础表进行删除的权限。

鉴于Sys用户的巨大权限和潜在危险性,我们通常在使用数据库的时候,都不会直接使用sys用户,而是创建普通用户帐号进行管理。

从安全的层面上,Oracle也对于Sys的基本操作行为,如登陆、退出动作,都提供了默认审计策略。默认情况下,Sys的审计信息是记录在dba_audit_trail视图中进行查询,也就是记录在基表aud$下面。但是Sys又拥有该表数据删除权限,所以仅仅靠db层面是无法解决的,完全解决要借助操作系统,尝试将日志输出到操作系统。在操作系统层面,数据库的安装用户(dba,oinstall)就会受到限制。

Oracle 10g版本,推出了参数AUDIT_SYSLOG_LEVEL,可以实现这个功能。

2、OS层面审计记录

默认情况下,aduit_syslog_level参数是关闭的。

SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE       11.2.0.1.0        ProductionSQL> show parameter audit_sys
NAME                                TYPE       VALUE
------------------------------------ ----------- ------------------------------
audit_sys_operations                boolean    FALSE
audit_syslog_level                  string

该参数就是利用操作系统的审计记录方法,在操作系统中,均有记录日志的功能组件,以Linux/Unix为例,就有syslog命令。

[root@bspdev ~]# man syslogNAMEsyslog, klogctl - read and/or clear kernel message ring buffer; setconsole_loglevel
SYNOPSISint syslog(int type, char *bufp, int len);/* No wrapper provided in glibc *//* The glibc interface */#include <sys/klog.h>int klogctl(int type, char *bufp, int len);
DESCRIPTIONIf you need the libc function syslog() (which talks to syslogd(8)),then look at syslog(3). The system call of this name is about control-

(篇幅原因,略。。。)

具体配置上,syslog的配置文件在/etc/syslog.conf,其中配置了各种类型的日志输出位置和消息源。

[root@bspdev ~]# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none               /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                             /var/log/secure
# Log all the mail messages in one place.
mail.*                                                 -/var/log/maillog
# Log cron stuff
cron.*                                                 /var/log/cron
# Everybody gets emergency messages
*.emerg                                                *
# Save news errors of level crit and higher in a special file.
uucp,news.crit                                         /var/log/spooler
# Save boot messages also to boot.log
local7.*                                               /var/log/boot.log

我们只需要将Oracle日志输出的配置信息添加在该文件中,就可以指定输出位置。

[root@bspdev ~]# vi /etc/syslog.conf# Log all kernel messages to the console.
# Logging much else clutters up the screen.
# Save boot messages also to boot.log
local7.*                                               /var/log/boot.log
# About Oracle SysLog
user.notice                                            /var/log/oracle_dbms

指定一个user.notice的输出位置是/var/log/oracle_dbms文件。

要让syslog.conf参数生效,还要后台进程syslogd重新加载一下配置信息。

[root@bspdev ~]# ps -ef | grep syslogd
root     2517    1 0 07:04 ?       00:00:00 syslogd -m 0
root     3825 3670 0 07:21 pts/0   00:00:00 grep syslogd[root@bspdev ~]# kill -HUP2517

操作系统层面的配置到此为止,接下来就要配置Oracle数据库层面的审计内容。主要是针对audit_syslog_level的修改。

SQL> alter system set audit_syslog_level='user.notice' scope=spfile;
System altered

静态参数需要重启数据库生效;

SQL> conn / as sysdba
Connected.
SQL> startup force
ORACLE instance started.Total System Global Area 849530880 bytes
Fixed Size                 1339824 bytes
Variable Size            515903056 bytes
Database Buffers         327155712 bytes
Redo Buffers               5132288 bytes
Database mounted.
Database opened.

此时,sys用户实际上已经进行了操作。我们查看操作系统层面的日志信息。

[root@bspdev ~]# cat /var/log/oracle_dbms
Jul 2 07:25:31 bspdev Oracle Audit[3901]: LENGTH : '155' ACTION :[7] 'STARTUP' DATABASE USER:[1] '/' PRIVILEGE :[4] 'NONE' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[13] 'Not Available' STATUS:[1] '0' DBID:[0] ''
Jul 2 07:25:31 bspdev Oracle Audit[4025]: LENGTH : '148' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/0' STATUS:[1] '0' DBID:[0] ''
Jul 2 07:25:35 bspdev Oracle Audit[4106]: LENGTH : '159' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/0' STATUS:[1] '0' DBID:[10] '3906514064'
Jul 2 07:27:05 bspdev Oracle Audit[4172]: LENGTH : '163' ACTION :[7] 'CONNECT' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'
Jul 2 07:27:05 bspdev Oracle Audit[4176]: LENGTH : '163' ACTION :[7] 'CONNECT' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'

在oracle_dbms中,记录了sys用户的关键操作,如startup、shutdown和connect等。但是,并不是所有的sys用户信息都可以被记录下来。

SQL> show user;
User is "SYS"SQL> drop table t purge;
Table droppedSQL> create table t as select * from dba_objects;
Table created

这部分的信息是不会记录在日志的。如果我们需要确实将sys所有的SQL操作记录,则需要audit_sys_operations参数进行配合。

3、Sys用户的SQL审计

在上面的部分中,我们已经可以成功的对SYS用户活动行为进行操作系统层面的审计。一些如启动服务器、关闭服务器、登陆等操作可以完整的记录在操作系统日志下,只能由root用户进行查看。

那么,我们可否对其操作审计粒度变得更细,将sys用户的SQL语句行为记录,这就需要配置参数audit_sys_operations。

该参数的含义是是否对SYS用户的操作进行日志记录。默认情况下,该参数取值为false。

SQL> show parameter audit_sysNAME                                TYPE       VALUE
------------------------------------ ----------- ------------------------------
audit_sys_operations                boolean    FALSE
audit_syslog_level                  string     USER.NOTICE

在spfile层面进行修改之后,重新启动服务器。

SQL> alter system set audit_sys_operations=true scope=spfile;
System altered[oracle@bspdev ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Mon Jul 2 07:39:09 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.SQL> conn / as sysdba
Connected.
SQL> startup force
ORACLE instance started.Total System Global Area 849530880 bytes
Fixed Size                 1339824 bytes
Variable Size            515903056 bytes
Database Buffers         327155712 bytes
Redo Buffers               5132288 bytes
Database mounted.
Database opened.
SQL>

此时,如果SYS用户进行一些操作,就会被记录在日志上。

SQL> drop table t purge;
Table droppedSQL> create table t as select * from dba_objects;
Table created

查看日志

[root@bspdev ~]# tail -n 10 /var/log/oracle_dbms
Jul 2 07:41:29 bspdev Oracle Audit[4677]: LENGTH : '259' ACTION :[101] 'select length(chr(2000000000)) l4, length(chr(2000000)) l3, length(chr(20000)) l2, 'c' c1 from dual ' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'
Jul 2 07:41:29 bspdev Oracle Audit[4677]: LENGTH : '202' ACTION :[45] 'select lengthb(nchr(20)), nchr(20) from dual ' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'
Jul 2 07:41:29 bspdev Oracle Audit[4677]: LENGTH : '235' ACTION :[78] 'begin sys.dbms_application_info.set_module('PL/SQL Developer', :action); end; ' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'
Jul 2 07:41:29 bspdev Oracle Audit[4677]: LENGTH : '218' ACTION :[61] 'begin :id := sys.dbms_transaction.local_transaction_id; end; ' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'
Jul 2 07:41:29 bspdev Oracle Audit[4677]: LENGTH : '177' ACTION :[20] 'drop table t purge ' DATABASE USER:[3] 'sys' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[5] '51ibm' CLIENT TERMINAL:[8] '51IBM-PC' STATUS:[1] '0' DBID:[10] '3906514064'

(篇幅原因,省略部分内容……)

4、结论

随着信息安全观念的深入,安全漏洞和审计要求越来越成为DBA工作的一个重要部分。限制权限、管制监控行为,粗看是对我们运维人员的限制,实际上也是对运维人员责任的保护和证明。用好审计,可以提高数据库安全级别,消除系统安全漏洞,完善运维制度。

对sys用户进行行为审计(转载)相关推荐

  1. 演示对sys用户和普通用户进行审计的示例

    1.确认数据库版本 1对SYS用户审计 1.1配置审计参数 1.2修改liunx日志配置文件 添加以下一列: 1.3 SYS 用户操作演示 2对普通用户审计 2.1配置审计参数 2.2演示对TEST用 ...

  2. oracle审计sys用户,oracle 11gR2启用对sys用户操作行为的审计

    oracle 11gR2启用对sys用户操作行为的审计 发布时间:2020-07-10 05:59:47 来源:51CTO 阅读:797 作者:lineqi 在oracle 11gR2中,缺省在aud ...

  3. oracle sys dba 01031,sys用户连接数据库是报ORA-01031: insufficient privileges的处理

    1.         sys用户连接数据库是报ORA-01031: insufficient privileges.这个错误出现在生产数据库恢复到测试环境数据后,通过conn sys/password ...

  4. linux sys伪用户作用,【原创】Linux版 对sys用户进行审计的示例

    更多精彩内容尽在 我们在操作数据库的时候,知道SYS用户的权限是最大的干什么事很方便,同时带来的问题就是非常危险,没有人可以束缚住.因此我们有时需要对SYS用户进行审计 SYS@LEO1>sho ...

  5. 连接oracle内存溢出,Linux主机内存溢出导致oracle的SYS用户无法正常登陆

    一般情况下,ORACLE DBA看到如下情况的第一反应是,数据库实例没有启动或者是数据库环境变量没有设置正确,今天遇到的情况均不是以上两种情况,有点特别,且来看看为哪般. oracle@POC-SV1 ...

  6. OEM中无法用sys用户登录

    OEM中无法用sys用户登录 开始准备通过实验的方式,把这段日子来看的内容好好的实践一翻.于是乎打开了OEM,却神奇的发现不能用sys用户登录了,与此同时,其他的非sysdba用户可以登录.但是通过s ...

  7. expdp 导出sys用户下的表报错ORA-39165 和ORA-39166

    expdp 导出 sys 用户下的表报错 ORA-39165 和 ORA-39166 [oracle@orcltest ~]$ expdp \'/ AS SYSDBA\' directory=DATA ...

  8. oracle expdp sys用户,Oracle基础教程:expdp时不能导出sys用户下的对象

    Oracle基础教程:expdp时不能导出sys用户下的对象 sys用户下的对象不支持导出 SQL> select owner,segment_name,tablespace_name from ...

  9. 使用sys导出oracle,oracle 让sys用户执行exp导出操作

    oracle 让sys用户执行exp导出操作 [oracle@localhost ~]$ exp sys/abcdefg as sysdba full=y file=/tmp/full100.dmp ...

最新文章

  1. SpringBoot02_构建rest工程完成第一个controller类
  2. 彻底解决windows2003不能共享文件夹或者共享后不能访问的问题
  3. 由动态分配和静态分配的数据在内存组成区别
  4. 英宝通4.0公开课---致力于提供最新的Unity3D技术
  5. 3D 立体 backface-visibility
  6. AWS加入.NET Foundation企业赞助商计划
  7. android 画面俯视效果,四种方法让你的画面更耐看
  8. linux 生成2g文件吗,linux 32位系统 c++写大于2G文件
  9. 微波网络转移参量[A]表示阻抗矩阵[Z]和导纳矩阵[Y]
  10. Matplotlib:直方图示例(2):正态分布。
  11. python whl文件下载地址
  12. 卸载WPS后Office文档图标显示异常
  13. Win7环境变量下的用户变量和系统变量的区别
  14. hd620显卡驱动 linux,倍控工控机i7 7500U PVE下核显HD620 HDMI直通成功
  15. 古风一棵桃花树简笔画_唯美意境桃花古风句子
  16. nginx方向代理域名访问
  17. cocos creator微信棋牌小游戏 幼麟棋牌服务端分析笔记
  18. C# 操作American_America.US7ASCII编码的Oracle数据库出现乱码的问题。
  19. 一道题讲懂SQL盲注 / [第一章 web入门]SQL注入-2
  20. c语言浮典型数据类型,C语言的数据类型→浮点型数据

热门文章

  1. phpexcel导出的数据换行
  2. destoon数据库字典
  3. 热力图,数据库和数据仓库
  4. 为什么 B 站的弹幕可以不挡人物?
  5. 货车定位服务器维护是什么意思,货车司机停靠服务区休息被驱赶 真相原来是这样的.........
  6. 各种艺术字体是如何设计的,他们的设计原理有哪些
  7. 360搜索彩蛋自动化开发实践
  8. 密信浏览器添加信任根、国密Key双向认证(测试)
  9. DaVinci DM6446系列产品远不止如此!
  10. 切记!手机号注销之前一定要做这几件事,不然可能会造成巨大损失