Linux版對sys使用者進行審計的示例

技術小胖子發表於2017-11-16

我們在運算元據庫的時候,知道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使用者審計日誌輸出位置,Linux syslog.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等操作都是可以抓取到的。

小結:通過上面的測試例項,我們瞭解到了對資料庫管理員的審計也逐漸成為資訊保安中的重要一項,這樣可以對管理員人員進行監督,許可權限制,提高資料庫安全級別,完善安全管理制度。




 本文轉自 ztfriend 51CTO部落格,原文連結:http://blog.51cto.com/leonarding/1223409,如需轉載請自行聯絡原作者


相關文章