成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle如何找到引起賬號鎖定的IP的一點思考與總結

數據庫 Oracle
在ORACLE數據庫中,如果沒有修改過FAILED_LOGIN_ATTEMPTS的話,默認10次輸入錯誤密碼后就會鎖住用戶。

 [[404798]]

本文轉載自微信公眾號「DBA閑思雜想錄」,作者瀟湘隱者。轉載本文請聯系DBA閑思雜想錄公眾號。

在ORACLE數據庫中,如果沒有修改過FAILED_LOGIN_ATTEMPTS的話,默認10次輸入錯誤密碼后就會鎖住用戶。

  1. SQL> SELECT *  
  2.   2  FROM DBA_PROFILES 
  3.   3  WHERE RESOURCE_NAME='FAILED_LOGIN_ATTEMPTS'
  4.  
  5. PROFILE                        RESOURCE_NAME                    RESOURCE LIMIT 
  6. ------------------------------ -------------------------------- -------- ---------------------------------------- 
  7. DEFAULT                        FAILED_LOGIN_ATTEMPTS            PASSWORD 10 
  8. MONITORING_PROFILE             FAILED_LOGIN_ATTEMPTS            PASSWORD UNLIMITED 
  9.  
  10. SQL> 

那么在數據庫維護過程中,如果出現賬號被鎖定的情況,如何事后分析是那個IP或主機導致賬號被鎖定了呢?不同的情形有不同的分析方法,主要看是否開啟了數據庫審計功能

開啟了數據庫審計

如果開了審計功能的話,這個分析定位就非常簡單容易。因為數據庫的審計功能會記錄這些信息到數據庫當中。

檢查是否開啟審計,主要查看audit_sys_operations參數是否為TRUE。

  1. SQL> show parameter audit 
  2.  
  3. NAME                                 TYPE        VALUE 
  4. ------------------------------------ ----------- ------------------------------ 
  5. audit_file_dest                      string      /u01/app/oracle/admin/gsp/adum 
  6.                                                  p 
  7. audit_sys_operations                 boolean     TRUE 
  8. audit_syslog_level                   string 
  9. audit_trail                          string      DB_EXTENDED 
  10. SQL>  

如果開啟了審計功能,通過下面SQL語句就能輕松找到引起賬號鎖定的主機(通過主機找到具體IP地址)

----RETURNCODE=1017表示登錄失敗返回ORA-01017: invalid username/password; logon denied錯誤的會話信息。

  1. SELECT USERNAME 
  2.       ,USERHOST 
  3.       ,TIMESTAMP 
  4.       ,RETURNCODE 
  5. FROM dba_audit_session 
  6. WHERE USERNAME='TEST' 
  7.  AND RETURNCODE='1017'  
  8. ORDER BY TIMESTAMP DESC

數據庫審計關閉

如果數據庫審計功能是關閉的情況下,那么能否定位、找到導致賬號鎖定的主機或IP地址呢?如果出現賬號被鎖的情況,可以先查一下dba_users視圖,看看賬號是在什么時間點被鎖定的。注意(有些版本有Bug,會出現LOCK_DATE不準確的情況。)

  1. SQL> ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
  2.  Session altered. 
  3. SQL> SELECT username, account_status,lock_date, PROFILE  
  4.   2  FROM dba_users WHERE username='TEST'
  5.  
  6. USERNAME                       ACCOUNT_STATUS                   LOCK_DATE           PROFILE 
  7. ------------------------------ -------------------------------- ------------------- ---------- 
  8. TEST                           LOCKED(TIMED)                    2018-06-16 23:49:14 DEFAULT 
  9.  
  10. SQL>  

網上有些文章信誓旦旦的宣稱通過監聽日志可以分析出哪些IP導致賬號被鎖定了,但是經過動手實驗分析,發現通過監聽日志文件根本無法定位引起賬號鎖定的IP地址,原因有兩個:

1、 無法通過監聽日志判斷登錄會話是否出現ORA-01017錯誤,因為登錄成功與登錄失敗遭遇ORA-01017錯誤的會話的監聽日志信息是一樣。無法區別!

2、 即使賬號鎖定的時間能定位到秒,但是生產環境中,一秒內有大量的監聽日志生成,根本無法定位是哪一個具體IP

3、 登錄失敗的監聽日志可能不是連續的。而是在一段時間生成的。

