您现在的位置:主页 > 服务器 > Win服务器 >

Windows 2003系统安全+IIS下Web与FTP的完美结合

来源:建站吧 责任编辑:Jzq8 发表时间:2011-12-13 点击:
本人从事IDC工作有很长的一段时间了,由于时常与Windows 2003打交道,加上多年长期管理多台Windows 2003虚拟主机,所以对windows 2003的系统安全与IIS设置方面有着自己的独到地看法,现将我的认识与看法共享出来与大家一同分享。      
在实际生活中,我们有许多客户常抱怨自己的服务器老是被黑,我想在互联网上肯定也有很多管理服务器的同胞们时常在抱怨吧。为什么会这样呢?以我愚见,我认为系统的漏洞,只要你及时更新系统补丁,它的漏洞远比起您服务器的开发程序(诸如Web站点)要少得多。所以我写得这篇文章也是治标不治本的,或许只能对你的系统在被入侵过程中给黑客带来更大的考验,而在确保您的开发程序无漏洞的情况,此文档却能起到锦上添花的作用。     
好了,废话还是少说,现在直入主题,我对系统安全从二个方面着手,一是权限,二是服务。开放服务仅需要的权限,以最小的权限运行服务,不用的服务坚决禁用。这就是我对安全的认识。      我这里说到的权限,包括系统权限与服务正常运行所需的权限,先讲系统权限,服务权限,我着重会在《Windows 2003系统安全+IIS下Web与FTP的完美结合(下)》中对Web服务的权限来加以阐述。
一、系统权限的设置     在网上有好多设置系统权限的文档,很多,雷同性也很大,你照着这些文档去逐个设置,花上个把小时是情理之中的事,而且效果也未必很明显。下面,我这里着重讲述我写的系统权限设置方法,在讲之前,我们学习一个命令——Cacls命令,命令用法如下: C:\Users\tamenglang>cacls/? 显示或者修改文件的访问控制列表(ACL) CACLS filename [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G user:perm]
        [/R user [...]] [/P user:perm [...]] [/D user [...]]
    filename      显示 ACL。
    /T            更改当前目录及其所有子目录中,指定文件的 ACL。
    /L            对照目标处理符号链接本身
    /M            更改装载到目录的卷的 ACL
    /S            显示 DACL 的 SDDL 字符串。
    /S:SDDL       使用在 SDDL 字符串中指定的 ACL 替换ACL。  /E、/G、/R、/P 或 /D 无效)。
    /E            编辑 ACL 而不替换。
    /C            在出现拒绝访问错误时继续。
    /G user:perm  赋予指定用户访问权限。
                  Perm 可以是: R  读取
                              W  写入
                              C  更改(写入)
                              F  完全控制
    /R user       撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
    /P user:perm  替换指定用户的访问权限。Perm 可以是: N  无
                               R  读取
                               W  写入
                               C  更改(写入)
                               F  完全控制
