╃苍狼山庄╃╃苍狼山庄╃

Clang出品,
必属精品!

Windows WEB服务器配置安全规范

一、安装 Win 200x 安全概览
1.硬盘分区的文件系统选择
①使用多分区分别管理不同内容
在安装Win 2000时,如条件许可,应至少建立两个逻辑分区,一个用作系统分区,另一个用作应用程序分区。尽量修改“我的文档”及“Outlook Express”等应用程序的默认文件夹位置,使其位置不在系统分区。对提供服务的机器,可按如下设置分区:
分区1:系统分区,安装系统和重要日志文件。
分区2:提供给IIS使用。
分区3:提供给FTP使用。
分区4:放置其他一些资料文件。(以上为示例,可灵活把握)

②采用NTFS文件系统
所有磁盘分区必须采用 NTFS 文件系统,而不要使用 FAT32!
特别注意:一定要在系统安装时,通过安装程序将系统盘格式化为NTFS,而不要先以 FAT32 格式安装系统,然后再用 Convert 转换!因为转换后的磁盘根目录的默认权限过高!

③使用文件加密系统EFS
Windows2000 强大的加密系统能够给磁盘,文件夹,文件加上一层安全保护。这样可以防止别人把你的硬盘挂到别的机器上以读出里面的数据。记住要给文件夹也使用EFS,而不仅仅是单个的文件。 有关EFS的具体信息可以查看
http://www.microsoft.com/windows2000/techinfo/howitworks/security/encrypt.asp
注意:建议加密temp文件夹!因为一些应用程序在安装和升级的时候,会把一些东西拷贝到temp文件夹,但是当程序升级完毕或关闭的时候,它们并不会自己清除temp文件夹的内容。所以,给temp文件夹加密可以给你的文件多一层保护。

2.组件的定制
不要按Win 2000的默认安装组件,根据安全原则“最少的服务+最小的权限=最大的安全”,只选择确实需要的服务安装即可。
典型Web服务器需要的最小组件是:
公用文件、Internet 服务管理器、WWW服务器。

3.接入网络时间
在安装完成Win 2000**作系统时,不要立即把服务器接入网络,因为这时的服务器还没有打上各种补丁,存在各种漏洞,非常容易感染病毒和被入侵。
补丁的安装应该在所有应用程序安装完之后,因为补丁程序往往要替换或修改某些系统文件,如果先安装补丁再安装应用程序有可能导致补丁不能起到应有的效果。IIS的HotFix要求每次更改IIS的配置时都需要重新安装。

4.账户安全管理
1)账户要尽可能少,并且要经常用一些扫描工具检查系统账户、账户权限及密码。删除已经不再使用的账户。
2)停用Guest账号,并给Guest 加一个复杂的密码。
3)把系统Administrator账号改名,尽量把它伪装成普通用户,名称不要带有Admin字样。
4)不让系统显示上次登录的用户名,具体**作如下:
修改注册表“HKLM\Software\Microsoft\ WindowsNT\ Current Version\Winlogon\Dont Display Last User Name”的键值,把REG_SZ 的键值改成1。

5.安全审核
在“管理工具→远程控制服务配置→连接”处,右键点击“RPD-TCP”连接,选择“属性”,在其窗口选中“权限”,点击右下角的“高级”,选择“审核”,增加一个“everyone”组,审核它的“连接”、“断开”、“注销”和“登录”的成功和失败。在“管理工具→日记查看→安全日记”可看到该审核记录。

开启安全审核是win2000最基本的入侵检测方法。当有人尝试对你的系统进行某些方式(如尝试用户密码,改变帐户策略,未经许可的文件访问等等)入侵的时候,都会被安全审核记录下来。很多的管理员在系统被入侵了几个月都不知道,直到系统遭到破坏。下面的这些审核是必须开启的,其他的可以根据需要增加:
策略 设置
审核系统登陆事件 成功,失败
审核帐户管理 成功,失败
审核登陆事件 成功,失败
审核对象访问 成功
审核策略更改 成功,失败
审核特权使用 成功,失败
审核系统事件 成功,失败

6.卸载无用的组件模块
将\Winnt\inf 下的sysoc.inf 文件中的所有hide用替换法删除;然后在控制面板的添加删除程序中就可以卸载所有不需要的组件。

二、基本系统设置
1.安装各种补丁
安装Service Pack 和最新的hotfix;安装SQL和IIS系列补丁。
如果从本地备份中安装,则随后必须立即通过在线更新功能查验是否有遗漏的补丁没有安装。
建议启用系统自动更新功能,并设置为有更新时自动下载安装。

注意:建议记得安装最新的MDAC(http://www.microsoft.com/data/download.htm)
MDAC为数据访问部件,通常程序对数据库的访问都通过它,但它也是黑客攻击的目标,且MDAC一般不以补丁形式发放的,比较容易漏更新。为防止以前版本的漏洞可能会被带入升级后的版本,建议卸载后安装最新的版本。注意:在安装最新版本前最好先做一下测试,因为有的数据访问方式或许在新版本中不再被支持,这种情况下可以通过修改注册表来档漏洞,详见漏洞测试文档。

2.分区内容规划
1)操作系统、Web主目录、日志分别安装在不同的分区。
2)关闭任何分区的自动运行特性:
可以使用 TweakUI 等工具进行修改。以防万一有人放入Autorun程序实现恶意代码自动加载。

3.协议管理
卸载不需要的协议,比如IPX/SPX, NetBIOS;
在连接属性对话框的TCP)/IP属性的高级选项卡中,选择“WINS”,选定“禁用TCP/IP上的NETBIOS”。

4.关闭所有以下不需要的服务
以下仅供参考,具体还要看服务器上运行的应用来确定!要特别注意各服务之间的储存关系,个性为当可能导致某些功能的异常,甚至服务器不能工作!建议每次只个性两三个项目,重启测试无误后再设置其他项目!
* Alerter (disable)
* ClipBook Server (disable)
* Computer Browser (disable)
* DHCP Client (disable)
* Directory Replicator (disable)
* FTP publishing service (disable)
* License Logging Service (disable)
* Messenger (disable)
* Netlogon (disable)
* Network DDE (disable)
* Network DDE DSDM (disable)
* Network Monitor (disable)
**** Plug and Play (disable after all hardware configuration)****
* Remote Access Server (disable)
* Remote Procedure Call (RPC) locater (disable)
* Schedule (disable)
* Server (disable)
* Simple Services (disable)
* Spooler (disable)
* TCP/IP Netbios Helper (disable)
* ***Telephone Service (disable)****
在必要时禁止如下服务:
* SNMP service (optional)
* SNMP trap (optional)
* UPS (optional
设置如下服务为自动启动:
* Eventlog ( required )
* NT LM Security Provider (required)
* RPC service (required)
* WWW (required)
* Workstation (leave service on: will be disabled later in the document.
* MSDTC (required)
* Protected Storage (required)

5.删除 OS/2 和 POSIX 子系统:
删除如下目录的任何键:
HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\OS/2 Subsystem for NT
删除如下的键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Os2LibPath
删除如下的键:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Optional
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Posix
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Os2
删除如下目录:c:\winnt\system32\os2 但会出现文件保护的提示,建议不删除,修改注册表就可以了

6.帐号和密码策略
1)保证禁止guest帐号
2)将administrator改名为比较难猜的帐号
3)密码唯一性:记录上次的 6 个密码
4) 最短密码期限:2
5) 密码最长期限:42
6) 最短密码长度:8
7) 密码复杂化(passfilt.dll):启用
8) 用户必须登录方能更改密码:启用
9) 帐号失败登录锁定的门限:6
10)锁定后重新启用的时间间隔:720分钟
11)本地安全策略:
设置“本地安全策略→本地策略→选项”中的RestrictAnonymous(匿名连接的额外限制)为“不容许枚举SAM账号和共享”。
在安全选项中,不显示上次登录用户名、重命名管理员账号名称(某些情况下可能导致个别程序运行异常!);在用户权力指派中,限制更改系统时间、关闭系统的权力仅管理员。

