Linux版 对sys用户进行审计的示例

来源:互联网 发布:java开发的安卓模拟器 编辑:程序博客网 时间:2024/05/22 10:25

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

SYS@LEO1>show parameter audit

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

audit_file_dest                      string      /u02/app/oracle/admin/LEO1/adump

audit_sys_operations                 boolean     FALSE      默认SYS用户审计是关闭的,这个参数是开启审计SYS用户所有SQL语句

audit_syslog_level                   string                  默认是关闭的,这个参数指出SYS用户审计日志的存放位置

audit_trail                          string      DB

SYS@LEO1>alter system setaudit_sys_operations=true scope=spfile;        打开SYS用户审计

System altered.

SYS@LEO1>alter system setaudit_syslog_level='user.notice' scope=spfile;     用户日志

System altered.

SYS@LEO1>startup force                                          重启数据库使静态参数生效

ORACLE instance started.

Total System Global Area  471830528 bytes

Fixed Size                  2214456 bytes

Variable Size             285214152 bytes

Database Buffers          176160768 bytes

Redo Buffers                8241152 bytes

Database mounted.

Database opened.

SYS@LEO1>show parameter audit

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

audit_file_dest                      string      /u02/app/oracle/admin/LEO1/adump

audit_sys_operations                 boolean     TRUE            审计启动

audit_syslog_level                   string      USER.NOTICE   

audit_trail                          string      DB

设置sys用户审计日志输出位置,Linuxsyslog.conf文件配置了各种类型日志的输出位置和消息源

我们只需要将Oracle日志输出配置信息添加到该文件中就可以了

[root@leonarding1 log]# vi /etc/syslog.conf

添加如下信息

# About Oracle SysLog

user.notice                                           /var/log/oracle_dbms

添加完之后,我们还要重新加载一下配置信息,syslog.conf文件生效

[root@leonarding1 log]# ps -ef | grepsyslogd

root     2385     1  0 Jun14 ?        00:00:01 syslogd -m 0

root    29740 29502  0 17:25 pts/1    00:00:00 grep syslogd

[root@leonarding1 log]# kill -HUP 2385                        重新加载

Ok,操作系统的配置内容完成了。

下面我们来演示一下SYS用户的审计

SYS@LEO1>create table test as select *from dba_objects;      我们创建一个表

Table created.

SYS@LEO1>drop table test purge;                          再删除一个表

Table dropped.

好了,SYS用户操作做完了,我们来看看oracle_dbms审计日志中有没有抓取到SQL语句

[root@leonarding1 log]# cat oracle_dbms

Jun 15 18:08:40 leonarding1 OracleAudit[29903]: LENGTH : '199' ACTION :[46] 'create tabletest as select * from dba_objects' DATABASE USER:[1] '/' PRIVILEGE :[6]'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0'DBID:[10] '1692458681'

Jun 15 18:08:49 leonarding1 OracleAudit[29903]: LENGTH : '174' ACTION :[21] 'drop tabletest purge'DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6]'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '1692458681'

Good创建表test和删除表test的命令都抓取到了,例如startup  shutdown  connect等操作都是可以抓取到的。

小结:通过上面的测试实例,我们了解到了对数据库管理员的审计也逐渐成为信息安全中的重要一项,这样可以对管理员人员进行监督,权限限制,提高数据库安全级别,完善安全管理制度。

0 0