你的sql server最近是否运行不正常?不,我指的不是我们肯定会遇到的通常的数据库和操作系统问题。我的意思是,你是否经历过服务器的反应迟钝,不稳定的动作,繁重的网络负担,或者是服务器处理或者内存利用率的直线上升?哦,不排除在你的系统中有特洛伊木马。SQL Server与你接触的大多数其它计算机一样,也可以从Internet上访问并下载和安装软件。这些以及其它那些我们每天经常做的事情可能会为特洛伊木马提供安装的途径。看起来很奇怪,但是就服务器而言,感染上病毒是很容易的——特别是当你没有用保护你的终端用户系统那样的方式来保护它的时候。
当你发现你的数据库服务器发生了奇怪的现象,在你花费数不尽的时间试图解决应用程序或者数据库问题之前,应该首先运行如下的测试,看看是否感染了特洛伊病毒。
1:使用恶意软件扫描器
我曾见过有数据库服务器因为怕性能下降或者系统崩溃而不采取,或者采取有限的恶意软件防范措施。很明显,这是要关心的两码事,但是价格是什么?如果你没有安装反病毒软件,那么就尽快弄一个来运行吧。如果需要实时保护的资源太多了,那么就将你的数据库和其它高活动性的目录排除在实时扫描的外面吧。否则,最低限度,你也要安装反病毒软件,然后每隔几天,找个非高峰的时间来扫描本地磁盘。
如果你已经运行了反病毒软件,那么确保它是最新的(那些基于客户端的自动更新和网络管理签名并不是百分百的可靠),并且执行一次全面的系统扫描。不要害怕安装和使用其他供应商的软件——特别是当它涉及间谍软件保护的时候。
2: 查看内存
你可以使用Windows任务管理器来搜索那些看起来就属于恶意软件,或者使用了太多内存或者占用了大量CPU时间的应用程序。我建议你使用Sysinternals公司的Process Explorer(下面高亮显示的NetBus Trojan),因为它提供了运行进程的较多信息,并且以更可靠的方式来杀掉那些不应该的进程。
你也许会想,这看起来也太强了吧——你怎么可能抓住那些载入你的Windows服务器上的东西。你考虑一下就会发现它实际上不是特别复杂; 在你的网络中的所有系统中,你确实需要彻底地了解你的数据库——其中包括记录哪些进程应该运行,哪些不应该。所以,如果你在第一次安装之后拥有了良好的基线——甚至是现在,假设所有事物都运行得很好——当发生特洛伊类型的问题的时候,你就可以用它作为你比较的基础。
3: 查看开放的端口
你可以使用Windows内置的netstat工具来查看哪些端口开放的,并且连接到服务器上。在命令行中,输入netstat –an more,可以一页挨着一页地查看开放的和监听的TCP和UDP端口。还有一种更好的方法就是使用Foundstone的 vision工具或者Sysinternals公司的TCPView工具来完成。
4: 查看你的网络流量
也许判断你的SQL Server中是否发生了恶意行为的最简单办法就是看看它是否进行了网络通信。如果你有一个非常顺手的网络分析器,那么你就可以在1、2分钟之内发现情况。你可以使用SQL Server自身携带的分析器,或者从别处连接到你的以太网交换器的交换或者镜像端口上。
我比较喜欢Etherpeek这个网络分析器,它可以像大多数其它分析器一样捕捉进出你的SQL Server的包。如下图所示,一些跑在TCP端口12345上(通常是NetBus的特洛伊端口)流量就被发现了。
EtherPeek可以轻松抓取网络流量,并且高亮显示特洛伊的动作——在本次网络流量抓取过程中你可以真正地创建你自己的网络分析触发器和过滤器,如果你知道要寻找什么的话。这里的列表列出了常见的特洛伊和相关端口的细腻向。这种发现恶意流量的方法并不是十分安全,因为端口号是可以经常更换的,但是它的服务器是个不错的目标。
你可以在“监控“模式下运行Ether Peek,让它对网络上发生的事情有个从上到下的整体视角,——而不需要抓取包。你可以查看正在使用哪个协议,寻找巨大的流量,奇怪的通信,以及其它网络进出你的SQL Server系统的倾向。
5:对付恶意软件的方法
特洛伊木马是计算机上的一个令人厌恶的创造——它创建远程访问隧道,截获按键,删除数据等更多事情——特别是在你最重要的服务器上。很明显,最好的办法就是不用你的SQL Server进行Internet访问,Web浏览,电子邮件等行为。——但是,这不现实。你(或者其他人)可能会需要它最终不仅仅作为一个数据库服务器。一旦这样的事情出现了,你就需要确保你是被保护的。不要把责任推卸给其他人,或者其他任何东西,特洛伊不是运行在他们的系统上。不论以何种方式,永远不要假设你的反病毒软件可以保证你万无一失。
分析并解决恶意软件的方法:如果你想要攻击,或者安装一个可以在网络上给你帮助的欺诈软件,那么没有什么地方比直接在SQL Server上更好了。你的服务器上可能还没有特洛伊,但是如果你感觉到有问题,那么凶手就可以很容易发现。
那些坏人知道,很多服务器都没有针对恶意软件的保护。他们也知道,出于性能和系统在线服务时间的原因,操劳过度的管理员们很难再去在他们的数据库服务器上安装安全软件或者执行某些保护措施。保护你的服务器,并且了解如何以及在哪里寻找问题的起源吧。