我们先看一个实例,针对此实例来再加以分析: cacls  C:\  /t /c /g administrators:F system:F C:\ 表示C盘 /t表示这里的C盘的根目录及其所有子目录 /c表示在出现拒绝访问错误时继续 /g administrators:F system:F 表示赋予C盘的根目录及其所有子目录administrators与system的完全控制的权限,这里的F是完全控制,还有R表示读取,W表示写入,C表示更改再讲几个我们下面需要的参数,OK? /e 在原有权限的基本上增加用户的访问权限 /r  撤销指定用户的访问权限(仅在与 /E 一起使用时合法)     或许你看了上面的这个命令,您或许会有所纳闷,为什么我要花这么长的篇幅去介绍好像与系统权限没有关系的文字呢?其实不然,我写上面命令的目的是准备写一个批处理脚本,来快速地(不到一分钟的时间)来帮您设置好您的系统权限。     现附上我新手写的系统盘加固脚本: @echo off
echo 本程序是源自tamenglang.blog.51cto.com,tamenglang亲手创作,此程序会自动加固您的系统 …………………
cacls    C:\ /t /c /g administrators:F system:F
Cacls "C:\Program Files\Common Files" /t /e /c /g everyone:R
Cacls "C:\WINDOWS\IIS Temporary Compressed Files" /t /e /c /g everyone:C
Cacls    C:\WINDOWS\Microsoft.Net /t /e /c /g everyone:R
Cacls "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files" /t /e /c /g everyone:C
Cacls "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files" /t /e /c /g everyone:C
Cacls    C:\WINDOWS\Registration /t /e /c /g everyone:R
Cacls    C:\WINDOWS\Temp /t /e /c /g everyone:C
Cacls    C:\WINDOWS\assembly /t /e /c /g everyone:R
Cacls    C:\WINDOWS\WinSxS /t /e /c /g everyone:R
Cacls    C:\WINDOWS\Fonts /t /e /c /g everyone:R
Cacls    C:\WINDOWS\System32 /t /e /c /g everyone:R
Cacls    C:\windows\system32\msdtc /t /e /c /g networkservice:C
Cacls "C:\WINDOWS\system32\inetsrv\ASP Compiled Templates" /t /e /c /g everyone:C
Cacls    C:\WINDOWS\System32\*.exe /e /c /r everyone
Cacls    C:\WINDOWS\System32\cmd.exe    /e /c /r system
Cacls    C:\WINDOWS\System32\net.exe    /e /c /r system
Cacls    C:\WINDOWS\System32\net1.exe /e /c /r system
Cacls    C:\WINDOWS\System32\msdtc.exe /e /c /g everyone:R
Cacls    C:\WINDOWS\System32\dllhost.exe /e /c /g everyone:R
Cacls    C:\WINDOWS\System32\svchost.exe /e /c /g everyone:R  
此程序实现的功能如下: C:\                                                              administrators,system完全控制 C:\Program Files\Common Files                         Everyone 读取 C:\WINDOWS\IIS Temporary Compressed Files             Everyone 更改 C:\Windows\Microsoft.Net                      Everyone 读取 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files  Everyone 更改 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files Everyone 更改 C:\Windows\Registration                           Everyone 读取 C:\Windows\Temp                               Everyone 更改 C:\Windows\assembly                           Everyone 读取 C:\Windows\WinSxS                         Everyone 读取 C:\Windows\Fonts                          Everyone 读取 C:\Windows\System32                           Everyone 读取 C:\windows\system32\msdtc                         NETWORK SERVICE 更改 C:\WINDOWS\system32\inetsrv\ASP Compiled Templates            Everyone 更改 C:\Windows\System32\*.exe                     去除 Everyone 权限 C:\windows\system32\msdtc.exe                         Everyone 读取 C:\Windows\System32\dllhost.exe                       Everyone 读取 C:\Windows\System32\svchost.exe                       Everyone 读取系统权限的设置大致如上。
二、服务启动类型的设置     下面我们需要设置的是将一些不常用的服务停止,我们的通常做的操作是到服务中(命令提示符下用services.msc命令)中加以禁用,为了方便起见,这里我也以脚本的形式对不常用的服务加以停止。现在我们还需要学上一个用于与服务控制管理器通信的命令行程序,即sc命令,命令的用法如下:用法:
        sc <server> [command] [service name] <option1> <option2>...
        选项 <server> 的格式为 "\\ServerName"
        可以键入 "sc [command]"以获得命令的进一步帮助
        命令:
          query-----------查询服务的状态,或枚举服务类型的状态。
          queryex---------查询服务的扩展状态,或枚举服务类型的状态。
          start-----------启动服务。
          pause-----------发送 PAUSE 控制请求到服务。
          interrogate-----发送 INTERROGATE 控制请求到服务。
          continue--------发送 CONTINUE 控制请求到服务。
          stop------------发送 STOP 请求到服务。
          config----------(永久地)更改服务的配置。
          description-----更改服务的描述。
          failure---------更改服务失败时所进行的操作。
          qc--------------查询服务的配置信息。
          qdescription----查询服务的描述。
          qfailure--------查询失败服务所进行的操作。
          delete----------(从注册表)删除服务。
          create----------创建服务(将其添加到注册表)。
          control---------发送控制到服务。
          sdshow----------显示服务的安全描述符。
          sdset-----------设置服务的安全描述符。
          GetDisplayName--获取服务的 DisplayName。
          GetKeyName------获取服务的 ServiceKeyName。
          EnumDepend------枚举服务的依存关系。因为我们要更改服务的启动类型,我们只需要了解sc config就可以了,sc config的用法如下:         sc <server> config [service name] <option1> <option2>... 选项:
