問(wèn)題:希望僅僅允許某個(gè)指定IP的計(jì)算機(jī)連接到SQL Server服務(wù)器,但不允許其他的客戶(hù)端進(jìn)行連接。
解決方法如下:
你可以直接在防火墻中做限制,只允許與指定的IP地址建立1433的通訊。(注:從安全的角度來(lái)考慮,應(yīng)該把1433端口改成其他的端口。)
其他的解決方法:
一、限從指定IP接入的客戶(hù)端:
如果使用SQL Server 2005,還可以通過(guò)端點(diǎn)限制的方法來(lái)實(shí)現(xiàn),此方法要求一塊專(zhuān)門(mén)的網(wǎng)卡,所有可以連接SQL Server的客戶(hù)端均通過(guò)此網(wǎng)卡接入(假設(shè)此網(wǎng)卡的IP是192.168.1.1):
1.在“SQL Server 配置管理器”的“SQL Server 2005網(wǎng)絡(luò)配置中”,禁止除TCP/IP之外的所有協(xié)議;
2.使用如下的T-SQL禁止默認(rèn)的TCP端點(diǎn)
ALTER ENDPOINT [TSQL Default TCP]
STATE = SPED
3.使用如下的T-SQL建立新的TCP端點(diǎn)和授權(quán)
USE master
GO
-- 建立一個(gè)新的端點(diǎn)
CREATE ENDPOINT [TSQL User TCP]
STATE = STARTED
AS TCP(
LISTENER_PORT = 1433,
LISTENER_IP = (192.168.1.1) -- 偵聽(tīng)的網(wǎng)絡(luò)地址
)
FOR TSQL()
GO
-- 授予所有登錄(或者指定登錄)使用此端點(diǎn)的連接權(quán)限
GRANT CONNECT ON ENDPOINT::[TSQL User TCP]
TO [public]
完成以上的配置之后,只有通過(guò)網(wǎng)絡(luò)地址配置為192.168.1.1的網(wǎng)卡接入的客戶(hù)端才能訪(fǎng)問(wèn)SQL Server;此外,假如只授予指定登錄對(duì)端點(diǎn)的連接權(quán)限,則只有指定的登錄才能接入SQL Server實(shí)例。
二、限指定IP的客戶(hù)端接入
當(dāng)SQL Server 2005升級(jí)到SP2或者更高的版本的時(shí)候,你還可以通過(guò)新增的觸發(fā)器來(lái)實(shí)現(xiàn)控制。
執(zhí)行一下的T-SQL后,IP地址為192.168.1.1以外的客戶(hù)端連接將會(huì)出現(xiàn)失敗的現(xiàn)象。
USE master
GO
CREATE TRIGGER tr_LoginCheck
ON ALL SERVER
FOR LOGON
AS
IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.1'
ROLLBACK TRAN
GO
解決方法如下:
你可以直接在防火墻中做限制,只允許與指定的IP地址建立1433的通訊。(注:從安全的角度來(lái)考慮,應(yīng)該把1433端口改成其他的端口。)
其他的解決方法:
一、限從指定IP接入的客戶(hù)端:
如果使用SQL Server 2005,還可以通過(guò)端點(diǎn)限制的方法來(lái)實(shí)現(xiàn),此方法要求一塊專(zhuān)門(mén)的網(wǎng)卡,所有可以連接SQL Server的客戶(hù)端均通過(guò)此網(wǎng)卡接入(假設(shè)此網(wǎng)卡的IP是192.168.1.1):
1.在“SQL Server 配置管理器”的“SQL Server 2005網(wǎng)絡(luò)配置中”,禁止除TCP/IP之外的所有協(xié)議;
2.使用如下的T-SQL禁止默認(rèn)的TCP端點(diǎn)
ALTER ENDPOINT [TSQL Default TCP]
STATE = SPED
3.使用如下的T-SQL建立新的TCP端點(diǎn)和授權(quán)
USE master
GO
-- 建立一個(gè)新的端點(diǎn)
CREATE ENDPOINT [TSQL User TCP]
STATE = STARTED
AS TCP(
LISTENER_PORT = 1433,
LISTENER_IP = (192.168.1.1) -- 偵聽(tīng)的網(wǎng)絡(luò)地址
)
FOR TSQL()
GO
-- 授予所有登錄(或者指定登錄)使用此端點(diǎn)的連接權(quán)限
GRANT CONNECT ON ENDPOINT::[TSQL User TCP]
TO [public]
完成以上的配置之后,只有通過(guò)網(wǎng)絡(luò)地址配置為192.168.1.1的網(wǎng)卡接入的客戶(hù)端才能訪(fǎng)問(wèn)SQL Server;此外,假如只授予指定登錄對(duì)端點(diǎn)的連接權(quán)限,則只有指定的登錄才能接入SQL Server實(shí)例。
二、限指定IP的客戶(hù)端接入
當(dāng)SQL Server 2005升級(jí)到SP2或者更高的版本的時(shí)候,你還可以通過(guò)新增的觸發(fā)器來(lái)實(shí)現(xiàn)控制。
執(zhí)行一下的T-SQL后,IP地址為192.168.1.1以外的客戶(hù)端連接將會(huì)出現(xiàn)失敗的現(xiàn)象。
USE master
GO
CREATE TRIGGER tr_LoginCheck
ON ALL SERVER
FOR LOGON
AS
IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.1'
ROLLBACK TRAN
GO