http://bbs.hzva.org/viewthread.php?tid=9112&extra=page%3D1&page=5
服务器安全设置基本要点
服务器安全设置基本要点
近段时间不少用户询问服务器设置要注意那些方面的内容,在这里我把前几年的一次授课内容摘录如下,供参考:
1、安装好操作系统之后,在托管之前完成补丁安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP2,然后点击开始→Windows Update,安装所有的关键更新。
2、安装杀毒软件。
3、设置端口保护和防火墙、删除默认共享。
4、权限设置
A、NTFS权限设置,把所有的硬盘都分为NTFS分区,确定每个分区对每个用户开放的权限。【文件(夹)上右键→属性→安全】在这里管理NTFS文件(夹)权限。
IIS匿名用户,每个IIS站点或者虚拟目录,都可以设置一个匿名访问用户,当用户访问网站的.ASP文件的时候,这个.ASP文件所具有的权限,则是这个“IIS匿名用户”所具有的权限。
为每个独立的要保护的个体(如一个网站或者一个虚拟目录)创建一个系统用户,让这个站点在系统中具有惟一的可以设置权限的身份。
B、在IIS的【站点属性或者虚拟目录属性→目录安全性→匿名访问和验证控制→编辑→匿名访问→编辑】填写刚刚创建的用户名。设置所有的分区禁止这个用户访问,而刚才这个站点的主目录对应的那个文件夹设置允许这个用户访问(要去掉继承父权限,并且要加上超管组和SYSTEM组)。
(这样设置了之后,这个站点里的ASP程序就只有当前这个文件夹的权限了,从探针上看,所有的硬盘都是红叉叉。)
参考的设置方法
A、先创建一个用户组,以后所有的站点的用户都建在这个組里,然后设置这个组在各个分区没有权限或者完全拒绝。然后再设置各个IIS用户在各在的文件夹里的权限。
B、改名或卸载不安全组件
最危险的组件是WSH和Shell,因为它可以运行硬盘里的EXE等程序,如:它可以运行提升程序来提升SERV-U权限甚至用SERVU来运行更高权限的系统程序。但要谨慎决定是否卸载一个组件,在卸载一个组件之前,必须确认这个组件是网站程序不需要的,或者即使去掉也不关大体的。
(1)卸载最不安全的组件
将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:\WINDOWS\ )
regsvr32/u C:\WINNT\System32\wshom.ocx
del C:\WINNT\System32\wshom.ocx
regsvr32/u C:\WINNT\system32\shell32.dll
del C:\WINNT\system32\shell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,就会发现这三个都提示“×安全”了。
(2)改名不安全组件
需要注意的是组件的名称和Clsid都要改,并且要改彻底。下面以Shell.application为例来介绍方法。
打开注册表编辑器【开始→运行→regedit回车】,然后【编辑→查找→填写Shell.application→查找下一个】,用这个方法能找到两个注册表项:“{13709620-C279-11CE-A49E-444553540000}”和“Shell.application”。为了确保万无一失,把这两个注册表项导出来,保存为 .reg 文件。
比如我们想做这样的更改
13709620-C279-11CE-A49E-444553540000 改名为 13709620-C279-11CE-A49E-444553540001
Shell.application 改名为 Shell.application_ajiang
那么,就把刚才导出的.reg文件里的内容按上面的对应关系替换掉,然后把修改好的.reg文件导入到注册表中(双击即可),导入了改名后的注册表项之后,别忘记了删除原有的那两个项目。这里需要注意一点,Clsid中只能是十个数字和ABCDEF六个字母。
当然,也可以把以下代码保存为一个.reg文件运行
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}]
@="Shell Automation Service"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\InProcServer32]
@="C:\\WINNT\\system32\\shell32.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\ProgID]
@="Shell.Application_ajiang.1"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\TypeLib]
@="{50a7e9b0-70ef-11d1-b75a-00a0c90564fe}"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\Version]
@="1.1"
[HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540001}\VersionIndependentProgID]
@="Shell.Application_ajiang"
[HKEY_CLASSES_ROOT\Shell.Application_ajiang]
@="Shell Automation Service"
[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CLSID]
@="{13709620-C279-11CE-A49E-444553540001}"
[HKEY_CLASSES_ROOT\Shell.Application_ajiang\CurVer]
@="Shell.Application_ajiang.1"
(3)防止列出用户组和系统进程
【开始→程序→管理工具→服务】,找到Workstation,停止它,禁用它。
(4)防止Serv-U权限提升
用Ultraedit打开ServUDaemon.exe查找Ascii:LocalAdministrator,和#l@$ak#.lk;0@P,修改成等长度的其它字符,ServUAdmin.exe也一样处理。
另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限。
5、利用ASP漏洞攻击的常见方法及防范
一般情况下,黑客总是瞄准论坛等程序,因为这些程序都有上传功能,他们很容易的就可以上传ASP木马,即使设置了权限,木马也可以控制当前站点的所有文件了。另外,有了木马就然后用木马上传提升工具来获得更高的权限,关闭shell组件的目的很大程度上就是为了防止攻击者运行提升工具。
如果论坛管理员关闭了上传功能,则黑客会想办法获得超管密码,比如,如果你用动网论坛并且数据库忘记了改名,人家就可以直接下载你的数据库了,然后距离找到论坛管理员密码就不远了。
作为管理员,首先要检查ASP程序,做好必要的设置,防止网站被黑客进入。另外就是防止攻击者使用一个被黑的网站来控制整个服务器,因为如果服务器上还为朋友开了站点,那么很可能无法确定朋友会把他上传的论坛做好安全设置。但做了那些权限设置和防提升之后,黑客就算是进入了一个站点,也无法破坏这个网站以外的东西。
(注:以上内容只是当时的一次授课内容,不足之处难免,因此仅供实际操作中参考,欢迎大家讨论。)
补充几点
1 IIS权限
IIS 针对各目录的运行权限默认为纯脚本,因此upload,image 等一系列包含图片的以及上传的文件夹其IIS 中的纯脚本都改作无,这样即使你的站点存在非法上传的漏洞被黑客传了ASP/PHP木马也因为无法被运行,木马失效.
2 数据库所在文件夹在IIS中需要做重定向.这样数据库无法被下载.重定向到别的网站,比如163.com
3 远程管理最好启用 加密传输,比如VNC/ radmin(3.0以上).不建议使用明码传输的工具(比如3389 以及各种FTP软件)以防被嗅探抓包分析.如果使用pcanywhere 用11.0以上的版本.
同时要注意pcanywhere 的加密属于低级加密.
4 除了系统的补丁,serv-U /PHP /MYSQL
等第三方软件的补丁也要打上.
5 不要在服务器上装没用的软件,比如office/BT/第三方的输入法等软件.
6 除了系统的密码,还要管理工具的密码,两道密码都不要纯数字密码等低强度密码,也不要相同的密码.