注意: 选项名称包括等号。
 type= <own|share|interact|kernel|filesys|rec|adapt>
 start= <boot|system|auto|demand|disabled>
 error= <normal|severe|critical|ignore>
 binPath= <BinaryPathName>
 group= <LoadOrderGroup>
因为我们这里要永久更改启动类型,只要用start选项加上disabled就可以了,好了,比方说我们要中止dhcp client这个服务,只需用如下命令: sc config Dhcp start= disable 好了,为了系统安全,我们来对经常用不到的服务的启动类型来加以禁用设置吧 rem server
rem 微软:支持此计算机通过网络的文件、打印、和命名管道共享。如果服务停止,这些功能不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。   
sc config lanmanserver start= disabled   
 
 
rem remote registry   
rem 微软:使远程用户能修改此计算机上的注册表设置。如果此服务被终止,只有此计算机上的用户才能修改注册表。如果此服务被禁用,任何依赖它的服务将无法启动。
sc config RemoteRegistry start= disabled   
 
 
rem TCP/IP NetBIOS Helper rem 微软:提供 TCP/IP (NetBT) 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持,从而使用户能够共享文件、打印和登录到网络。   
sc config LmHosts start= disabled   
 
 
rem Print Spooler
rem 微软: 管理所有本地和网络打印队列及控制所有打印工作。如果此服务被停用,本地计算机上的打印将不可用。如果此服务被禁用,任何依赖于它的服务将无法启用。
sc config Spooler start= disabled   
 
 
rem Computer Browser (计算机浏览器)   
rem 微软: 维护网络上计算机的更新列表,并将列表提供给计算机指定浏览。如果服务停止,列表不会被更新或维护。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。   
sc config Browser start= disabled 
 
 
rem Shell Hardware Detection   
rem 微软: 为自动播放硬件事件提供通知。   
sc config ShellHWDetection    start= disabled   
 
 
rem Secondary Logon
rem 微软: 启用替换凭据下的启用进程。如果此服务被终止,此类型登录访问将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。。   
sc config seclogon start= disabled   
 
 
rem Wireless Configuration
rem 微软: 启用 IEEE 802.11 适配器的自动配置。如果此服务停止,自动配置将不可用。如果此服务被禁用,所有明确依赖它的服务都将不能启动。
sc config WZCSVC start= disabled 
 
 
rem Distributed Link Tracking Client
rem 启用客户端程序跟踪链接文件的移动,包括在同一 NTFS 卷内移动,移动到同一台计算机上的另一 NTFS、或另一台计算机上的 NTFS.
sc config TrkWks start= disabled
 
 
rem Distributed Link Tracking Server
rem 启用同域内的分布式链接跟踪客户端服务,以便在同域内提供更高的可靠性和有效维护
sc config TrkSvr start= disabled
 
 
rem Distributed Transaction Coordinator
rem 协调跨多个数据库、消息队列、文件系统等资源管理器的事务。如果停止此服务,则不会发生这些事务
sc config MSDTC start= disabled
 
 
rem Cryptographic Services
rem 提供三种管理服务: 编录数据库服务,它确定 Windows 文件的签名;受保护的根服务,它从此计算机添加和删除受信根证书颁发机构的证书;和密钥(Key)服务,它帮助注册此计算机获取证书。如果此服务被终止,这些管理服务将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。
sc config CryptSvc start= disabled
 
 
rem DHCP Client (DHCP 客户端)   
rem 微软: 为此计算机注册并更新 IP 地址。如果此服务停止,计算机将不能接收动态 IP 地址和 DNS 更新。如果此服务被禁用,所有明确依赖它的服务都将不能启动
sc config Dhcp start= disabled   
 
 
rem Help and Support   
rem 启用在此计算机上运行帮助和支持中心。如果停止服务,帮助和支持中心将不可用。如果禁用服务,任何直接依赖于此服务的服务将无法启动。
rem 依存:remote Procedure Call (RPC)   
sc config helpsvc start= disabled 三、组件的卸载     现在我们需要将一些不常用的组件加以卸载,在卸载它们前,我们还需要认识一个命令,一个注册或卸载动态链接库文件(DLL)和嵌入式控件(OCX)的命令,它就是regsvr32。命令的格式如下: Regsvr32 [ /u ][ /s ][ /n ][ /i [ :cmdline ] ] dll文件名
Regsvr32命令一共有四个参数,我们只需用到二个就可以了,分别是:
/s:注册或卸载成功后不显示操作成功的提示框
/u:卸载已安装的控件或DLL文件
    为了防止木马利用这些动态链接库与组件,我们需要将W.Shell 组件和Shell.application 组件加以卸载,代码如下: rem 卸载W.Shell 组件和卸载Shell.application 组件