7.设置文件和目录权限
将C:\winnt, C:\winnt\config, C:\winnt\system32, C:\winnt\system等目录的访问权限做限制,限制everyone的写权限,限制users组的读写权限;
将各分区的根目录的everyone从权限列表中删除!然后分别添加Administrators、PowerUsers、Users、IUSR_***以不同的权限。不要给Guests任何权限。
运行Sfc /enable 启动文件保护机制。

8.注册表一些条目的修改
1) 去除logon对话框中的shutdown按钮
将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\
中 ShutdownWithoutLogon REG_SZ 值设为0
2)去除logon信息的cashing功能
将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\中
CachedLogonsCount REG_SZ 值设为0
3)隐藏上次登陆的用户名
将HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\中
DontDisplayLastUserName REG_SZ 值设为1
4)限制LSA匿名访问
将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA中
RestricAnonymous REG_DWORD 值设为1
5)去除所有网络共享
将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters\中
AutoShareServer REG_DWORD 值设为0
再创建一个AutoShareWks双字节值,设置为0(注意大小写)。
6)禁止建立空连接
默认情况下,任何用户可通过空连接连上服务器,枚举账号并猜测密码。可以通过以下两种方法禁止
建立空连接。
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成1
7)修改终端服务的默认端口
终端服务的默认端口为3389,可考虑修改为别的端口。修改方法为:
打开注册表,在“HKLM\SYSTEM\Current ControlSet\Control\Terminal Server\Win Stations”处
找到类似RDP-TCP的子键,修改PortNumber值。

9.启用TCP/IP过滤
只允许TCP端口80和443(如果使用SSL)以及其他可能要用的端口;
不允许UDP端口;
只允许IP Protocol 6 (TCP)。
web服务器就可以,其他如域服务器不行,该规范主要针对WEB服务器。

10.移动部分重要文件并加访问控制
创建一个只有系统管理员能够访问的目录,将system32目录下的一些重要文件移动到此目录(注意同时处理System32\Dllcache目录中的同名文件!)。但有时会因系统文件保护功能被启用而无法实现顺利删除。
变通办法是选中这些文件,然后禁止任何人访问。
为稳妥起见,应当事先将这些文件存放到其他比较安全的位置供管理员自己使用。
xcopy.exe, wscript.exe, cscript.exe, net.exe, ftp.exe, telnet.exe,arp.exe,
edlin.exe,ping.exe,route.exe,at.exe,finger.exe,posix.exe,rsh.exe,atsvc.exe,
qbasic.exe,runonce.exe,syskey.exe,cacls.exe, ipconfig.exe, rcp.exe,
secfixup.exe, nbtstat.exe, rdisk.exe, debug.exe, regedt32.exe, regedit.exe,
edit.com, netstat.exe, tracert.exe, nslookup.exe, rexec.exe, cmd.exe

11.下载Hisecweb.inf安全模板来配置系统
Http://download.microsoft.com/downl...US/hisecweb.exe
该模板配置基本的 Windows 2000 系统安全策略。
将该模板复制到 %windir%\security\templates 目录。
打开“安全模板”工具,查看这些设置。
打开“安全配置和分析”工具,然后装载该模板。
右键单击“安全配置和分析”工具,然后从上下文菜单中选择“立即分析计算机”。
等候操作完成。
查看结果,如有必要就更新该模板。
右键单击“安全配置和分析”工具,然后从上下文菜单中选择“立即配置计算机”。

12. 服务器上其他工具程序的替代
浏览器建议使用FireFox,以免最新的针对IE的漏洞造成的危害。平时尽量不在服务器上上网。

13.设置陷阱脚本
既要防范被人启用Telnet服务,又要考虑万一被入侵后的对策。
除Telnet服务外,对System32目录下的Telsrv.exe等文件设置访问权限;关闭相关服务;然后再编辑System32\login.cmd文件,在其中添加脚本,目的是导致对方登录后出现异常,无法正常连接和工作。脚本的内容可以自由发挥,以阻断对方操作为准。

14.取消部分危险文件扩展名
如reg VBS VBE JS等。

关闭445端口
445端口惹出了不少问题 关闭方法 修改注册表,添加一个键值
Hive: HKEY_LOCAL_MACHINE
Key: System\CurrentControlSet\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
修改完后重启机器,运行“netstat -an”,445端口已经不再Listening了。

关闭 DirectDraw
这是C2级安全标准对视频卡和内存的要求。关闭DirectDraw可能对一些需要用到DirectX的程序有影响(比如游戏,在服务器上玩星际争霸?我晕..$%$^%^&??),但是对于绝大多数的商业站点都应该是没有影响的。 修改注册表 HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\DCI 的Timeout(REG_DWORD)为 0 即可。

禁止dump file的产生和自动清除掉页面文件
dump文件在系统崩溃和蓝屏的时候是一份很有用的查找问题的资料(不然我就照字面意思翻译成垃圾文件了)。然而,它也能够给黑客提供一些敏感信息比如一些应用程序的密码等。要禁止它,打开 控制面板>系统属性>高级>启动和故障恢复 把 写入调试信息 改成无。要用的时候,可以再重新打开它。
关机时清除掉页面文件:
页面文件也就是调度文件,是win2000用来存储没有装入内存的程序和数据文件部分的隐藏文件。一些第三方的程序可以把一些没有的加密的密码存在内存中,页面文件中也可能含有另外一些敏感的资料。 要在关机的时候清楚页面文件,可以编辑注册表
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
把ClearPageFileAtShutdown的值设置成1。

禁止从软盘和CD Rom启动系统
一些第三方的工具能通过引导系统来绕过原有的安全机制。如果你的服务器对安全要求非常高,可以考虑使用可移动软盘和光驱。把机箱锁起来仍不失为一个好方法。

锁住注册表的访问权限
在windows2000中,只有administrators和Backup Operators才有从网络上访问注册表的权限。如果你觉得还不够的话,可以进一步设定注册表访问权限,详细信息请参考:
http://support.microsoft.com/support/kb/articles/Q153/1/83.asp

考虑使用IPSec增强IP数据包的安全性
正如其名字的含义,IPSec 提供 IP 数据包的安全性。IPSec 提供身份验证、完整性和可选择的机密性。发送方计算机在传输之前加密数据,而接收方计算机在收到数据之后解密数据。利用IPSec可以使得系统的安全性能大大增强。有关IPSes的详细信息可以参考: http://www.microsoft.com/china/technet/security/ipsecloc.asp

