MySQL 安全防護

chenoracle發表於2022-04-01

一、配置新增新使用者密碼複雜度檢查

二、配置密碼過期策略

三、MySQL資料庫限制多次登入失敗重試時間


一、配置密碼複雜度檢查

1.mysql 5.7.15版本好像預設啟用了密碼複雜度設定,外掛名字叫做 validate_password

mysql>>INSTALL PLUGIN validate_password SONAME 'validate_password.so';


2、加上/etc/my.cnf配置

[mysqld]

plugin-load=validate_password.so

validate_password_policy=2 

# 0 or LOW 僅需需符合密碼長度

# 1 or MEDIUM 滿足LOW策略,同時還需滿足至少有1個數字,小寫字母,大寫字母和特殊字元

# 2 or STRONG 滿足MEDIUM策略,同時密碼不能存在字典檔案(dictionary file)中

validate-password=FORCE_PLUS_PERMANENT


3.重啟MySQL

systemctl restart mysqld.service


二、配置密碼定期更換

定期更換口令策略:由於定期修改密碼,會涉及到應用一塊更改,涉及到應用重啟,不建議定期修改密碼。

1、在/etc/my.cnf配置檔案中增加

[mysqld]

default_password_lifetime=90  # 90天過期


2、重啟MySQL

systemctl restart mysqld.service

三、MySQL資料庫限制多次登入失敗重試時間

需求:

如果連續5次輸入密碼錯誤,限制登入資料庫30分鐘  --次數和限制時間可以根據實際變更


解決方法(透過MySQL外掛控制)

1、登入資料庫,安裝外掛(CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS)

mysql -uroot -p


install plugin CONNECTION_CONTROL soname 'connection_control.so';

install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';


2、檢視所有已安裝的外掛

show plugins;


3、按需修改配置檔案(/etc/my.cnf)

vim /etc/my.cnf


新增如下兩行配置:

connection-control-failed-connections-threshold=5   #登陸失敗次數限制

connection-control-min-connection-delay=1800000    #限制重試時間,此處為毫秒,注意按需求換算


重新啟動MySQL(根據版本選擇重啟命令)

service mysqld restart 或 service mysql restart


4、重新登入資料庫,檢視配置是否生效

mysql -uroot -p

show variables like '%connection_control%';


5、驗證

輸錯5次密碼後,會發現第6次登入會卡住,限制登入,時間為設定的限制時間30分鐘


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

相關文章