由1433端口入侵,浅谈sqlserver安全 (转)

前几日笔者在家里的PC上安装了Windows7旗舰版的操作系统,顺便搭了sqlserver2008和vs2010的开发环境,本打算业余时 间可以方便开发、学习。可是不尽人意啊!用了不到两天,居然突然出现一个新建的系统用户,还是管理员组的。晕死了,机器让人给挂马了,成了“肉鸡,养马 场”...仔细排查后(看Windows日志,sqlserver日志等),初步推断:是某位无聊的“黑客”同志,通过扫描器踩点后,然后用“1433端 口入侵工具”去找sa用户弱口令,挂上“黑客字典”,弱口令一会儿就可以算出来了。接下来就获得了系统管理员权限,给我机器上放了一些“类似于特洛伊的小 虫子”,有新建了一个帐户。加入管理员组,做个提权。。。哎哟!TMD还想给我来远程控制啊?还好,这位仁兄比较有“职业道德”,估计也是在“友情检测” 罢了,至少在我发现之前,没有做什么严重的破坏(删除数据,格盘等危险操作)。

看来我得好好反省了,毕竟自己在中学时代 也是个“黑客爱好者”,曾混迹于各大黑客论坛,网站联盟等。入侵者惯用的那些手法和思路,我还是非常熟悉的,虽然有几年没有接触了。分析一下我的失 误:1.安装系统的时候,随便指定了管理员,并给了空口令。2.没有检查防火墙,安全策略,杀毒软件等(认为自己至少在曾经是很懂安全的,估计没人敢惹 我,应该没事的)。3.安装数据库的前后,没有做任何的安全控制,例如用户,权限等。就连sa用户,为了图个方便快速,也随便给了弱口令。o(∩_∩)o 哈哈。今天就总结一下sqlserver的安全相关问题(注意:暂时不讨论sql注入方面的知识,因为我觉得sql注入更接近“脚本安全”,和程序员更加 关系密切。我今天说的,可能更适合于系统管理员或者DBA)

大多数系统管理员对数据库不熟悉而数据库管理员有对安全问题关心太少,而且一些安全公司也忽略数据库安全,这就使数据库的安全问题更加严峻了。如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库

数 据库是电子商务、金融以及ERP系统的基础,通常都保存着重要的商业伙伴和客户信息。大多数企业、组织以及政府部门的电子数据都保存在各种数据库中,他们 用这些数据库保存一些个人资料,比如员工薪水、个人资料等等。数据库服务器还掌握着敏感的金融数据。包括交易记录、商业事务和帐号数据,战略上的或者专业 的信息,比如专利和工程数据,甚至市场计划等等应该保护起来防止竞争者和其他非法者获取的资料。数据完整性和合法存取会受到很多方面的安全威胁,包括密码 策略、系统后门、数据库操作以及本身的安全方案。但是数据库通常没有象操作系统和网络这样在安全性上受到重视。   

微软的SQL
Server是一种广泛使用的数据库,很多电子商务网站、企业内部信息化平台等都是基于SQL
Server上的,但是数据库的安全性还没有被人们更系统的安全性等同起来,多数管理员认为只要把网络和操作系统的安全搞好了,那么所有的应用程序也就安
全了。大多数系统管理员对数据库不熟悉而数据库管理员有对安全问题关心太少,而且一些安全公司也忽略数据库安全,这就使数据库的安全问题更加严峻了。数据
库系统中存在的安全漏洞和不当的配置通常会造成严重的后果,而且都难以发现。数据库应用程序通常同操作系统的最高管理员密切相关。广泛SQL
Server数据库又是属于“端口”型的数据库,这就表示任何人都能够用分析工具试图连接到数据库上,从而绕过操作系统的安全机制,进而闯入系统、破坏和
窃取数据资料,甚至破坏整个系统。   

这里,我们主要谈论有关SQL Server2000数据库的安全配置以及一些相关的安全和使用上的问题。   


进行SQL Server
2000数据库的安全配置之前,首先你必须对操作系统进行安全配置,保证你的操作系统处于安全状态。然后对你要使用的操作数据库软件(程序)进行必要的安
全审核,比如对ASP、PHP等脚本,这是很多基于数据库的WEB应用常出现的安全隐患,对于脚本主要是一个过滤问题,需要过滤一些类似 , ‘ ; @
/ 等字符,防止破坏者构造恶意的SQL语句。接着,安装SQL Server2000后请打上补丁sp1以及最新的sp2。

下载地址是:http://www.microsoft.com/sql/downloads/2000/sp1.asp 和 http://www.microsoft.com/sql/downloads/2000/sp2.asp   

在做完上面三步基础之后,我们再来讨论SQL Server的安全配置。   

 1、使用安全的密码策略