考虑使用智能卡来代替密码
对于密码,总是使安全管理员进退两难,容易受到 10phtcrack 等工具的攻击,如果密码太复杂,用户把为了记住密码,会把密码到处乱写。如果条件允许,用智能卡来代替复杂的密码是一个很好的解决方法。

将服务器隐藏起来
为了防止黑客或其他非法攻击者轻易搜索到局域网服务器的名字,你可以巧妙使用“net config”命令,将服务器的名称暂时隐藏起来。如此一来局域网中的非法用户,即使通过网上邻居窗口,也无法找到服务器的“身影”了,服务器遭受外来攻击的危险性将会大大下降。

要用命令隐藏服务器的名称时,可以直接在DOS命令行中输入“net config server /hidden:yes”(其中server是服务器的计算机名称),回车后,服务器的计算机名称就会从网上邻居窗口中自动消失,这样黑客就无法知道服务器的名称是什么了,更不要谈如何去攻击它了。

Win 2003中提高FSO的安全性
ASP提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作,这给学校网站的安全带来巨大的威胁。现在很多校园主机都遭受过FSO木马的侵扰。但是禁用FSO组件后,引起的后果就是所有利用这个组件的ASP程序将无法运行,无法满足客户的需求。如何既允许FileSystemObject组件,又不影响服务器的安全性呢(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)?以下是笔者多年来摸索出来的经验:

第一步是有别于Windows 2000设置的关键:右击C盘,点击“共享与安全”,在出现在对话框中选择“安全”选项卡,将Everyone、Users组删除,删除后如果你的网站连ASP程序都不能运行,请添加IIS_WPG组,并重启计算机。
经过这样设计后,FSO木马就已经不能运行了。如果你要进行更安全级别的设置,请分别对各个磁盘分区进行如上设置,并为各个站点设置不同匿名访问用户。下面以实例来介绍(假设你的主机上E盘Abc文件夹下设Abc.com站点):
1. 打开“计算机管理→本地用户和组→用户”,创建Abc用户,并设置密码,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”,并把用户设置为隶属于Guests组。
2. 右击E:\Abc,选择“属性→安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),删除Everyone的完全控制(如果不能删除,请点击[高级]按钮,将“允许父项的继承权限传播”前面的对号去掉,并删除所有),添加Administrators及Abc用户对本网站目录的所有安全权限。

3. 打开IIS管理器,右击Abc.com主机名,在弹出的菜单中选择“属性→目录安全性”选项卡,点击身份验证和访问控制的[编辑],弹出图2所示对话框,匿名访问用户默认的就是“IUSR_机器名”,点击[浏览],在“选择用户”对话框中找到前面创建的Abc账户,确定后重复输入密码。
经过这样设置,访问网站的用户就以Abc账户匿名身份访问E:\Abc文件夹的站点,因为Abc账户只对此文件夹有安全权限,所以他只能在本文件夹下使用FSO。

常见问题:

如何解除FSO上传程序小于200k限制?

先在服务里关闭IIS admin service服务,找到Windows\System32\Inesrv目录下的Metabase.xml并打开,找到ASPMaxRequestEntityAllowed,将其修改为需要的值。默认为204800,即200K,把它修改为51200000(50M),然后重启IIS admin service服务。

三、IIS 安全设置
1.关闭并删除默认站点
默认FTP站点
默认Web站点
管理Web站点

2.建立自己的站点,与系统不在一个分区
如:D:\wwwroot3.建立 E:\Logfiles 目录,以后建立站点时的日志文件均位于此目录,确保此目录
上的访问控制权限是: Administrators(完全控制)System(完全控制)

3.删除IIS的部分目录
IISHelp C:\winnt\help\iishelp
IISAdmin C:\system32\inetsrv\iisadmin
MSADC C:\Program Files\Common Files\System\msadc\
删除 C:\\inetpub

4.删除不必要的IIS映射和扩展
IIS 被预先配置为支持常用的文件名扩展如 .asp 和 .shtm 文件。IIS 接收到这些类型 的文件
请求时,该调用由 DLL 处理。如果您不使用其中的某些扩展或功能,则应删除该映射,步骤如下:
打开 Internet 服务管理器:
选择计算机名,点鼠标右键,选择属性:
然后选择编辑
然后选择主目录, 点击配置
选择扩展名 \".htw\", \".htr\",\".idc\",\".ida\",\".idq\"和,点击删除
如果不使用server side include,则删除\".shtm\" \".stm\" 和 \".shtml\"

5.禁用父路径 (有可能导致某些使用相对路径的子页面不能打开)
“父路径”选项允许您在对诸如 MapPath 函数调用中使用“..”。在默认情况下,该选项
处于启用状态,应该禁用它。
禁用该选项的步骤如下:
右键单击该 Web 站点的根,然后从上下文菜单中选择“属性”。
单击“主目录”选项卡。
单击“配置”。
单击“应用程序选项”选项卡。
取消选择“启用父路径”复选框。

6.在虚拟目录上设置访问控制权限
在iis里把所有的目录,不包括asp等文件的目录 ,比如img,image,pic,upload等等这些目录,里面一般是没有asp文件的目录的执行许可设置为无,这样就算你用的程序被发现了新的漏洞,传了马上来了,它也执行不了,不过要看仔细了,有些目录里也是有asp,asa文件的!

主页使用的文件按照文件类型应使用不同的访问控制列表:
CGI (.exe, .dll, .cmd, .pl)
Everyone (X)
Administrators(完全控制)
System(完全控制)
脚本文件 (.asp)
Everyone (X)
Administrators(完全控制)
System(完全控制)
include文件 (.inc, .shtm, .shtml)
Everyone (X)
Administrators(完全控制)
System(完全控制)
静态内容 (.txt, .gif, .jpg, .html)
Everyone (R)
Administrators(完全控制)
System(完全控制)
在创建Web站点时,没有必要在每个文件上设置访问控制权限,应该为每个文件类型创建一个
新目录,然后在每个目录上设置访问控制权限、允许访问控制权限传给各个文件。
例如,目录结构可为以下形式:
D:\wwwroot\myserver\static (.html)
D:\wwwroot\myserver\include (.inc)
D:\wwwroot\myserver \script (.asp)
D:\wwwroot\myserver \executable (.dll)
D:\wwwroot\myserver \images (.gif, .jpeg)

7.启用日志记录
1)日志的审核配置
确定服务器是否被攻击时,日志记录是极其重要的。
应使用 W3C 扩展日志记录格式,步骤如下:
打开 Internet 服务管理器:
右键单击站点,然后从上下文菜单中选择“属性”。
单击“Web 站点”选项卡。
选中“启用日志记录”复选框。
从“活动日志格式”下拉列表中选择“W3C 扩展日志文件格式”。
单击“属性”。
单击“扩展属性”选项卡,然后设置以下属性:
* 客户 IP 地址
* 用户名
* 方法
* URI 资源
* HTTP 状态
* Win32 状态
* 用户代理
* 服务器 IP 地址
* 服务器端口
2)日志的安全管理
1、启用操作系统组策略中的审核功能,对关键事件进行审核记录;
2、启用IIS、FTP服务器等服务本身的日志功能;并对所有日志存放的默认位置进行更改同时作好文件夹权限设置!
3、安装Portreport对所有网络访问操作进行监视(可选,可能增大服务器负荷);
4、安装自动备份工具,定时对上述日志进行异地备份,起码是在其他分区的隐蔽位置进行备份,并对备份目录设置好权限(仅管理员可访问)。
5、准备一款日志分析工具,以便随时可用。
6、要特别关注任何服务的重启、访问敏感的扩展存储过程等事件。

