教你如何构建安全的windows服务器

发布时间:2020-08-24编辑:脚本学堂
教你如何构建安全的windows服务器

一、组件删除
最简单的办法是直接卸载后删除相应的程序文件。
将下面的代码保存为一个.BAT文件,(以windows2003为例)
 

复制代码 代码如下:
regsvr32/u C:windowsSystem32wshom.ocx
del C:windowsSystem32wshom.ocx
regsvr32/u C:windowssystem32shell32.dll
del C:windowssystem32shell32.dll

然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。
可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。

何卸载Wscript.Shell等对象
1、卸载wscript.shell对象
在cmd下运行:regsvr32 WSHom.Ocx   /u
2、卸载FSO对象
在cmd下运行:regsvr32.exe scrrun.dll /u
3、卸载stream对象
在cmd下运行:
regsvr32 /s /u "C:Program FilesCommon FilesSystemadomsado15.dll"
如果要重新启用:请把/u参数对掉就行了!

禁止WScript.Shell
防范此类病毒的方法就是将Windows scripting host卸载掉,
具体方法是:我的电脑控制面板→添加/删除程序→安装WINDOWS→
附件→详细资料→Windows scripting host→确定。其实还有一种方法更简单,
依次键入下面两段命令:regsvr32/u wshom.ocx回车、regsvr32/u wshext.dll回车,
就可以把注册表中.wsh对象的注册值删掉。这样那些必须依靠对象运行的病毒就因
为找不着对象而无法运行下去。

#------------------------------
防范Wscript.Shell组件的方法:
可以通过修改注册表,将此组件改名。
HKEY_CLASSES_ROOTWScript.Shell及HKEY_CLASSES_ROOTWScript.Shell.1
改名为其它的名字,如:改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName自己以后调用的时候使用这个就可以正常调用此组件了
也要将clsid值也改一下
HKEY_CLASSES_ROOTWScript.ShellCLSID项目的值
HKEY_CLASSES_ROOTWScript.Shell.1CLSID项目的值
也可以将其删除,来防止此类木马的危害。
防范Shell.Application组件的方法:
可以通过修改注册表,将此组件改名。
HKEY_CLASSES_ROOTShell.Application

HKEY_CLASSES_ROOTShell.Application.1
改名为其它的名字,如:改为Shell.Application_ChangeName或Shell.Application.1_ChangeName
自己以后调用的时候使用这个就可以正常调用此组件了。
也要将clsid值也改一下
HKEY_CLASSES_ROOTShell.ApplicationCLSID项目的值
HKEY_CLASSES_ROOTShell.ApplicationCLSID项目的值
也可以将其删除,来防止此类木马的危害。
防范FileSystemObject组件的方法:
HKEY_CLASSES_ROOTScripting.FileSystemObject 修改Scripting.FileSystemObject名称

#----------------------------
以上是海洋中的相关代码,从上面的代码我们不难看出一般ASP木马、Webshell主要利用了以下几类ASP组件: 
  ① WScript.Shell (classid:72C24DD5-D70A-438B-8A42-98424B88AFB8) 
  ② WScript.Shell.1 (classid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B) 
  ③ WScript.Network (classid:093FF999-1EA0-4079-9525-9614C3504B74) 
  ④ WScript.Network.1 (classid:093FF999-1EA0-4079-9525-9614C3504B74) 
  ⑤ FileSystem Object (classid:0D43FE01-F093-11CF-8940-00A0C9054228) 
  ⑥ Adodb.stream (classid:{00000566-0000-0010-8000-00AA006D2EA4}) 
  ⑦ Shell.applicaiton.... 
  hehe,这下我们清楚了危害我们WEB SERVER IIS的最罪魁祸首是谁了!!开始操刀,come on... 
  2:解决办法: 
  ① 删除或更名以下危险的ASP组件: 
  WScript.Shell、WScript.Shell.1、Wscript.Network、Wscript.Network.1、adodb.stream、
Shell.application 
  开始------->运行--------->Regedit,打开注册表编辑器,按Ctrl+F查找,依次输入以上
