王桃群
摘要:數(shù)據(jù)庫的安全性指的是防止非法用戶訪問數(shù)據(jù)庫,避免造成數(shù)據(jù)的泄露、更改或破壞,以達(dá)到保護(hù)數(shù)據(jù)庫的目的。為提高SQL Server數(shù)據(jù)庫的安全性,可考慮修改端口、使用強(qiáng)密碼、靈活運(yùn)用觸發(fā)器等辦法。
關(guān)鍵詞:修改端口;強(qiáng)密碼;觸發(fā)器
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)02-0001-01
1 修改SQL Server端口
默認(rèn)情況下,SQL Server數(shù)據(jù)庫引擎?zhèn)陕燭CP端口1433,啟動SQL Server 數(shù)據(jù)庫引擎實例后,可在CMD命令提示符窗口中執(zhí)行netstat命令來查看所有的連接及偵聽的端口。入侵者可利用相關(guān)工具掃描指定IP段的1433端口,從而對這些IP段內(nèi)開放了1433端口的SQL Server數(shù)據(jù)庫服務(wù)器進(jìn)行攻擊。為防止入侵者掃描1433端口,可修改SQL Server端口,具體操作步驟:(1)打開SQL Server的配置管理器,依次展開“SQL Server網(wǎng)絡(luò)配置”、“MSSQLSERVER的協(xié)議”,雙擊TCP/IP。(2)在“TCP/IP 屬性”對話框的“IP 地址”選項卡上,將顯示若干個 IP 地址,格式為:IP1、IP2…,一直到 IPAll。在“IPn 屬性”區(qū)域框的“TCP 端口”框中,輸入希望此 IP 地址偵聽的端口號,然后單擊“確定”。(3)重啟SQL Server服務(wù),端口就修改好了。
2 設(shè)置驗證模式、使用強(qiáng)密碼
SQL Server的安全管理機(jī)制包括身份驗證和訪問許可。其中,身份驗證有Windows身份驗證和混合驗證兩種模式。為提高數(shù)據(jù)庫的安全性,盡可能使用 Windows 身份驗證,當(dāng)用戶通過 Windows 賬號連接時,SQL Server 使用操作系統(tǒng)中的 Windows 主體標(biāo)記驗證賬號和密碼,也就是說,用戶身份由 Windows 進(jìn)行確認(rèn)。Windows 身份驗證使用 Kerberos 安全協(xié)議,提供有關(guān)強(qiáng)密碼復(fù)雜性驗證的密碼策略強(qiáng)制,還提供賬戶鎖定支持,并且支持密碼過期。
當(dāng)使用混合驗證模式時,由于SQL Server的管理員賬號sa廣為人知,且經(jīng)常成為惡意用戶的攻擊目標(biāo),因此,除非應(yīng)用程序需要使用 sa 賬戶,否則最好禁用該賬戶,此外,千萬不要為 sa 賬戶設(shè)置空密碼或弱密碼,因為入侵者可利用相關(guān)工具掃描SQL Server弱口令。如圖1,利用工具X-SCAN掃描得到主機(jī)10.106.1.27的SQL Server數(shù)據(jù)庫服務(wù)器的管理員賬戶sa的弱密碼。
一旦獲得sa賬戶的密碼,入侵者便可調(diào)用數(shù)據(jù)庫服務(wù)器中的系統(tǒng)存儲過程sp_configure來啟用擴(kuò)展存儲過程xp_cmdshell,從而利用xp_cmdshell將命令字符串作為操作系統(tǒng)命令 shell 執(zhí)行,并以文本行的形式返回所有輸出。例如,入侵者可通過執(zhí)行命令 exec xp_cmdshell 'net user hacker$ hacker888/add',從而在數(shù)據(jù)庫服務(wù)器所在的主機(jī)中新建一個系統(tǒng)賬號hacker$,接著,執(zhí)行命令exec xp_cmdshell 'net localgroup administrators hacker$ /add',將系統(tǒng)賬戶hacker$提升為管理員,從而就可入侵?jǐn)?shù)據(jù)庫服務(wù)器所在的主機(jī),后果便不堪設(shè)想了。
3 靈活運(yùn)用觸發(fā)器
SQL Server 包括三種類型的觸發(fā)器:DML 觸發(fā)器、DDL 觸發(fā)器和登錄觸發(fā)器。
(1)利用DDL觸發(fā)器可以防止用戶在指定的數(shù)據(jù)庫中創(chuàng)建對象、修改對象或刪除對象。例如,使用DDL觸發(fā)器來防止數(shù)據(jù)庫中的任一表被修改或刪除,同時將事件類型、發(fā)生時間、登錄賬號名等信息存儲在triggerLog表中。
CREATE TABLE triggerLog(info xml)
GO
CREATE TRIGGER tri_ForbidTable ON DATABASE FOR DROP_TABLE, ALTER_TABLE
AS
DECLARE @EventData AS xml
SET @EventData = EVENTDATA()
ROLLBACK
INSERT INTO triggerLog VALUES(EVENTDATA())
GO
(2)利用登錄觸發(fā)器可以審核和控制服務(wù)器會話,例如限制 SQL Server 的登錄名、登錄時間和登錄IP等。例如,使用登錄觸發(fā)器限制用戶sa只能在指定的時間段及指定的IP地址登錄數(shù)據(jù)庫服務(wù)器。
賬戶sa只能在時間段7時~18時、且只能在本機(jī)或IP地址為192.168.1.50 或 192.168.1.120的主機(jī)登錄數(shù)據(jù)庫服務(wù)器(如服務(wù)器名為jkx108),否則,登錄失敗,并顯示圖2所示的對話框。
4 結(jié)語
數(shù)據(jù)是一種極具價值的資源,對于一個組織機(jī)構(gòu)來說,部分或者全部數(shù)據(jù)可能具有戰(zhàn)略重要性,現(xiàn)在,許多組織機(jī)構(gòu)要求數(shù)據(jù)庫系統(tǒng)不間斷運(yùn)作,即所謂的“24×7”(一天24小時,一星期7天)不停機(jī)運(yùn)行模式。
參考文獻(xiàn):
[1] 王巖,貢正仙.數(shù)據(jù)庫原理、應(yīng)用與實踐(SQL Server).北京:清華大學(xué)出版社,2016.
[2] SQL Server 限制IP登陸(登陸觸發(fā)器運(yùn)用). http://www.cnblogs.com/gaizai/archive/2013/05/23/3095145.html,2013.