8.备份IIS配置
可使用IIS的备份功能,将设定好的IIS配置全部备份下来,这样就可以随时恢复

9.修改IIS标志
1)使用工具程序修改IIS标志
修改IIS标志Banner的方法:
下载一个修改IIS Banner显示信息的软件——IIS/PWS Banner Edit。利用它我们可以很轻松地修改IIS的Banner。但要注意在修改之前我们首先要将IIS停止(最好是在服务中将World Wide Web Publishing停止),并要将DLLcache下的文件全部清除。否则你会发现即使修改了一点改变也没有。
IIS/PWS Banner Edit其实是个傻瓜级的软件,我们只要直接在New Banner中输入想要的Banner信息,再点击Save to file就修改成功了。用IIS/PWS Banner Edit简单地修改,对菜鸟黑客来说他可能已被假的信息迷惑了,可是对一些高手来说这并没有给他们造成什么麻烦。为此我们必须亲自修改IIS的Banner信息,这样才能做到万无一失。
高版本Windows的文件路径为 C:\WINDOWS\system32\inetsrv\w3svc.dll,可以直接用Ultraedit打开W3SVC.DLL,然后以“Server:”为关键字查找。利用编辑器将原来的内容替换成我们想要的信息,比如改成Apache的显示信息,这样入侵者就无法判断我们的主机类型,也就无从选择溢出工具了。
2)修改IIS的默认出错提示信息等。

10.重定义错误信息
很多文章讲了怎样防止数据库不被下载都不错的,只要记住一点 .不要改成asp就可以了,不然给你放一个一句话木马让你死的很难看,再着在IIS中将HTTP404.500等 Object Not Found出错页面通过URL重定向到一个定制HTM文件,这样大多数的暴库得到的都是你设置好的文件,自然就掩饰了数据库的地址还能防止一些菜鸟sql注射。

对于服务器管理员,既然你不可能挨个检查每个网站是否存在SQL注入漏洞,那么就来个一个绝招。这个绝招能有效防止SQL注入入侵而且"省心又省力,效果真好!"SQL注入入侵是根据IIS给出的ASP错误提示信息来入侵的,如果你把IIS设置成不管出什么样的ASP错误,只给出一种错误提示信息,即http 500错误,那么人家就没办法入侵了。具体设置请参看图2。主要把500:100这个错误的默认提示页面 C:\WINDOWS\Help\iisHelp\common\500-100.asp改成
C:\WINDOWS\Help\iisHelp\common\500.htm即可,这时,无论ASP运行中出什么错,服务器都只提示HTTP 500错误。
还可更改C:\WINDOWS\Help\iisHelp\common\404b.htm内容改为这样,出错了自动转到首页。

Win 2003中提高FSO的安全性
ASP提供了强大的文件系统访问能力,可以对服务器硬盘上的任何文件进行读、写、复制、删除、改名等操作,这给学校网站的安全带来巨大的威胁。现在很多校园主机都遭受过FSO木马的侵扰。但是禁用FSO组件后,引起的后果就是所有利用这个组件的ASP程序将无法运行,无法满足客户的需求。如何既允许FileSystemObject组件,又不影响服务器的安全性呢(即:不同虚拟主机用户之间不能使用该组件读写别人的文件)?以下是笔者多年来摸索出来的经验:

第一步是有别于Windows 2000设置的关键:右击C盘,点击“共享与安全”,在出现在对话框中选择“安全”选项卡,将Everyone、Users组删除,删除后如果你的网站连ASP程序都不能运行,请添加IIS_WPG组(图1),并重启计算机。

经过这样设计后,FSO木马就已经不能运行了。如果你要进行更安全级别的设置,请分别对各个磁盘分区进行如上设置,并为各个站点设置不同匿名访问用户。下面以实例来介绍(假设你的主机上E盘Abc文件夹下设Abc.com站点):

1. 打开“计算机管理→本地用户和组→用户”,创建Abc用户,并设置密码,并将“用户下次登录时须更改密码”前的对号去掉,选中“用户不能更改密码”和“密码永不过期”,并把用户设置为隶属于Guests组。

2. 右击E:\Abc,选择“属性→安全”选项卡,此时可以看到该文件夹的默认安全设置是“Everyone”完全控制(视不同情况显示的内容不完全一样),删除Everyone的完全控制(如果不能删除,请点击[高级]按钮,将“允许父项的继承权限传播”前面的对号去掉,并删除所有),添加Administrators及Abc用户对本网站目录的所有安全权限。

3. 打开IIS管理器,右击Abc.com主机名,在弹出的菜单中选择“属性→目录安全性”选项卡,点击身份验证和访问控制的[编辑],弹出图2所示对话框,匿名访问用户默认的就是“IUSR_机器名”,点击[浏览],在“选择用户”对话框中找到前面创建的Abc账户,确定后重复输入密码。

经过这样设置,访问网站的用户就以Abc账户匿名身份访问E:\Abc文件夹的站点,因为Abc账户只对此文件夹有安全权限,所以他只能在本文件夹下使用FSO。

常见问题:

如何解除FSO上传程序小于200k限制?

先在服务里关闭IIS admin service服务,找到Windows\System32\Inesrv目录下的Metabase.xml并打开,找到ASPMaxRequestEntityAllowed,将其修改为需要的值。默认为204800,即200K,把它修改为51200000(50M),然后重启IIS admin service服务。

防止 ASP 木马在服务器上运行
目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作。
一、使用FileSystemObject组件
FileSystemObject可以对文件进行常规操作
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT\Scripting.FileSystemObject\
改名为其它的名字,如:改为FileSystemObject_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值
也可以将其删除,来防止此类木马的危害。
注销此组件命令:RegSrv32 /u C:\WINNT\SYSTEM\scrrun.dll
禁止Guest用户使用scrrun.dll来防止调用此组件。
使用命令:cacls C:\WINNT\system32\scrrun.dll /e /d guests
二、使用WScript.Shell组件
WScript.Shell可以调用系统内核运行DOS基本命令
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT\WScript.Shell\

HKEY_CLASSES_ROOT\WScript.Shell.1\
改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值
HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值
也可以将其删除,来防止此类木马的危害。
三、使用Shell.Application组件
Shell.Application可以调用系统内核运行DOS基本命令
可以通过修改注册表,将此组件改名,来防止此类木马的危害。
HKEY_CLASSES_ROOT\Shell.Application\

HKEY_CLASSES_ROOT\Shell.Application.1\
改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
也可以将其删除,来防止此类木马的危害。
禁止Guest用户使用shell32.dll来防止调用此组件。
使用命令:cacls C:\WINNT\system32\shell32.dll /e /d guests
注:操作均需要重新启动WEB服务后才会生效。
四、调用Cmd.exe
禁用Guests组用户调用cmd.exe
cacls C:\WINNT\system32\Cmd.exe /e /d guests
通过以上四步的设置基本可以防范目前比较流行的几种木马,但最有效的办法还是通过综合安全设置,将服务器、程序安全都达到一定标准,才可能将安全等级设置较高,防范更多非法入侵。