我们把密码策略摆在所有安全配置的第一步,请注意,很多数据库帐号的密码过于简单,这跟系统密码过于简单是一个道理。对于sa更应该注意,同时不要让sa帐号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步!   

SQL Server2000安装的时候,如果是使用混合模式,那么就需要输入sa的密码,除非你确认必须使用空密码。这比以前的版本有所改进。

同时养成定期修改密码的好习惯。数据库管理员应该定期查看是否有不符合密码要求的帐号。比如使用下面的SQL语句:

Use master

Select name,Password from syslogins where password is null   

 2、使用安全的帐号策略  


于SQL
Server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数
据库应用中使用sa帐号,只有当没有其它方法登录到 SQL Server 实例(例如,当其它系统管理员不可用或忘记了密码)时才使用
sa。建议数据库管理员新建立一个拥有与sa一样权限的超级用户来管理数据库。安全的帐号策略还包括不要让管理员权限的帐号泛滥。

SQL

Server的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登陆来接触数据库的话,可以在
帐号管理中把系统帐号“BUILTIN/Administrators”删除。不过这样做的结果是一旦sa帐号忘记密码的话,就没有办法来恢复了。

很多主机使用数据库应用只是用来做查询、修改等简单功能的,请根据实际需要分配帐号,并赋予仅仅能够满足应用要求和需要的权限。比如,只要查询功能的,那么就使用一个简单的public帐号能够select就可以了。  

3、加强数据库日志的记录  

审核数据库登录事件的“失败和成功”,在实例属性中选择“安全性”,将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有帐号的登录事件。

请定期查看SQL Server日志检查是否有可疑的登录事件发生,或者使用DOS命令。

