提高SQL Server数据库安全性的几点思考
2017-04-25王桃群
王桃群
摘要:数据库的安全性指的是防止非法用户访问数据库,避免造成数据的泄露、更改或破坏,以达到保护数据库的目的。为提高SQL Server数据库的安全性,可考虑修改端口、使用强密码、灵活运用触发器等办法。
关键词:修改端口;强密码;触发器
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)02-0001-01
1 修改SQL Server端口
默认情况下,SQL Server数据库引擎侦听TCP端口1433,启动SQL Server 数据库引擎实例后,可在CMD命令提示符窗口中执行netstat命令来查看所有的连接及侦听的端口。入侵者可利用相关工具扫描指定IP段的1433端口,从而对这些IP段内开放了1433端口的SQL Server数据库服务器进行攻击。为防止入侵者扫描1433端口,可修改SQL Server端口,具体操作步骤:(1)打开SQL Server的配置管理器,依次展开“SQL Server网络配置”、“MSSQLSERVER的协议”,双击TCP/IP。(2)在“TCP/IP 属性”对话框的“IP 地址”选项卡上,将显示若干个 IP 地址,格式为:IP1、IP2…,一直到 IPAll。在“IPn 属性”区域框的“TCP 端口”框中,输入希望此 IP 地址侦听的端口号,然后单击“确定”。(3)重启SQL Server服务,端口就修改好了。
2 设置验证模式、使用强密码
SQL Server的安全管理机制包括身份验证和访问许可。其中,身份验证有Windows身份验证和混合验证两种模式。为提高数据库的安全性,尽可能使用 Windows 身份验证,当用户通过 Windows 账号连接时,SQL Server 使用操作系统中的 Windows 主体标记验证账号和密码,也就是说,用户身份由 Windows 进行确认。Windows 身份验证使用 Kerberos 安全协议,提供有关强密码复杂性验证的密码策略强制,还提供账户锁定支持,并且支持密码过期。
当使用混合验证模式时,由于SQL Server的管理员账号sa广为人知,且经常成为恶意用户的攻击目标,因此,除非应用程序需要使用 sa 账户,否则最好禁用该账户,此外,千万不要为 sa 账户设置空密码或弱密码,因为入侵者可利用相关工具扫描SQL Server弱口令。如图1,利用工具X-SCAN扫描得到主机10.106.1.27的SQL Server数据库服务器的管理员账户sa的弱密码。
一旦获得sa账户的密码,入侵者便可调用数据库服务器中的系统存储过程sp_configure来启用扩展存储过程xp_cmdshell,从而利用xp_cmdshell将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。例如,入侵者可通过执行命令 exec xp_cmdshell 'net user hacker$ hacker888/add',從而在数据库服务器所在的主机中新建一个系统账号hacker$,接着,执行命令exec xp_cmdshell 'net localgroup administrators hacker$ /add',将系统账户hacker$提升为管理员,从而就可入侵数据库服务器所在的主机,后果便不堪设想了。
3 灵活运用触发器
SQL Server 包括三种类型的触发器:DML 触发器、DDL 触发器和登录触发器。
(1)利用DDL触发器可以防止用户在指定的数据库中创建对象、修改对象或删除对象。例如,使用DDL触发器来防止数据库中的任一表被修改或删除,同时将事件类型、发生时间、登录账号名等信息存储在triggerLog表中。
CREATE TABLE triggerLog(info xml)
GO
CREATE TRIGGER tri_ForbidTable ON DATABASE FOR DROP_TABLE, ALTER_TABLE
AS
DECLARE @EventData AS xml
SET @EventData = EVENTDATA()
ROLLBACK
INSERT INTO triggerLog VALUES(EVENTDATA())
GO
(2)利用登录触发器可以审核和控制服务器会话,例如限制 SQL Server 的登录名、登录时间和登录IP等。例如,使用登录触发器限制用户sa只能在指定的时间段及指定的IP地址登录数据库服务器。
账户sa只能在时间段7时~18时、且只能在本机或IP地址为192.168.1.50 或 192.168.1.120的主机登录数据库服务器(如服务器名为jkx108),否则,登录失败,并显示图2所示的对话框。
4 结语
数据是一种极具价值的资源,对于一个组织机构来说,部分或者全部数据可能具有战略重要性,现在,许多组织机构要求数据库系统不间断运作,即所谓的“24×7”(一天24小时,一星期7天)不停机运行模式。
参考文献:
[1] 王岩,贡正仙.数据库原理、应用与实践(SQL Server).北京:清华大学出版社,2016.
[2] SQL Server 限制IP登陆(登陆触发器运用). http://www.cnblogs.com/gaizai/archive/2013/05/23/3095145.html,2013.