Windows Server可以被配置为多种角色,Windows Server 2003 可以被配置为域控制器、成员服务器、基础设施服务器、文件服务器、打印服务器、IIS服务器、IAS服务器、终端服务器等等。而且服务器可以被配置为几种角色的综合。
铁通数据中心机房存在多台不同角色的服务器,例如:备份服务器,终端服务器,Web服务器等,大部分是集各种角色于一身的服务器,所以有必要制作一份完整的安全方案文档以供参考,综合了部分虚拟主机公司的方案以及网络整理的资料和个人的一些经验,制作此方案。
总的来说,做为一个集各种角色为一身的服务器,主要是从以下几个方面进行安全加固设置:组件安全、端口安全、Windows常见自带程序的安全设置、远程终端安全、第三方软件的安全设置、木马病毒的防范设置、系统服务设置、帐号安全问题、日志安全设置、MSSQL安全设置、常见危险协议的删除、日常服务器安全检测、目录权限设置、DDOS攻击的设置、MYSQL安全设置、php安全设置。
注意:下面的策略是本着安全最大化的目的来执行的,实际操作中,要本着服务器正常应用与安全尽量化两者同时兼并的标准来进行。

组件安全:
一、禁止使用FileSystemObject组件
FileSystemObject可以对文件进行常规操作以及进行各种存在安全隐患的操作,可以通过修改注册表,将此组件改名,来防止利用FSO组件的ASP木马的危害。
步骤1:HKEY_CLASSES_ROOT\Scripting.FileSystemObject\ 名为其它的名字,如:改为 FileSystemObject_ChangeName,如果ASP程序必须使用这个组件,那么在代码中改相应的名称

步骤2:将clsid值也改一下,HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值,也可以将其删除,来防止此类木马的危害。

步骤3:将此组件注销:RegSVR32 /u C:\WINDOWS\SYSTEM32\scrrun.dll

步骤4:禁止Guest用户使用FSO组件文件:scrrun.dll,命令:cacls C:\WINDOWS\system32\scrrun.dll /e /d guests

注意:部分流行网站程序中的功能可能会用到FSO组件,在一般情况下,请修改ASP程序文件中对应的FSO名和clsid值为修改过后的服务器中的值。
(注:此组件的注销可能会影响到很多asp网站程序中部分功能的使用,例如上传等,如果必要,那么利用命令RegSVR32 C:\WINDOWS\SYSTEM32\scrrun.dll重新注册。)
二、禁止使用WScript.Shell组件
WScript.Shell可以调用系统内核运行DOS基本命令,可以通过修改注册表,将此组件改名,来防止此类木马的危害。
步骤1:HKEY_CLASSES_ROOT\WScript.Shell\及HKEY_CLASSES_ROOT\WScript.Shell.1\改名为其它的名字,如:改为WScript.Shell_ChangeName 或 WScript.Shell.1_ChangeName,自己以后调用的时候使用这个就可以正常调用此组件了
步骤2:将clsid值也改一下HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值和HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值也可以将其删除,来防止此类木马的危害。
注意:一般情况下,这个组件很少被网站程序应用到,但是如果要用,请修改ASP程序文件中对应的WSH名和clsid值为修改过后的服务器中的值。

三、禁止使用Shell.Application组件
Shell.Application可以调用系统内核运行DOS基本命令,可以通过修改注册表,将此组件改名,来防止此类木马的危害。
步骤1:HKEY_CLASSES_ROOT\Shell.Application\及HKEY_CLASSES_ROOT\Shell.Application.1\改名为其它的名字,如:改为Shell.Application_ChangeName 或 Shell.Application.1_ChangeName,自己以后调用的时候使用这个就可以正常调用此组件了
步骤2:也要将clsid值也改一下,HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值和HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值,也可以将其删除,来防止此类木马的危害。
步骤3:注销Shell.Application组件文件:regsvr32/u C:\WINDOWS\system32\shell32.dll
步骤4:禁止Guest用户使用shell32.dll来防止调用此组件:cacls C:\WINDOWS\system32\shell32.dll /e /d guests。

以上设置做完之后,重新启动服务器。几个危险组件就彻底禁止掉了。核对下它们是否禁止成功,可以用ASP探针aspcheck.asp来探测下组件安全性。可以看到禁止掉的几个组件是叉号表示。

防范了大部分主流的ASP木马,当然一些偏门的asp木马仍然需要注意,这些偏门的ASP木马:例如利用adodb.stream的木马等,这些基本上利用下面要讲解到的安全措施进行防范。


