mysql數據庫限制多次登錄失敗,限定用戶重試時間


前言

最近的項目開始進行安全測試,其中有一個安全問題是這樣的。
應該增加用戶登錄失敗處理功能,限制非法登錄次數。
建議是增加mysql數據庫的登陸失敗的鎖定功能。
相信大家也都會遇到這樣的問題,在這里寫一下,方便大家直接使用。

設置方法

登錄mysql數據庫

mysql -u root -p

輸入如下命令,安裝插件

install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';

查看安裝的插件

我們發下,最下面增加了兩個插件

修改my.cnf文件

vim /etc/my.cnf

在文件中,我們增加如下兩行

connection-control-failed-connections-threshold=5   #登陸失敗次數限制
connection-control-min-connection-delay=300000    #限制重試時間,此處為毫秒,注意按需求換算,此處為5分鍾

重啟mysql

service mysql restart

重新登錄數據庫,查看是否生效

show variables like '%connection_control%';

驗證

輸入密碼錯誤5次后,將不可以再輸入密碼

至此登錄限制就完成了

擴展

靜態安裝插件

上面提供的方式為動態安裝,靜態安裝方式如下:

vim /etc/my.cnf

增加如下配置

plugin-load-add = connection_control.so

插件卸載

UNINSTALL PLUGIN CONNECTION_CONTROL;
UNINSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;

插件參數

connection_control_failed_connections_threshold:失敗登陸次數達到此值后觸發延遲。值域:[0, INT_MAX32(2147483647)],0表示關閉此功能。默認值為3。
connection_control_max_connection_delay:登陸發生延遲時,延遲的最大時間;此值必須大於等於connection_control_min_connection_delay。值域:[1,INT_MAX32(2147483647)]。默認值:INT_MAX32。單位:毫秒。
connection_control_min_connection_delay:登陸發生延遲時,延遲的最小時間,此值必須小於等於connection_control_max_connection_delay。值域:[1000, INT_MAX32(2147483647)]。默認值:1000。單位:毫秒。

延遲的時間如何計算

一旦連續的失敗登陸次數超過設定閾值,那么就會產生延遲,並且延遲隨着失敗次數增加而增加,上限為connection_control_max_connection_delay;
具體的計算方式如下:
MIN ((failed_attempts - threshold) * MIN_DELAY), MAX_DELAY)

總結

至此,文章結束,歡迎大家留言或者關注公眾號一起討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM