一看ping 服務(wù)器IP能否ping通.
這個(gè)實(shí)際上是看和遠(yuǎn)程sql server 2000服務(wù)器的物理連接是否存在。如果不行,請(qǐng)檢查網(wǎng)絡(luò),查看配置,當(dāng)然得確保遠(yuǎn)程sql server 2000服務(wù)器的IP拼寫正確.
二 在Dos或命令行下輸入telnet 服務(wù)器IP 端口,看能否連通。
如telnet 202.114.100.100 1433
通常端口值是1433,因?yàn)?433是sql server 2000的對(duì)于Tcp/IP的默認(rèn)偵聽端口。如果有問(wèn)題,通常這一步會(huì)出問(wèn)題。通常的提示是“……無(wú)法打開連接,連接失敗"。如果這一步有問(wèn)題,應(yīng)該檢查以下選項(xiàng).
1 檢查遠(yuǎn)程服務(wù)器是否啟動(dòng)了sql server 2000服務(wù)。如果沒有,則啟動(dòng)。
2 檢查服務(wù)器端有沒啟用Tcp/IP協(xié)議,因?yàn)檫h(yuǎn)程連接(通過(guò)因特網(wǎng))需要靠這個(gè)協(xié)議。檢查方法是,在服務(wù)器上打開 開始菜單->程序->Microsoft SQL Server->服務(wù)器網(wǎng)絡(luò)實(shí)用工具,看啟用的協(xié)議里是否有tcp/ip協(xié)議,如果沒有,則啟用它。
3 檢查服務(wù)器的tcp/ip端口是否配置為1433端口。仍然在服務(wù)器網(wǎng)絡(luò)實(shí)用工具里查看啟用協(xié)議里面的tcp/ip的屬性,確保默認(rèn)端口為1433,并且隱藏服務(wù)器復(fù)選框沒有勾上。
事實(shí)上,如果默認(rèn)端口被修改,也是可以的,但是在客戶端做telnet測(cè)試時(shí),寫服務(wù)器端口號(hào)時(shí)必須與服務(wù)器配置的端口號(hào)保持一致。如果隱藏服務(wù)器復(fù)選框被勾選,則意味著客戶端無(wú)法通過(guò)枚舉服務(wù)器來(lái)看到這臺(tái)服務(wù)器,起到了保護(hù)的作用,但不影響連接,但是Tcp/ip協(xié)議的默認(rèn)端口將被隱式修改為2433,在客戶端連接時(shí)必須作相應(yīng)的改變。
4 如果服務(wù)器端操作系統(tǒng)打過(guò)sp2補(bǔ)丁,則要對(duì)windows防火墻作一定的配置,要對(duì)它開放1433端口,通常在測(cè)試時(shí)可以直接關(guān)掉windows防火墻(其他的防火墻也關(guān)掉******)。
5 檢查服務(wù)器是否在1433端口偵聽。如果服務(wù)器沒有在tcp連接的1433端口偵聽,則是連接不上的。檢查方法是在服務(wù)器的dos或命令行下面輸入
netstat -a -n 或者是netstat -an,在結(jié)果列表里看是否有類似 tcp 127.0.0.1 1433 listening 的項(xiàng)。如果沒有,則通常需要給sql server 2000打上至少sp3的補(bǔ)丁。其實(shí)在服務(wù)器端啟動(dòng)查詢分析器,輸入 select @@version 執(zhí)行后可以看到版本號(hào),版本號(hào)在8.0.2039以下的都需要打補(bǔ)丁。
如果以上都沒問(wèn)題,這時(shí)你再做telnet 服務(wù)器ip 1433 測(cè)試,將會(huì)看到屏幕一閃之后光標(biāo)在左上角不停閃動(dòng)。恭喜你,你馬上可以開始在企業(yè)管理器或查詢分析器連接了。
三 檢查客戶端設(shè)置
程序->Microsoft SQL Server -> 客戶端網(wǎng)絡(luò)使用工具。像在服務(wù)器網(wǎng)絡(luò)實(shí)用工具里一樣,確保客戶端tcp/ip協(xié)議啟用,并且默認(rèn)端口為1433(或其他端口,與服務(wù)器端保持一致就行)。
四 在企業(yè)管理器里或查詢那分析器連接測(cè)試
企業(yè)管理器->右鍵SQlserver組->新建sqlserver注冊(cè)->下一步->寫入遠(yuǎn)程IP->下一步->選Sqlserver登陸->下一步->寫入登陸名與密碼(sa,password)->下一步->下一步->完成
查詢分析器->文件->連接->寫入遠(yuǎn)程IP->寫入登錄名和密碼(sa,password)->確定
通常建議在查詢分析器里做,因?yàn)槟J(rèn)情況下,通過(guò)企業(yè)管理器注冊(cè)另外一臺(tái)SQL Server的超時(shí)設(shè)置是4秒,而查詢分析器是15秒。
修改默認(rèn)連接超時(shí)的方法:
企業(yè)管理器->工具->選項(xiàng)->在彈出的"SQL Server企業(yè)管理器屬性"窗口中,點(diǎn)擊"高級(jí)"選項(xiàng)卡->連接設(shè)置->在 登錄超時(shí)(秒) 后面的框里輸入一個(gè)較大的數(shù)字
查詢分析器->工具->選項(xiàng)->連接->在 登錄超時(shí)(秒) 后面的框里輸入一個(gè)較大的數(shù)字通常就可以連通了,如果提示錯(cuò)誤,則進(jìn)入下一步。
五 錯(cuò)誤產(chǎn)生的原因通常是由于SQL Server使用了"僅 Windows"的身份驗(yàn)證方式,因此用戶無(wú)法使用SQL Server的登錄帳戶(如 sa )進(jìn)行連接。解決方法如下所示:
1 在服務(wù)器端使用企業(yè)管理器,并且選擇"使用 Windows 身份驗(yàn)證"連接上 SQL Server。
2 展開"SQL Server組",鼠標(biāo)右鍵點(diǎn)擊SQL Server服務(wù)器的名稱,選擇"屬性",再選擇"安全性"選項(xiàng)卡。
3 在"身份驗(yàn)證"下,選擇"SQL Server和 Windows "。
4 重新啟動(dòng)SQL Server服務(wù)。(在dos或命令行下面net stop mssqlserver停止服務(wù),net start mssqlserver啟動(dòng)服務(wù),也是一種快捷的方法)。
附注:在連接本地服務(wù)器時(shí),通常使用的是命名管道協(xié)議(在服務(wù)器網(wǎng)絡(luò)實(shí)用工具里可以看到啟用的協(xié)議有這個(gè)),默認(rèn)端口是445,因此在本地能連通是不能說(shuō)明什么問(wèn)題的,連接遠(yuǎn)程服務(wù)器是完全不同的協(xié)議)
SQL Server 2000不能遠(yuǎn)程連接的問(wèn)題
本文主要是針對(duì) SQL Server 2000安裝在 Windows 2003上的問(wèn)題。
在 Windows 2003下,若sql2000不打補(bǔ)丁,則SQL Server 2000不會(huì)監(jiān)聽1433端口,這時(shí),可以在本機(jī)上連接數(shù)據(jù)庫(kù),但無(wú)法從其它機(jī)器連接。打過(guò)SP4補(bǔ)丁后才能遠(yuǎn)程連接,有時(shí),打過(guò)SP4補(bǔ)丁后,SQL Server 2000 默認(rèn)監(jiān)聽的端口不是1433,而是2433。
所以,安裝SQL Server 2000后,應(yīng)該先打 SP4 補(bǔ)丁,打完后,若是無(wú)法連接,請(qǐng)用 NetState -an 查看1433端口是否被監(jiān)聽。若監(jiān)聽的是2433,你可以在客戶端設(shè)置SQL Server 的端口,也可以用企業(yè)管理器,對(duì)服務(wù)器點(diǎn)右鍵 => 屬性 => 網(wǎng)絡(luò)配置 => 點(diǎn)中右邊的 TCP/IP 選擇屬性 即可修改SQL Server 監(jiān)聽的端口。
若是端口正常,請(qǐng)檢查 Win2003的防火墻中是不是把1433端口開放了。
卸載SQL Server2000后不能再次安裝的問(wèn)題解決方法?
只要?jiǎng)h除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\下的PendingFileRenameOperations鍵值,就可以重新安裝了。
HKEY_LOCAL_MACHINE\system\currentcontrolset\services\下面都是系統(tǒng)存在的服務(wù),刪除相應(yīng)的項(xiàng)
SQL Server安全性設(shè)置
1. 確認(rèn)已經(jīng)安裝了NT/2000和SQL Server的******補(bǔ)丁程序,不用說(shuō)大家應(yīng)該已經(jīng)安裝好了,但是我覺得******還是在這里提醒一下。
2. 評(píng)估并且選擇一個(gè)考慮到******的安全性但是同時(shí)又不影響功能的網(wǎng)絡(luò)協(xié)議。 多協(xié)議是明智的選擇, 但是它有時(shí)不能在異種的環(huán)境中使用。
3. 給 "sa" 和 "probe" 帳戶設(shè)定強(qiáng)壯的密碼來(lái)加強(qiáng)其安全性。設(shè)定一個(gè)強(qiáng)壯的密碼并將其保存在一個(gè)安全的地方。 注意: probe帳戶被用來(lái)進(jìn)行性能分析和分發(fā)傳輸。 當(dāng)在標(biāo)準(zhǔn)的安全模態(tài)中用的時(shí)候 , 給這個(gè)帳戶設(shè)定高強(qiáng)度的密碼能影響某些功能的使用。
4. 使用一個(gè)低特權(quán)用戶作為 SQL 服務(wù)器服務(wù)的查詢操作賬戶,不要用 LocalSystem 或sa。 這個(gè)帳戶應(yīng)該有***小的權(quán)利 ( 注意作為一個(gè)服務(wù)運(yùn)行的權(quán)利是必須的)和應(yīng)該包含( 但不停止)在妥協(xié)的情況下對(duì)服務(wù)器的攻擊。 注意當(dāng)使用企業(yè)管理器做以上設(shè)置時(shí) , 文件,注冊(cè)表和使用者權(quán)利上的 ACLs同時(shí)被處理。
5. 確定所有的 SQL 服務(wù)器數(shù)據(jù),而且系統(tǒng)文件是裝置在 NTFS 分區(qū),且appropraite ACLs 被應(yīng)用。 如果萬(wàn)一某人得到對(duì)系統(tǒng)的存取操作權(quán)限,該層權(quán)限可以阻止入侵者破壞數(shù)據(jù),避免造成一場(chǎng)大災(zāi)難。
6.如果不使用Xp_cmdshell就關(guān)掉。 如果使用 SQL 6.5, 至少使用Server Options中的SQLExecutieCmdExec 賬戶操作限制非sa用戶使用XP_cmdshell.
如果你不需要擴(kuò)展存儲(chǔ)過(guò)程xp_cmdshell請(qǐng)把它去掉。使用這個(gè)SQL語(yǔ)句:
use master
sp_dropextendedproc 'xp_cmdshell'
xp_cmdshell是進(jìn)入操作系統(tǒng)的******捷徑,是數(shù)據(jù)庫(kù)留給操作系統(tǒng)的一個(gè)大后門。如果你需要這個(gè)存儲(chǔ)過(guò)程,請(qǐng)用這個(gè)語(yǔ)句也可以恢復(fù)過(guò)來(lái)。
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
將xplog70.dll這個(gè)包徹底刪除。當(dāng)然如果覺得自己還有使用xp_cmdshell的可能,就將這個(gè)包改個(gè)名字好了~~
解決方法:運(yùn)行SQLSERVER管理工具,給SA帳號(hào)加上強(qiáng)壯密碼,還要在SQL命令行執(zhí)行:
“if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[xp_cmdshell]) and OBJECTPROPERTY(id, NIsExtendedProc) = 1) exec sp_dropextendedproc N[dbo].[xp_cmdshell] ”
GO
或: “use master sp_dropextendedproc xp_cmdshell”
這樣就算攻擊者獲得SA帳號(hào)密碼遠(yuǎn)程連接后,也不能調(diào)用CMDSHELL了。
if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].[xp_cmdshell]')and
OBJECTPROPERTY(id,N'IsExtendedProc')=1)
exec sp_dropextendedproc N'[dbo].[xp_cmdshell]'
GO
在任何的 isql/ osql 窗口中( 或查詢分析器):
use master
exec sp_dropextendedproc‘xp_cmdshell‘
對(duì) SQLExecutiveCmdExec 的詳細(xì)情況請(qǐng)查看下列文章:
http://support.microsoft.com/support/kb/article/Q159/2/21.
如果你不需要 xp_cmdshell 那請(qǐng)停用它。請(qǐng)記住一個(gè)系統(tǒng)系統(tǒng)管理員如果需要的話總是能把它增加回
來(lái)。這也好也不好 - 一個(gè)侵入者可能發(fā)現(xiàn)它不在,只需要把他加回來(lái)。考慮也除去在下面的 dll但是移除
之前必須測(cè)試因?yàn)橛行ヾll同時(shí)被一些程序所用。 要找到其他的程序是否使用相同的 dll: 首先得到該 dll 。
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and o.name=‘xp_cmdshell
其次,使用相同的 dll發(fā)現(xiàn)其他的擴(kuò)展儲(chǔ)存操作是否使用該dll。
select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and c.text=‘xplog70.dll‘
用戶可以用同樣的辦法處理下面步驟中其他你想去掉的進(jìn)程。
7. 如不需要就停用對(duì)象連接與嵌入自動(dòng)化儲(chǔ)存程序 ( 警告 - 當(dāng)這些儲(chǔ)存程序被停用的時(shí)候 , 一些企業(yè)管理器功能可能丟失). 這些包括:
Sp_OACreate
Sp_OADestroy
Sp_OAGetErrorInfo
Sp_OAGetProperty
Sp_OAMethod
Sp_OASetProperty
Sp_OAStop
如果你決定停用該進(jìn)程那么請(qǐng)給他們寫一個(gè)腳本這樣在以后你用到他們的時(shí)候你能夠把他們重新添加回來(lái) 。 記住, 我們?cè)谶@里正在做的是鎖定一個(gè)應(yīng)用程序的功能 - 你的開發(fā)平臺(tái)應(yīng)該放到其他機(jī)器上。
8. 禁用你不需要的注冊(cè)表存取程序。(同上面的警告)這些包括:
Xp_regaddmultistring
Xp_regdeletekey
Xp_regdeletevalue
Xp_regenumvalues
Xp_regremovemultistring
注意 :我過(guò)去一直在這里列出 xp_regread/ xp_regwrite但是這些程序的移除影響一些主要功能包括日志和SP的安裝,所以他們的移除不被推薦
9.移除其他你認(rèn)為會(huì)造成威脅的系統(tǒng)儲(chǔ)存進(jìn)程。 這種進(jìn)程是相當(dāng)多的,而且他們也會(huì)浪費(fèi)一些cpu時(shí)間。 小心不要首先在一個(gè)配置好的服務(wù)器上這樣做。首先在開發(fā)的機(jī)器上測(cè)試,確認(rèn)這樣不會(huì)影響到任何的系統(tǒng)功能。在下面是我們所推薦的有待你評(píng)估的一些列表:
sp_sdidebug
xp_availablemedia
xp_cmdshell
xp_deletemail
xp_dirtree
xp_dropwebtask
xp_dsninfo
xp_enumdsn
xp_enumerrorlogs
xp_enumgroups
xp_enumqueuedtasks
xp_eventlog
xp_findnextmsg
xp_fixeddrives
xp_getfiledetails
xp_getnetname
xp_grantlogin
xp_logevent
xp_loginconfig
xp_logininfo
xp_makewebtask
xp_msver xp_perfend
xp_perfmonitor
xp_perfsample
xp_perfstart
xp_readerrorlog
xp_readmail
xp_revokelogin
xp_runwebtask
xp_schedulersignal
xp_sendmail
xp_servicecontrol
xp_snmp_getstate
xp_snmp_raisetrap
xp_sprintf
xp_sqlinventory
xp_sqlregister
xp_sqltrace
xp_sscanf
xp_startmail
xp_stopmail
xp_subdirs
xp_unc_to_drive
xp_dirtree
10. 在企業(yè)管理器中"安全選項(xiàng)" 之下禁用默認(rèn)登錄。(只有SQL 6.5) 當(dāng)使用整合的安全時(shí)候,這使未經(jīng)認(rèn)可的不在 syslogins 表中使用者無(wú)權(quán)登陸一個(gè)有效的數(shù)據(jù)庫(kù)服務(wù)器。
11. 除去數(shù)據(jù)庫(kù)的guest賬戶把未經(jīng)認(rèn)可的使用者據(jù)之在外。 例外情況是master和 tempdb 數(shù)據(jù)庫(kù),因?yàn)閷?duì)他們guest帳戶是必需的。
12. 若非必須,請(qǐng)完全地禁用SQL郵件功能。它的存在使?jié)撛诘墓粽哌f送潛在的 trojans ,病毒或是簡(jiǎn)單實(shí)現(xiàn)一個(gè)DOS攻擊成為可能
13. 檢查master..Sp_helpstartup看有無(wú)可疑的木馬進(jìn)程。 確定沒有人已經(jīng)在這里放置秘密的后門程序。 使用 Sp_unmakestartup 移除任何可疑進(jìn)程。
14. 檢查master..Sp_password看有無(wú)trojan代碼。比較你的產(chǎn)品scripts和一個(gè)新安裝的系統(tǒng)的默認(rèn)scripts而且方便的保存。
15. 記錄所有的用戶存取訪問(wèn)情況。 從企業(yè)管理器做這些設(shè)定或通過(guò)以sa登陸進(jìn)入查詢分析器的下列各項(xiàng):
xp_instance_regwrite N‘HKEY_LOCAL_MACHINE‘, N‘SOFTWARE\ Microsoft\MSSQLServer\MSSQLServer‘,N‘AuditLevel‘,REG_DWORD,3
16. 重寫應(yīng)用程序使用更多用戶定義的儲(chǔ)存和察看進(jìn)程所以一般的對(duì)表的訪問(wèn)可以被禁用。 在這里你也應(yīng)該看到由于不必經(jīng)常進(jìn)行查詢計(jì)劃操作而帶來(lái)的性能提升。
17. 除去不需要的網(wǎng)絡(luò)協(xié)議。
18. 注意SQL 服務(wù)器的物理安全。把它鎖在固定的房間里,并且注意鑰匙的安全。只要有機(jī)會(huì)到服務(wù)器面前,就總是會(huì)找到一個(gè)方法進(jìn)入。
19. 建立一個(gè)計(jì)劃的任務(wù)運(yùn)行: findstr/C:" Login Failed"\mssql7\log\*.*‘
然后再重定向輸出到一個(gè)文本文件或電子郵件,因此你監(jiān)測(cè)失敗的登錄嘗試。這也為系統(tǒng)管理員提供一個(gè)好的記錄攻擊的方法。 也有很多用來(lái)分析NT日志事件的第三者工具。 注意: 你可能需要將路徑換成你安裝SQL的路徑。
20. 設(shè)定非法訪問(wèn)和登陸失敗日志警報(bào)。到 企業(yè)管理器中的"Manager SQL Server Messages "搜尋任何有關(guān)無(wú)權(quán)訪問(wèn)的消息 ( 從查找"login failed"和"denied"開始). 確定你所有感興趣的信息被記錄到事件日志。然后在這些信息上設(shè)定警報(bào) , 發(fā)送一個(gè)電子郵件或信息到一個(gè)能夠?qū)?wèn)題及時(shí)響應(yīng)的操作員。
21. 確定在服務(wù)器和數(shù)據(jù)庫(kù)層次上的角色都只被授給了需要的用戶。 當(dāng) SQL Server 安全模型 7 有許多增強(qiáng)的時(shí)候, 它也增加額外的許可層,我們必須監(jiān)控該層,確定沒有人被授予了超過(guò)必需的權(quán)限。
22. 經(jīng)常檢查組或角色全體會(huì)員并且確定用組分配權(quán)限,這樣你的審計(jì)工作能夠簡(jiǎn)化。 確定當(dāng)你在的時(shí)候 , 公眾的組不能從系統(tǒng)表執(zhí)行選擇操作。
23. 花些時(shí)間審計(jì)用空密碼登陸的請(qǐng)求。 使用下面的代碼進(jìn)行空密碼檢查:
使用主體
選擇名字,
password
from syslogins
where password is null
order by name
24. 如果可能,在你的組織中利用整合的安全策略。 通過(guò)使用整合的安全策略,你能夠依賴系統(tǒng)的安全,******簡(jiǎn)化管理工作從維護(hù)二個(gè)分開的安全模型中分離開來(lái)。這也不讓密碼接近連接字串。
25. 檢查所有非sa用戶的存取進(jìn)程和擴(kuò)充存儲(chǔ)進(jìn)程的權(quán)限。 使用下面的查詢定期的查詢哪一個(gè)進(jìn)程有公眾存儲(chǔ)權(quán)限。(在SQL Server中 使用 "type" 而不是 "xtype"):
Use master
select sysobjects.name
from sysobjects,sysprotects
where sysprotects.uid=0
AND xtype 在 (‘X‘,‘P‘)
AND sysobjects.id=sysprotects.id
Order by name
26. 當(dāng)時(shí)用企業(yè)管理器的時(shí)候,使用整合的安全策略。 過(guò)去,企業(yè)管理器被發(fā)現(xiàn)在標(biāo)準(zhǔn)的安全模態(tài)中儲(chǔ)存 "sa" 密碼在注冊(cè)表的 plaintext 中。 注意: 即使你改變模態(tài),密碼也會(huì)留在注冊(cè)表中。 使用 regedit 而且檢查鍵:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSSQLServer\SQLEW\ Regedi\SQL 6.5
現(xiàn)在數(shù)據(jù)被隱藏在 HKEY_USERS\{yourSID}\software\Microsoft\Microsoft SQL server\80\tool\SQLEW\registered server X\SQL server group ("SQL server組" 是默認(rèn)值但是你可能已建立用戶組因此相應(yīng)地改變其位置)
27. 發(fā)展一個(gè)審核計(jì)劃而且訂定每月的安全報(bào)告,對(duì)IT主管可用的報(bào)表包括任何的新exploit,成功的攻擊 , 備份保護(hù) , 和對(duì)象存取失敗統(tǒng)計(jì)。
28. 不要允許使用者交互式登陸到 SQL Server之上。這個(gè)規(guī)則適用任何的服務(wù)器。 一旦一個(gè)使用者能夠交互式進(jìn)入一個(gè)服務(wù)器之內(nèi),就有能用來(lái)獲得管理員的存取特權(quán)得到管理員權(quán)限。
30. 盡力限制對(duì)SQL Server的查詢與存取操作。 用戶可以用***小權(quán)限查詢sql server中的很多東西。若非必須不要給他們機(jī)會(huì)。