端口安全:
可以使用TCP/IP的过滤或者Windows 2003自带防火墙来实现端口的安全,下面逐个讲解。
一、Windows 自带防火墙(Windows Firewall/Internet Connection Sharing (ICS))
步骤1:网上邻居—>(右键)属性—>本地连接—>(右键)属性—>高级—>(选中)Internet 连接防火墙—>设置 服务器上面要用到的服务端口选中

例如:一台WEB服务器,要提供WEB(80)、FTP(21)服务及远程桌面管理(3389)在“FTP 服务器”、“WEB服务器(HTTP)”、“远程桌面”、“安全WEB服务器”前面打上对号
如果你要提供服务的端口不在里面,你也可以点击“添加”铵钮来添加,SMTP和POP3根据需要打开

具体参数可以参照系统里面原有的参数。
步骤2:然后点击确定。注意:如果是远程管理这台服务器,请先确定远程管理的端口是否选中或添加。
一般需要打开的端口有:21、 25、 80、 110、 443、 3389、 等,根据需要开放需要的端口。注意将TCP/IP端口里面的10001-10005(需要用算法计算,下面会讲解到此算法)设置进去,因为这是设置Serv-U的PASV模式使用的端口,当然也可以使用别的。

二、WindowsTCP/IP的过滤
桌面上右击网上邻居--属性--双击打开外网网卡,选择Internet 协议(TCP/IP)--高级--切换到“高级TCP/IP设置”中的选项标签下,选择“TCP/IP筛选”,这里有三个过滤器,分别为:TCP端口、UDP端口和IP 协议,我们用TCP端口,将常用的端口添加进去。除了常见的服务程序应用端口外,仍然需要注意的是Serv-u的随机端口的设置。这个设置直接关系到用户访问FTP时是否会出现Socket错误。这里需要计算Serv-u的随机端口列表。参看下面“注意”中的随机端口计算。

注意:关于客户端软件出现Socket错误的几种可能的解决办法:
1、   将客户端软件的传输方式改为PASV方式
2、   根据Serv-u随机端口的算法,将计算出的随机端口列表添加到TCP/IP筛选中。例如:
客户端设置成被动方式,链接FTP服务器,会由于随机端口没有设置而出错,从软件中的出错信息中找到类似这样227 Entering Passive Mode (60,195,253,118,3,52)(格式:IP,m,n)找到它,我们利用公式计算出如果客户端用被动方式登录服务器时,服务器要动态开放的第一个端口值。公式为m*256+n,上例中应该是3*256+52=820,所以把随机端口列表820-830添加进去。注意:不要和已知存在的应用程序的端口冲突,例如mssql,mysql,termservice等端口。

3、   南北互联问题,这个问题的几率不大,没确切凭据。

三、端口与列表的进程关联查看
经常使用Activex Ports,psport, TCPView等小工具查看服务器端口对应的进程,可以防止一些低级别的木马后门植入。

同时也要检查常见的启动项,低级别的木马也喜欢在这些地方加载达到随机启动,可以利用小工具msconfig查看。


Windows常见自带程序的安全设置:
1、Tftp文件的修改
入侵者在权限允许的情况下可能会使用小型文件传输协议进行后门木马等危险程序的上传,所以需要彻底禁止掉TFTP服务,服务器一般很少用到这个服务。
操作:用文本编辑工具打开%systemroot%\system32\drivers\etc下的service文件找到对应的tftp那一行,将 69/udp 替换成 0/udp。保存退出

2、禁用Guests组用户调用cmd.exe
  2003使用命令:cacls C:\WINDOWS\system32\Cmd.exe /e /d guests,同理,将上面的命令应用到如下进程:
net1.exet
cmd.exe
tftp.exe
netstat.exe
regedit.exe
at.exe
attrib.exe
cacls.exe
format.com
netsh.exe(千万要注意这个程序,它可以修改网络属性以及windows自带防火墙设置,安全隐患大)

3、彻底禁止telnet的的登陆   
在c:\windows\system32目录下有个login.cmd文件,将其用记事本打开,在文件末尾另取一行,加入exit保存。这样用户在登陆telnet时,便会立即自动退出.


远程终端安全:
Termservices是Windows自带的远程管理程序,经常被入侵者利用。所以在这部分的安全设置要尤其注重。主要从端口,审核,日志,策略3个方面来加强它的安全
1、端口值:
将默认的3389改掉,改成一个很大的值,越大越好,因为入侵者可能利用某些工具探测终端端口,例如tsscan,设置的越大,越能起到拖延的作用。
修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp,这两个分支下的portnumber键值改为你想要的端口,例如65511

