Block IP Addresses to SQL Server using a Logon Trigger

We were testing a scenario and wanted to block SQL Server connection through certain IP addresses. Here’s how we solved the requirement using a Logon Trigger

CREATE TRIGGER AllowLocalOnly
ON ALL SERVER
FOR LOGON
AS
BEGIN
DECLARE @IP Varchar(500)
SET @IP = EVENTDATA().value
('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(500)')
IF @IP
IN ('172.16.255.11', '172.20.254.1', '172.26.254.12')
BEGIN
Print 'There I caught you ' + @IP
ROLLBACK TRANSACTION
END
END
GO

If the user tries to login through any of these I.P. addresses, the Logon trigger will fire after the authentication phase of logging, but before the user session is actually established, and rollback the transaction. This will restrict Login to SQL Server.

If there is an attempt to login from any of these I.P. Addresses, you can find out by searching the SQL Server error log for something similar to – ‘There I caught you 172.16.255.11 ’. Although I haven’t tried but you can also send an email instead of just printing the error in the error log.

Note: Logon Triggers are available only from SQL Server 2005 SP2 onwards.

2 comments:

  1. well
    nice post
    just copied from

    http://www.shirmanov.com/2010/09/block-ip-addresses-to-sql-server-using.html

    try to write something by yourself

    ReplyDelete
  2. Although this is a lame comment from you (whoever you are), next time try to check the post dates :).

    Mine was on the 9th of September and the link you posted was on the 25th of Sept. So probably using a little brain, anybody will know who copied whom!

    ReplyDelete