Wscript.Shell等组件名称以及相应的ClassID,然后进行删除或者更改名称(这里建议大家更名,如
果有部分网页ASP程序利用了上面的组件的话呢,只需在将写ASP代码的时候用我们更改后的组件名
称即可正常使用。当然如果你确信你的ASP程序中没有用到以上组件,还是直 
  接删除心中踏实一些^_^,按常规一般来说是不会做到以上这些组件的。删除或更名后,iisreset
重启IIS后即可升效。) 
  [注意:由于Adodb.Stream这个组件有很多网页中将用到,所以如果你的服务器是开虚拟主机的话,
建议酢情处理。] 
  ② 关于 File System Object (classid:0D43FE01-F093-11CF-8940-00A0C9054228)即常说的FSO的
安全问题,如果您的服务器必需要用到FSO的话,(部分虚拟主机服务器一般需开FSO功能)可以参照本人的另一篇关于FSO安全解决办法的文 章:Microsoft Windows 2000 Server FSO 安全隐患解决办法。如果您确信不要用到的话,可以直接反注册此组件即可。 
  ③ 直接反注册、卸载这些危险组件的方法:(实用于不想用①及②类此类烦琐的方法) 
  卸载wscript.shell对象,在cmd下或直接运行:regsvr32 /u %windir%/system32/WSHom.Ocx 
  卸载FSO对象,在cmd下或直接运行:regsvr32.exe /u %windir%/system32/scrrun.dll 
  卸载stream对象,在cmd下或直接运行: regsvr32 /s /u "C:/Program Files/Common Files/System/ado/msado15.dll" 
  如果想恢复的话只需要去掉 /U 即可重新再注册以上相关ASP组件例如:regsvr32.exe %windir%/system32/scrrun.dll 
  ④ 关于Webshell中利用set domainObject = GetObject("windows://.")来获取服务器的进程、服务以及
用户等信息的防范,大家可以将服务中的Workstation[提供网络链结和通讯]即Lanmanworkstation服务停止
并禁用即可。此处理后,Webshell显示进程处将为空白。 
  3 按照上1、2方法对ASP类危险组件进行处理后,用阿江的asp探针测试了一下,"服务器CPU详情"和"服务
器操作系统"根本查不到,内容为空白的。再用海洋测试Wsript.Shell来运行cmd命令也是提示Active无法创建
对像。大家就都可以再也不要为ASP木马危害到服务器系统的安全而担扰了。

二、禁用服务
    Application Experience Lookup Service
  BITS
  Computer Browser
  DHCP Client
  Error Reporting Service
  Help and Support
  Network Location Awareness
  Print Spooler
  Remote Registry
  Secondary Logon  
  Smartcard
  TCP/IP NetBIOS Helper
  Windows Audio
  Windows Time
  Wireless Configuration
  TCP/IP NetBIOS Helper
    Workstation (显示用户)

三、权限修改
1.更改服务器下命令的名称和权限 如:CMD, TELNET .
2.防止Serv-U权限提升:
其实,注销了Shell组件之后,侵入者运行提升工 具的可能性就很小了,但是prel等别的脚本语言也有shell能力,为防万一,还是设置一下为好。用Ultraedit打开 ServUDaemon.exe查找Ascii:LocalAdministrator,和#l@$ak#.lk;0@P,修改成等长度的其它字符就可以 了,ServUAdmin.exe也一样处理。另外注意设置Serv-U所在的文件夹的权限,不要让IIS匿名用户有读取的权限,否则人家下走你修改过的 文件,照样可以分析出你的管理员名和密码。
 3. web 站点权限:
  授予的权限:
  读 允许
  写 不允许
  脚本源访问 不允许
  目录浏览 建议关闭
  日志访问 建议关闭
  索引资源 建议关闭
  执行 推荐选择 "仅限于脚本"

四、删除服务
   1.删除网卡除TCP/IP外的服务。
   2.WINDOWS的默认防火墙和TCP_IP筛选
   3.删除不必要的应用程序映射
     ISS中默认存在很多种应用程序映射,除了ASP的这个程序映射,其他的文件在网站上都很少用到。
    在“Internet 服务管理器”中,右击网站目录,选择“属性”,在网站目录属性对话框的“主目录”页面  中,点击[配置]按钮,弹出“应用程序配置”对话框,在“应用程序映 射”页面,删除无用的程序映射。如果需要这一类文件时,必须安装最新的系统修补补丁,并且选中相应的程序映射,再点击[编辑]按钮,在“添加/编辑应用程 序扩展名映射”对话框中勾选“检查文件是否存在”选项。这样当客户请求这类文件时,IIS会先检查文件是否存在,文件存在后才会去调用程序映射中定义的动 态链接库来解析。 
 
