Hatali şifre girişi yaparak kullanıcı hesabının kilitlenmesine sebep olan kullanıcıların tespiti
Kullanıcı profilindeki “Failed login attempts” değeri unlimited değilse , bu değer kadar hatalı şifre girişi yapıldığında kullanıcı hesabı kilitlenecektir. Bu durumda hangi sunucu yada kullanıcılardan hatalı şifre gönderildiğinin tespit edilmesi gereklidir. Sonrasında gerekli değişikliği yaparak hatalı şifre gönderilmesinin önüne geçebiliriz.
Bu durum bir atak olarak da karşımıza çıkabilir. Kullanıcı hesabı açıldıktan çok kısa bir süre sonra tekrar kilitleniyorsa muhtemelen birileri brute force atağı gerçekleştiriyordur.
Öncelikle kullanıcının hesabının ne zaman kilitlendiğini tespit ediyoruz.
SQL> col profile for a30 SQL> col username for a30 SQL> col account_status for a20 SQL> SELECT username, account_status,lock_date, PROFILE FROM dba_users WHERE username='ADURUOZ'; USERNAME ACCOUNT_STATUS LOCK_DATE PROFILE ------------------------------ -------------------- ------------------ ------------------------------ ADURUOZ LOCKED(TIMED) 29-MAY-17 DEFAULT
Sonrasında aşağıdaki sorgu ile hangi tarihlerde kimlerin hatalı şifre gönderdiğini tespit ediyoruz.
SELECT TO_CHAR(TIMESTAMP,'MM/DD HH24:MI') TIMESTAMP, SUBSTR(OS_USERNAME,1,20) OS_USERNAME, SUBSTR(USERNAME,1,20) USERNAME, SUBSTR(TERMINAL,1,20) TERMINAL, ACTION_NAME, RETURNCODE, OS_USERNAME, USERNAME, USERHOST FROM SYS.DBA_AUDIT_SESSION WHERE RETURNCODE=1017 AND USERNAME LIKE 'ADURUOZ%' AND TIMESTAMP BETWEEN SYSDATE-1 AND SYSDATE ORDER BY TIMESTAMP DESC;
Sorgudaki RETURNCODE değerinin 1017 olması , hatalı şifre gönderen kullanıcıları belirtir. Bazı önemli değerler aşağıdaki gibidir. Sorgu sonucunda kimlerin hangi host üzeirnden ne zaman hatalı şifre gönderdiğini görebiliriz.
RETURNCODE=0 – Başarılı giriş yapıldığını gösterir
RETURNCODE=1017 – Hatalı şifre gönderildiğini gösterir
RETURNCODE=28000 – Giriş yapılmaya çalışılan kullanıcının kilitli olduğunu gösterir.
RETURNCODE=28001 – Giriş yapılmaya çalışılan kullanıcının şifresinin expired olduğunu gösterir.
Diğer returncode değerlerinin ne anlama geldiğiniz aşağıdaki şekilde görebilirsiniz.
[oracle@oradb~]$ oerr ora 28002 28002, 00000, "the password will expire within %s days" // *Cause: The user's account is about to about to expire and the password // needs to be changed // *Action: change the password or contact the DBA
Hatalı şifreden dolayı hesap kilitlendi ise ilgili hesabı aşağıdaki gibi tekrardan açabiliriz.
SQL> alter user ADURUOZ account unlock; User altered.