[SQL] Chặn IP truy cập trái phép vào SQL server

By
Advertisement
Nếu Bạn đã có chạy một MSSQL Server public ra bên ngoài Extranet nhưng muốn hạn chế một số IP không cho truy xuất vào. Làm theo hướng dẫn sau để thực hiện mà không cần phải tốn tiền mua firewall.



Tạo bảng dữ liệu chứa IP mà ta chặn

CREATE TABLE master.dbo.IPBLock (ipaddress VARCHAR(15))

và thêm vài dữ liệu IP

INSERT INTO IPBLock VALUES('192.168.1.3')
INSERT INTO IPBLock VALUES('192.168.1.4')

INSERT INTO IPBLock VALUES('10.100.25.*')

Tạo Trigger chặn khi họ đăng nhập vào MSSQL Server.

Chạy đoạn Script sau với quyền quản trị MSSQL Server:

CREATE TRIGGER block_ipaddress
ON ALL SERVER
FOR LOGON
AS
BEGIN
            DECLARE @capturedip NVARCHAR(15);
            SET @capturedip = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'));
            IF EXISTS(SELECT ipaddress FROM master.dbo.IPBLock WHERE ipaddress = @capturedip)
            BEGIN
                        Print 'Your IP Address is blocked, Contact Administrator'
                        ROLLBACK
            END
            ELSE
            BEGIN
                        DECLARE @IPRange VARCHAR(15)
                        SELECT @IPRange= SUBSTRING(@capturedip,1,LEN(@capturedip)-CHARINDEX('.',REVERSE(@capturedip)))+'.*'
                        IF EXISTS(SELECT ipaddress FROM master.dbo.IPBLock WHERE ipaddress = @IPRange)
                        BEGIN
                            Print 'Your IP Address Range is blocked, Contact Administrator'
                            ROLLBACK
                        END
            END
END
GO

TEST & Kết Quả

Bây giờ ta dùng một địa chỉ IP Public để truy cập thử vào MSSQL Server bằng SSMS thì ta nhận được thông báo sau:


Nếu ta dùng command line thì sẽ nhận được thông báo:




That all!!!
Chúc các Bạn thành công

Thi

0 blogger:

Đăng nhận xét