四、数据及备份管理
1.备份
1)要经常把重要数据备份到专用的备份服务器,备份完毕后,可将备份服务器与网络隔离。 可采用自动的备份工具进行,要求支持FTP方式备份。
2)使用系统的备份功能对安装好的系统进行阶段性备份。
3)使用WonRescue等工具对注册表进行阶段性备份。
4)使用Ghost对全面配置完毕的系统分区进行映像备份,并存放到隐藏的分区中。

2.设置文件共享权限
1)限制共享权限
设置共享文件时,要注意把共享文件的权限从“everyone”组改成“授权用户”,包括打印共享。
2)关闭默认共享
Win 2000安装好以后,系统会创建一些隐藏的共享,在cmd下可用net share命令查看它们。要禁止这
些共享。操作方法是:打开“管理工具→计算机管理→共享文件夹→共享”,在相应的共享文件夹上按右
键,点“停止共享”即可。不当过机器重新启动后,这些共享又会重新开启。

3.防止文件名欺骗
设置以下选项可防止文件名欺骗,如防止以.txt或.exe为后缀的恶意文件被显示为.txt文件,从而使
人大意打开该文件: 双击“我的电脑→工具→文件夹选项→查看”,选择“显示所有文件和文件夹”属性
设置,去掉“隐藏已知文件类型扩展名”属性设置。

4.Access数据库的安全概要
1)新生成的数据库在保证干净的前提下,主动在尾部合并一行ASP代码,内容一般可以为重定向,以免别人通过论坛发帖等方式嵌入有害代码后被得到执行;
2)对MDB文件创建一个无效的映射,以便在IE中下载时出错;
3)修改出错页面,建议将出错页面设计为正常被曝库后的内容,但给一个数据库的虚假地址(最好存在相应的虚假数据库文件,比如一个改名后的病毒等);
4)在防火墙中对MDB类型的扩展名进行过滤;
5)删除或禁用网站的后台数据库备份功能,而用本地安装的专门自动备份程序进行自动增量备份。
6)ASP 通用防止注入的程序:
功能简单说明:
1.自动获取页面所有参数,无需手工定义参数名.
2.提供三种错误处理方式供选择.
(1).提示信息.
(2).转向页面.
(3).提示信息,再转向页面.
3.自定义转向页面.
使用方法很简单,只需要在ASP页面头部插入代码

包含 Fy_SqlX.Asp 就可以了~~简单实用
<%
Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx
'---定义部份 头------
Fy_Cl = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Fy_Zx = "Error.Asp" '出错时转向的页面
On Error Resume Next
Fy_Url=Request.ServerVariables("QUERY_STRING")
Fy_a=split(Fy_Url,"&")
redim Fy_Cs(ubound(Fy_a))
On Error Resume Next
for Fy_x=0 to ubound(Fy_a)
Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)
Next
For Fy_x=0 to ubound(Fy_Cs)
If Fy_Cs(Fy_x)<>"" Then
If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"and")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"update")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"chr")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),";")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")<>0 Then
Select Case Fy_Cl
Case "1"
Response.Write "

"
Case "2"
Response.Write "

"
Case "3"
Response.Write "

"
End Select
Response.End
End If
End If
Next
%>

7)使用ODBC数据源。
在ASP程序设计中,如果有条件,应尽量使用ODBC数据源,不要把数据库名写在程序中,否则,数据库名将随ASP源代码的失密而一同失密,例如:
DBPath = Server.MapPath(“./akkt/kj61/acd/av5/faq9jl.mdb ”)
conn.open “driver={Microsoft Access Driver (*.mdb)};dbq=”& DBPath
可见,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了:
conn.open “ODBC-DSN名”

5.MSSQL 注入攻击的防范
在SQL Server 2000的安装目录下的\NSSQL\BINN文件夹中有一个危险的DLL组件,就是Xplog70.dll,建议将它改名或者彻底删除!

攻击者可调用SQL里的Master里的扩展存储过程中的xp_cmdshell来执行系统指令。
1)删除扩展存储过程
在控制面板→计算机管理→Microsoft SQL Server→(Local……)→数据库→master→扩展存储过程→xp_cmdshell,右击然后删除!
也可以使用命令删除:
sp_dropextendedproc 'xp_cmdshell'
接着在系统分区搜索并删除或改名、移除 xplog70.dll 文件防止恶意者恢复上述配置。
2)删除注册表操作功能
删除上述位置下的:
xp_regaddmultistring(向注册表添加项目)
xp_regdeletekey(向注册表删除一个项)
xp_regdeletevalue(向注册表删除一个键值)
xp_regnumvalues(列举主键下的键值)
xp_regread(读取一主键下的键值)
xp_regremovemultistring(从注册表中删除项目)
xp_regwrite(向注册表中数据)
3)防范跨库查询
每个数据库分别设置一个数据库用户,该用户只能对其拥有的数据库进行查询,禁止其他数据库(包括4个系统数据库Master Model Tempdb Msdb和两个用户数据库 Pubs t Northwind)。

如果网站使用了别人的现成代码,则必须使用文本批量替换工具搜索“POWERED BY……”之类的版权特征信息,并进行替换,以免源代码存在漏洞时,别人可以通过搜索引擎快速找到你的网站,从而减少被随意入侵的机率。

6. MSSQL Server 的基本安全策略
这些步骤是针对任何SQL Server安装的部分标准安全“最佳策略”。
首先,打上SQL SERVER最新的安全补丁,现在补丁已经出到了SP3。下载地址:sql/downloads/2000/sp3.asp" target=_blank>http://www.microsoft.com/sql/downloads/2000/sp3.asp。如果这一步都没有做好,那我们也没有继续下去的必要了。