不過如果事前你定義了數據庫觸發器,那么就可以輕松定位到具體IP, 網友提供了一個觸發器,如下所示:

  1. CREATE OR REPLACE TRIGGER sys.logon_denied_to_alert 
  2.   AFTER servererror ON DATABASE 
  3. DECLARE 
  4.   message   VARCHAR2(168); 
  5.   ip        VARCHAR2(15); 
  6.   v_os_user VARCHAR2(80); 
  7.   v_module  VARCHAR2(50); 
  8.   v_action  VARCHAR2(50); 
  9.   v_pid     VARCHAR2(10); 
  10.   v_sid     NUMBER; 
  11.   v_program VARCHAR2(48); 
  12.   v_username VARCHAR2(32); 
  13. BEGIN 
  14.   IF (ora_is_servererror(1017)) THEN 
  15.     -- get ip FOR remote connections : 
  16.     IF upper(sys_context('userenv''network_protocol')) = 'TCP' THEN 
  17.       ip := sys_context('userenv''ip_address'); 
  18.     END IF; 
  19.     SELECT sid INTO v_sid FROM sys.v_$mystat WHERE rownum < 2; 
  20.     SELECT p.spid, v.program 
  21.       INTO v_pid, v_program 
  22.       FROM v$process p, v$session v 
  23.      WHERE p.addr = v.paddr 
  24.        AND v.sid = v_sid; 
  25.     v_os_user := sys_context('userenv''os_user'); 
  26.     v_username := sys_context('userenv','authenticated_identity'); 
  27.     dbms_application_info.read_module(v_module, v_action); 
  28.     message := to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || 
  29.                ' Password Erro: logon denied from ' || nvl(ip, 'localhost') || ' ' || 
  30.                v_pid || ' User:' || v_os_user || ' with ' || v_program || ' – ' || 
  31.                v_module || ' ' || v_action||' dbuser:' || v_username; 
  32.     sys.dbms_system.ksdwrt(2, message); 
  33.   END IF; 
  34. END

在客戶端使用SQL*Plus測試,模擬輸入錯誤的密碼登錄數據庫

  1. C:\Users>sqlplus test/1234@myvm 
  2.  
  3. SQL*Plus: Release 11.2.0.1.0 Production on 星期日 6月 17 00:35:21 2018 
  4.  
  5. Copyright (c) 1982, 2010, Oracle.  All rights reserved. 
  6.  
  7. ERROR: 
  8. ORA-01017: invalid username/password; logon denied 

此時,觸發器捕獲到這個錯誤,就會在告警日志中生成類似下面這樣的錯誤日志信息:

  1. Sun Jun 17 08:01:44 2018 
  2. 2018-06-17 08:01:44 Password Erro: logon denied from 192.168.125.193 26639 User:KongLB with sqlplus.exe ��� sqlplus.exe  dbuser:test 

當然,如果你也可以改寫該觸發器,將捕獲的相關信息寫入數據庫相關表。目前,我是將登陸失敗的信息寫入告警日志,監控告警日志(alert_$ORACLE_SID.log)的作業則會將分析告警日志,定期將錯誤解析出來,發送給DBA!

 

責任編輯:武曉燕 來源: DBA閑思雜想錄
相關推薦

2011-07-04 09:33:04

惠普轉型李艾科

2012-03-27 08:49:19

Json

2009-09-14 20:17:05

并行LINQ

2014-09-17 10:30:25

代碼

2011-12-23 09:16:19

2011-07-18 16:33:20

sqlite

2021-05-17 11:47:41

多租戶系統私有化

2022-04-06 07:14:29

區塊鏈網絡生態系統

2013-06-26 10:13:32

C語言結構體結構體偏移

2021-06-10 16:18:39

Oracle賬號信息

2012-05-07 10:40:57

阿里巴巴去IOE

2021-06-30 07:51:09

新項目領域建模

2009-08-18 13:06:17

C#枚舉類型

2018-03-21 14:23:39

vagrant測試環境

2015-03-26 09:23:17

天璣科技融合架構

2018-03-28 15:07:16

測試環境vagrant

2021-09-28 18:54:26

信息流大數據人工智能

2024-04-28 14:54:09

機器人代碼

2010-04-19 14:01:22

Oracle查看分區表

2017-12-29 21:49:36

信息安全網絡攻擊漏洞
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人成在线 | 99re国产精品 | 人人干人人舔 | 成人福利在线 | 久久久久亚洲视频 | 国产女人叫床高潮大片免费 | 日韩欧美在 | 国产精品免费福利 | 日韩欧美三区 | 成人免费视频网站在线看 | av在线视| 久久国产高清 | 色99视频 | 成av在线 | www.国产精品 | 亚洲欧美中文日韩在线v日本 | 国产精品视频在线播放 | av在线免费网 | 国产美女高潮 | 欧美日韩三级视频 | 玖玖视频网 | 男女精品网站 | 国产色| 亚洲女人天堂网 | 色视频网站在线观看 | 久草免费电影 | 国产特一级黄色片 | 国产最新网址 | 亚洲444kkkk在线观看最新 | 亚洲日本一区二区 | 色偷偷人人澡人人爽人人模 | 超碰在线免费 | 丁香五月网久久综合 | 国产专区视频 | 精品国产一区二区三区久久狼黑人 | 亚洲国产成人精品女人久久久 | 蜜桃精品噜噜噜成人av | 亚洲午夜精品 | 国产精品视频网站 | 久久99精品国产 | 亚洲男人天堂av |