regsvr32 /u /s wshom.ocx
regsvr32 /u /s shell32.dll     好了,系统的安全基本上都讲完了,其他的诸如防火墙的设置,IP策略的设置等,我都不加以介绍了,因为这样的设置要根据自己的需求进行设置的,上面的这些设置是我经常对windows 2003进行系统安全常用的,从实践效果来看还是比较明显的,我想对于您来说肯定也是能用得上的。不过, 建议您在使用之前先要对自己的系统与服务进行评估再加以设置,不然到时候出现问题不知道从何着手就不好了。呵呵,到时可不要投诉我哟。
    为了方便大家的总结与使用,现将上述所有的脚本综合如下,写成批处理脚本的形式,供大家借鉴与使用。     @echo off    
echo 本程序是源自tamenglang.blog.51cto.com,tamenglang亲手创作,此程序会自动加固您的系统 …………………    
cacls        C:\ /t /c /g administrators:F system:F    
Cacls "C:\Program Files\Common Files" /t /e /c /g everyone:R    
Cacls "C:\WINDOWS\IIS Temporary Compressed Files" /t /e /c /g everyone:C    
Cacls        C:\WINDOWS\Microsoft.Net /t /e /c /g everyone:R    
Cacls "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files" /t /e /c /g everyone:C    
Cacls "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files" /t /e /c /g everyone:C    
Cacls        C:\WINDOWS\Registration /t /e /c /g everyone:R    
Cacls        C:\WINDOWS\Temp /t /e /c /g everyone:C    
Cacls        C:\WINDOWS\assembly /t /e /c /g everyone:R    
Cacls        C:\WINDOWS\WinSxS /t /e /c /g everyone:R    
Cacls        C:\WINDOWS\Fonts /t /e /c /g everyone:R    
Cacls        C:\WINDOWS\System32 /t /e /c /g everyone:R    
Cacls        C:\windows\system32\msdtc /t /e /c /g networkservice:C    
Cacls "C:\WINDOWS\system32\inetsrv\ASP Compiled Templates" /t /e /c /g everyone:C    
Cacls        C:\WINDOWS\System32\*.exe /e /c /r everyone    
Cacls        C:\WINDOWS\System32\cmd.exe        /e /c /r system    
Cacls        C:\WINDOWS\System32\net.exe        /e /c /r system    
Cacls        C:\WINDOWS\System32\net1.exe /e /c /r system    
Cacls        C:\WINDOWS\System32\msdtc.exe /e /c /g everyone:R    
Cacls        C:\WINDOWS\System32\dllhost.exe /e /c /g everyone:R    
Cacls        C:\WINDOWS\System32\svchost.exe /e /c /g everyone:R 

echo 现在对您的服务器服务启动类型加以设置
rem server    
rem 微软:支持此计算机通过网络的文件、打印、和命名管道共享。如果服务停止,这些功能不可用。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。        
sc config lanmanserver start= disabled          
    