如果感觉手工修改注册表麻烦,可以用下面这个小工具代劳。

2、用户审核设置:
设置完端口之后,有必要对每次终端登陆的日志进行记录,以方便日常安全检查。
为远程登录启动日志记录:开始-程序-管理工具-终端服务配置-连接-rdp/tcp-右键-属性-权限-添加administrators组-高级-审核-添加everyone组,选择审核的项目为登录和注销。

3、批处理记录远程终端连接IP日志
步骤1:将下面的代码保存在记事本中保存为3389.bat,
@echo off
date /t >> E:\server\3389.txt
attrib +s +h E:\server\3389.bat
attrib +s +h E:\server\3389.txt
time /t >> E:\server\3389.txt
netstat -an |find "ESTABLISHED" |find ":3389" >>d:\3389.txt
(注:date和time是用于获取系统时间的, “attrib +s +h E:\server\3389.bat”和“attrib +s +h E:\server\3389.txt”这两个命令是用来隐藏3389.bat和3389.txt这两个文件的, “netstat -an |find "ESTABLISHED" |find ":3389" >>d:\3389.txt”这个命令则是记录通过终端的连结状况的。)
步骤2:打开注册表,展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon,找到“Userinit”这个键值,这个键值默认为c:\WINDOWS\system32\userinit.exe,在它的逗号后面写上E:\server\3389.bat批处理的路径,同时末尾以逗号结尾,完整的路径是:“
c:\WINDOWS\system32\userinit.exe, E:\server\3389.bat,“(注意结尾的逗号),这样每次用户只要是通过远程端口连接进入服务器,则会自动记录它的IP地址并保存在E:\server\3389.txt中。
4、远程登陆名请勿使用administrator这个用户名,因为CAIN这款功能强大嗅探工具在某些条件具备的情况下,可以嗅探并得到administrator登陆的明文密码,而其他名称的用户登陆则使CAIN无能为力。虽然RDP协议是128位加密,但是CAIN可以嗅探并破解。

5、利用安全策略指定远程终端登陆的IP范围,这是最对于Termserivce安全最牢固的方法,可以防止端口复用(例如:httptunnel)等入侵手段。具体操作如下:
222.41.
第三方软件的安全设置:
常见的第三方服务软件,例如Serv-u,pcAnywhere,radmin等需要特别注意,它们经常被入侵者做为服务器提权的主要手段之一。
1、Serv-u:Serv-u默认的目录权限以及内置的超级管理员权限经常被利用提权。安全设措施如下:首先在Services.msc中停掉Serv-U服务,然后用Ultraedit打开ServUDaemon.exe
查找 Ascii:LocalAdministrator 和 #l@$ak#.lk;0@P,修改成等长度的其它字符就可以了,注意:同时也要将ServUAdmin.exe一样处理。

设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则入侵者可能会通过脚本shell将ServUDaemon.exe下载到本地后,同样用Ultraedit可以分析出修改过后的超级管理员用户和密码,然后修改溢出提权程序,同样达到提权。
以下是一个Serv-u提权程序的应用范例,很容易利用未修改的Serv-u的管理员用户和密码来执行系统操作。

 

2、ftp连接软件的权限设置
由于ftp连接软件(例如flashfxp)里面保存有ftp记录的历史信息文件,如果被入侵者通过脚本shell下载到本地后,它只需要覆盖到本机器上的同版本FTP软件中,那么那些曾经的历史记录就会出现,入侵者可能会利用星号密码查看器之类的东西查看得到FTP密码。所以必须对ftp软件安装的目录进行权限设置,只允许Administrators组访问,其他组一概禁止访问。

3、PcAnywhere密码安全
PcAnywhere是常见的远程管理软件,默认生成的密码文件(.cif文件后缀)会在C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\目录下产生,而这个目录默认权限是允许user组查看并读取,所以入侵者可能会利用脚本shell在这里将密码文件下载到本地后,然后利用PCAnywhere PassView类似的显密码工具得到管理密码。
所以对这个目录必须进行除administrators组外的所有用户和组的限制。同时尽量使用最新版本的PcAnywhere 11版本以上(11版本以后的密码强度很难破解,也没有相关的破解工具发布),目前流行的pcAnywhere密码破解软件无法破解最新版的密码。当然最安全的设置是采用Symantec Packagerd 的SecurID 双重认证机制。默认情况下,不推荐使用此工具管理服务器,因为它可能与终端服务产生冲突,导致远程终端服务因为GINA问题无法登陆。
4、Radmin密码安全
Radmin也是类似PcAnywhere的一款远程管理软件,它的密码文件会默认产生在注册表中,如果在权限允许的情况下,入侵者可以替换掉相关的radmin注册表键值,从而可以使用修改过的密码进行登陆服务器。发现部分托管服务器用户喜欢使用Radmin管理服务器,建议一般情况下不推荐使用此软件进行远程管理。


