程序开发 > MsSql > 正文

sql server数据库限制ip、限制远程登录触发器

亮术网 2014-01-11 本网原创

  使用 sql server数据库,安全是一个非常关键、非常重要的问题,尤其是1443端口作为黑客入侵的常客更要特别照顾。一般情况下,如果程序与 sql server数据库在同一台服务器,没有必要开放1433端口,可以把它关闭;如果程序与 sql server数据库分别在不同的服务器,必须开放1433端口,也要把数据库服务器隐藏起来,从而防御一般的入侵。

  如果想 sql server数据库更安全,就要限制ip或用户登录数据库服务器;用 Windows 系统的ip安全策略(ipsec)配置可以限制ip,不过一定要十分熟悉配置,否则配置错了服务器就不能访问,还影响程序的正常运行;还有一种方法,就是用 sql server限制ip和用户远程登录,这正是本文要探讨的问题,我们将通过创建触发器的形式来限制ip和用户远程登录。

 

  sql server限制ip和用户远程登录的触发器如下:

  Create Trigger login_limit_trigger
  On All Server With Execute As 'AllowUser'
  For LOGON
  As
  Begin

  If ORIGINAL_LOGIN()= 'AllowUser'--允许 AllowUser 登录
  And
  (Select Count(*) From sys.dm_exec_sessions
  Where [host_name] <> 'localhost'--过滤本地用户
  And original_login_name = 'AllowUser') > 0
  And
  (Select top 1 c.client_net_address From sys.dm_exec_sessions s Inner Join master.sys.dm_exec_connections c On
  s.session_id = c.session_id And s.login_name='AllowUser'
  Order By login_time Desc)
  Not In('212.89.208.65','199.180.238.112','26.221.116.70')--允许ip
    ROLLBACK;
  End;

  这个方法不但有效,并且很简单,一个触发器搞定,还不受 sql server数据库版本的限制,不失为一个不错的限制ip和用户远程登录的方法。