rem remote registry        
rem 微软:使远程用户能修改此计算机上的注册表设置。如果此服务被终止,只有此计算机上的用户才能修改注册表。如果此服务被禁用,任何依赖它的服务将无法启动。    
sc config RemoteRegistry start= disabled          
    
rem TCP/IP NetBIOS Helper    
    rem 微软:提供 TCP/IP (NetBT) 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持,从而使用户能够共享文件、打印和登录到网络。        
sc config LmHosts start= disabled       
    
rem Print Spooler    
rem 微软: 管理所有本地和网络打印队列及控制所有打印工作。如果此服务被停用,本地计算机上的打印将不可用。如果此服务被禁用,任何依赖于它的服务将无法启用。    
sc config Spooler start= disabled            
    
rem Computer Browser (计算机浏览器)        
rem 微软: 维护网络上计算机的更新列表,并将列表提供给计算机指定浏览。如果服务停止,列表不会被更新或维护。如果服务被禁用,任何直接依赖于此服务的服务将无法启动。        
sc config Browser start= disabled        
    
    rem Shell Hardware Detection        
rem 微软: 为自动播放硬件事件提供通知。        
sc config ShellHWDetection        start= disabled        
    
rem Secondary Logon    
rem 微软: 启用替换凭据下的启用进程。如果此服务被终止,此类型登录访问将不可用。如果此服务被禁用,任何依赖它的服务将无法启动。。        
sc config seclogon start= disabled             
    
rem Wireless Configuration    
rem 微软: 启用 IEEE 802.11 适配器的自动配置。如果此服务停止,自动配置将不可用。如果此服务被禁用,所有明确依赖它的服务都将不能启动。    
sc config WZCSVC start= disabled        
    
    rem Distributed Link Tracking Client    
rem 启用客户端程序跟踪链接文件的移动,包括在同一 NTFS 卷内移动,移动到同一台计算机上的另一 NTFS、或另一台计算机上的 NTFS.    
sc config TrkWks start= disabled        
    
rem Distributed Link Tracking Server    
rem 启用同域内的分布式链接跟踪客户端服务,以便在同域内提供更高的可靠性和有效维护    
sc config TrkSvr start= disabled    
    
rem Distributed Transaction Coordinator    
rem 协调跨多个数据库、消息队列、文件系统等资源管理器的事务。如果停止此服务,则不会发生这些事务    
sc config MSDTC start= disabled    
    
rem Cryptographic Services    
rem 提供三种管理服务: 编录数据库服务,它确定 Windows 文件的签名;受保护的根服务,它从此计算机添加和删除受信根证书颁发机构的证书;和密钥(Key)服务,它帮助注册此计算机获取证书。如果此服务被终止,这些管理服务将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。    
sc config CryptSvc start= disabled        
    
rem DHCP Client (DHCP 客户端)        
rem 微软: 为此计算机注册并更新 IP 地址。如果此服务停止,计算机将不能接收动态 IP 地址和 DNS 更新。如果此服务被禁用,所有明确依赖它的服务都将不能启动    
sc config Dhcp start= disabled          
    
rem Help and Support        
rem 启用在此计算机上运行帮助和支持中心。如果停止服务,帮助和支持中心将不可用。如果禁用服务,任何直接依赖于此服务的服务将无法启动。    
rem 依存:remote Procedure Call (RPC)        
sc config helpsvc start= disabled    

echo 现在此程序对您服务器的组件进行设置
rem 卸载W.Shell 组件和卸载Shell.application 组件    
regsvr32 /u /s wshom.ocx    
regsvr32 /u /s shell32.dll