findstr /C:"登录" d:/Microsoft SQL Server/MSSQL/LOG/*.*

4、管理扩展存储过程


存储过程进行大手术,并且对帐号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程,而SQL
Server的这么多系统存储过程只是用来适应广大用户需求的,所以请删除不必要的存储过程,因为有些系统的存储过程能很容易地被人利用起来提升权限或进
行破坏。

如果你不需要扩展存储过程xp_cmdshell请把它去掉。使用这个SQL语句:

use master

sp_dropextendedproc ‘xp_cmdshell‘

xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。如果你需要这个存储过程,请用这个语句也可以恢复过来。

sp_addextendedproc ‘xp_cmdshell‘, ‘xpsql70.dll‘   

如果你不需要请丢弃OLE自动存储过程(会造成管理器中的某些特征不能使用),这些过程包括如下:

Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty

Sp_OAMethod Sp_OASetProperty Sp_OAStop

去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,如下:

Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues

Xp_regread Xp_regremovemultistring Xp_regwrite

还有一些其他的扩展存储过程,你也最好检查检查。

在处理存储过程的时候,请确认一下,避免造成对数据库或应用程序的伤害。  

5、使用协议加密 

SQL
Server 2000使用的Tabular Data
Stream协议来进行网络数据交换,如果不加密的话,所有的网络传输都是明文的,包括密码、数据库内容等等,这是一个很大的安全威胁。能被人在网络中截
获到他们需要的东西,包括数据库帐号和密码。所以,在条件容许情况下,最好使用SSL来加密协议,当然,你需要一个证书来支持。  

6、不要让人随便探测到你的TCP/IP端口   


认情况下,SQL Server使用1433端口监听,很多人都说SQL
Server配置的时候要把这个端口改变,这样别人就不能很容易地知道使用的什么端口了。可惜,通过微软未公开的1434端口的UDP探测可以很容易知道
SQL Server使用的什么TCP/IP端口了。   

不过微软还是考虑到了这个问题,毕竟公开而且开放的端口会引起不必要的麻
烦。在实例属性中选择TCP/IP协议的属性。选择隐藏 SQL Server 实例。如果隐藏了 SQL Server
实例,则将禁止对试图枚举网络上现有的 SQL Server
实例的客户端所发出的广播作出响应。这样,别人就不能用1434来探测你的TCP/IP端口了(除非用Port Scan)。   

7、修改TCP/IP使用的端口

请在上一步配置的基础上,更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性,将TCP/IP使用的默认端口变为其他端口。   

8、拒绝来自1434端口的探测   

由于1434端口探测没有限制,能够被别人探测到一些数据库信息,而且还可能遭到DOS攻击让数据库服务器的CPU负荷增大,所以对Windows 2000操作系统来说,在IPSec过滤拒绝掉1434端口的UDP通讯,可以尽可能地隐藏你的SQL Server。

9、对网络连接进行IP限制  

SQL
Server 2000数据库系统本身没有提供网络连接的安全解决办法,但是Windows
2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制,只保证自己的IP能够访问,也拒绝其他
IP进行的端口连接,把来自网络上的安全威胁进行有效的控制。

关于IPSec的使用请参看:http://www.microsoft.com/china/technet/security/ipsecloc.asp

上面主要介绍的一些SQL Server的安全配置,经过以上的配置,可以让SQL Server本身具备足够的安全防范能力。当然,更主要的还是要加强内部的安全控制和管理员的安全培训,而且安全性问题是一个长期的解决过程,还需要以后进行更多的安全维护。

时间: 2024-10-13 23:14:07

由1433端口入侵,浅谈sqlserver安全 (转)的相关文章

浅谈SQLServer 时间格式化

SQLServer 时间格式化 背景知识: SQL Server自带的Convert?函数,可以将日期类型的字段按照指定的格式转换为字符串格式,您可以将以下脚本复制到查询分析器执行; DECLARE @now datetime SET @now = GETDATE() select convert(nvarchar(MAX), @now, 0) as output, 0 as style union select convert(nvarchar(MAX), @now, 1), 1 union

浅谈sqlserver的事务锁

锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 不可重复读 A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致 并发控制的主要方法是封锁,锁就是在一段时间内禁止

SQLserver2012 tcp/ip 1433端口问题解决方法

很多MSSQL安装完成后,调用1433(默认端口)是失败的,这边详细介绍下解决方法. 一..我们需要在电脑上开启telnet服务,定位问题需要.在cmd下使用telnet,如果报命令不存在说明没有开启.开启方法如下: 控制面板--"点击打开或关闭Windows功能",会弹出Windows功能对话框,我们在里面找到"Telnet服务器"和"Telne客户端"两项,然后将之前的勾选上即可开启对应服务了,打上勾后,要记得点击底部的确认保存哦,如下图:

ASP.NET中Session的个人浅谈

看到博客园的一个哥们写的面试经历,想到了面试中常问到的Session,一时手痒就谈下自己对Session的理解,这东西最开始在用户登录登出的时候用到过,后来一直没怎么用过,里面还是有很多知识点值得注意的.先简单的说下吧,Session是分为客户端Session和服务端Session: 客户端Session Session称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息,当用户首次与Web服务器建立连接的时候,服务器会给当前访问用户分发一个 SessionID作为标

?浅谈Asp.net的sessionState

浅谈Asp.net的sessionState Three Session State providers : InProcSessionStateStore, which stores session state in memory in the ASP.NET worker process OutOfProcSessionStateStore, which stores session state in memory in an external state server process Sq

【转】【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

ASP.NET MVC系列文章 原文地址:https://www.cnblogs.com/wangjiming/p/6275854.html [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP.NET框架 [05]浅谈ASP.NET MVC运行过程 [06]浅谈ASP.NET MVC 控制器 [07]浅谈ASP.NET MVC 路由 [08]浅谈AS

【转】浅谈Nginx负载均衡与F5的区别

前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务. 其实Nginx和F5这两者均可用作网站负载均衡,那二者有什么区别呢?笔者在此浅谈下Nginx与F5的一些区别. 目前很多网站或应用在设计之初都会为高并发的数据请求做负载均衡,不差钱的土豪用户一般会直接买F5硬件设备作为其负载均衡器,原因不用多

浅谈安全性攻击人为攻击的主要形式和防御

0x01 安全性攻击主要的两种方式 当前,对信息系统(包括硬件.软件.数据.人.物理环境及其基础设施)的攻击来自多方面,这些攻击我们可以宏观地分为人为攻击(主观因素)和自然灾害攻击(客观因素),这两大类的攻击都会对信息安全构成威胁.造成自然灾害攻击的自然因素包括各种自然灾害:如水.火.雷.电.风暴.烟尘.虫害.鼠害.海啸和地震等:系统的环境和场地条件,如温度.湿度.电源.地线和其他防护设施不良造成的威胁:电磁辐射和电磁干扰的威胁:硬件设备自然老化,可靠性下降的威胁等.因为自然灾害往往不可预知和抗

浅谈移动前端的最佳实践(转)

前言 这几天,第三轮全站优化结束,测试项目在2G首屏载入速度取得了一些优化成绩,对比下来有10s左右的差距: 这次优化工作结束后,已经是第三次大规模折腾公司框架了,这里将一些自己知道的移动端的建议提出来分享下,希望对各位有用 文中有误请您提出,以免误人自误 技术选型 单页or多页 spa(single page application)也就是我们常常说的web应用程序webapp,被认为是业内的发展趋势,主要有两个优点: ① 用户体验好 ② 可以更好的降低服务器压力 但是单页有几个致命的缺点: