常見數(shù)據(jù)庫安全加固及測評(MySQL|MongoDB|Oracle)
MySQL
Windows主機(jī)測評Mysql基礎(chǔ)命令
create USER 'new_user'@'localhost' IDENTIFIED BY 'password'; //創(chuàng)建用戶 alter user 'root'@'%' identified with mysql_native_password by '********'; //修改密碼 rename user 'root'@'%' to 'root'@'192.168.1.1'; //重命名 flush privileges; //刷新權(quán)限 grant all privileges on *.* to 'root'@'192.168.1.%'; //賦予權(quán)限 revoke all privileges on *.* to 'root'@'%'; //收回權(quán)限 select current_user(); //查看當(dāng)前登錄的用戶 select current_role(); //查看當(dāng)前登錄的角 mysqldump -uroot -p mysql>mysql.sql //導(dǎo)出mysql數(shù)據(jù)庫 create database xiaozhou_db; //創(chuàng)建xiaozhou數(shù)據(jù)庫 show databases; //展示所有數(shù)據(jù)庫 drop database xiaohzou_db; //刪除數(shù)據(jù)庫 alter user 'root'@'localhost' identified with mysql_native_password by 'xlpszqdbb'; //修改密碼 show variables like 'port'; //查看端口 ALTER USER 'existing_user'@'localhost' IDENTIFIED BY 'new_password'; show variables like 'validate%'; show variables like '%connection_control%'; show variables like '%timeout%'
一 身份鑒別
MySQL數(shù)據(jù)庫對于用戶的標(biāo)識和其它數(shù)據(jù)庫有些不一樣,不僅僅是用戶名,而是username + host。MySQL從5.7以上開始,密碼字段不是password,而是authentication_string。
要滿足密碼復(fù)雜度必須在my.ini配置文件中安裝plugin-load-add=validate_password.dll(Windows/Linux為plugin-load-add=validate_password.so)插件。
select * from mysql.`plugin`;//查看插件

