對(duì)于很多中小型企業(yè)來(lái)說(shuō),在搭建網(wǎng)站時(shí)往往采用的是ASP+Access數(shù)據(jù)庫(kù)的格式,維護(hù)和管理都比較方便。不過(guò),現(xiàn)在很多網(wǎng)站使用都是現(xiàn)成的整站模板,數(shù)據(jù)庫(kù)路徑是固定的。這樣黑客就很容易直接下載數(shù)據(jù)庫(kù)來(lái)掌握管理員的密碼信息,這對(duì)網(wǎng)站安全極為不利。
另外,黑客會(huì)使用各種注入工具來(lái)探測(cè)數(shù)據(jù)庫(kù)中的敏感信息。例如對(duì)于某網(wǎng)站來(lái)說(shuō),其數(shù)據(jù)庫(kù)路徑為“datasdata.mdb”,為 防 止黑客非法下載數(shù)據(jù)庫(kù),最好在網(wǎng)站根目錄下創(chuàng)建一個(gè)名稱比較復(fù)雜的文件夾(如“kpnqatyl2016”),將數(shù)據(jù)庫(kù)文件“data.mdb”移動(dòng)到該文件夾中,之后對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行更名處理,為其設(shè)置復(fù)雜的名稱(如“wfpl##^&&&((2016).asp”等 )。
注意,在修改數(shù)據(jù)庫(kù)文件路徑和名稱時(shí),不要按照某種規(guī)律(例如使用網(wǎng)站名、公司名等)進(jìn)行命名,而是盡可能的設(shè)置置毫無(wú)規(guī)律名稱格式。這樣的話,黑客就不容易猜測(cè)到數(shù)據(jù)庫(kù)文件存儲(chǔ)位置,自然無(wú)法直接下載數(shù)據(jù)庫(kù)文件了。
當(dāng)然,為了讓網(wǎng)站可以順利運(yùn)行,必須對(duì)數(shù)據(jù)庫(kù)連接 文 件(例 如“conn.asp”等)中的相關(guān)連接信息進(jìn)行修改,使之可以正確的訪問(wèn)數(shù)據(jù)庫(kù)。在IIS管理器中選擇目標(biāo)網(wǎng)站,在網(wǎng)站目錄列表中選擇數(shù)據(jù)庫(kù)所在的文件夾,雙擊右側(cè)的“HTTP重定向”項(xiàng),在彈出界面中勾選“將請(qǐng)求重定向到此目標(biāo)”項(xiàng),輸入對(duì)應(yīng)網(wǎng)址(例如本站地址等)。如果是IIS 6等組件,可以在IIS管理器中選擇數(shù)據(jù)庫(kù)目錄,在其屬性窗口中的“文件”面板中選擇“重定向到URL”項(xiàng),輸入目標(biāo)網(wǎng)址即可。這樣,黑客即使知道了數(shù)據(jù)庫(kù)的存儲(chǔ)位置,也無(wú)法進(jìn)行下載操作。
為了提高網(wǎng)站的安全性,很多整站程序都提供了認(rèn)證功能,即在登錄后臺(tái)管理界面時(shí),不僅要輸入管理員賬戶名稱和密碼,還需要輸入認(rèn)證碼。不過(guò)默認(rèn)情況下認(rèn)證碼是固定的,這對(duì)網(wǎng)站安全很不利。
為此,可以進(jìn)入后臺(tái)管理界面,在網(wǎng)站配置之類的設(shè)置頁(yè)面中的“登錄認(rèn)證”欄中進(jìn)行修改,盡量設(shè)置比較復(fù)雜的認(rèn)證碼。在默認(rèn)情況下,后臺(tái)管理程序的目錄是固定的(如“admin”等),黑客可以很容易猜測(cè)到。現(xiàn)在有很多掃描工具內(nèi)置了大量的后臺(tái)管理路徑信息,可以讓黑客毫不費(fèi)力地找到網(wǎng)站后臺(tái)管理路徑,這會(huì)給黑客的入侵帶來(lái)便利。
因此,最好對(duì)其名稱進(jìn)行修改,例如為后臺(tái)管理目錄設(shè)置復(fù)雜的名稱。一些網(wǎng)站允許直接手工修改后臺(tái)路徑名稱,有些則需要先進(jìn)入管理界面,在“后臺(tái)管理目錄”之類的項(xiàng)目中對(duì)其進(jìn)行修改,之后再修改具體的后臺(tái)文件夾名稱。為了防止黑客入侵,可以使用系統(tǒng)權(quán)限對(duì)其進(jìn)行防控。例如,為網(wǎng)站目錄單獨(dú)設(shè)置一個(gè)賬戶,為其分配合適的權(quán)限,只允許其對(duì)數(shù)據(jù)庫(kù)目錄和文件上傳之類的目錄擁有讀寫(xiě)權(quán)限,對(duì)于其他目錄一律禁止執(zhí)行寫(xiě)入操作。對(duì)于擁有寫(xiě)入權(quán)限的目錄,取消其運(yùn)行權(quán)限,這樣可以有效防止黑客上傳運(yùn)行惡意腳本程序。對(duì)于普通的文件,則只為其配置讀取權(quán)限。在不影響網(wǎng)站正常運(yùn)行的前提下,將網(wǎng)站目錄的控制權(quán)限設(shè)置的越小,對(duì)于網(wǎng)站的安全越有利。
當(dāng)然,任何網(wǎng)站程序都不可避免的存在漏洞,黑客往往可以借助這些漏洞實(shí)施入侵。因此,對(duì)網(wǎng)站及時(shí)進(jìn)行升級(jí),可以有效的封堵漏洞,不給黑客入侵的可乘之機(jī)。
在較大型網(wǎng)站中,一般都會(huì)采用SQL Server作為后臺(tái)數(shù)據(jù)庫(kù)。同Access相比,SQL Serve數(shù)據(jù)庫(kù)功能要更加強(qiáng)大和復(fù)雜。如果沒(méi)有進(jìn)行正確的安全配置,很容易遭到攻擊。
例如,當(dāng)安裝SQL Server服務(wù)時(shí),其啟動(dòng)賬戶往往會(huì)被設(shè)置為SYSTEM賬戶,或者為其指定某個(gè)權(quán)限較大的賬戶。如果數(shù)據(jù)庫(kù)連接密碼為空或比較簡(jiǎn)單,黑客可以很輕松的將其破解。
如果服務(wù)器上配置了終端服務(wù)的遠(yuǎn)控工具,那么該機(jī)的控制權(quán)就會(huì)落入黑客之手。實(shí)際上,黑客也可以在瀏覽器地址欄中輸入各種指令進(jìn)行滲透操作,例如執(zhí)行命令、添加數(shù)據(jù)等。從安全角度考慮,合理調(diào)整SQL Server服務(wù)登錄賬戶權(quán)限,可以有效解決上述問(wèn)題。
在CMD窗 口 執(zhí) 行“net user sqlguanli p[]!@#@123456”之類命令,創(chuàng)建某個(gè)普通賬戶(本例為“sqlguanli”),并設(shè)置盡可能復(fù)雜的密碼。默認(rèn)情況下會(huì)安裝到C盤(pán)。在C盤(pán)屬性窗口中的“安全”面板中點(diǎn)擊“添加”按鈕將上述賬戶添加進(jìn)來(lái)。
選中該賬戶,在權(quán)限列表中只保留讀取和列出文件夾目錄項(xiàng),取消運(yùn)行和讀取權(quán)限。在SQL Server安裝目錄的屬性窗口中打開(kāi)“安全”面板,在“組或用戶名稱”列表中刪除SYSTEM賬戶,點(diǎn)擊“添加”按鈕,導(dǎo)入上述賬戶。選中該賬戶,將其全選設(shè)置為完全控制。運(yùn)行“services.msc”程序,在服務(wù)管理界面中 雙 擊“MSSQLServer”項(xiàng),在其屬性窗口中的“登錄”面板中選擇“此賬戶”項(xiàng),點(diǎn)擊“瀏覽”按鈕,選擇上述“sqlguanli”賬戶,并輸入密碼。之后在“MSSQLServer”服務(wù)項(xiàng)目右擊“重新啟動(dòng)”項(xiàng),就可以讓上述配置生效。
密碼安全性對(duì)于任何系統(tǒng)來(lái)說(shuō)都是極為重要的。在SQl Server中默認(rèn)的管理員賬戶為SA,該賬戶無(wú)法刪除或修改。在很多入侵案例中,黑客都會(huì)想方設(shè)法破譯SA密碼。為保護(hù)數(shù)據(jù)庫(kù)安全,必須為其設(shè)置高強(qiáng)度密碼。
在SSMS中打開(kāi)新建查詢窗口,執(zhí)行“Use master”和“Select name,Password from syslogins where Password is null”命 令 可以檢測(cè)密碼為空的賬戶。如果存在該類賬戶,可執(zhí)行“EXEC sp_password NULL "password", "username "”命令來(lái)設(shè)置復(fù)雜密碼,其中“username”為需要目標(biāo)賬戶名,“password”為具體的密碼。
為避開(kāi)黑客攻擊,最好不要使用SA賬戶登錄數(shù)據(jù)庫(kù)。可以執(zhí)行諸如“exec master.dbo.sp_addlogin username password;--”和“exec master.dbo.sp_addsrvrolemember username,sysadmin;--”等命令,創(chuàng)建具有管理權(quán)限的賬戶,對(duì)SQL Server數(shù)據(jù)庫(kù)進(jìn)行管理操作。其中“username”為需要目標(biāo)賬戶名,“password”為具體的密碼。在網(wǎng)站程序中,盡量不要使用具有管理員權(quán)限的賬戶連接數(shù)據(jù)庫(kù),如果網(wǎng)站存在注入等漏洞,會(huì)對(duì)數(shù)據(jù)庫(kù)構(gòu)成很大威脅。因此,可以為目標(biāo)數(shù)據(jù)庫(kù)單獨(dú)配置賬戶,讓該賬戶只擁有public和db_owner權(quán)限,而且不要讓擁有db_owner權(quán)限賬戶具備備份數(shù)據(jù)庫(kù)的權(quán)力。數(shù)據(jù)庫(kù)文件不要放置在默認(rèn)目錄中,并為其配置合適的控制權(quán)限。
黑客之所以可以利用工具連接數(shù)據(jù)庫(kù)并執(zhí)行各種危險(xiǎn)的命令,是因?yàn)槔昧藬?shù)據(jù)庫(kù)中的相關(guān)存儲(chǔ)進(jìn)程。在SQL Server中存在一些常用的存儲(chǔ)進(jìn)程,這雖然對(duì)開(kāi)發(fā)者很有用,不過(guò)也給黑客的入侵打開(kāi)了大門。例如黑客可利用“xp_cmdshell”進(jìn)程直接執(zhí)行各種系統(tǒng)命令,還可看到回應(yīng)信息。在SSMS中打開(kāi)新建查詢窗口,執(zhí)行“use master”、“exec sp_dropextendedproc"xp_cmdshell"”、“drop procedure sp_makewebtask”命令,可以刪除改存儲(chǔ)過(guò)程。對(duì)于SQL Server 2008來(lái)說(shuō),可以執(zhí)行“EXEC sp_configure'show advanced options', 0;”和“EXEC sp_configure 'xp_cmdshell', 0;”命令,來(lái)禁用“xp_cmdshell”存儲(chǔ)進(jìn)程。
使用同樣的方法,對(duì)“xp_dirtree”、“xp_enumgroups”、“xp_fixeddrives”、“xp_l o g i n c o n f i g”、“ x p_enumerrorlogs”、“xp_delete_file”、“xp_regread”、 “xp_getfiledetails”、“sp_OACreate”,“sp_OADestroy”、“sp_OAGetErrorInfo”、“sp_OAGetProperty”、“sp_OAMethod”、“sp_O A S e t P r o p e r t y”、“ s p_O A S t o p”、“ x p_regaddmultistring”、“xp_regdeletevalue”、“xp_regenumkeys”、“xp_regenumvalues”、“xp_regread”等存儲(chǔ)進(jìn)程也應(yīng)該刪除。當(dāng)然,刪除了某些存儲(chǔ)進(jìn)程,也會(huì)影響到一些功能。例如刪除“xp_cmdshell”存儲(chǔ)進(jìn)程,將無(wú)法遠(yuǎn)程連接數(shù)據(jù)庫(kù)等。刪除“xp_fixeddrives”存儲(chǔ)進(jìn)程,將無(wú)法還原數(shù)據(jù)庫(kù)等。
刪除上述存儲(chǔ)進(jìn)程后并非可以高枕無(wú)憂了,使用“use master”、“exec sp_addtendedproc "xp_cmdshell" ,@dllname='xplog70.dll'”、 “exec sp_addextendedproc "xp_enumerrorlogs" ,@dllname='xpstart.dll'” 等 指 令可以恢復(fù)對(duì)應(yīng)的存儲(chǔ)進(jìn)程。對(duì)于SQL Server 2008來(lái)說(shuō),可以執(zhí)行“EXEC sp_configure 'show advanced options',1;” 和“EXEC sp_configure 'xp_cmdshell',1”之類的命令來(lái)啟用“xp_cmdshell”等存儲(chǔ)進(jìn)程。如果需要徹底刪除存在安全隱患的進(jìn)程,可以將對(duì)應(yīng)的DLL文件刪除,例如“xplog70.dll”、“xpstart.dll”、“odsole70.dll”、“spweb70.dll”等。為便于自己使用,可以將這些DLL文件更名或移動(dòng)到其他目錄。
默認(rèn)情況下,SQL Server使用的是TCP 1433端口,黑客如果掃描到該端口開(kāi)啟,就可斷定目標(biāo)主機(jī)安裝了SQL Server。因此,修改該端口可以有效保護(hù)SQL Servr主機(jī)安全。例如在SQL Server 2008中,可以打開(kāi)配置管理器,在窗口左側(cè)選擇“SQL Server配置管理器(本地)→SQL Server網(wǎng)絡(luò)配置→MSSQLSERVER”項(xiàng),在右側(cè)雙擊“TCP/IP”項(xiàng),在屬性窗口中的“協(xié)議”面板中的“全部偵聽(tīng)”欄選擇“是”,在“IP地址”欄中將“TCP端口”修改為別的端口號(hào)。在SQL Server配置管理器左側(cè)選擇“SQL Server配置管理器(本地)→SQL Native Client10.0配置→客戶端協(xié)議”項(xiàng),在右側(cè)雙擊“TCP/IP”項(xiàng),在屬性窗口中的“默認(rèn)端口”欄中修改端口號(hào)。
為避免在客戶端和SQL Server服務(wù)器端之間的通訊被監(jiān)聽(tīng),可以使用SSL協(xié)議進(jìn)行加密。例如對(duì)于SQL Server 2005來(lái) 說(shuō),可以在服務(wù)器端安裝證書(shū)服務(wù),之后進(jìn)入證書(shū)申請(qǐng)站點(diǎn)申請(qǐng)證書(shū),并執(zhí)行安裝。在SQL Server配置管理器中打開(kāi)MSSQLSERVER協(xié)議屬性窗口,在“Flags”面板中將“ForceEncryption”值設(shè)為“Yes”,在“Certificate”面板中的“Certificate”列表中顯示安裝的證書(shū)信息。重啟SQL Server服務(wù),讓配置生效。在SSMS連接窗口中的“Connection Properties”面 板 中 選 擇“Encrypt connection”項(xiàng),客戶端就可以使用SSL實(shí)現(xiàn)加密傳輸。
當(dāng)然,為有效提高SQL Server數(shù)據(jù)庫(kù)安全性,必須及時(shí)安裝安全補(bǔ)丁,堵住黑客入侵的通道。為避免因數(shù)據(jù)庫(kù)受損造成網(wǎng)站運(yùn)行異常,應(yīng)該定時(shí)進(jìn)行備份,在出現(xiàn)問(wèn)題時(shí)可以快速恢復(fù)數(shù)據(jù)庫(kù)的正常運(yùn)作。
很多網(wǎng)站是PHP開(kāi)發(fā)的,與其搭配的是MySQL數(shù)據(jù)庫(kù),因體積小、速度快、使用成本
低等優(yōu)點(diǎn)受到很多用戶青睞。相比ASP+Access模式,PJP+MySQL類型網(wǎng)站安全性要高一些。
不過(guò),黑客并沒(méi)有放棄對(duì)該類網(wǎng)站的攻擊。在默認(rèn)情況下,MySQL是以系統(tǒng)權(quán)限啟動(dòng)的,權(quán)限越高安全性就越嚴(yán)峻。但黑客破譯了MySQL密碼,就會(huì)通過(guò)自定義函數(shù)的方法執(zhí)行各種系統(tǒng)命令等。因此,讓MySQL在較低級(jí)別賬戶下運(yùn)行,可以提高其安全性。
在CMD窗口中使用“net user”命令創(chuàng)建一個(gè)普通賬戶,并設(shè)置復(fù)雜的密碼,例如“mysqlguanli”。運(yùn)行“l(fā)usrmgr.msc”命令,在賬戶管理窗口中打開(kāi)該賬戶的屬性窗口,在“隸屬于”面板中刪除所有相關(guān)組名,使其不隸屬于任河組。選擇MySQL安裝目錄,在屬性窗口中的“安全”面板中點(diǎn)擊“添加”按鈕,導(dǎo)入上述賬戶,并為其分配完全控制權(quán)限。運(yùn)行“services.msc”命令,在服務(wù)管理器中雙擊“MySQL”項(xiàng),在屬性窗口中的“登錄”面板選擇“此賬戶”項(xiàng),點(diǎn)擊“瀏覽”按鈕,導(dǎo)入上述賬戶,并輸入密碼。之后重啟MySQL服務(wù)使配置生效。這樣就可以利用普通賬戶的身份啟動(dòng)MySQL服務(wù)。
MySQL中的Root賬戶重要性不言自喻,如果密碼為空或較弱,會(huì)對(duì)MySQL數(shù)據(jù)庫(kù)造成很大威脅。因此,可以采取更名的方式避開(kāi)黑客注意。
在MySQL命令行中執(zhí)行“Use mysql;”、“Update user set users="newuser"where user="root";”、“Flushprivileges;” 命令,可以將Root賬戶更名為“newuser”。 當(dāng) 然,您可以根據(jù)實(shí)際需要對(duì)其更名。僅僅更名是不夠的,最重要的是需要設(shè)置復(fù)雜的密碼。執(zhí)行“Use mysql;”、“updateuser set Users='newuser',Password=passwo rd('pl1234567889@#');”、“Flush privileges;”等命令,為其設(shè)置復(fù)雜的密碼。
MySQL默認(rèn)端口號(hào)為3306,這無(wú)疑會(huì)暴露其身份。為此,可以將其修改為不常用的端口來(lái)迷惑黑客。打開(kāi)MySQL的配置文件“my.ini”,將其中的“port=3306”修改為合適的端口號(hào)即可。
MySQL雖然小巧實(shí)用,不過(guò)難免會(huì)存在各種漏洞(例如緩沖區(qū)漏洞等),一旦被黑客利用,就會(huì)對(duì)數(shù)據(jù)庫(kù)安全造成威脅。所以及時(shí)關(guān)注網(wǎng)上發(fā)布的相關(guān)公告,為MySQL打上補(bǔ)丁,是提高其安全性的最佳方式。當(dāng)然,也可以采用升級(jí)版本的方式,使用新版的MySQL,也可以有效防御舊版本中的漏洞。
在眾多的數(shù)據(jù)庫(kù)中,Oracle可謂大名鼎鼎。其配置和使用較之于上述數(shù)據(jù)庫(kù)都比較復(fù)雜,不過(guò)仍防不住黑客對(duì)其攻擊的“熱情”。若不進(jìn)行合理安全配置,很容易招致黑客的侵襲。
例如筆者朋友所在單位某臺(tái)安裝了Oracle的服務(wù)器就遭到了黑客的破壞,對(duì)其分析后可以發(fā)現(xiàn)采用了利用SuperScan掃描的方式找到開(kāi)啟了1521端口的主機(jī),該端口是Oracle的TNS Listener的默認(rèn)監(jiān)控端口。TNS Listener負(fù)責(zé)建立和維護(hù)客戶端和Oracke數(shù)據(jù)之間的遠(yuǎn)程連接。通過(guò)掃描,黑客還發(fā)現(xiàn)其使用了終端服務(wù)。黑客直接在本機(jī)上安裝了對(duì)應(yīng)版本的Oracle,運(yùn)行“Lsnrctl”程序,使用“set current_listener IP”的方式連接目標(biāo)主機(jī),其中的IP為目標(biāo)主機(jī)IP。
連接完成后,使用“status”命令讓黑客了解了Oracle詳細(xì)的信息,包括Oracle安裝路徑,數(shù)據(jù)庫(kù)的SID等敏感數(shù)據(jù)。因?yàn)樵揙racle采用默認(rèn)的賬戶名和密碼,這給黑客入侵打開(kāi)了大門,黑客利用Sqlplus連接到Oracle數(shù)據(jù)庫(kù),毫不費(fèi)力的執(zhí)行各種系統(tǒng)命令,通過(guò)創(chuàng)建具有管理員權(quán)限的賬戶,并利用終端服務(wù)徹底控制了該服務(wù)器。
從以上真實(shí)的黑客入侵案例不難看出,雖然Oracle數(shù)據(jù)庫(kù)龐大復(fù)雜,依然需要提高其安全性。首先Oracle是安裝在操作系統(tǒng)之上的,因此必須保證系統(tǒng)的安全,才能談得上如何保護(hù)數(shù)據(jù)庫(kù)安全的問(wèn)題。例如安裝最新版本的系統(tǒng),將各種容易被黑客利用危險(xiǎn)系統(tǒng)服務(wù)(如“Remote Registry”等)關(guān)閉,為關(guān)鍵的文件夾設(shè)置嚴(yán)格的控制權(quán)限,配置嚴(yán)密的賬戶密碼策略,使用復(fù)雜的密碼保護(hù)系統(tǒng)安全,及時(shí)升級(jí)系統(tǒng)或打上各種補(bǔ)丁,修復(fù)可能存在的安全漏洞,利用防火墻攔截不法入侵行為等。
在Oracle中存在很多默認(rèn)賬戶,其默認(rèn)密碼如果不及時(shí)更改,會(huì)給Oracle數(shù)據(jù)庫(kù)帶來(lái)極大威脅。同上面談到的實(shí)際入侵案例中,可以看到黑客正是鉆了默認(rèn)密碼的空子。在Sqlplus命令行中執(zhí)行“Select *from DBA_USERS”命令,可以查看默認(rèn)用戶列表。當(dāng)安裝了Oracle之后,需要重置所有用戶的密碼,為其分別設(shè)置復(fù)雜的不相同的密碼。SCOTT之類賬戶的密碼也需要進(jìn)行修改,免得留下隱患。例如執(zhí)行“alter user sys indentified by Pnvz#$%123456;”和“alter user system indentified by ten@@%#12345;”命令,可以將sys和system賬戶密碼進(jìn)行修改。當(dāng)然,對(duì)于其他賬戶也可以按照上述方法進(jìn)行修改。在Pracle 10g中,所有的賬戶都處于鎖定狀態(tài),在需要時(shí)可以啟動(dòng)相應(yīng)的賬戶,這有力的提高了數(shù)據(jù)庫(kù)的安全性。
在Oracle10g中,為 遠(yuǎn)程管理TNS Listener上配置密碼,可以有效提高遠(yuǎn)程連接安全性。如果沒(méi)有為其設(shè)置密碼的話,可以使用“Change.password” 和“Setpassword”命令來(lái)為其設(shè)置所需的密碼。例如在“LSNRCTL>”提示符下執(zhí)行“ change_password”命令,輸入舊密碼后,設(shè)置新的密碼即可。之后執(zhí)行“status”命 令,在“Security”l欄中 顯 示“ON: Password or Local OSAuthentication”字樣,表示驗(yàn)證方式發(fā)生了改變。執(zhí)行“save_config”命令保存配置信息。打開(kāi)“l(fā)istener.ora”文件,可以看到相關(guān)的密碼信息。對(duì)用于管理遠(yuǎn)程連接的1521端口來(lái)說(shuō),很容易招致黑客掃描,所以需要進(jìn)行更改。在“LSNRCTL>”提示符下執(zhí)行“stop”命令,停止監(jiān)視器活動(dòng),打開(kāi)“l(fā)istener.ora”文件,對(duì)其中相關(guān)語(yǔ)句中的“port=1523”內(nèi)容進(jìn)行修改,設(shè)置為不常用的端口,之后執(zhí)行“start”命令重啟監(jiān)視器。此外,利用SSL加密傳輸,可以保證客戶端和Oracle數(shù)據(jù)庫(kù)主機(jī)通訊的安全。最后為Oracle及時(shí)安裝各種補(bǔ)丁也是保護(hù)其安全的有效方法。