一个在IDC工作的朋友由于工作太忙,于昨晚6点半左右交给我一台windows server 2003的服务器让我帮忙调整下安全性.于是乎就有了我这兴奋而又紧张的首次服务器配置...
首先,要感谢小组的独孤依人以及好友阿龙,在我碰到一些棘手的问题时,多亏了他们的帮忙:)
[服务器硬件配置]
CPU:Intel Pentium4 CPU 3.00GHz *2
内存:1GB
硬盘:80GB
[服务器操作系统]
Windows Server 2003 Enterprise Edition SP1
[提供服务]
web(IIS6.0)/ms-sql server 2000/ftp(serv-u 6.2)
[硬盘分区情况]
C:系统盘,大小为14.6GB D: 数据盘,大小为30GB E:备份盘,大小为29.8GB
安全点:
*帐户
-系统帐户:正常,没有多余或者存在隐患的组和用户.
-FTP帐户:没有改动
-数据库帐户:没有改动
*服务
-停止了Microsoft Search服务,不再提供索引及单词搜索服务.
-停止了NT LM Security Support Provider服务,Microsoft Search和TELNET依赖于此服务.
-停止了Print Spooler服务,不再提供本地和远程打印机服务.
-停止了Shell Hardware Detection服务.
-停止了Task Scheduler服务.
*权限
1.IIS默认网站根目录删除.
ASP.NET全局配置中,移除一个localhost数据库连接,帐号为SA,密码为SA.
2.Serv-U FTP登录消息修改:改为了"welcome to FTP..."
3.C:/Documents and Settings 删除了everyone及users组用户所有权限.
4.C:/Documents and Settings/All Users 删除了everyone及users组用户所有权限.
5.C:/Documents and Settings/All Users/Application Data 删除了users组用户所有权限.
6.C:/Documents and Settings/All Users/Application Data/Microsoft删除了everyone组用户所有权限.
7.C:/Documents and Settings/All Users/Documents删除了users组用户所有权限.
8.C:/WINDOWS/system32 删除users组用户访问权限.
11.删除%admin%目录下的at.exe,cacls.exe,net.exe的BATCH&INTERACTIVE&SERVICE用户的权限.删除cmd.exe的INTERACTIVE&SERVICE&telnet用户权限.(均只保留了administrator和system可以访问)
12.修改了所有站点的错误调试信息,不再显示详细出错信息,以防SQL注入.
=IIS建立多个网站或具有多个2级域名时需要注意:
需要给每个网站或者每个2级域名分别建立一个guests组的用户,用以匿名访问.另外,如果2级域名映射的是根目录的子目录,则除了考虑权限继承性外,还需要在权限设置中加上匿名访问的用户,即只给:administrator/IISUSER_computer/每个网站或2级域名单独建立的匿名用户/ 的权限.
=============================================
期间,我的思路从帐户->服务>权限下手,而后又从IIS->SQL Server->Serv-U着手.可是由于初次真正配置一台服务器,考虑的范围很广,担心细节被疏漏,因此某些地方设置得有些过于BT,导致网站无法正常匿名访问,最后在请教了几位朋友后才算搞定.后来,又因为IIS_WPG组用户没有设定足够的权限,导致IIS不能正常工作.调试了很久,直到一小时前才排除故障,使网站正常 -_-
最后参考了一些文章,下面是摘录的极其重要的细节信息:
/*********************************************************
winows2003的A级BT配置
-MS-SQL,删除危险的存储过程,用最低权限的public帐户连接.
-C盘只给administrators 和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
-Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行.
-要支持ASPX,还需要给web根目录给上users用户的默认权限,才能使ASPX能执行.
-C:/Documents and Settings
C:/Documents and Settings/All Users
C:/Documents and Settings/All Users/Application Data
C:/Documents and Settings/All Users/Documents
只给administrator或者administrator和system权限.
-net.exe,cmd.exe,tftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe,这些文件都设置只允许administrators访问
-在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),如果要控制带宽流量服务,则需要额外安装Qos数据包计划程序。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。在高级选项里,使用"Internet连接防火墙",这是windows 2003 自带的防火墙,可以屏蔽端口,这样已经基本达到了一个IPSec的功能.
-在2003系统里,不推荐用TCP/IP筛选里的端口过滤功能,譬如在使用FTP服务器的时候,如果仅仅只开放21端口,由于FTP协议的特殊性,在进行FTP传输的时候,由于FTP 特有的Port模式和Passive模式,在进行数据传输的时候,需要动态的打开高端口,所以在使用TCP/IP过滤的情况下,经常会出现连接上后无法列出目录和数据传输的问题。所以在2003系统上增加的windows连接防火墙能很好的解决这个问题,所以都不推荐使用网卡的TCP/IP过滤功能.
SERV-U FTP 服务器的设置:
选中"Block "FTP_bounce"attack and FXP"。什么是FXP呢?通常,当使用FTP协议进行文件传输时,客户端首先向FTP服务器发出一个"PORT"命令,该命令中包含此用户的IP地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在PORT命令中加入特定的地址信息,使FTP服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果FTP服务器有权访问该机器的话,那么恶意用户就可以通过FTP服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是FXP,也称跨服务器攻击。选中后就可以防止发生此种情况。
另外在"Block anti time-out schemes"也可以选中。其次,在"Advanced"选项卡中,检查 "Enable security"是否被选中,如果没有,选择它们。
IIS的安全:
-删掉c:/inetpub目录,删除iis不必要的映射.
-每一个web站点使用单独的IIS用户,权限为guest.
-在这个站点相对应的web目录文件,默认的只给IIS用户的读取和写入权限
在"应用程序配置"里,我们给必要的几种脚本执行权限:ASP.ASPX,PHP,
ASP,ASPX默认都提供映射支持了的,对于PHP,需要新添加响应的映射脚本,然后在web服务扩展将ASP,ASPX都设置为允许,对于php以及CGI的支持,需要新建web服务扩展,在扩展名(X):下输入 php ,再在要求的文件(E):里添加地址 C:/php/sapi/php4isapi.dll ,并勾选设置状态为允许(S)。然后点击确定,这样IIS就支持PHP了。支持CGI同样也是如此。
-修改默认的错误调试信息
-IIS6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,可以在每天凌晨的时候回收一下工作进程
-新建立一个站,采用默认向导,在设置中注意以下几个地方:
在应用程序设置里:执行权限为默认的纯脚本
在上传目录中,执行权限改为无.防止上传漏洞进一步利用得以执行asp马之类.
为了管理的方便,在安装 IIS 6 时创建了 IIS_WPG 组(也称为 IIS 工作进程组,IIS Worker Process Group),而且它的成员包括 Local System(本地系统)、Local Service(本地服务)、Network Service(网络服务)和 IWAM 帐户。IIS_WPG 的成员具有适当的 NTFS 权限和必要的用户权限,可以充当 IIS 6 中工作进程的进程标识。以下位置具有指派给 IIS_WPG 的权限:
%windir%/help/iishelp/common – 读取
%windir%/IIS Temporary Compressed Files – 列出、读取、写入
%windir%/system32/inetsrv/ASP Compiled Template – 读取
*********************************************************/
同时简单测试了下脚本的安全性,以我的能力来说没有什么问题.基本上采用的都是aspx加html页面. 可是当我用X-scan 3.3扫描服务器的时候,却发现了让我心痛的现象,3个安全漏洞,6个安全提示.其中有2个甚至是03年的补丁没打,貌似还感染了蠕虫 -_- 十分郁闷.
一会还得上去完整打下系统补丁,还有全盘杀毒,另外再微调下权限就交工!
/结束语:从昨天下午到现在,断断续续地总共用了12小时左右,很多理论上可行的方案在实现上却出现了很多问题,而且从未遇到过.安全真的难做啊! 这就好比足球中的守门员VS前锋,守得再好只要有一个失误,就还是输了.而前锋只要抓住一个机会进一个球就胜利......总的来说,非常感谢我那位朋友看得起我,相信我,交给我这样的任务.所以我一定不会让他失望的.
还有,今天中午收到了黑防编辑发来的邮件,偶投稿的文章被录取了,将于6月刊登在<黑客防线>杂志上,可惜还没来得及高兴几分钟就又被这边的事给忽略了.
生活,因充实而精彩!/