install plugin validate_password soname 'validate_password.so';
a) 應(yīng)對登錄的用戶進(jìn)行身份標(biāo)識和鑒別,身份標(biāo)識具有唯一性,身份鑒別信息具有復(fù)雜度要求并定期更換;
1.提示輸入口令鑒別用戶身份
1)嘗試登錄數(shù)據(jù)庫,**執(zhí)行mysql -u root -p(linux下)查看是否提示輸入口令鑒別用戶身份。**此處直接使用navicat 進(jìn)行管理。
mysql -h localhost -u root -p123
2.查是否存在同名用戶
select user, host FROM mysql.user
結(jié)果輸出用戶列表,查者是否存在相同用戶名。結(jié)果默認(rèn)不存在同名用戶。
-查詢是否在空口令用戶:
select * from mysql.user where length(password)= 0 or password is null
或者
select user,authentication_string from user;
mysql 5.7以上識別第二條命令)通過查看不存在空口令用戶。
4)執(zhí)行如下語句查看用戶口今復(fù)雜度相關(guān)配置:
show variables like 'validate%';
默認(rèn)情況下未配置,為空。
要滿足密碼復(fù)雜度必須在my.ini配置文件中安裝plugin-load-add=validate_password.dll(Windows/Linux為plugin-load-add=validate_password.so)插件。
b) 應(yīng)具有登錄失敗處理功能,應(yīng)配置并啟用結(jié)束會話、限制非法登錄次數(shù)和當(dāng)?shù)卿涍B接超時(shí)自動(dòng)退出等相關(guān)措施;
登錄失敗功能也需要mysql安裝connection_control.dll或者connection_control.so插件才能實(shí)現(xiàn)
1)詢問管理員是否采取其他手段配置數(shù)據(jù)庫登錄失敗處理功能。
2)執(zhí)行show variables like '%connection_control%';或核查my.cnf或者my.ini文件,應(yīng)設(shè)置如下參數(shù):
max_connect_errors=100
validate_password_policy:密碼安全策略,默認(rèn)MEDIUM策略 validate_password_dictionary_file:密碼策略文件,策略為STRONG才需要 validate_password_length:密碼最少長度 validate_password_mixed_case_count:大小寫字符長度,至少1個(gè) validate_password_number_count :數(shù)字至少1個(gè) validate_password_special_char_count:特殊字符至少1個(gè)
show variables like ”%timeout%“,查看返回值。默認(rèn)Wait_ timeout: 一個(gè)連接connection空閑超過8個(gè)小時(shí)(默認(rèn)值28800秒),MySQL 就會自動(dòng)斷開這個(gè)連接。默認(rèn)不符合,時(shí)間太長。
當(dāng)進(jìn)行遠(yuǎn)程管理時(shí),應(yīng)采取必要措施防止鑒別信息在網(wǎng)絡(luò)傳輸過程中被竊聽;
1)是否采用加密等安全方式對系統(tǒng)進(jìn)行遠(yuǎn)程管理
是否用戶都是localhost,全為localhost則為本地管理。不適用。
2)若存在遠(yuǎn)程管理,執(zhí)行
show variables like "%have_ssl%"
或者者show variables like "%have_openssl%"
查看是否支持ssl的連接特性,若為disabled說明此功能沒有激活,或執(zhí)行\(zhòng)s查看是否啟用SSL。
二、訪問控制
應(yīng)對登錄的用戶分配賬戶
1.執(zhí)行語句select user,host FROM mysql.user
輸出結(jié)果結(jié)合訪談管理員是否存在網(wǎng)絡(luò)管理員,安全管理員,系統(tǒng)管理員等多個(gè)賬戶,且分配了相應(yīng)權(quán)限。
show grants for 'XXXX'@' localhost':
查看其他管理員用戶賬號的權(quán)限,是否只存在特定用戶如root 用戶存在權(quán)限分配的權(quán)限。其他普通用戶如test用戶應(yīng)無Grant option 權(quán)限。
2.是否存在多余的、過期的賬戶,避免共享賬戶
select user,accounted _lock from user;
3.應(yīng)授予管理用戶所需的最小權(quán)限,實(shí)現(xiàn)管理用戶的權(quán)限分離
select * from mysql.user
如除root外,任何用戶不應(yīng)該有mysql庫user表的存取權(quán)限,禁止將fil、process、 super權(quán)限授予管理員以外的賬戶
查看用戶權(quán)限表,并驗(yàn)證用戶是否具有自身角色外的其他用戶的權(quán)限。輸入select \* from mysql.user where user="用戶名"。
4.訪問控制策略規(guī)定主體對客體的訪問規(guī)則
select * from mysql.user -檢查用戶權(quán)限列
select * from mysql.db --檢查數(shù)據(jù)庫權(quán)限
select * from mysql.tables_priv 一檢查用戶表權(quán)限列
select * from mysql.columns_priv-檢查列權(quán)限列管理員
三 安全審計(jì)
1.開啟安全審計(jì)功能
show global variables like '%general%'。默認(rèn)為OFF,不符合。應(yīng)設(shè)置為ON為開啟審計(jì)。
是否已開啟審計(jì)general_log為ON。輸入:select * from general_log;得知具體內(nèi)容
2訪談是否存在第三方插件。
對于生產(chǎn)環(huán)境中任務(wù)繁重的MySOL數(shù)據(jù)庫,啟用審計(jì)會引起服務(wù)器的高昂成本,因此建議采用第三方數(shù)據(jù)庫審計(jì)產(chǎn)品收集審計(jì)記錄。
3.應(yīng)對審計(jì)記錄進(jìn)行保護(hù),定期備份
cp /var/log/audit/audit.log /path/to/backup/audit.log //手動(dòng)備份 gzip -c /var/log/audit/audit.log > /path/to/backup/audit.log.gz//壓縮備份 crontab 定時(shí)定期自動(dòng)備份
四 入侵防范
1.管理終端進(jìn)行限制
user表中的Host值不為本地主機(jī)時(shí),應(yīng)指定特定IP地址,不應(yīng)為%;
host表中指定用戶帳戶允許登陸訪問的主機(jī);在非信任的客戶端以數(shù)據(jù)庫賬戶登錄應(yīng)被提示拒絕,從其他子網(wǎng)登錄,應(yīng)被拒絕
GRANT ALL ON *.* TO 'root'@'myip.athome' //指定IP范問
2.版本補(bǔ)丁情況
show variables where variable_name like "version"
3.數(shù)據(jù)庫定期漏掃
MongoDB
一 身份鑒別
MongoDB服務(wù)在安裝后默認(rèn)未開啟權(quán)限驗(yàn)證,默認(rèn)是空賬戶、空口令
mongod.cfg配置文件中修改auth=true,啟用身份認(rèn)證,執(zhí)行命令mongo顯示權(quán)限不足
自身不具備設(shè)置登錄賬戶的口令復(fù)雜度和定期更換口令的策略,
僅通過管理員自行設(shè)置口令復(fù)雜度,use admin。
是否采用加密安全方式對系統(tǒng)進(jìn)行遠(yuǎn)程管理
二 訪問控制
show users”查看mongoDB中的賬戶的管理權(quán)限,
授予管理用戶所需的最小權(quán)限,
實(shí)現(xiàn)管理用戶的權(quán)限分離
mongoDB不存在默認(rèn)賬戶, 應(yīng)及時(shí)刪除或停用多余的、過期的賬戶,避免共享賬戶的存在
訪談和查看管理員是否制定了訪問控制策略;
use admin 啟用身份鑒別,且具備權(quán)限分離
訪問控制的粒度應(yīng)達(dá)到主體為用戶級或進(jìn)程級
三安全審計(jì)
檢查mongod.cfg配置文件中是否添加quiet: false,啟用日志安全審計(jì)功能
四檢查mongod.log的日志文件記錄是否正常:
訪談人員是否通過第三方工具(數(shù)據(jù)庫審計(jì)系統(tǒng))收集審計(jì)數(shù)據(jù)進(jìn)行分析,查看是否包括事件的日期和時(shí)間、用戶、事件類型、事件是否成功及其他與審計(jì)相關(guān)的信息。
應(yīng)對審計(jì)記錄進(jìn)行保護(hù),定期備份,避免受到未預(yù)期的刪除、修改或覆蓋等
MongoDB數(shù)據(jù)庫備份:
mongodump -h dbhost -d dbname -o dbdirectory
MongoDB數(shù)據(jù)庫恢復(fù):
mongorestore -h dbhost -d dbname --dir dbdirectory
集群部署、雙機(jī)熱備均可判定為符合。
檢查數(shù)據(jù)庫中是否存儲個(gè)人信息,若有,檢查個(gè)人信息保護(hù)機(jī)制和個(gè)人信息保護(hù)管理制度
五 入侵防范
最小安裝原則
管理的管理終端進(jìn)行限制
打開mongdb.cfg 看它的bindip。需要修改為指定連接
訪談管理員是否定期或不定期進(jìn)行掃描或測試,若存在,是否及時(shí)進(jìn)行修補(bǔ)。
a)應(yīng)采用密碼技術(shù)保證重要數(shù)據(jù)在傳輸過程中的完整性
TLS、SSH等協(xié)議
詢問管理人員是否使用了第三方軟件對數(shù)據(jù)庫重要數(shù)據(jù)進(jìn)行了完整性校驗(yàn)。
Oracle
一、身份鑒別
a) 應(yīng)對登錄的用戶進(jìn)行身份標(biāo)識和鑒別,身份標(biāo)識具有唯一性,身份鑒別信息具有復(fù)雜度要求并定期更換;
sysdba是Oracle數(shù)據(jù)庫的最高權(quán)限管理員。通常使用sqlplus或PL/SQL 管理軟件進(jìn)行管理,PL/SQL 為第三方管理軟件,但SQL查詢語句一樣。
注:sysdba如果是本地管理,亂輸密碼也能登錄成功,需要改sqlnet.ora文件。
- 管理員登錄數(shù)據(jù)庫時(shí)是是否需要輸入用戶名/口令,不存在空口令;
- 使用 Select username,account_status from dba_users; 顯示所有能登錄數(shù)據(jù)庫的用戶信息:(),那些是open那些是locked,UID是否唯一
\3. 通過命令 *select \ from dba_profiles where resource_type='password';或SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_VERIFY_FUNCTION';**如果為NULL則為未設(shè)置密碼復(fù)雜度要求。
若有設(shè)置應(yīng)為 (1)PASSWORD_LOGIN_ATTEMPTS = 登錄嘗試次數(shù); (2)PASSWORD_LIFE_TIME = unlimited 未設(shè)置口令有效期; (3)PASSWORD_ROUSE_MAX = unlimited 未設(shè)置重新啟用一個(gè)先前用過的口令前必須對該口令進(jìn)行重新設(shè)置的次數(shù)(重復(fù)用的次數(shù)); (4)PASSWORD_VERIFY_FUNCITON = NULL,未設(shè)置口令復(fù)雜度校驗(yàn)函數(shù); (5)PASSWORD_GRACE_TIME=,口令修改的寬限期天數(shù):7;
b) 應(yīng)具有登錄失敗處理功能,應(yīng)配置并啟用結(jié)束會話、限制非法登錄次數(shù)和當(dāng)?shù)卿涍B接超時(shí)自動(dòng)退出等相關(guān)措施;
1. 通過輸入 SELECT LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT' AND RESOURCE_NAME='FAILED_LOGIN_ATTEMOTS';,查詢結(jié)果若為’UNLIMITED’則無登錄重試次數(shù)限制,超過此值用戶被鎖定??梢酝ㄟ^ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS 10(重試次數(shù)10次)
二、訪問控制
a) 應(yīng)對登錄的用戶分配賬戶和權(quán)限;
通過輸入Select username,account_status from dba_users;語句,主要查看數(shù)據(jù)庫存在那些可用用戶,至少得有兩個(gè),該測評項(xiàng)就需要Oracle中存在至少兩個(gè)賬戶,且這兩個(gè)賬戶的權(quán)限不一樣。
1.為用戶分配了賬戶和權(quán)限及相關(guān)設(shè)置情況,主要看可用賬戶(例如采用“用戶權(quán)限列表”);
2.是否已禁用或限制匿名、默認(rèn)賬戶的訪問權(quán)限。如只有MGMT_UIEW,SYSTEM,SYS,DBSNMP為啟用狀態(tài),其他均為啟用狀態(tài),則為符合。
b) 應(yīng)重命名或刪除默認(rèn)賬戶,修改默認(rèn)賬戶的默認(rèn)口令
在Oracle中默認(rèn)用戶最常用的就是SYS和SYSTEM這兩個(gè)賬戶。
1.是否已經(jīng)重命名SYS、SYSTEM、DBSNMP等默認(rèn)帳戶名或已修改默認(rèn)口令,sys默認(rèn)口令為CHANGE_ON_INSTALL;SYSTEM:MANAGER;DBSNMP的默認(rèn)口令為:DBSNMP。可以登錄測試。
c) 應(yīng)及時(shí)刪除或停用多余的、過期的賬戶,避免共享賬戶的存在
訪談管理員是否存在多余或過期賬戶,管理員用戶與賬戶之間是否一一對應(yīng)通過輸入Select username,account_status from dba_users;查看是否存在默認(rèn)帳戶SCOTT/OUTLN/ORDSY等用戶,不存在acount_status為expired的賬戶。訪談管理員是否存在共享賬戶等。示例不符合。
d) 應(yīng)授予管理用戶所需的最小權(quán)限,實(shí)現(xiàn)管理用戶的權(quán)限分離
1. 通過輸入Select username,account_status from dba_users;查看狀態(tài)為open的用戶的用途。是否進(jìn)行角色劃分,是否有多個(gè)用戶進(jìn)行管理數(shù)據(jù)庫;
2. 通過輸入 select * from dba_tab_privs where grantee='SYS' ORDER BY GRANTEE;查看SYS最高權(quán)限授予給那些用戶,得知管理用戶的權(quán)限是否已進(jìn)行分離;
總結(jié)
數(shù)據(jù)庫安全加固是組織信息安全戰(zhàn)略的關(guān)鍵組成部分,不僅有助于防范安全威脅,還能支持業(yè)務(wù)發(fā)展和符合法律法規(guī)的要求。
到此這篇關(guān)于常見數(shù)據(jù)庫安全加固及測評(MySQL|MongoDB|Oracle)的文章就介紹到這了,更多相關(guān)常見數(shù)據(jù)庫安全加固及測評內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
安裝內(nèi)網(wǎng)穿透工具cpolar將本地運(yùn)行的OpenClaw突破局域網(wǎng)限制實(shí)現(xiàn)隨時(shí)訪問
如何利用內(nèi)網(wǎng)穿透工具cpolar,將本地運(yùn)行的OpenClaw AI服務(wù)映射至公網(wǎng),突破局域網(wǎng)限制實(shí)現(xiàn)隨時(shí)訪問,以及在外遠(yuǎn)程控制家中電腦,操作步驟簡單,無需專業(yè)網(wǎng)絡(luò)知識,只需安裝cpolar并與OpenClaw交互即可完成配置,讓強(qiáng)大的本地AI服務(wù)真正實(shí)現(xiàn)"隨叫隨到"2026-03-03
Ajenti開源免費(fèi)的服務(wù)器管理面板和Ajenti V虛擬主機(jī)面板及安裝與使用詳細(xì)教程
Ajenti是國外一個(gè)功能非常強(qiáng)大的輕型的Linux服務(wù)器管理面板,采用Python架構(gòu),修改擴(kuò)展非常簡單,Ajenti V是Ajenti一個(gè)虛擬主機(jī)管理面板插件,下面通過本文給大家介紹Ajenti開源免費(fèi)的服務(wù)器管理面板和Ajenti V虛擬主機(jī)面板及安裝與使用詳細(xì)教程,一起看看吧2017-07-07
阿里云ECS服務(wù)器輕松搭建ThinkPHP環(huán)境
本文指導(dǎo)在阿里云ECS?CentOS?7.9上部署ThinkPHP框架,涉及安裝PHP、Composer、Apache,配置虛擬主機(jī)解決URL問題及目錄權(quán)限設(shè)置,確保項(xiàng)目正常運(yùn)行,感興趣的朋友跟隨小編一起看看吧2025-08-08
配置管理和服務(wù)發(fā)現(xiàn)之Confd和Consul使用場景詳解
這篇文章主要為大家介紹了配置管理和服務(wù)發(fā)現(xiàn)之Confd和Consul使用場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
阿里云快速搭建一個(gè)靜態(tài)網(wǎng)站的方法步驟
這篇文章主要介紹了阿里云快速搭建一個(gè)靜態(tài)網(wǎng)站的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
詳解阿里云服務(wù)器添加安全組規(guī)則(圖文教程)
這篇文章主要介紹了詳解阿里云服務(wù)器添加安全組規(guī)則(圖文教程),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-07-07

