常見數(shù)據(jù)庫安全加固及測評(MySQL|MongoDB|Oracle)
MySQL
Windows主機測評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)對登錄的用戶進行身份標(biāo)識和鑒別,身份標(biāo)識具有唯一性,身份鑒別信息具有復(fù)雜度要求并定期更換;
1.提示輸入口令鑒別用戶身份
1)嘗試登錄數(shù)據(jù)庫,**執(zhí)行mysql -u root -p(linux下)查看是否提示輸入口令鑒別用戶身份。**此處直接使用navicat 進行管理。
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接超時自動退出等相關(guān)措施;
登錄失敗功能也需要mysql安裝connection_control.dll或者connection_control.so插件才能實現(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個 validate_password_number_count :數(shù)字至少1個 validate_password_special_char_count:特殊字符至少1個
show variables like ”%timeout%“,查看返回值。默認(rèn)Wait_ timeout: 一個連接connection空閑超過8個小時(默認(rèn)值28800秒),MySQL 就會自動斷開這個連接。默認(rèn)不符合,時間太長。
當(dāng)進行遠程管理時,應(yīng)采取必要措施防止鑒別信息在網(wǎng)絡(luò)傳輸過程中被竊聽;
1)是否采用加密等安全方式對系統(tǒng)進行遠程管理
是否用戶都是localhost,全為localhost則為本地管理。不適用。
2)若存在遠程管理,執(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)管理員等多個賬戶,且分配了相應(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)限,實現(xiàn)管理用戶的權(quán)限分離
select * from mysql.user
如除root外,任何用戶不應(yīng)該有mysql庫user表的存取權(quán)限,禁止將fil、process、 super權(quán)限授予管理員以外的賬戶
查看用戶權(quá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)限列管理員
三 安全審計
1.開啟安全審計功能
show global variables like '%general%'。默認(rèn)為OFF,不符合。應(yīng)設(shè)置為ON為開啟審計。
是否已開啟審計general_log為ON。輸入:select * from general_log;得知具體內(nèi)容
2訪談是否存在第三方插件。
對于生產(chǎn)環(huán)境中任務(wù)繁重的MySOL數(shù)據(jù)庫,啟用審計會引起服務(wù)器的高昂成本,因此建議采用第三方數(shù)據(jù)庫審計產(chǎn)品收集審計記錄。
3.應(yīng)對審計記錄進行保護,定期備份
cp /var/log/audit/audit.log /path/to/backup/audit.log //手動備份 gzip -c /var/log/audit/audit.log > /path/to/backup/audit.log.gz//壓縮備份 crontab 定時定期自動備份
四 入侵防范
1.管理終端進行限制
user表中的Host值不為本地主機時,應(yīng)指定特定IP地址,不應(yīng)為%;
host表中指定用戶帳戶允許登陸訪問的主機;在非信任的客戶端以數(shù)據(jù)庫賬戶登錄應(yīng)被提示拒絕,從其他子網(wǎng)登錄,應(yīng)被拒絕
GRANT ALL ON *.* TO 'root'@'myip.athome' //指定IP范問
2.版本補丁情況
show variables where variable_name like "version"
3.數(shù)據(jù)庫定期漏掃
MongoDB
一 身份鑒別
MongoDB服務(wù)在安裝后默認(rèn)未開啟權(quán)限驗證,默認(rèn)是空賬戶、空口令
mongod.cfg配置文件中修改auth=true,啟用身份認(rèn)證,執(zhí)行命令mongo顯示權(quán)限不足
自身不具備設(shè)置登錄賬戶的口令復(fù)雜度和定期更換口令的策略,
僅通過管理員自行設(shè)置口令復(fù)雜度,use admin。
是否采用加密安全方式對系統(tǒng)進行遠程管理
二 訪問控制
show users”查看mongoDB中的賬戶的管理權(quán)限,
授予管理用戶所需的最小權(quán)限,
實現(xiàn)管理用戶的權(quán)限分離
mongoDB不存在默認(rèn)賬戶, 應(yīng)及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在
訪談和查看管理員是否制定了訪問控制策略;
use admin 啟用身份鑒別,且具備權(quán)限分離
訪問控制的粒度應(yīng)達到主體為用戶級或進程級
三安全審計
檢查mongod.cfg配置文件中是否添加quiet: false,啟用日志安全審計功能
四檢查mongod.log的日志文件記錄是否正常:
訪談人員是否通過第三方工具(數(shù)據(jù)庫審計系統(tǒng))收集審計數(shù)據(jù)進行分析,查看是否包括事件的日期和時間、用戶、事件類型、事件是否成功及其他與審計相關(guān)的信息。
應(yīng)對審計記錄進行保護,定期備份,避免受到未預(yù)期的刪除、修改或覆蓋等
MongoDB數(shù)據(jù)庫備份:
mongodump -h dbhost -d dbname -o dbdirectory
MongoDB數(shù)據(jù)庫恢復(fù):
mongorestore -h dbhost -d dbname --dir dbdirectory
集群部署、雙機熱備均可判定為符合。
檢查數(shù)據(jù)庫中是否存儲個人信息,若有,檢查個人信息保護機制和個人信息保護管理制度
五 入侵防范
最小安裝原則
管理的管理終端進行限制
打開mongdb.cfg 看它的bindip。需要修改為指定連接
訪談管理員是否定期或不定期進行掃描或測試,若存在,是否及時進行修補。
a)應(yīng)采用密碼技術(shù)保證重要數(shù)據(jù)在傳輸過程中的完整性
TLS、SSH等協(xié)議
詢問管理人員是否使用了第三方軟件對數(shù)據(jù)庫重要數(shù)據(jù)進行了完整性校驗。
Oracle
一、身份鑒別
a) 應(yīng)對登錄的用戶進行身份標(biāo)識和鑒別,身份標(biāo)識具有唯一性,身份鑒別信息具有復(fù)雜度要求并定期更換;
sysdba是Oracle數(shù)據(jù)庫的最高權(quán)限管理員。通常使用sqlplus或PL/SQL 管理軟件進行管理,PL/SQL 為第三方管理軟件,但SQL查詢語句一樣。
注:sysdba如果是本地管理,亂輸密碼也能登錄成功,需要改sqlnet.ora文件。
- 管理員登錄數(shù)據(jù)庫時是是否需要輸入用戶名/口令,不存在空口令;
- 使用 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è)置重新啟用一個先前用過的口令前必須對該口令進行重新設(shè)置的次數(shù)(重復(fù)用的次數(shù)); (4)PASSWORD_VERIFY_FUNCITON = NULL,未設(shè)置口令復(fù)雜度校驗函數(shù); (5)PASSWORD_GRACE_TIME=,口令修改的寬限期天數(shù):7;
b) 應(yīng)具有登錄失敗處理功能,應(yīng)配置并啟用結(jié)束會話、限制非法登錄次數(shù)和當(dāng)?shù)卿涍B接超時自動退出等相關(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ù)庫存在那些可用用戶,至少得有兩個,該測評項就需要Oracle中存在至少兩個賬戶,且這兩個賬戶的權(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這兩個賬戶。
1.是否已經(jīng)重命名SYS、SYSTEM、DBSNMP等默認(rèn)帳戶名或已修改默認(rèn)口令,sys默認(rèn)口令為CHANGE_ON_INSTALL;SYSTEM:MANAGER;DBSNMP的默認(rèn)口令為:DBSNMP??梢缘卿洔y試。
c) 應(yīng)及時刪除或停用多余的、過期的賬戶,避免共享賬戶的存在
訪談管理員是否存在多余或過期賬戶,管理員用戶與賬戶之間是否一一對應(yīng)通過輸入Select username,account_status from dba_users;查看是否存在默認(rèn)帳戶SCOTT/OUTLN/ORDSY等用戶,不存在acount_status為expired的賬戶。訪談管理員是否存在共享賬戶等。示例不符合。
d) 應(yīng)授予管理用戶所需的最小權(quán)限,實現(xiàn)管理用戶的權(quán)限分離
1. 通過輸入Select username,account_status from dba_users;查看狀態(tài)為open的用戶的用途。是否進行角色劃分,是否有多個用戶進行管理數(shù)據(jù)庫;
2. 通過輸入 select * from dba_tab_privs where grantee='SYS' ORDER BY GRANTEE;查看SYS最高權(quán)限授予給那些用戶,得知管理用戶的權(quá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)文章
ISAPI-REWRITE偽靜態(tài)規(guī)則寫法以及說明
ISAPI-REWRITE偽靜態(tài)規(guī)則寫法以及說明,很多朋友對rewrite的規(guī)則不太熟悉,這里介紹下,方便需要的朋友2012-06-06服務(wù)器配置禁止IP直接訪問只允許域名訪問的實現(xiàn)步驟
聯(lián)網(wǎng)信息系統(tǒng)需設(shè)置只允許通過域名訪問,禁止使用IP地址直接訪問,建議同時采用云防護技術(shù)隱藏系統(tǒng)真實IP地址且只允許云防護節(jié)點IP訪問服務(wù)器,提升網(wǎng)絡(luò)安全防護能力,這篇文章主要介紹了服務(wù)器配置禁止IP直接訪問只允許域名訪問,需要的朋友可以參考下2024-03-03虛擬主機應(yīng)該如何解決電信網(wǎng)通間互聯(lián)互通
電信和網(wǎng)通兩大基礎(chǔ)網(wǎng)絡(luò),人為地割裂了整個中國的網(wǎng)絡(luò)。無論是選擇把網(wǎng)站托管在電信、還是網(wǎng)通,都等于是在拒絕處于另外一個網(wǎng)絡(luò)中的客戶,因為實在太慢了2011-10-10通過IBM 3650 M2服務(wù)器的ServerGuide工具配置RAID圖文教程
這篇文章主要介紹了通過IBM 3650 M2服務(wù)器的ServerGuide工具配置RAID圖文教程,需要的朋友可以參考下2018-05-05關(guān)于HTTPS端口443的技術(shù)講解(什么是443端口)
本文將重點介紹HTTPS 443端口,它是如何工作的,它保護什么,以及為什么我們需要它,需要的朋友可以參考下2022-10-10