1. 确保你的SA登录帐号的密码非空。只有你的SA登录帐号没有安全保障的时候蠕虫才会工作。
因此,你应该遵循在SQL Server
联机文档中“系统管理员(SA)登录”主题中的推荐模式,确保固有的SA帐号具有一个强壮的密码,
即使是你自己从不使用SA帐号。
2. 在你的互联网网关或防火墙上屏蔽1433端口和/或指定SQL Server监听一个可选的端口。
3. 假如在你的互联网网关上需要利用1433端口,启动用于防止此端口滥用的流入/流出过滤。
4. 将SQLServer和SQL Server客户端运行在微软的Windows NT帐号下,而不是localsystem。
5. 启动Windows NT验证,启动监听成功和失败的登录,然后停止并重启MSSQLServer服务。设置你的客户端使用NT验证。
6. 改默认的1433端口,并且将SQL SERVER隐藏。这样能禁止对试图枚举网络上现有的 SQL Server 客户端所发出的广播作出响应。另外,还需要在TCP/IP筛选中将1433端口屏蔽掉,尽可能的隐藏你的SQL SERVER数据库。这样子一但让攻击创建了SQL SERVER的账号,也不能马上使用查询分析器远程登陆来进行下一步的攻击。单从ASP,PHP等页面构造恶意语句的话,还有需要查看返回值的问题,总比不上直接查询分析器来得利落。所以我们首先要做到即使让别人注入了,也不能让攻击者下一步做得顺当。修改方法:企业管理器 --> 你的数据库组 --> 属性 --> 常规 --> 网络配置 --> TCP/IP --> 属性 ,在这儿将你的默认端口进行修改,和SQL SERVER的隐藏。
7.合理创建角色
SQL INJECTION往往在WEB CODE中产生。而做为系统管理员或者数据库管理员,总不能常常的去看每一段代码。即使常常看代码,也不能保证我们在上面的疏忽。那怎么办?我们就要从数据库角色着手,让数据库用户的权限划分到最低点。SQL SERVER的默认权限让人真的很头疼,权限大得非常的高,权限小的又什么都做不了,SYSADMIN和db_owner真是让人又爱又恨。攻击者一但确认了网站存在SQL INJECTION漏洞,肯定有一步操作步骤就是测试网站的SQL SERVER使用者具有多大的权限。一般都会借助Select IS_SRVROLEMEMBER('sysadmin'),或者Select IS_MEMBER('db_owner'),再或者用user = 0(让字符和数字进行比较,SQL SERVER就会提示了错误信息,从该信息中即可知道一些敏感信息)等语句进行测试。方法还有,我也不敢多说了。其一怕错,其二怕联盟中的人扁。在当前,如果网站的数据库使用者用的是SA权限,再加上确认了WEB所处在的绝对路径,那么就宣告了你的网站的OVER。db_owner权限也一样,如果确认了绝对路径,那么有50%的机会能给你的机器中上WEB 方式的木马,如海阳等。所以这儿我们确认了一点,我们必须要创建自已的权限,让攻击者找不着下嘴的地方。在这儿引用一个SQL SERVER联机帮助中的例子:

创建 SQL Server 数据库角色的方法(企业管理器)
创建 SQL Server 数据库角色
1. 展开服务器组,然后展开服务器。
2. 展开"数据库"文件夹,然后展开要在其中创建角色的数据库。
3. 右击"角色",然后单击"新建数据库角色"命令。
4. 在"名称"框中输入新角色的名称。
5. 单击"添加"将成员添加到"标准角色"列表中,然后单击要添加的一个或多个用户。(可选)
只有选定数据库中的用户才能被添加到角色中。
8. 合理的权限配置
对象权限
处理数据或执行过程时需要称为对象权限的权限类别:
· Select、Insert、Update 和 Delete 语句权限,它们可以应用到整个表或视图中。
· Select 和 Update 语句权限,它们可以有选择性地应用到表或视图中的单个列上。
· Select 权限,它们可以应用到用户定义函数。
· Insert 和 Delete 语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。
· EXECUTE 语句权限,它们可以影响存储过程和函数。

语句权限
创建数据库或数据库中的项(如表或存储过程)所涉及的活动要求另一类称为语句权限的权限。例如,如果用户必须能够在数据库中创建表,则应该向该用户授予 Create TABLE 语句权限。语句权限(如 Create DATABASE)适用于语句自身,而不适用于数据库中定义的特定对象。
语句权限有:
· BACKUP DATABASE
· BACKUP LOG
· Create DATABASE
· Create DEFAULT
· Create FUNCTION
· Create PROCEDURE
· Create RULE
· Create TABLE
· Create VIEW

暗示性权限
暗示性权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如,sysadmin 固定服务器角色成员自动继承在 SQL Server 安装中进行操作或查看的全部权限。
数据库对象所有者还有暗示性权限,可以对所拥有的对象执行一切活动。例如,拥有表的用户可以查看、添加或删除数据,更改表定义,或控制允许其他用户对表进行操作的权限。

db_owner 在数据库中有全部权限。
db_accessadmin 可以添加或删除用户 ID。
db_securityadmin 可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin 可以发出 ALL DDL,但不能发出 GRANT、REVOKE 或 DENY 语句。
db_backupoperator 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。
db_datareader 可以选择数据库内任何用户表中的所有数据。
db_datawriter 可以更改数据库内任何用户表中的所有数据。
db_denydatareader 不能选择数据库内任何用户表中的任何数据。
db_denydatawriter 不能更改数据库内任何用户表中的任何数据。

在这儿把新建的数据库角色的权限配置好,比如需要使用哪个表、视图、存储过程等。然后把Db_owner和db_securityadmin、db_backupoperator取消,不给攻击者BACKUP DATABASE和Create TABLE的机会,一但攻击者具有这两个权限,那么你的网站就还处在十分危险的状态。还有注意一下,在创建数据库账号时,千万不能对服务器角色进行选择。
9.修改SQL SERVER内置存储过程。SQL SERVER估计是为了安装或者其它方面,它内置了一批危险的存储过程。能读到注册表信息,能写入注册表信息,能读磁盘共享信息等等……各位看到这儿,心里可能会在想,我的网站中有其它的代码,又不像查询分析器那样能查接将结果输出。给你这个权限,又不能怎么样,还是看不到信息。如果各位这样想就大错特错了。提示一下,如果攻击者有Create TABLE的权限,那么创建一个临时表,然后将信息Insert到表中,然Select出来,接着跟数字进行比较,让SQL SERVER报错,那么结果就全出来了……所以我们要报着宁错杀,不放过的态度进行修补。

先来列出危险的内置存储过程:

xp_cmdshell
xp_regaddmultistring
xp_regdeletekey
xp_regdeletevalue
xp_regenumkeys
xp_regenumvalues
xp_regread
xp_regremovemultistring
xp_regwrite

ActiveX自动脚本:

sp_OACreate
sp_OADestroy
sp_OAMethod
sp_OAGetProperty
sp_OASetProperty
sp_OAGetErrorInfo
sp_OAStop

以上各项全在我们封杀之列,例如xp_cmdshell屏蔽的方法为:sp_dropextendedproc 'xp_cmdshell',如果需要的话,再用sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'进行恢复。如果你不知道xp_cmdshell使用的是哪个.dll文件的话,可以使用sp_helpextendedproc xp_cmdshell来查看xp_cmdshell使用的是哪个动态联接库。另外,将xp_cmdshell屏蔽后,我们还需要做的步骤是将xpsql70.dll文件进行改名,以防止获得SA的攻击者将它进行恢复。

7.使用应用层过滤防范URL入侵
安装Deer Field、8Sign Firewall等具备应用层过滤功能的防火墙,对Url提交的非法字符进行整体过滤,可防范网站程序编写时存在的对敏感字符未过滤的漏洞。需要过滤的字符列表(□表示空格!):
□and□ '%20and%20 '%20or%20 □or□ □AND□ '%20AND%20 '%20OR%20 □OR□ %00 □1=1 □1=2 ... ../ .../ ' □select□ □update□ cmd.exe
winnt system32 □from□ □where□ □password□ dir□ ..\ ...\ .mdb .asa .sql %2523 %25 %23 %5c #x exec insert select delete count □user□ xp_cmdshell □add□ □net□ □Asc□
'or'='or'等等。
在扩展名过滤中,将所有站点内不需要的文件类型从过滤的允许列表中删除;对敏感的需要特别保护的文件类型的扩展名,将它们添加到扩展名过滤列表中。
以上特征字符串可能是分别针对ASP和PHP的,但由于配置不复杂,因此建议不管什么类型的后台程序,都在防火墙上全面设置一下应用层过滤规则!!