五、安全策略配置
   打开服务器本地计算机策略(gpedit.msc)
  开始菜单—>管理工具—>本地安全策略
  A、本地策略——>审核策略
  审核策略更改   成功 失败  
  审核登录事件   成功 失败
  审核对象访问      失败
  审核过程跟踪   无审核
  审核目录服务访问    失败
  审核特权使用      失败
  审核系统事件   成功 失败
  审核账户登录事件 成功 失败
  审核账户管理   成功 失败

  B、本地策略——>用户权限分配
  关闭系统:只有Administrators组、其它全部删除。
  通过终端服务拒绝登陆:加入Guests、User组
  通过终端服务允许登陆:只加入Administrators组,其他全部删除
  C、本地策略——>安全选项
  交互式登陆:不显示上次的用户名       启用
  网络访问:不允许SAM帐户和共享的匿名枚举   启用
  网络访问:不允许为网络身份验证储存凭证   启用
  网络访问:可匿名访问的共享         全部删除
  网络访问:可匿名访问的命          全部删除
  网络访问:可远程访问的注册表路径      全部删除
  网络访问:可远程访问的注册表路径和子路径  全部删除
  帐户:重命名来宾帐户            重命名一个帐户
  帐户:重命名系统管理员帐户         重命名一个帐户
   修改Administrator和Guest这两个账号 一定要改的够复杂./最好@#$@!这样类似的组合.

六、数据库配置
由于sql server不能更改sa用户名称,也不能删除这个超级用户,所以,我们必须对这个帐号进行最强的保护,当然,包括使用一个非常强壮的密码,最好不要在数 据库应用中使用sa帐号。新建立一个拥有与sa一样权限的超级用户来管理数据库。同时养成定期修改密码的好习惯。数据库管理员应该定期查看是否有不符合密 码要求的帐号。比如使用下面的sql语句
 

复制代码 代码如下:
use master
select name,password from syslogins where password is null

数据库日志的记录
核数据库登录事件的"失败和成功",在实例属性中选择"安全性",将其中的审核级别选定为全部,这样在数据库系统和操作系统日志里面,就详细记录了所有帐号的登录事件。

管理扩展存储过程
xp_cmdshell是进入操作系统的最佳捷径,是数据库留给操作系统的一个大后门。请把它去掉。使用这个sql语句:
 

复制代码 代码如下:
use master
sp_dropextendedproc ‘xp_cmdshell’

注:如果你需要这个存储过程,请用这个语句也可以恢复过来。
 

复制代码 代码如下:
sp_addextendedproc ‘xp_cmdshell’, ‘xpsql70.dll’

ole自动存储过程(会造成管理器中的某些特征不能使用),这些过程包括如下(不需要可以全部去掉:
 

复制代码 代码如下:
sp_oacreate sp_oadestroy sp_oageterrorinfo sp_oagetproperty
sp_oamethod sp_oasetproperty sp_oastop

去掉不需要的注册表访问的存储过程,注册表存储过程甚至能够读出操作系统管理员的密码来,如下:
 

复制代码 代码如下:
xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumvalues
xp_regread xp_regremovemultistring xp_regwrite

防tcp/ip端口探测
在实例属性中选择tcp/ip协议的属性。选择隐藏 sql server 实例。
请在上一步配置的基础上,更改原默认的1433端口。
在ipsec过滤拒绝掉1434端口的udp通讯,可以尽可能地隐藏你的sql server。

网络连接进行ip限制
使用操作系统自己的ipsec可以实现ip数据包的安全性。请对ip连接进行限制,保证只有自己的ip能够访问,拒绝其他ip进行的端口连接。
通过以上的配置,禁止了服务器开放不必要的端口,防止服务被植入后门程序,通过配置目录权限可以防止入侵者拿到welshell后提权,加强了服务器的安全性,避免了对服务器的攻击和加强了TCP协议栈。通过iis的配置提高了iis的安全性和稳定性。修改了sql server的默认端口,可以防止恶意用户对服务器进行扫描尝试暴力破解sa账户提供数据库的安全性。对服务器实现了整体的安全加固。