【Password】Oracle 11g防止暴力破解資料庫使用者密碼的手段——延長失敗嘗試響應

secooler發表於2010-06-15
Oracle 11g中為了防止暴力破解資料庫中使用者的密碼,提供了一種常見手段:延長失敗嘗試響應。
這種手段的策略是:在連續使用錯誤密碼反覆嘗試登入時,從第四次錯誤嘗試開始,每次增加1秒的延遲,最長延遲目前是10秒。
使用這種手段可以相對比較有效的防治使用者密碼的暴力破解(能夠使用到這種手段的前提是FAILED_LOGIN_ATTEMPTS引數設定的足夠大或無限大,否則使用者密碼超過10次的錯誤嘗試之後該使用者將被鎖定,參考《
【故障】“ORACLE使用者被鎖定”故障處理和分析》http://space.itpub.net/519536/viewspace-608769)。

模擬一下這個暴力破解秘密的過程(為了簡便,使用同一個錯誤密碼進行嘗試)。

1.修改使用者錯誤密碼嘗試次數為無限次
sys@11gR2> alter profile default limit failed_login_attempts unlimited;
Profile altered.

2.前三次錯誤密碼嘗試
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m0.126s
user    0m0.020s
sys     0m0.020s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m0.123s
user    0m0.000s
sys     0m0.044s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m0.126s
user    0m0.020s
sys     0m0.028s

可見,在前三次錯誤密碼嘗試過程中,系統響應是沒有延遲的。

3.繼續使用錯誤密碼進行嘗試,體驗每次1秒的時間累加延遲
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m1.132s
user    0m0.004s
sys     0m0.036s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m2.128s
user    0m0.028s
sys     0m0.024s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m3.130s
user    0m0.024s
sys     0m0.024s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m4.127s
user    0m0.012s
sys     0m0.028s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m5.135s
user    0m0.004s
sys     0m0.032s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m6.129s
user    0m0.000s
sys     0m0.040s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m7.126s
user    0m0.000s
sys     0m0.044s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m8.141s
user    0m0.004s
sys     0m0.036s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m9.133s
user    0m0.012s
sys     0m0.028s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m10.128s
user    0m0.024s
sys     0m0.012s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m10.130s
user    0m0.012s
sys     0m0.020s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m10.126s
user    0m0.000s
sys     0m0.040s
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m10.128s
user    0m0.008s
sys     0m0.040s
secooler@secDB /home/oracle$
secooler@secDB /home/oracle$ time echo 'select sysdate from dual;' | sqlplus -s sec/secooler
ERROR:
ORA-01017: invalid username/password; logon denied

real    0m10.128s
user    0m0.012s
sys     0m0.036s

在時間持續累加到10秒之後穩定在10秒。此後再使用錯誤密碼進行破解時,等待時間都將是10秒。

注意:如有過正確輸入密碼併成功登陸到資料庫的嘗試,如果再使用錯誤密碼嘗試登陸,將進入到下一個輪迴:前三次沒有延遲,之後每一次的錯誤嘗試都會增加1秒,直到穩定在10秒的延遲!

4.小結
可以預見到,常用的防止密碼暴力破解的手段將逐漸的被Oracle所採用,讓我們一同期待Oracle帶給我們的更多樂趣吧。

Good luck.

secooler
10.06.15

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-665702/,如需轉載,請註明出處,否則將追究法律責任。

相關文章