보통 특정아이피 접근을 차단 하는 방법은 윈도우 나 리눅스나 OS 자체에서 기본적으로 제공해주고 있는
iptables, 윈도우 방화벽등을 이용하면 쉽게 차단을 할 수 있습니다
특정 하게 웹은 허용하고 데이터베이스 접속만 차단 할 경우에는 포트방식으로 차단 해도 가능하지만 아래방법과 같이
MSSQL 쿼리문을 이용해서 특정아이피 접근을 차단 할 수 있습니다
-
관리용 데이터베이스 생성
CREATE DATABASE DBBlock
GO
USEDBBlock
GO
–접근 허용 목록 테이블 생성
CREATE TABLE dbo.ValidIP (
IP NVARCHAR(15),
CONSTRAINT PK_ValidIP PRIMARY KEY CLUSTERED (IP)
);
GO
INSERT INTO dbo.ValidIP (IP) VALUES (‘115.68.24.x’);
GO
- 로그인 체크 Trigger 생성
USE MASTER
GO
CREATE TRIGGER tr_logon_CheckIP
ON ALL SERVER
FOR LOGON
AS
BEGIN
IF IS_SRVROLEMEMBER(‘sysadmin’) = 1
BEGIN
DECLARE @IP NVARCHAR(15);
SET @IP = (SELECT EVENTDATA().value(‘(/EVENT_INSTANCE/ClientHost)[1]’, ‘NVARCHAR(15)’));
IF NOT EXISTS(SELECT IP FROM DBBlock.dbo.ValidIP WHERE IP = @IP)
ROLLBACK;
END;
END;
GO
위와 같이 설정을 하고 MSSQL 매니지먼스 스튜디오를 통하여 접속을 할 경우 접속이 거부되었다는 팝업창을 확인 할 수 있습니다
3. 로그인 차단 부분 삭제
USE MASTER
GO
–중지
DISABLE TRIGGER tr_logon_CheckIP ON ALL SERVER
GO
–트리거 삭제
DROP TRIGGER tr_logon_CheckIP ON ALL SERVER
안녕하세요. 해당 글을 참고하여 로그인 트리거를 작성하다가 현재 인증로그인, sqlserver 아이디 로그인이 막혔습니다. 어떻게 복구하는 방법이 있을까요?