系统的安全在上部分都已经讲述得差不多了,现在着手来对IIS中的Web与FTP来进行设置,使之能够完美结合在一起,此方法针对虚拟主机来说效果更佳,因为虚拟主机站点比较多,单独建那么多FTP站点不太现实。

    首先看一台虚拟主机,以截图的方式展现给大家:        此虚拟主机只有一个ftp站点与80多个站点供客户使用,此ftp是如何让这么多虚拟主机客户去上传他们的站点程序的呢?这Ftp是如何与这么多Web站点完美结合在一起的呢?好了,现在我们来对IIS下的Web与Ftp来加以设置。 一、IIS下FTP站点搭建      按照常理来设置或者用Serv_U来设置的话,多少个Web站点,应该用多少个FTP站点与之相对应,如果这样的话,势必很繁烦,而且端口都不能一致(ftp默认端口为21),因为如此,我们只建了一个FTP站点(上图中的“用户FTP”)来实现不同虚拟主机用户FTP访问的。具体做法如下: 1、建立FTP用户(即系统用户),可以到计算机管理中添加用户,我这里以命令的形式直接添加,建立二个用户test1,test2: 2、在D盘(根据个人的需要来设置,我这里直接以D盘来做说明)建立LocalUser文件夹,在其中建立二个站点文件夹test1,test2,D盘与test1,test2的权限设置为: D:\    administrators,system         完全控制 D:\LocalUser\test1     test1       完全控制 D:\LocalUser\test2     test2       完全控制用脚本的形式来操作,脚本代码如下: Cacls    D:\ /t /c /g administrators:F system:F
Cacls    D:\LocalUser\test1 /t /e /c /g test1:F
Cacls    D:\LocalUser\test2 /t /e /c /g test2:F 3、接着建立FTP站点,在建之前,先讲一下第2步的目的是什么?在第2步中使用LocalUser的目的其实就是为了FTP隔离用户(FTP用户名必须与站点目录名称要一致)而使用的,使用隔离用户,就不需要为每一个Web站点单独建上一个FTP站点了。还有,选择FTP站点主目录的时候一定要选择LocalUser上层的目录哟,在这里就是根目录D盘。好了,为了直观起见,我们看截图吧。        OK,看到上面的图片了吧,FTP关键设置就在这里,这样设置后,就可以保证LocalUser文件夹下面的站点目录对应用户都能各自访问自己的FTP了,是不是感觉很爽,呵呵。 二、IIS下Web站点的搭建      FTP的搭建基本设置完毕,现在紧接着对Web站点来加以设置,Web站点的设置只要注意一个地方即可,其他的地方与正常的设置雷同,这里就不加以阐述了,不知道你有没有注意到,我们在讲述FTP站点搭建时,提到给LocalUser下面的站点目录设置权限,而IIS下的Web默认匿名访问用户是IUSR_计算机名,此时由于站点目录下面没有此用户,所以我们需要在IIS下Web站点下面的匿名访问用户要加以更改,更改为对应网站目录的FTP用户,这里我们以test1站点来加以设置,请看截图:      这样的目的不仅是为了能够正常打开网站而设置的,更主要地是为了安全而考虑的。      这样一来,整个IIS下的FTP与Web的搭建基本上完成了,现在等待您的,就是去付诸实践了,呵呵,祝您成功哟!
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    验证码:点击我更换图片

    今日头条

    更多>>

    推荐图文

    • WinXP下IIS服务没有及时响应启动或控制请求错误解决方法
    • 通过设置IIS主机头建立虚拟主机教程
    • IIS6中ASP的启用及父路径的设置
    • IIS的安装
    • Windows&nbsp;Server&nbsp;2008下IIS&nbsp;7配置ASP+AC
    • Windows&nbsp;2003系统安全+IIS下Web与FTP的完美结合
    • WIN主机配置PHP的若干问题解决方案总结+failed to ope
    • XP配置IIS+ASP详解(新手本机调试ASP必读)
    • IIS如何在Windows 2000系统上安全构建指南
    Alexa - 客户服务 - 联系方法 - 招聘信息 - 友情链接 - 网站地图 - TAG标签 - RSS订阅
    Copyright © 2010-2012 JZQ8.COM. 建站吧|建站去吧 版权所有
    冀ICP备09002514号
    冀ICP备09002514号 网络报警 企业法人营业执照 中国互联网协会 支付宝付款 网银在线付款