8. PHP木马的攻击的防御之道
首先修改httpd.conf,如果你只允许你的php脚本程序在web目录里操作,还可以修改httpd.conf文件限制php的操作路径。比如你的web目录是/usr/local/apache/htdocs,那么在httpd.conf里加上这么几行:
php_admin_value open_basedir /usr/local/apache/htdocs

这样,如果脚本要读取/usr/local/apache/htdocs以外的文件将不会被允许,如果错误显示打开的话会提示这样的错误:
Warning: open_basedir restriction in effect. File is in wrong directory in
/usr/local/apache/htdocs/open.php on line 4
等等。
2.防止php木马执行webshell
打开safe_mode,
在,php.ini中设置
disable_functions= passthru,exec,shell_exec,system
二者选一即可,也可都选
3.防止php木马读写文件目录
在php.ini中的
disable_functions= passthru,exec,shell_exec,system
后面加上php处理文件的函数
主要有
fopen,mkdir,rmdir,chmod,unlink,dir
fopen,fread,fclose,fwrite,file_exists
closedir,is_dir,readdir.opendir
fileperms.copy,unlink,delfile
即成为
disable_functions= passthru,exec,shell_exec,system,fopen,mkdir,rmdir,chmod,unlink,dir
,fopen,fread,fclose,fwrite,file_exists
,closedir,is_dir,readdir.opendir
,fileperms.copy,unlink,delfile
ok,大功告成,php木马拿我们没辙了,^_^
遗憾的是这样的话,利用文本数据库的那些东西就都不能用了。
如果是在windos平台下搭建的apache我们还需要注意一点,apache默认运行是system权限,这很恐怖,这让人感觉很不爽.那我们就给apache降降权限吧.
net user apache fuckmicrosoft /add
net localgroup users apache /del
ok.我们建立了一个不属于任何组的用户apche.
我们打开计算机管理器,选服务,点apache服务的属性,我们选择log on ,选择this account ,我们填入上面所建立的账户和密码,重启apache服务,ok,apache运行在低权限下了.
实际上我们还可以通过设置各个文件夹的权限,来让apache用户只能执行我们想让它能干的事情,给每一个目录建立一个单独能读写的用户.这也是当前很多虚拟主机提供商的流行配置方法哦,不过这种方法用于防止这里就显的有点大材小用了。

五、其他辅助安全措施
1.安装可靠的杀毒软件并立即升级;
2.安装一款可能强大且配置灵活的网络防火墙,并认真做好规则设置;
防火墙的选择、安装和配置概览:
选择:
1)一定要有出站审核功能的防火墙,防止反向连接的木马后门;
2)设置适当的安全级别,安装初期可采用学习模式并小心配置,随后入为最高安全级别;
3)配置好防火墙规则。建议默认为无匹配规则则拒绝,然后一一添加必须的规则;
4)防火墙规则要经常备份和检查,发现可疑规则要高度警惕,或者不宝藏恢复备份规则。
5)选择建议:天网;Look 'n' Stop、ZoneAlarm;服务器建议Deer Field。
6)常用端口:FTP:21 WEB:80 SMTP:25 POP3:110 终端服务:3389(不建议使用;建议修改) MYSQL:3306 可在数据库的配置文件中将端口改一下,比如3389,让人家连吧:)
其他如远程管理工具的端口也不建议使用默认端口。
7)服务器建议使用DeerField对各种注入等手段通过URL提交的命令的关键字以及敏感文件的扩展名进行过滤,如.MDB、‘、--、NULL、select、%5c、c:、cmd、system32、xp_ cmdshell、exec、@a、dir、alert()、’or’’=’、Where、count(*)、between、and、inetpub、wwwroot、nchar、,%2B、%25等。对于提交有上述字串请示的IP,一般都是人为有意进行,因此可令防火墙对这类访问的IP进行较长时间的屏蔽。
其他安全工具安装安全工具:
如Urlscn、IISLock等。
3.修改系统目录和程序目录中所有文件的日期、时间为一个特定的值,以便日后查找可疑程序时筛选方便;
全部配置完毕,对系统目录和程序目录分别制作文件列表,将列表保存到隐藏分区中。
4.在网络的另一台计算机上,使用多种流行的扫描工具对服务器进行扫描,检测是否仍然有未处理好的已知漏洞。
5.针对现有免费代码的利用安全问题
免费程序不要真的就免费用,既然你可以共享原码,那么攻击者一样可以分析代码。如果有能力的站长最好还是更改一下数据库表名,字段名,只修改关键的admin, username, password就可以了,比如forum_upasswd 这样的字段名谁能猜到?如果你猜到了,最好赶快去买彩票吧,特等奖不是你还会有谁呢?另外,一般站点的关键就在于管理员的密码,很好的保护好你的管理员密码那是至关重要的,至少10位的数字字母组合。另外加上现在大多数站点程序都会使用MD5来加密用户密码,加上你密码的强壮性,那样你站点的安全性就大大的提高了。即使出现了SQL Injection漏洞,攻击者也不可能马上拿下你的站点。
6.文件列表、任务列表和服务列表的生成和利用
生成各种目录列表备份对于日后查找可疑文件是非常重要的,一般在服务器部署完毕后必须立即进行!
1、文件列表
全部配置完毕,制作系统目录和程序目录等位置的文件列表备份,并保存为文件。
建议分别进行完整列表、DLL文件列表和EXE文件列表、TMP文件列表、COM文件列表、CMD文件列表、SCR文件列表的制作。
2、任务管理器任务列表
可以采用抓图的方法保存任务管理器的任务列表;建议采用专门的进程查看工具导出详细的进程及模块列表备查!
3、系统服务列表
可对“已启动”和“自动”的服务类型进行排序,然后抓图保存。
7.隐藏重要文件/目录
可以修改注册表实现完全隐藏:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0

六、简单设置防御小流量DDOS攻击
小流量DDOS攻击防御在微软的hiseweb.inf文件中已经设置好了,如果导入hiseweb.inf则不需要另外设置。

