安全計算環(huán)境-二級等級保護測評指導和自動(dòng)化腳本
安全計算環(huán)境-二級等級保護測評指導和自動(dòng)化腳本
前言
在等級保護測評工作如何更快的進(jìn)行測評工作是一個(gè)問(wèn)題,有的系統涉及很多設備手動(dòng)挨個(gè)去點(diǎn)擊和測試看結果會(huì )讓進(jìn)度非常緩慢,因此作者根據互聯(lián)網(wǎng)已有的腳本和二級測評要求來(lái)優(yōu)化總結出了一些安全計算環(huán)境的測評技術(shù)步驟和自動(dòng)化檢測基線(xiàn)。希望能夠幫助做等級保護測評的讀者提升一些工作效率。如文中有一些錯誤還希望大家進(jìn)行私信更正,防止讓使用者出坑。
終端設備
Windows
將下方給出的腳本復制保存為.bat運行即可,管理員權限運行會(huì )自動(dòng)導出檢測結果。之后只看導出的結果可以快速填寫(xiě)現場(chǎng)測評記錄。
@echo offfor /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (if not "%%a" == "默認" set IPaddress=%%a)cd C:\md %IPaddress%cd %IPaddress%echo 1.系統信息(CreatedbyG) > %IPaddress%systeminfo >> %IPaddress%echo 2.網(wǎng)卡信息(CreatedbyG) >> %IPaddress%ipconfig >> %IPaddress%echo 3.監聽(tīng)端口(CreatedbyG) >> %IPaddress%netstat -an | find "LISTENING" >> %IPaddress%echo 4.系統服務(wù)(CreatedbyG) >> %IPaddress%net start >> %IPaddress%echo 5.系統進(jìn)程(CreatedbyG) >> %IPaddress%tasklist >> %IPaddress%echo 6.軟件列表(CreatedbyG) >> %IPaddress%for /f "tokens=3 delims=\" %%i in ('reg query HKLM\SOFTWARE') do (>> %IPaddress% echo ******************>> %IPaddress% echo 軟件名稱(chēng):%%i>> %IPaddress% echo ******************if not "%%i"=="Classes" for /f "tokens=4 delims=\" %%j in ('reg query HKLM\SOFTWARE\%%i 2^>nul') do (echo 軟件信息: %%j>> %IPaddress%))echo 7.本地策略(CreatedbyG) >> %IPaddress%secedit /export /cfg C:\temp.txtecho ---密碼策略--- >> %IPaddress%echo "0表示禁用,1表示啟用" >> %IPaddress%echo *密碼必須符合復雜性要求* >> %IPaddress%find "PasswordComplexity" C:\temp.txt |find "PasswordComplexity = ">> %IPaddress%echo *密碼長(cháng)度最小值* >> %IPaddress%find "MinimumPasswordLength" C:\temp.txt|find "MinimumPasswordLength = " >> %IPaddress%echo *密碼最短使用期限* >> %IPaddress%find "MinimumPasswordAge" C:\temp.txt|find "MinimumPasswordAge = " >> %IPaddress%echo *密碼最長(cháng)使用期限* >> %IPaddress%find "MaximumPasswordAge" C:\temp.txt|find "MaximumPasswordAge = " >> %IPaddress%echo *強制密碼歷史* >> %IPaddress%find "PasswordHistorySize" C:\temp.txt|find "PasswordHistorySize = " >> %IPaddress%echo *用可還原的加密來(lái)存儲密碼* >> %IPaddress%find "ClearTextPassword" C:\temp.txt|find "ClearTextPassword = " >> %IPaddress%echo ---賬戶(hù)鎖定策略(無(wú)結果表示未開(kāi)啟)--- >> %IPaddress%echo *賬戶(hù)鎖定時(shí)間* >> %IPaddress%find "LockoutDuration" C:\temp.txt |find "LockoutDuration" >> %IPaddress%echo *復位賬戶(hù)鎖定計時(shí)器* >> %IPaddress%find "ResetLockoutCount" C:\temp.txt |find "ResetLockoutCount">> %IPaddress%echo *賬戶(hù)鎖定閾值* >> %IPaddress%find "LockoutBadCount" C:\temp.txt |find "LockoutBadCount" >> %IPaddress%echo ---審核策略--- >> %IPaddress%echo ---0表示無(wú)審核,1表示成功審核,2表示失敗審核,3表示成功和失敗審核--- >> %IPaddress%echo *審核帳戶(hù)管理* >> %IPaddress%find "AuditAccountManage" C:\temp.txt | find "AuditAccountManage" >> %IPaddress%echo *審核帳戶(hù)登錄事件* >> %IPaddress%find "AuditAccountLogon" C:\temp.txt | find "AuditAccountLogon" >> %IPaddress%echo *審核系統事件* >> %IPaddress%find "AuditSystemEvents" C:\temp.txt | find "AuditSystemEvents" >> %IPaddress%echo *審核目錄服務(wù)訪(fǎng)問(wèn)* >> %IPaddress%find "AuditDSAccess" C:\temp.txt | find "AuditDSAccess" >> %IPaddress%echo *審核過(guò)程跟蹤* >> %IPaddress%find "AuditProcessTracking" C:\temp.txt | find "AuditProcessTracking" >> %IPaddress%echo *審核特權使用* >> %IPaddress%find "AuditPrivilegeUse" C:\temp.txt | find "AuditPrivilegeUse" >> %IPaddress%echo *審核對象訪(fǎng)問(wèn)* >> %IPaddress%find "AuditObjectAccess" C:\temp.txt | find "AuditObjectAccess" >> %IPaddress%echo *審核登錄事件* >> %IPaddress%find "AuditLogonEvents" C:\temp.txt | find "AuditLogonEvents" >> %IPaddress%echo *審核策略更改* >> %IPaddress%find "AuditPolicyChange" C:\temp.txt | find "AuditPolicyChange" >> %IPaddress%echo ---安全選項--- >> %IPaddress%echo *0表示已停用,1表示已啟用* >> %IPaddress%echo *在掛起會(huì )話(huà)之前所需的空閑時(shí)間* >> %IPaddress%find "AutoDisconnect" C:\temp.txt | find "AutoDisconnect" >> %IPaddress%echo *不顯示上次登錄的用戶(hù)名* >> %IPaddress%find "DontDisplayLastUserName" C:\temp.txt | find "DontDisplayLastUserName" >> %IPaddress%echo *關(guān)機前清理虛擬內存頁(yè)面* >> %IPaddress%find "ClearPageFileAtShutdown" C:\temp.txt | find "ClearPageFileAtShutdown" >> %IPaddress%echo *允許在未登錄前關(guān)機* >> %IPaddress%find "ShutdownWithoutLogon" C:\temp.txt | find "ShutdownWithoutLogon" >> %IPaddress%echo ---用戶(hù)權利分配--- >> %IPaddress%echo (Everyone:*S-1-1-0 Administrators:*S-1-5-32-544 Users:*S-1-5-32-545 Power Users:*S-1-5-32-547 Backup Operators:*S-1-5-32-551) >> %IPaddress%echo *從遠程系統強制關(guān)機* >> %IPaddress%find "SeRemoteShutdownPrivilege" C:\temp.txt | find "SeRemoteShutdownPrivilege" >> %IPaddress%echo *取得文件或其他對象所有權* >> %IPaddress%find "SeTakeOwnershipPrivilege" C:\temp.txt | find "SeTakeOwnershipPrivilege" >> %IPaddress%echo *從本地登錄此計算機* >> %IPaddress%find "SeInteractiveLogonRight" C:\temp.txt | find "SeInteractiveLogonRight" >> %IPaddress%echo *允許通過(guò)遠程桌面服務(wù)登錄* >> %IPaddress%find "SeRemoteInteractiveLogonRight" C:\temp.txt | find "SeRemoteInteractiveLogonRight" >> %IPaddress%echo *調試程序* >> %IPaddress%find "SeDebugPrivilege" C:\temp.txt | find "SeDebugPrivilege" >> %IPaddress%echo *更改系統時(shí)間* >> %IPaddress%find "SeSystemtimePrivilege" C:\temp.txt | find "SeSystemtimePrivilege" >> %IPaddress%echo *管理審核和安全日志* >> %IPaddress%find "SeSecurityPrivilege" C:\temp.txt | find "SeSecurityPrivilege" >> %IPaddress%del C:\temp.txtecho 8.系統用戶(hù)(CreatedbyG) >> %IPaddress%net user >> %IPaddress%for /f "skip=4 delims=" %%a in ('net user^|findstr /vx "命令成功完成。"') do for %%i in (%%a) do net user %%i >> %IPaddress%net localgroup >> %IPaddress%net localgroup Administrators >> %IPaddress%net localgroup Guests >> %IPaddress%echo 9.其它選項(CreatedbyG) >> %IPaddress%echo *自動(dòng)播放* (oxff為關(guān)閉全部自動(dòng)播放,無(wú)結果則開(kāi)啟) >> %IPaddress%reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutoRun |find "NoDriveTypeAutoRun" >> %IPaddress%echo ---屏幕保護程序--- >> %IPaddress%echo *是否開(kāi)啟屏保* (0關(guān),1開(kāi))>> %IPaddress%reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive |find "ScreenSaveActive" >> %IPaddress%echo *屏保時(shí)間*(單位秒)>> %IPaddress%reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut |find "ScreenSaveTimeOut" >> %IPaddress%echo *屏?;謴蜁r(shí)使用密碼保護* (0否,1是)>> %IPaddress%reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure |find "ScreenSaverIsSecure" >> %IPaddress%echo *防火墻狀態(tài)*(1開(kāi),0關(guān))>> %IPaddress%reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters\FirewallPolicy\StandardProfile /v EnableFirewall |find "EnableFirewall" >> %IPaddress%echo *遠程桌面* (0開(kāi),1關(guān)) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections |find "fDenyTSConnections" >> %IPaddress%echo *3389端口* (d3d:3389) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber |find "PortNumber" >> %IPaddress%echo *遠程協(xié)助* (0關(guān)(合規),1開(kāi)) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Remote Assistance" /v fAllowToGetHelp |find "fAllowToGetHelp" >> %IPaddress%echo *日志文件大小* >> %IPaddress%echo *應用日志文件大小*(0x2800000以上為合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application" /v MaxSize |find "MaxSize" >> %IPaddress%echo *達到事件日志最大大小時(shí)*(不存在或0均合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application" /v Retention |find "Retention" >> %IPaddress%echo *安全日志文件大小*(0x2800000以上為合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Security" /v MaxSize |find "MaxSize" >> %IPaddress%echo *達到事件日志最大大小時(shí)*(不存在或0均合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Security" /v Retention |find "Retention" >> %IPaddress%echo *系統日志文件大小*(0x2800000以上為合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\System" /v MaxSize |find "MaxSize" >> %IPaddress%echo *達到事件日志最大大小時(shí)*(不存在或0均合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\System" /v Retention |find "Retention" >> %IPaddress%echo *默認共享*(注冊表 + net share查看) >> %IPaddress%echo *分區共享*(存在且為0,為合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v AutoShareServer |find "AutoShareServer" >> %IPaddress%echo *ADMIN共享*(存在且為0,為合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters" /v AutoShareWks |find "AutoShareWks" >> %IPaddress%echo *IPC共享* (存在且為1,為合規) >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v restrictanonymous |find "restrictanonymous" >> %IPaddress%echo *共享列表* >> %IPaddress%reg query "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\lanmanserver\shares" >> %IPaddress%echo *默認共享* >> %IPaddress%net share >> %IPaddress%copy C:\Windows\WindowsUpdate.log .\ren WindowsUpdate.log %IPaddress%.updatelogreg save hklm\sam %IPaddress%.samreg save hklm\system %IPaddress%.systempause
Windows的一些快速命令可以幫助提升測評時(shí)間的命令,因為有一些測評項是需要打開(kāi)Windows內置的一些面板去看配置策略是否合規的,使用下方命令就不用鼠標手動(dòng)點(diǎn)過(guò)去了,直接命令執行快速打開(kāi)面板!
calc 計算器notepad 記事本taskmgr 任務(wù)管理器osk 打開(kāi)屏幕鍵盤(pán)gpedit.msc 組策略services.msc 本地服務(wù)compmgmt.msc 計算機管理devmgmt.msc 設備管理器winver 查看系統版本magnify 放大鏡實(shí)用程序eventvwr 事件查看器Regedit 打開(kāi)注冊表resmon 資源監視器WMIC BIOS get releasedate 查看電腦生產(chǎn)日期
Linux
復制另存為.sh文件給與相應執行權限執行會(huì )自動(dòng)導出結果到文本文件??赡苓€是有一些測評項沒(méi)有包括在下方腳本內,使用者可以根據自己的情況對此進(jìn)行優(yōu)化和添加。
#!/bin/sh#網(wǎng)絡(luò )信息echo -----------@ifconfig -a >> check.txtifconfig -a >> check.txt#系統內核、名稱(chēng)和版本echo -----------@uname -a >> check.txtuname -a >> check.txtecho -----------@cat /etc/redhat-release >> check.txtcat /etc/redhat-release >> check.txt#系統登錄是否需要密碼echo -----------@cat /etc/passwd >> check.txtcat /etc/passwd >> check.txt#系統hosts.equiv是否存在主機和用戶(hù)echo -----------@cat /etc/hosts.equiv >> check.txtcat /etc/hosts.equiv >> check.txt#密碼長(cháng)度和更換周期echo -----------@cat /etc/login.defs >> check.txtcat /etc/login.defs >> check.txtecho -----------@cat /etc/security/pwquality.confcat /etc/security/pwquality.conf#密碼復雜度和登錄失敗處理功能echo -----------@cat /etc/pam.d/system-auth >> check.txtcat /etc/pam.d/system-auth >> check.txt#是否關(guān)閉telnetecho -----------@cat /etc/xinetd/krb5-telnet >> check.txtcat /etc/xinetd/krb5-telnet >> check.txt#查看主機運行端口echo -----------@netstat -an >> check.txtnetstat -an >> check.txt#查看是否有多余的、過(guò)期的賬戶(hù)echo -----------@cat /etc/shadow >> check.txtcat /etc/shadow >> check.txt#查看審計功能有沒(méi)有開(kāi)啟echo -----------@service rsyslog status >> check.txtservice rsyslog status >> check.txt#查看審計功能有沒(méi)有開(kāi)啟守護進(jìn)程echo -----------@service auditd status >> check.txtservice auditd status >> check.txt#查看審計功能記錄echo -----------@cat /etc/syslog.conf >> check.txtcat /etc/syslog.conf >> check.txt#版本不同查詢(xún)不同echo -----------@cat /etc/rsyslog.conf >> check.txtcat /etc/rsyslog.conf >> check.txt#系統啟動(dòng)后的信息和錯誤日志及所在文件中的權限echo -----------@cat /var/log/message >> check.txtcat /var/log/message >> check.txtecho -----------@ls -l /var/log/message >> check.txtls -l /var/log/message >> check.txt#系統安全相關(guān)的日志信息及所在文件中的權限echo -----------@cat /var/log/secure >> check.txtcat /var/log/secure >> check.txtecho -----------@ls -l /var/log/secure >> check.txtls -l /var/log/secure >> check.txt#系統守護進(jìn)程啟動(dòng)和停止相關(guān)的日志消息及所在文件中的權限echo -----------@cat /var/log/boot.log >> check.txtcat /var/log/boot.log >> check.txtecho -----------@ls -l /var/log/ >> check.txtls -l /var/log/ >> check.txt#系統最小安裝原則echo -----------@cat /etc/redhat-release >> check.txtcat /etc/redhat-release >> check.txt#系統安裝的軟件包echo -----------@rpm -q redhat-release >> check.txtcat /etc/redhat-release >> check.txt#終端登錄方式echo -----------@cat /etc/securetty >> check.txtcat /etc/securetty >> check.txtecho -----------@cat /etc/ssh/sshd_config >> check.txtcat /etc/ssh/sshd_config >> check.txt#終端超時(shí)鎖定,查看TMOUTecho -----------@cat /etc/profile >> check.txtcat /etc/profile >> check.txt#最大最小資源使用限制echo -----------@cat /etc/security/limits.conf >> check.txtcat /etc/security/limits.conf >> check.txt#Linux系統主要目錄的權限設置情況echo -----------@ls -l /etc/passwd >> check.txtecho -----------@ls -l /etc/shadow >> check.txtecho -----------@ls -l /etc/login.defs >> check.txtecho -----------@ls -l /etc/profile >> check.txtecho -----------@ls -l /etc/group >> check.txtecho -----------@ls -l /etc/xinetd.conf >> check.txtecho -----------@ls -l /etc/security/limits.conf >> check.txtecho -----------@ls -l /etc/ssh/sshd_config >> check.txtls -l /etc/passwd >> check.txtls -l /etc/shadow >> check.txtls -l /etc/login.defs >> check.txtls -l /etc/profile >> check.txtls -l /etc/group >> check.txtls -l /etc/xinetd.conf >> check.txtls -l /etc/security/limits.conf >> check.txtls -l /etc/ssh/sshd_config >> check.txt#Linux系統主要目錄的權限設置情況echo -----------@ls -l /etc | grep pam.d >> check.txtls -l /etc | grep pam.d>> check.txt#Linux系統主要目錄的權限設置情況echo -----------@ls -l /etc | grep security >> check.txtls -l /etc | grep security>> check.txt#訪(fǎng)問(wèn)控制列表echo -----------@iptables -L -n -v >> check.txtiptables -L -n -v >> check.txt#查看可登錄用戶(hù)名echo -----------@cat /etc/passwd|grep -v nologin|grep -v sync|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more >> check.txtcat /etc/passwd|grep -v nologin|grep -v sync|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more >> check.txt#三權分立echo -----------@cat /etc/sudoers >> check.txtcat /etc/sudoers >> check.txt#地址限定echo -----------@cat /etc/hosts.deny >> check.txtcat /etc/hosts.deny >> check.txtecho -----------@cat /etc/hosts.allow >> check.txtcat /etc/hosts.allow >> check.txt#密碼復雜度echo -----------@cat /etc/security/pwquality.conf >> check.txtcat /etc/security/pwquality.conf >> check.txt
數據庫
SQL Server
微軟的mssql數據庫大體的一些需要命令測評項是這樣,別的直接可視化登錄mssql官方的客戶(hù)端進(jìn)行鼠標點(diǎn)擊進(jìn)行評測即可
####mssql數據庫測試相關(guān)命令######身份鑒別###1、右鍵點(diǎn)擊服務(wù)器,“屬性”-“安全性”,查看服務(wù)器身份驗證。#2、在Microsoft SQL Server Management Studio中選擇服務(wù)器組并展開(kāi),選擇“安全性->登錄名”項,右鍵點(diǎn)擊管理員用戶(hù)的“屬性”,在“常規”中 查看“強制實(shí)施密碼策略”和“強制密碼過(guò)期”#3、在Microsoft SQL Server Management Studio中登錄服務(wù)器并展開(kāi),右鍵點(diǎn)擊服務(wù)器,選擇“屬性”,選擇“高級”項,查看登錄超時(shí)設定或輸入“sp_configure”查看數據庫啟動(dòng)的配置參數;其中remote login timeout為遠程登錄超時(shí)設定。##訪(fǎng)問(wèn)控制###查看是否存在默認賬戶(hù)select * from syslogins#查看所有數據庫登錄用戶(hù)的信息及其權限exec sp_helplogins##安全審計##在Microsoft SQL Server Management Studio中登錄服務(wù)器并展開(kāi),右鍵點(diǎn)擊服務(wù)器,選擇“屬性”,選擇“安全性”項,查看登錄審核和是否啟用C2 審計跟蹤。#查看“c2 audit mode”項的值,“0”是未開(kāi)啟C2審計,“1”是開(kāi)啟C2審計sp_configure
MySQL
#身份鑒別1)嘗試登錄數據庫,執行mysql -u root -p查看是否提示輸入口令鑒別用戶(hù)身份2)使用如下命令查詢(xún)賬號select user, host FROM mysql.user結果輸出用戶(hù)列表,查看是否存在相同用戶(hù)名3)執行如下語(yǔ)句查詢(xún)是否在空口令用:select * from mysql.user where length(password)= 0 or password is null輸出結果是否為空4)執行如下語(yǔ)句查看用戶(hù)口令復雜度相關(guān)配置:show variables like 'validate%'; 或show VARIABLES like "%password“1)詢(xún)問(wèn)管理員是否采取其他手段配置數據庫登錄失敗處理功能。2)執行show variables like %max_connect_errors%";或核查my.cnf文件,應設置如下參數:max_connect_errors=1003) show variables like ”%timeout%“,查看返回值1)是否采用加密等安全方式對系統進(jìn)行遠程管理2)執行show variables like %have_ssl%"查看是否支持ssl的連接特性,若為disabled說(shuō)明此功能沒(méi)有激活,或執行\s查看是否啟用SSL;3)如果采用本地管理方式,該項為不適用#訪(fǎng)問(wèn)控制1)執行語(yǔ)句select user,host FROM mysql.user輸出結果是否為網(wǎng)絡(luò )管理員,安全管理員,系統管理員創(chuàng )建了不同賬戶(hù):2)執行show grants for' XXXX'@' localhost':查看網(wǎng)絡(luò )管理員,安全管理員、系統管理員用戶(hù)賬號的權限,權限間是否分離并相互制約1)執行select user,host FROM mysql.user輸出結果查看root用戶(hù)是否被重命名或被刪除2)若root賬戶(hù)未被刪除,是否更改其默認口令,避免空口令或弱口令.1)在sqlplus中執行命令: select username,account_status from dba_users2)執行下列語(yǔ)句:select * from mysql.user where user=""select user, host FROM mysql.user依次核查列出的賬戶(hù),是否存在無(wú)關(guān)的賬戶(hù)。3)訪(fǎng)談網(wǎng)絡(luò )管理員,安全管理員、系統管理員不同用戶(hù)是否采用不同賬戶(hù)登錄系統"1.訪(fǎng)談管理員是否制定了訪(fǎng)問(wèn)控制策略2.執行語(yǔ)句:selcec * from mysql.user\G -檢查用戶(hù)權限列selcec * from mysql.db\G --檢查數據庫權限列selcec * from mysql.tables_priv\G 一檢查用戶(hù)表權限列selcec * from mysql.columns_privi\G -檢查列權限列管理員輸出的權限列是是否與管理員制定的訪(fǎng)問(wèn)控制策略及規則一致3)登錄不同的用戶(hù),驗證是否存在越權訪(fǎng)問(wèn)的情形""1)執行下列語(yǔ)句:selcec * from mysql.user\G -檢查用戶(hù)權限列selcec * from mysql.db\G --檢查數據庫權限列2)訪(fǎng)談管理員并核查訪(fǎng)問(wèn)控制粒度主體是否為用戶(hù)級,客體是否為數據庫表級"#安全審計"1)執行下列語(yǔ)句:show variables like 'log_%'查看輸出的日志內容是否覆蓋到所有用戶(hù),記錄審計記錄覆蓋內容2)核查是否采取第三方工具增強MySQL日志功能。若有,記錄第三方審計工具的審計內容,查看是否包括事件的日期和時(shí)間、用戶(hù)、事件類(lèi)型、事件是否成功及其他與審計相關(guān)的信息"#入侵防范"訪(fǎng)談MySQL補丁升級機制,查看補丁安裝情況:1)執行如下命令查看當前補于版本:show variables where variable name like ""version""2)訪(fǎng)談數據庫是否為企業(yè)版,是否定期進(jìn)行漏洞掃描,針對高風(fēng)險漏洞是否評估補丁并經(jīng)測試后再進(jìn)行安裝"檢查是否對錯誤日志進(jìn)行管理:show variables like 'log_error';檢查是否配置二進(jìn)制日志:show variables like 'log_bin';show binary logs;檢查是否配置通用查詢(xún)日志安全:show variables like '%general%';檢查是否設置禁止MySQL對本地文件存?。?/span>show variables like 'local_infile';load data local infile 'sqlfile.txt' into table users fields terminated by ',';檢查test是否已被刪除:show databases;檢查是否對無(wú)關(guān)賬號進(jìn)行管理:SELECT user,host FROM mysql.user WHERE user = '';檢查是否對user授權表進(jìn)行控制:SELECT * FROM mysql.user\G;SELECT user,host from mysql.user where (select_priv='Y') or (insert_priv='Y') or (update_priv='Y') or (create_priv='Y') or (drop_priv='Y');select user, host from mysql.user where File_priv = 'Y';select user, host from mysql.user where Process_priv = 'Y';select user, host from mysql.user where Super_priv = 'Y';SELECT user, host FROM mysql.user WHERE Shutdown_priv = 'Y';SELECT user, host FROM mysql.user WHERE Create_user_priv = 'Y';SELECT user, host FROM mysql.user WHERE Reload_priv = 'Y';SELECT user, host FROM mysql.db WHERE Grant_priv = 'Y';檢查是否對db授權表進(jìn)行控制:SELECT * FROM mysql.db\G;SELECT user, host FROM mysql.db WHERE db='mysql' AND ((select_priv='Y') OR (insert_priv='Y') OR (update_priv='Y') OR (delete_priv='Y') OR (create_priv='Y') OR (drop_priv='Y'));SELECT user,host,db FROM mysql.db WHERE select_priv='Y' OR insert_priv='Y' OR update_priv='Y' OR delete_priv='Y' OR create_priv='Y' OR drop_priv='Y' OR alter_priv='Y';檢查是否對賬號運行權限進(jìn)行管理:select * from mysql.user\G;show grants;檢查是否配置了單個(gè)用戶(hù)最大連接數:show variables like '%max_connections%'; //整個(gè)服務(wù)器show variables like 'max_user_connections'; //單個(gè)用戶(hù)最大連接數檢查默認管理員賬號是否已更名:SELECT * from MySQL.user where user='root';select user,host from user;檢查是否使用默認端口:show global variables like 'port';
Oracle
###oracle數據庫檢測相關(guān)命令######身份鑒別###查看數據庫所有用戶(hù)信息select * from sys.dba_profile;#查看賬戶(hù)修改時(shí)間(CTIME:創(chuàng )建時(shí)間、PTIME:修改時(shí)間、EXPTIME:過(guò)期時(shí)間、LTIME:鎖定時(shí)間)select * from dba_profiles, dba_userswhere dba_profiles.profile = dba_users.profileand dba_users.account_status='OPEN'and resource_name='PASSWORD_GRACE_TIME';#檢查Oracle是否啟用口令復雜度函數。select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_VERIFY_FUNCTION';#查看該口令復雜度函數的中對長(cháng)度的要求:select text from dba_source where name= 'PASSWORD_VERIFY_FUNCTION' order by line;#查看管理員賬戶(hù)所對應概要文件的FAILED_LOGIN_ATTEMPTS(登錄失敗次數)的參數值select limit from dba_profiles where profile='DEFAULT' and resource_name='FAILED_LOGIN_ATTEMPTS';select * from dba_profiles order by 1;#查看管理員賬戶(hù)所對應概要文件的PASSWORD_LOCK_TIME(鎖定時(shí)間)的參數值。select limit from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LOCK_TIME';#超時(shí)的空閑遠程連接是否自動(dòng)斷開(kāi)根據實(shí)際需要設置合適的數值。在$ORACLE_HOME/network/admin/sqlnet.ora中設置下面參數:SQLNET.EXPIRE_TIME=10##訪(fǎng)問(wèn)控制###查看所有賬戶(hù)(是否存在默認或空口令賬戶(hù):sys,system,dbsnmp,sysman,mgmt_view5)select username,password from dba_users;##查看管理用戶(hù)權限分配情況###查看被賦予DBA角色的賬戶(hù)select * from DBA_ROLE_PRIVS where GRANTED_ROLE='DBA';#查看賬戶(hù)“USERNAME”所擁有的角色select * from dba_role_privs where GRANTEE='USERNAME';#查看賬戶(hù)“ROLENAME”所擁有的角色select * from dba_role_privs where GRANTEE='ROLENAME';#查看賬戶(hù)名為“USERNAME”以及該賬戶(hù)擁有的角色“ROLENAME”的系統權限;select * from DBA_SYS_PRIVS where GRANTEE='USERNAME’or GRANTEE='ROLENAME’;#查看賬戶(hù)名為“USERNAME”以及該賬戶(hù)擁有的角色“ROLENAME”的對象權限。select * from DBA_TAB_PRIVS where GRANTEE='USERNAME’or GRANTEE='ROLENAME’;#查看數據庫重要的表的訪(fǎng)問(wèn)控制權限(A為表名)select * from dba_tab_privs where table_name = A;##安全審計###查看系統的審計功能是否開(kāi)啟(None/False未開(kāi)啟,DB/TURE開(kāi)啟,DB只記錄連接信息,DB,Extended除連接信#息還包含當時(shí)執行的具體語(yǔ)句’,OS審計寫(xiě)入一個(gè)操作系統文件)show parameters audit_trail;select value from v$parameter where name='audit_trail';#查看是否對所有sys用戶(hù)的操作進(jìn)行了記錄;show parameter audit_sys_operations;#查看是否對sel,upd,del,ins操作進(jìn)行了審計select sel,upd,del,ins from DBA_OBJ_AUDIT_OPTS;#查看針對權限的審計規則配置情況select * from DBA_PRIV_AUDIT_OPTS;##入侵防范#設定信任IP集cat $ORACLE_HOME/network/admin/sqlnet.ora1.限制超級管理員遠程登錄檢查方法:使用sqlplus檢查參數設置。SQL> show parameter REMOTE_LOGIN_PASSWORDFILE,參數REMOTE_LOGIN_PASSWORDFILE設置為NONE;修訂算法:SQL> alter system set remote_login_passwordfile=none scope=spfile;SQL> shutdown immediateSQL> startup2.用戶(hù)屬性控制檢查方法:查詢(xún)視圖dba_profiles和dba_users來(lái)檢查profile是否創(chuàng )建。SQL> Select profile from dba_profiles;SQL> Select profile from dba_users;存在default以外的profile即可修訂算法:SQL> create profile maintenance limit PASSWORD_VERIFY_FUNCTION F_PASSWORD_VERIFYPASSWORD_REUSE_MAX 5PASSWORD_GRACE_TIME 60FAILED_LOGIN_ATTEMPTS 6PASSWORD_LIFE_TIME 90;3.數據字典訪(fǎng)問(wèn)權限檢查方法:使用sqlplus檢查參數,SQL> show parameter O7_DICTIONARY_ACCESSIBILITY參數O7_DICTIONARY_ACCESSIBILITY設置為FALSE修訂算法:SQL> alter system set O7_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile;SQL> shutdown immediateSQL> startup4.賬戶(hù)口令的生存期檢查方法:執行select dba_profiles.profile,resource_name, limitfrom dba_profiles, dba_userswhere dba_profiles.profile = dba_users.profileand dba_users.account_status='OPEN'and resource_name='PASSWORD_GRACE_TIME';查詢(xún)結果中PASSWORD_GRACE_TIME小于等于90。修訂算法:SQL> alter profile default limit PASSWORD_GRACE_TIME 60;5.重復口令使用檢查方法:執行select dba_profiles.profile,resource_name, limitfrom dba_profiles, dba_userswhere dba_profiles.profile = dba_users.profileand dba_users.account_status='OPEN'and resource_name='PASSWORD_REUSE_MAX';查詢(xún)結果中PASSWORD_REUSE_MAX大于等于5。修訂算法:SQL> alter profile default limit PASSWORD_REUSE_MAX 5;6.認證控制檢查方法:執行select dba_profiles.profile,resource_name, limitfrom dba_profiles, dba_userswhere dba_profiles.profile = dba_users.profileand dba_users.account_status='OPEN'and resource_name='FAILED_LOGIN_ATTEMPTS';查詢(xún)結果中FAILED_LOGIN_ATTEMPTS等于6。修訂算法:SQL>alter profile default limit FAILED_LOGIN_ATTEMPTS 6;7.更改默認帳戶(hù)密碼檢查方法:sqlplus '/as sysdba'conn system/systemconn system/managerconn sys/sysconn sys/cHAnge_on_installconn scott/scottconn scott/tigerconn dbsnmp/dbsnmpconn rman/rmanconn xdb/xdb以上均不能成功登錄修訂算法:不要有空口令和弱口令8.密碼更改策略檢查方法:執行select profile,limit from dba_profileswhere resource_name='PASSWORD_LIFE_TIME'and profile in (select profile from dba_users where account_status='OPEN');查詢(xún)結果中PASSWORD_LIFE_TIME小于等于90。修訂算法:SQL> alter profile default limit PASSWORD_LIFE_TIME 90;9.密碼復雜度策略檢查方法:執行select limit from dba_profileswhere resource_name = 'PASSWORD_VERIFY_FUNCTION'and profile in (select profile from dba_users where account_status = 'OPEN');select text from dba_source where name='PASSWORD_VERIFY_FUNCTION';查詢(xún)結果中不為“NULL”且策略為口令長(cháng)度至少8位,并包括數字、小寫(xiě)字母、大寫(xiě)字母和特殊符號4類(lèi)中至少3類(lèi)修訂算法:創(chuàng )建復雜度策略使用 sys 用戶(hù)登錄,執行如下腳本:D:\app\administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlpwdmg.sqloracle 10g, 必須使用sys用戶(hù)登錄,oracle 11g,可以使用 system創(chuàng )建;然后執行如下腳本:ALTER PROFILE DEFAULT LIMITPASSWORD_LIFE_TIME 90PASSWORD_GRACE_TIME 60PASSWORD_REUSE_TIME UNLIMITEDPASSWORD_REUSE_MAX 5FAILED_LOGIN_ATTEMPTS 6PASSWORD_LOCK_TIME 1PASSWORD_VERIFY_FUNCTION verify_function;10.數據庫審計策略檢查方法:1.使用參數設置,SQL> show parameter audit_trail參數audit_trail不為NONE。檢查dba_audit_trail視圖中或$ORACLE_BASE/admin/adump目錄下是否有數據。2.查看審計表,檢查是否有用戶(hù)登錄、操作記錄select * from LOGON_AUDIT.LOGON_AUDIT;修訂算法:SQL> alter system set audit_trail=os scope=spfile;SQL> shutdown immediateSQL> startup11.設置監聽(tīng)器密碼檢查方法:檢查$ORACLE_HOME/network/admin/listener.ora文件中是否設置參數PASSWORDS_LISTENER。修訂算法:$ ps -ef|grep tns$ lsnrctlLSNRCTL> set current_listener listenerLSNRCTL> change_passwordLSNRCTL> save_configLSNRCTL> set passwordLSNRCTL> exit12.限制用戶(hù)數量檢查方法:檢查文件/etc/group,確認除oracle安裝用戶(hù)無(wú)其它用戶(hù)在DBA組中。修訂算法:13.使用數據庫角色(ROLE)來(lái)管理對象的權限檢查方法:檢查應用用戶(hù)未授予dba角色:select * from dba_role_privs where granted_role='DBA';修訂算法:create rolegrant 角色 to username;revoke DBA from username;14.連接超時(shí)設置檢查方法:檢查sqlnet.ora文件:$ cat $ORACLE_HOME/network/admin/sqlnet.ora查看文件中設置參數SQLNET.EXPIRE_TIME=15。修訂算法:$ vi sqlnet.oraSQLNET.EXPIRE_TIME=1015.安全補丁檢查方法:查看oracle補丁是否為最新,$ opatch lsinventory修訂算法:升級為最新補丁,需要Oracle Metalink 帳號下載安全補丁。16.可信IP地址訪(fǎng)問(wèn)控制檢查方法:1.檢查sqlnet.ora中是否設置tcp.validnode_checking = yes,tcp.invited_nodes :$ cat $ORACLE_HOME/network/admin/sqlnet.ora修訂算法:$ vi sqlnet.oratcp.validnode_checking = yestcp.invited_nodes = (ip1,ip2…)17.資源控制檢查方法:查看空閑超時(shí)設置:select profile,limit from dba_profiles where profile='DEFAULT' and resource_name='IDLE_TIME';修訂算法:IDLE_TIME返回結果應大于018.重要信息資源設置敏感標記檢查方法:1、詢(xún)問(wèn)數據庫管理員是否對重要數據設置了敏感標記2、檢查是否安裝Oracle Label Security 模塊:select username from dba_users;3、查看是否創(chuàng )建策略:select policy_name,status from dba_sa_policies;4、查看是否創(chuàng )建級別:select * from dba_sa_levels order by level_num;5、查看標簽創(chuàng )建情況:select * from dba_sa_labels;6、詢(xún)問(wèn)重要數據存儲表格名稱(chēng)7、查看策略與模式、表對應關(guān)系:select * from dba_sa_table_policies;判斷是否針對重要信息資源設置敏感標簽。修訂算法:1、安裝了Oracle Label Security模塊2、可以查詢(xún)到Oracle Label Security對象的用戶(hù)LBACSYS3、創(chuàng )建了相應的策略4、創(chuàng )建了相應的級別5、創(chuàng )建了標簽6、針對重要數據設置了敏感標記
附一個(gè)作者收集的Oracle自動(dòng)化基線(xiàn)檢測腳本,大家可以進(jìn)一步優(yōu)化。
#!/bin/bash#version 2.1 此腳本在rhel,centos,oel系統均已測試通過(guò),適用于9i 10g 11g。但未在aix,solaris,unix測試,如果遇到問(wèn)題請自行微調。#Author: jn#Date: 2016.8HOSTNAME=`hostname`echo $HOSTNAME > orack.res.lstSQLPLUS=$ORACLE_HOME/bin/sqlplus$SQLPLUS "/ as sysdba" << EOF------- 設置行寬、葉寬 ----------set line 150set pagesize 1000set feed offspool orack.res.lst------- 腳本開(kāi)始運行的時(shí)間 ------------select 'Started On ' || to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') started_time from dual;------- Oracle的版本 ------------select banner from v\$version;#select banner from v$version;------- 查看Oracle登錄認證方式 ----------show parameter remote_login_passwordfile------- 查看 oracle 用戶(hù)密碼HASH值 -----------select name,password from user\$;select name,password from user\$ where name in ( select username from dba_users where account_status='OPEN');------- 查看出于A(yíng)ctive狀態(tài)的帳號 ------------col username for a20col profile for a20select username,profile from dba_users where account_status='OPEN';set line 150set pagesize 1000col profile for a20col resource_name for a30col resource for a25col limit for a30select * from dba_profiles;select * from dba_profiles where profile='DEFAULT';------- 查看是否開(kāi)啟了資源限制 ------------show parameter resource_limit-------查看審計開(kāi)啟情況-----show parameter audit------- 查看密碼方面的限制 ------------col resource_name for a40col limit for a20col profile for a40select resource_name,limit,profile from dba_profiles where resource_type='PASSWORD';------- 查看哪些用戶(hù)具有DBA權限 ---------------col grantee for a15col granted_role for a15col admin_option for a15col default_role for a15select * from dba_role_privs where grantee in ( select username from dba_users where account_status='OPEN') and granted_role='DBA' order by grantee;------- 查詢(xún)視圖dba_tab_privs被授予了public角色和執行權限表的數量 -------select count(*) table_name from dba_tab_privs where grantee='PUBLIC' and privilege='EXECUTE' and table_name in ('UTL_FILE', 'UTL_TCP', 'UTL_HTTP', 'UTL_SMTP', 'DBMS_LOB', 'DBMS_SYS_SQL', 'DBMS_JOB');------- 查看激活用戶(hù)的配置情況 -------select * from dba_profiles where profile in (select profile from dba_users where account_status='OPEN') and limit NOT IN('DEFAULT','UNLIMITED','NULL');------- 查看第三方審計工具的安裝情況 -------SELECT * FROM V\$OPTION WHERE PARAMETER = 'Oracle Database Vault';#SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';------- 查看oracle最大連接數-------show parameter processes;------- 查看非系統用戶(hù)角色被授予dba的用戶(hù)的數量 -------select count(a.username) from dba_users a left join dba_role_privs b on a.username = b.grantee where granted_role = 'DBA' and a.username not in ('SYS','SYSMAN','SYSTEM');------- 查看數據庫會(huì )話(huà) -------show parameter sessions;------- 當sql92_security被設置成TRUE時(shí),對表執行UPDATE/DELETE操作時(shí)會(huì )檢查當前用戶(hù)是否具備相應表的SELECT權限 --------show parameter sql92_security;------- O7_DICTIONARY_ACCESSIBILITY參數控制對數據字典的訪(fǎng)問(wèn).設置為true,如果用戶(hù)被授予了如select any table等any table權限,用戶(hù)即使不是dba或sysdba用戶(hù)也可以訪(fǎng)問(wèn)數據字典,建議為false -------show parameter O7_DICTIONARY_ACCESSIBILITY;spool offEOF# Oracle Port Numberecho -e "\n\n" >> orack.res.lstecho "----------Port 1521 in listener.ora----------" >> orack.res.lstecho "" >> orack.res.lstLISTEN_ORA=$ORACLE_HOME/network/admin/listener.oraSQLNET_ORA=$ORACLE_HOME/network/admin/sqlnet.oraif [ -f $LISTEN_ORA ];thengrep 1521 $LISTEN_ORA >> orack.res.lstelseecho "File $LISTEN_ORA Is Not Exists!!!" >> orack.res.lstfi# Listener Passwordecho -e "\n" >> orack.res.lstecho "----------Listener Password in listener.ora----------" >> orack.res.lstecho "" >> orack.res.lstif [ -f $LISTEN_ORA ];thengrep -i PASSWORDS_LISTENER $LISTEN_ORA >> orack.res.lstelseecho "File $LISTEN_ORA Is Not Exists!!!" >> orack.res.lstfi# SQLNET TIMEOUTecho -e "\n" >> orack.res.lstecho "----------sqlnet timeout in sqlnet.ora----------" >> orack.res.lstecho "" >> orack.res.lstif [ -f $SQLNET_ORA ];thengrep -i SQLNET.EXPIRE_TIME $SQLNET_ORA >> orack.res.lstelseecho "File $SQLNET_ORA Is Not Exists!!!" >> orack.res.lstfi# SQLNET Trusted IPecho -e "\n" >> orack.res.lstecho "----------sqlnet trusted IP in sqlnet.ora----------" >> orack.res.lstecho "" >> orack.res.lstif [ -f $SQLNET_ORA ];thenegrep -i "tcp.validnode_checking|tcp.invited_nodes|tcp.excluded_nodes" $SQLNET_ORA >> orack.res.lstelseecho "File $SQLNET_ORA Is Not Exists!!!" >> orack.res.lstfiecho -e "\n\n" >> orack.res.lstecho "========================== End On `date` ==========================" >> orack.res.lst
