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