木马病毒的防范设置:
入侵者一般习惯在服务器上安装内核心级后门或木马,例如灰鸽子,黑洞,黑客之门等,这些后门在修改之后,很难用基本的杀毒软件和端口查看软件发现,所以推荐使用F-Secure BlackLight+ICESWOR +一款主流杀毒软件(Mcafee或NOD32),基本上可以使修改过的或未公开的内核级后门无法隐藏。
1、F-Secure BlackLight+ICESWOR可以有效的查出内核级后门以及目前非常泛滥的后门灰鸽子和黑洞等线程插入式后门。使用时最好配合一般的进程查看工具,然后将两者的扫描结果进行对照,即可发现内核可疑之处。
注:
ICESWOR:它适用于Windows 2000/XP/2003操作系统,用于查探系统中的幕后黑手(木马后门)并作出处理,当然使用它需要用户有一些操作系统的知识。

在对软件做讲解之前,首先说明第一注意事项:此程序运行时不要激活内核调试器(如softice),否则系统可能即刻崩溃。另外使用前请保存好您的数据,以防万一未知的Bug带来损失。IceSword目前只为使用32位的x86兼容CPU的系统设计,另外运行IceSword需要管理员权限。
F-Secure BlackLight:可以侦测并清除活动着的Rootkit,而许多传统的病毒扫描无法侦测出活动着的Rootkit,是对付Rootkit系病毒的利器。

2、用Mcafee建立新的安全策略。禁止向系统目录写入dll和exe文件。这样可以有效的防范病毒感染。同时制定每天的定时杀毒计划。同时给Mcafee加上密码访问,防止恶意关闭。

常见安全策略制定:
1、打开组策略编辑器,依次展开“计算机配置→Windows 设置→安全设置→本地策略→安全选项”,在右侧窗口中找到“网络访问:可远程访问的注册表路径”,然后在打开的窗口中,将可远程访问的注册表路径和子路径内容全部设置为空即可。

2、关闭自动播放功能不仅对光驱起作用,而且对其它驱动器也起作用,这样很容易被入侵者利用给文件夹目录中写入auto.inf文件执行自动执行黑客程序。打开组策略编辑器,依次展开“计算机配置→管理模板→系统”,在右侧窗口中找到“关闭自动播放”选项并双击,在打开的对话框中选择“已启用”,然后在“关闭自动播放”后面的下拉菜单中选择“所有驱动器”,按“确定”即可生效。

3、安全策略->本地策略->审核策略,打开以下内容:
审核策略更改 成功,失败
审核系统事件 成功,失败
审核帐户登陆事件 成功,失败
审核帐户管理 成功,失败


4、计算机配置→Windows设置→安全设置→本地策略→安全选项→交互式登陆(不显示上次的用户名)
5、计算机配置→Windows设置→安全设置→本地策略→安全选项→帐户:重命名系统管理员帐户


帐号安全问题:
1、禁用Guest账号
在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。
2、限制不必要的用户
去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。
3、把系统Administrator账号改名

4、建一个陷阱用户
什么是陷阱用户?即创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。
5把共享文件的权限从Everyone组改成授权用户
5、不让系统显示上次登录的用户名
默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表项“HKLMSoftwareMicrosoftWindows TCurrentVersionWinlogonDont-DisplayLastUserName”,把REG_SZ的键值改成1。或者直接在组策略里修改。
6、密码安全设置
一些公司的管理员创建账号的时候往往用公司名、计算机名做用户名,然后又把这些用户的密码设置得太简单,比如“welcome”等等。因此,要注意密码的复杂性,还要记住经常改密码。 同时建议托管用户在第一时间内修改掉默认上架密码bizctt,这样可以防止同一交换机下的攻击,例如arpsniffer等。
7、陌生帐号处理
发现服务器中的陌生帐号之后,极可能是被入侵者添加的,一般情况下要首先对其进行过的操作进行取证,主要方法是修改这个陌生帐号的密码后,用其帐户进行登陆,然后查看帐号对应下的最近操作记录,在C:\Documents and Settings\用户名\Recent下,同时分析IE记录,并通过搜索功能查找自帐号建立时间起内进行修改的文件的查找工作,这样可以短时间内确定陌生帐号在服务器上进行的操作。

 

转自:http://www.huweishen.com/help/zatan/967.html