防范DDOS攻击并不一定非要用防火墙。一部份DDOS我们可以通过DOS命令netstat -an|more或者网络综合分析软件:sniff等查到相关攻击手法、如攻击某个主要端口、或者对方主要来自哪个端口、对方IP等。这样我们可以利用w2k自带的远程访问与路由或者IP策略等本身自带的工具解决掉这些攻击。做为无法利用这些查到相关数据的我们也可以尝试一下通过对服务器进行安全设置来防范DDOS攻击。如果通过对服务器设置不能有效解决,那么就可以考虑购买抗DDOS防火墙了。 其实从操作系统角度来说,本身就藏有很多的功能,只是很多是需要我们慢慢的去挖掘的。这里我给大家简单介绍一下如何在Win2000环境下通过修改注册表,增强系统的抗DoS能力。
请注意,以下的安全设置均通过注册表进行修改,该设置的性能取决于服务器的配置,尤其是CPU的处理能力。如按照如下进行安全设置,采用双路至强2.4G的服务器配置,经过测试,可承受大约1万个包的攻击量。
'关闭无效网关的检查。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
当服务器设置了多个网关,这样在网络不通畅的时候系统会尝试连接第二个网关,通过关闭它可以优化网络。
"EnableDeadGWDetect"=dword:00000000
'禁止响应ICMP重定向报文。此类报文有可能用以攻击,所以系统应该拒绝接受ICMP重定向报文。
"EnableICMPRedirects"=dword:00000000
'不允许释放NETBIOS名。当攻击者发出查询服务器NETBIOS名的请求时,可以使服务器禁止响应。
注意系统必须安装SP2以上
"NonameReleaseOnDemand"=dword:00000001
'发送验证保持活动数据包。该选项决定TCP间隔多少时间来确定当前连接还处于连接状态,不设该值,则系统每隔2小时对TCP是否有闲置连接进行检查,这里设置时间为5分钟。
"KeepAliveTime"=dword:000493e0
'禁止进行最大包长度路径检测。该项值为1时,将自动检测出可以传输的数据包的大小,
'可以用来提高传输效率,如出现故障或安全起见,设项值为0,表示使用固定MTU值576bytes。
"EnablePMTUDiscovery"=dword:00000000
'启动syn攻击保护。缺省项值为0,表示不开启攻击保护,项值为1和2表示启动syn攻击保护,设成2之后'安全级别更高,对何种状况下认为是攻击,则需要根据下面的TcpMaxHalfOpen和TcpMaxHalfOpenRetried值'设定的条件来触发启动了。这里需要注意的是,NT4.0必须设为1,设为2后在某种特殊数据包下会导致系统重启。
"SynAttackProtect"=dword:00000002
'同时允许打开的半连接数量。所谓半连接,表示未完整建立的TCP会话,用netstat命令可以看到呈SYN_RCVD状态的就是。这里使用微软建议值,服务器设为100,高级服务器设为500。建议可以设稍微小一点。
"TcpMaxHalfOpen"=dword:00000064
'判断是否存在攻击的触发点。这里使用微软建议值,服务器为80,高级服务器为400。
"TcpMaxHalfOpenRetried"=dword:00000050
'设置等待SYN-ACK时间。缺省项值为3,缺省这一过程消耗时间45秒。项值为2,消耗时间为21秒。
'项值为1,消耗时间为9秒。最低可以设为0,表示不等待,消耗时间为3秒。这个值可以根据遭受攻击规模修改。
'微软站点安全推荐为2。
"TcpMaxConnectResponseRetransmissions"=dword:00000001
'设置TCP重传单个数据段的次数。缺省项值为5,缺省这一过程消耗时间240秒。微软站点安全推荐为3。
"TcpMaxDataRetransmissions"=dword:00000003
设置syn攻击保护的临界点。当可用的backlog变为0时,此参数用于控制syn攻击保护的开启,微软站点安全推荐为5。
"TCPMaxPortsExhausted"=dword:00000005
'禁止IP源路由。缺省项值为1,表示不转发源路由包,项值设为0,表示全部转发,设置为2,表示丢弃所有接受的源路由包,微软站点安全推荐为2。
"DisableIPSourceRouting"=dword:0000002
'限制处于TIME_WAIT状态的最长时间。缺省为240秒,最低为30秒,最高为300秒。建议设为30秒。
"TcpTimedWaitDelay"=dword:0000001e
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters]
'增大NetBT的连接块增加幅度。缺省为3,范围1-20,数值越大在连接越多时提升性能。每个连接块消耗87个字节。
"BacklogIncrement"=dword:00000003
'最大NetBT的连接快的数目。范围1-40000,这里设置为1000,数值越大在连接越多时允许更多连接。
"MaxConnBackLog"=dword:000003e8
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Afd\Parameters]
'配置激活动态Backlog。对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示允许动态Backlog。
"EnableDynamicBacklog"=dword:00000001
'配置最小动态Backlog。默认项值为0,表示动态Backlog分配的自由连接的最小数目。当自由连接数目低于此数目时,将自动的分配自由连接。默认值为0,对于网络繁忙或者易遭受SYN攻击的系统,建议为20。
"MinimumDynamicBacklog"=dword:00000014
'最大动态Backlog。表示定义最大"准"连接的数目,主要看内存大小,理论每32M内存最大可以'增加5000个,这里设为20000。
"MaximumDynamicBacklog"=dword:00002e20
'每次增加的自由连接数据。默认项值为5,表示定义每次增加的自由连接数目。对于网络繁忙或者易遭受SYN攻击'的系统,建议设置为10。
"DynamicBacklogGrowthDelta"=dword:0000000a
以下部分需要根据实际情况手动修改
'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
'启用网卡上的安全过滤
'"EnableSecurityFilters"=dword:00000001
'同时打开的TCP连接数,这里可以根据情况进行控制。
'"TcpNumConnections"=
'该参数控制 TCP 报头表的大小限制。在有大量 RAM 的机器上,增加该设置可以提高 SYN 攻击期间的响应性能。
'"TcpMaxSendFree"=
'[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{自己的网卡接口}]
'禁止路由发现功能。ICMP路由通告报文可以被用来增加路由表纪录,可以导致攻击,所以禁止路由发现。
"PerformRouterDiscovery "=dword:00000000

七、日常安全检查
1、日志查看
包括系统日志、IIS以及SQL等的日志、防火墙日志、自动备份程序的工作日志;检查日志中异常内容;日志是否有明显时间中断现象;是否出现某些日志被清空的现象;有无伪造日志的迹象。
以上要经常检查即可积累经验。
2、检查账户列表、系统服务列表、自动加载的程序列表;
3、检查异常文件。可结合上述的文件日期、文件列表进行快速排查。还可针对特定木马程序的文件名进行搜索(如ca.exe cca.exe findpass.exe pulist.exe 3389.exe等),特别要注意搜索带有数字“0”或“1”的文件。另外用搜索文件功能,查找所有2K-20K、日期为半个月左右的所有文件,以便从中发现可疑文件。另外,必要时可根据特定木马程序的特征字串,对站点目录下相关类型的文件进行内容搜索。对于各分区根目录下的文件也要特别注意!
4、不定期用光盘PE系统引导,用ERDCommander查看硬盘目录下是否有可疑文件、检查硬盘系统注册表是否有不明自动加载项目以及常用文件扩展名关联是否更改、是否存在不明用户等。
5、检查日志备份、数据库备份之类的自动备份工具是否工作正常。
6、检查防火墙规则,查看是否有新添加的规则、不明规则;检查关键规则是否存在修改;不定期用配置好的规则备份恢复一次。
7、定期修改管理员密码以及其他相关管理密码,并在异地做好物理记录。
8、检查系统安全补丁的升级情况。使用自动升级功能时,要检查自动升级是否生效,必要时建议不定期手工进行一次系统升级。
9、查找WEBSHELL。考虑到多数情况下的入侵者水平,最多也就用用海阳,而且最多也就把部分版权信息去掉,搜索所有内容包含lcx的.ASP文件。如果你了解到最近有其他的程序后门,可以使用相应的关键字搜索是否存在相关文件。为保证可靠,搜索内容应该由简单的LCX扩展到wscript.shell等更加广泛与匹配的关键词的查找
10、审核文件及目录权限。仔细检查重要的目录或文件的权限是否适当。
11、审查应用程序及系统的升级情况。如系统安全补丁、Serv-U等工具是否必需升级。
12、审查IP过滤策略。如果TCP过滤未开,IPSEC未指派则非常危险!

本原创文章未经允许不得转载 | 当前页面:╃苍狼山庄╃ » Windows WEB服务器配置安全规范

评论

文章评论已关闭!