它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2003服务器安全设置教程(全)

Posted on 2009-09-21 09:26  陈达辉  阅读(325)  评论(0编辑  收藏  举报

一、硬盘分区与操作系统的安装

  1.  

    硬盘分区

    总的来讲在硬盘分区上面没什么值得深入剖析的地方,无非就是一个在分区前做好规划知道要去放些什么东西, 如果实在不知道。那就只一个硬盘只分一个区,分区要一次性完成,不要先分成FAT32再转成NTFS。一次性分成 NTFS格式,以我个人习惯,系统盘一般给12G。建议使用光盘启动完成分区过程,不要加载硬盘软件。

  2.  

    系统安装

    以下内容均以2003为例

    安装过程也没什么多讲的,安装系统是一个以个人性格为参数的活动,我建议在安装路径上保持默认路径,好多文章上写什么安装路径要改成什么呀什么的,这是没必要的。路径保存在注册表里,怎么改都没用。在安装过程中就要选定你需要的服务,如一些DNS、DHCP没特别需要也就不要装了。在安装过程中网卡属性中可以只保留TCP/IP 这一项,同时禁用NETBOIS。安装完成后如果带宽条件允许可用系统自带在线升级。

 

二、系统权限与安全配置

前面讲的都是屁话,润润笔而已。(俺也文人一次)

话锋一转就到了系统权限设置与安全配置的实际操作阶段

系统设置网上有一句话是"最小的权限+最少的服务=最大的安全"。此句基本上是个人都看过,但我好像没有看到过一篇讲的比较详细稍具全面的文章,下面就以我个人经验作一次教学尝试!

2.1 最小的权限如何实现?

NTFS系统权限设置

在使用之前将每个硬盘根加上 Administrators 用户为全部权限(可选加入SYSTEM用户)

删除其它用户,进入系统盘:权限如下

  • C:\WINDOWS Administrators SYSTEM用户全部权限 Users 用户默认权限不作修改
  • 其它目录删除Everyone用户,切记C:\Documents and Settings下All Users\Default User目录及其子目录

     

    如C:\Documents and Settings\All Users\Application Data 目录默认配置保留了Everyone用户权限

    C:\WINDOWS 目录下面的权限也得注意,如 C:\WINDOWS\PCHealth、C:\windows\Installer也是保留了Everyone权限.

  • 删除C:\WINDOWS\Web\printers目录,此目录的存在会造成IIS里加入一个.printers的扩展名,可溢出攻击
  • 默认IIS错误页面已基本上没多少人使用了。建议删除C:\WINDOWS\Help\iisHelp目录
  • 删除C:\WINDOWS\system32\inetsrv\iisadmpwd,此目录为管理IIS密码之用,如一些因密码不同步造成500 错误的时候使用 OWA 或 Iisadmpwd 修改同步密码,但在这里可以删掉,下面讲到的设置将会杜绝因系统设置造成的密码不同步问题。
  • 打开C:\Windows 搜索

     

     

    net.exe;cmd.exe;tftp.exe;netstat.exe;regedit.exe;at.exe;attrib.exe;cacls.exe;format.com;

    regsvr32.exe;xcopy.exe;wscript.exe;cscript.exe;ftp.exe;telnet.exe;arp.exe;edlin.exe;

    ping.exe;route.exe;finger.exe;posix.exe;rsh.exe;atsvc.exe;qbasic.exe;runonce.exe;syskey.exe

     

    修改权限,删除所有的用户只保存Administrators 和SYSTEM为所有权限

 

关闭445端口

 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\netBT\Parameters

新建 "DWORD值"值名为 "SMBDeviceEnabled" 数据为默认值"0"

 

禁止建立空连接

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

新建 "DWORD值"值名为 "RestrictAnonymous" 数据值为"1" [2003默认为1]

 

禁止系统自动启动服务器共享

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

新建 "DWORD值"值名为 "AutoShareServer" 数据值为"0"

 

禁止系统自动启动管理共享

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

新建 "DWORD值"值名为 "AutoShareWks" 数据值为"0"

 

通过修改注册表防止小规模DDOS攻击

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建 "DWORD值"值名为 "SynAttackProtect" 数据值为"1"

 

禁止dump file的产生

dump文件在系统崩溃和蓝屏的时候是一份很有用的查找问题的资料。然而,它也能够给黑客提供一些敏感信息比如一些应用程序的密码等。控制面板>系统属性>高级>启动和故障恢复把 写入调试信息 改成无。

关闭华医生Dr.Watson

在开始-运行中输入"drwtsn32",或者开始-程序-附件-系统工具-系统信息-工具-Dr Watson,调出系统里的华医生Dr.Watson ,只保留"转储全部线程上下文"选项,否则一旦程序出错,硬盘会读很久,并占用大量空间。如果以前有此情况,请查找user.dmp文件,删除后可节省几十MB空间。

本地安全策略配置

开始 > 程序 > 管理工具 > 本地安全策略

  • 账户策略 > 密码策略 > 密码最短使用期限 改成0天[即密码不过期,上面我讲到不会造成IIS密码不同步]
  • 账户策略 > 账户锁定策略 >账户锁定阈值 5 次 账户锁定时间 10分钟 [个人推荐配置]
  • 本地策略 > 审核策略 >
  • 账户管理 成功 失败
  • 登录事件 成功 失败
  • 对象访问 失败
  • 策略更改 成功 失败
  • 特权使用 失败
  • 系统事件 成功 失败
  • 目录服务访问 失败
  • 账户登录事件 成功 失败
  • 本地策略 > 安全选项 > 清除虚拟内存页面文件 更改为"已启用"
    • > 不显示上次的用户名 更改为"已启用"
    • > 不需要按CTRL+ALT+DEL 更改为"已启用"
    • > 不允许 SAM 账户的匿名枚举 更改为"已启用"
    • > 不允许 SAM 账户和共享的匿名枚举 更改为"已启用"
    • > 重命名来宾账户 更改成一个复杂的账户名
    • > 重命名系统管理员账号 更改一个自己用的账号 [同时可建立一个无用户组的Administrat账户]

 

组策略编辑器

运行 gpedit.msc 计算机配置 > 管理模板 > 系统 显示"关闭事件跟踪程序" 更改为已禁用

删除不安全组件

WScript.Shell 、Shell.application 这两个组件一般一些ASP木马或一些恶意程序都会使用到。

  1. 方案一:

     

     

    regsvr32 /u wshom.ocx 卸载WScript.Shell 组件

    regsvr32 /u shell32.dll 卸载Shell.application 组件

     

    如果按照上面讲到的设置,可不必删除这两个文件

  2. 方案二:

     

     

    删除注册表 HKEY_CLASSES_ROOT\CLSID\{72C24DD5-D70A-438B-8A42-98424B88AFB8} 对应 WScript.Shell

    删除注册表 HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540000} 对应 Shell.application

 

用户管理

建立另一个备用管理员账号,防止特殊情况发生。

安装有终端服务与SQL服务的服务器停用TsInternetUser, SQLDebugger这两个账号

用户组说明

在将来要使用到的IIS中,IIS用户一般使用Guests组,也可以再重新建立一个独立的专供IIS使用的组,但要将这个组赋予C:\Windows 目录为读取权限[单一读取] 个人不建议使用单独目录,太小家子气。

二、系统权限与安全配置

2.2最少的服务如果实现

黑色为自动 绿色为手动 红色为禁用

  • Alerter
  • Application Experience Lookup Service
  • Application Layer Gateway Service
  • Application Management
  • Automatic Updates [Windows自动更新,可选项]
  • Background Intelligent Transfer Service
  • ClipBook
  • COM+ Event System
  • COM+ System Application
  • Computer Browser
  • Cryptographic Services
  • DCOM Server Process Launcher
  • DHCP Client
  • Distributed File System
  • Distributed Link Tracking Client
  • Distributed Link Tracking Server
  • Distributed Transaction Coordinator
  • DNS Client
  • Error Reporting Service
  • Event Log
  • File Replication
  • Help and Support
  • HTTP SSL
  • Human Interface Device Access
  • IIS Admin Service
  • IMAPI CD-Burning COM Service
  • Indexing Service
  • Intersite Messaging
  • IPSEC Services [如果使用了IP安全策略则自动,如无则禁用,可选操作]
  • Kerberos Key Distribution Center
  • License Logging
  • Logical Disk Manager [可选,多硬盘建议自动]
  • Logical Disk Manager Administrative Service
  • Messenger   /li>
  • Microsoft Search
  • Microsoft Software Shadow Copy Provider
  • MSSQLSERVER
  • MSSQLServerADHelper
  • Net Logon
  • NetMeeting Remote Desktop Sharing
  • Network Connections
  • Network DDE
  • Network DDE DSDM
  • Network Location Awareness (NLA)
  • Network Provisioning Service
  • NT LM Security Support Provider
  • Performance Logs and Alerts
  • Plug and Play
  • Portable Media Serial Number Service [微软反盗版工具,目前只针对多媒体类]
  • Print Spooler
  • Protected Storage
  • Remote Access Auto Connection Manager
  • Remote Access Connection Manager
  • Remote Desktop Help Session Manager
  • Remote Procedure Call (RPC)
  • Remote Procedure Call (RPC) Locator
  • Remote Registry
  • Removable Storage
  • Resultant Set of Policy Provider
  • Routing and Remote Access
  • Secondary Logon
  • Security Accounts Manager
  • Server
  • Shell Hardware Detection
  • Smart Card
  • Special Administration Console Helper
  • SQLSERVERAGENT
  • System Event Notification
  • Task Scheduler
  • TCP/IP NetBIOS Helper
  • Telephony
  • Telnet
  • Terminal Services
  • Terminal Services Session Directory
  • Themes
  • Uninterruptible Power Supply
  • Upload Manager
  • Virtual Disk Service
  • Volume Shadow Copy
  • WebClient
  • Windows Audio [服务器没必要使用声音]
  • Windows Firewall/Internet Connection Sharing (ICS)
  • Windows Image Acquisition (WIA)
  • Windows Installer
  • Windows Management Instrumentation
  • Windows Management Instrumentation Driver Extensions
  • Windows Time
  • Windows User Mode Driver Framework
  • WinHTTP Web Proxy Auto-Discovery Service
  • Wireless Configuration
  • WMI Performance Adapter
  • Workstation
  • World Wide Web Publishing Service

 

以上操作完成以后是否就"最小的权限+最少的服务=最大的安全"呢?其实不然,任何事物都是相对的

依我个人而见,以上设置也只是最基本的一些东西而已,如有遗漏,稍后补上!   

三、IIS、终端服务、FTP、SQL的配置

3.1 IIS配置

IIS6与IIS5有着很多不同之处,不一一列举,也不是我一个脑袋可以装下的东西。都在资料上!IIS6有一个非常不方便的东西,就是他限制了在线上传不得大于200K,如何修改,请看:

首先停用IIS服务,> 服务 > iis admin service > 停用

C:\windows\system32\inetsrv\ metabase.xml 文件 用记事本打开它

找到 ASPMaxRequestEntityAllowed 处。默认为 204800 即 204800字节(200K)

修改为想要的数字如: 2048000 [2M] 保存,重启IIS服务即可!

设置基本参数

打开IIS管理器 > 网站 > 属性 >

网站 > 启动日志记录 > 关闭

主目录 > 配置 > 应用程序扩展 > 只保留 asp,asa

主目录 > 配置 > 选项 > 启用父目录

主目录 > 配置 > 调试 > 向客户端发送文本错误消息

网站 > 自定义错误 > 全部改成默认值 [上一章已经删除IIS使用的错误信息页面]

IIS管理器 > WEB服务扩展 > 启用 Active Server Pages

注:停用IIS默认站点,切勿删除,有可能会造成IIS的不稳定。

站点的建立将在第四节中详细介绍。

IIS支持PHP的配置

http://www.php.net/downloads.php 以 PHP 5.1.1 为例

下载php-5.1.1-Win32.zip 解压到 D:\php 或任意目录 赋予该目录IIS用户组读取权限

将ext目录中的所有文件复制到 C:\Windows\System32目录下面

以记事本打开php.ini-dist文件

查找 extension_dir = "./" 更改为 extension_dir = "D:\php\ext"

查找 ; Windows Extensions 更改下面的参数

如要开通GD库支持 则将;extension=php_gd2.dll 前面的冒号删除

依此类推,更多设置参考PHP.INI中文版。完成设置好另存在C:\Windows\php.ini

尔后在IIS设置中 IIS管理器 > 网站 > 属性 > 主目录 > 配置 > 映射

添加 D:\php\php5isapi.dll 扩展名.php

其次在WEB服务扩展中 添加一个新的扩展名 PHP 执行位置 D:\php\php5isapi.dll 设为允许即可

由于WIN平台对MYSQL与PHP的组合无法体现性能优势。个人建议WIN平台PHP程序要使用数据库建议远程

或搭配文本数据库。

终端服务配置

开始 > 程序 > 管理工具 > 终端服务配置 > 连接

选择右侧列出的连接 属性 > 权限 删除所有用户组 添加单一的允许使用的管理员账户,这样即使服务器

被创建了其它的管理员.也无法使用终端服务。

另外在会话设置中可以进一步设置断1 D、注销等一些参数。

FTP的配置

目前大多数服务器使用Serv-U Server 为FTP SYSTEM。这里同时建议使用此软件

以 Serv-U FTP Server 6.1.0.5 final [最新版]为例,这里建议使用汉化版本.www.hanzify.org

安装原版至D:\Serv-U_3434999fdaf [复杂无规则的目录名可有效防止黑客的猜解]

尔后退出Serv-U,安装汉化包。

运行SERV-U管理器 IP地址可为空、安装为系统服务 设置密码防止溢出

PASV设置

Serv-U管理器 > <<本地服务器>> > 设置 > 高级

PASV端口范围 这里SERV-U只允许 50个端口范围 端口的设置范围 如 1025 - 1075 [1024以前的端口为系统使用]

更多个人化设置参考以下文档

SERV-U 技巧
现在很多的朋友都用SERV-U做个人FTP的服务器,有关如何使用SERV-U架设服务器的文章很多了,这儿我就不多说了。不过大家不知道注意到了没有,当你登陆很多FTP的时候,会显示一些欢迎信息,比如说显示你的IP,告诉你目前有多少人在使用FTP,带宽是多少等等。。。看起来就比较的专业样子。其实你自己也是可以做的,SERV-U这个软件本身就有这个功能。下面我就说明以下如何在自己的FTP里面加上这些信息。

 

第一、先建立一个文本文件,随便取一个名字。我们这儿就取message.txt吧。

第二、这个这个文本文件里面加上这些文字

------------------------------------

欢迎来到XXX的FTP服务器

你的IP地址是:%IP

目前服务器所在的时间是 %time

已经有 %u24h 个用户在最近24小时访问过本FTP

本FTP服务器已经运行了 %ServerDays 天,%ServerHours 小时 和 %ServerMins 分。

服务器的运行情况:

所有登陆用户数量: %loggedInAll total

当前登陆用户数量: %Unow

已经下载字节数: %ServerKbDown Kb

已经上传字节数: %ServerKbUp Kb

已经下载文件数: %ServerFilesDown

已经上传文件数: %ServerFilesUp

服务器平均带宽: %ServerAvg Kb/sec

服务器当前带宽: %ServerKBps Kb/sec

------------------------------------

其中XXX可以改成你的名字

你也可以加上一些你自己认为喜欢的文字,不过要注意的是每行最好不要超过80个字符

其中以%开头的都是一些变量,下面是SERV-U能支持的变量

时间和*期

%Time - 显示你的计算机当前时间

%Date - 显示你的计算机当前*期

服务器的统计信息

%ServerDays - 显示服务器已经运行的天数

%ServerHours - 显示服务器已经运行的小时数

%ServerMins - 显示服务器已经运行的分钟数

%ServerSecs - 显示服务器已经运行的秒数

%ServerKbUp - 显示自从服务器运行以来已经上传的字节数

%ServerKbDown - 显示自从服务器运行以来已经下载的字节数

%ServerFilesUp - 显示自从服务器运行以来已经上传的文件数

%ServerFilesDown - 显示自从服务器运行以来已经下载的文件数

%LoggedInAll - 显示自从服务器运行以来已经登陆的用户数

%ServerAvg - 显示服务器的平均带宽

%ServerKBps - 显示服务器的当前带宽

服务器的设定信息

%MaxUsers - 显示服务器能同时登陆的最大用户数量

%MaxAnonymous - 显示服务器能同时登陆的最大匿名用户数量

用户信息

%Name - 显示登陆的用户名

%IP - 显示登陆的用户IP地址

%Dir - 显示登陆的用户的当前目录

%Disk - 显示登陆的用户的当前磁盘

%DFree - 显示登陆的用户的当前磁盘空间,单位是MB

%FUp - 显示登陆的用户上传的文件数量

%FDown - 显示登陆的用户下载的文件数量

%FTot - 显示登陆的用户上传和下载的总的文件数量

%BUp - 显示登陆的用户上传的字节数,单位是KB

%Bdown - 显示登陆的用户下载的字节数,单位是KB

%BTot - 显示登陆的用户上传和下载的总字节数,单位是KB

%TconM - 显示登陆用户连接时间,单位是分钟

%TconS - 显示登陆用户连接时间,单位是秒,要和%TconM一起使用

%RatioUp - 显示登陆用户的上传流量限制

%RatioDown - 显示登陆用户的下载流量限制

%RatioCredit - 显示登陆用户还有多少credit可以上传和下载,这个是针对有些FTP是要上传多少文件,才能下载多少文件而设置的

%QuotaUsed - 显示登陆用户的已经使用了多少空间,单位是KB

%QuotaLeft - 显示登陆用户的还有多少空间可以使用,单位是KB

%QuotaMax - 显示登陆用户的的最大空间,单位是KB

后面3个是针对有磁盘限制的用户设置的

用户数量

%UNow - 显示当前有多少用户连接

%UAll - 显示从服务器运行以来一共有多少用户连接过

%U24h - 显示最近24小时有多少用户

%UAnonAll - 显示当前总的匿名用户数量

%UAnonThisIP - 显示所有匿名登陆的用户数

%UNonAnonAll - 显示所有当前非匿名登陆用户数

%UNonAnonThisIP - 显示所有非匿名登陆用户数

%UThisName - 显示所有使用这个名字登陆的用户数

自己在先建立一个.txt文件,输入你想要显示的文字,具体参数看上面的内容,然后在Serv_u内的server设置里面,加入这个.txt文件就可以了!

下面我已经做了几个!喜欢就把名字等改改OK了!呵呵

------------------------------------

欢迎来到***A 网***的FTP服务器

你的IP地址是:%IP

目前服务器所在的时间是 %time

已经有 %u24h 个用户在最近24小时访问过本FTP

本FTP服务器已经运行了 %ServerDays 天,%ServerHours 小时 和 %ServerMins 分。

服务器的运行情况:

所有登陆用户数量: %loggedInAll total

当前登陆用户数量: %Unow

已经下载字节数: %ServerKbDown Kb

已经上传字节数: %ServerKbUp Kb

已经下载文件数: %ServerFilesDown

已经上传文件数: %ServerFilesUp

服务器平均带宽: %ServerAvg Kb/sec

服务器当前带宽: %ServerKBps Kb/sec

------------------------------------

你的信息

用户名: %Name

IP地址: %IP

当前目录: %Dir

当前磁盘: %Disk

磁盘空间:%DFree

连接时间: %TconM 分 和 %TconS 秒

上传流量限制: %RatioUp

下载流量限制: %RatioDown

------------------------------------

★★★★★★★★★★★★★★★★★★★★★★★★★

来自%IP的朋友您好,欢迎来到+a网+的个人FTP服务器

本地时间是%Date %Time

服务器已连续工作:%ServerDays天%ServerHours小时%ServerMins分%ServerSecs秒

本站开通以来已接通%UAll位使用者。

过去24小时总共有%U24h次连接。

匿名用户上限为%MaxAnonymous人。每个ip只能开两个进程

目前有%UNow位使用者在线。

其中匿名用户有%UAnonAll人在线。

★★★★★★★★★★★★★★★★★★★★★★★★★

自本站开通以来共上传/下载 |%ServerKbUpKB/%ServerKbDownKB

自本站开通以来共上传/下载 |%ServerFilesUp个/%ServerFilesDown个

服务器当前流量|%ServerKBps Kb/sec

服务器平均流量|%ServerAvg Kb/sec

★★★★★★★★★★★★★★★★★★★★★★★★★

你目前的空间容量为 |%QuotaMax/KB

你目前总共使用了 |%QuotaUsed/KB

你目前的空间剩余 |%QuotaLeft/KB

Jmail 组件的安装

建议使用 w3 JMail Personal V4.3 这里为免费版 http://www.skycn.net/soft/5555.html

默认安装至 D:\w3JMail4_35434fnald [同样,复杂的目录名]

安装完成后只需单一设置 jmail.dll 权限,加入IIS用户组默认权限即可!

SQL Server 2000 的安装与配置

目前SQL Server 2000 + SP4 在我看来已算比较安全,已没有SP3等版本会因为 sqlstp.log, sqlsp.log而泄露

安装信息的问题。当然也建议在安全后 检查 <systemdrive>:\Program Files\Microsoft SQL Server\MSSQL\Install

目录中是否存在有 sqlstp.log, sqlsp.log, setup.iss文件,如果有,则备份至其它位置。

数据库的建立这里就不多讲了。更多设置可以参考SQL SERVER 2000帮助文档!

四、站点的建立

站点的建立有一定的操作标准,当然这都是些屁话,能运行就行了。

上面讲到的设置已经为下面的建立站点创造了一个良好的条件,只需要严格按照控制每个站点的权限

就足够了,不要因为时间紧而不设置站点FSO或将目录权限开到最大。操作上的疏忽偶尔会带来一点小

麻烦。

建立站点前 首先在用户管理中建立一个站点所需要使用的用户名。

比如我们要建立一个名为 HostNew的站点 绑定域名hostnew.com

建立一用户Iusr_hostnew.com [对IIS用户增加统一的前缀方便将来的管理] 设置一个复杂的密码

修改该用户所属用户组为Guests 或 你准备好的IIS用户组。删除默认的Users用户组.

尔后给站点需要使用的目录加上这个用户为读取、写入权限。不要是默认权限,默认权限拥有运行权限

那么站点就可以通过FSO来执行或利用其它方式来执行一些恶意程序破坏服务器配置。

尔后打开IIS管理器 > 网站 > 新建站点 设置好后

打开新站点属性 > 目录安全性 > 身份验证和访问控制 > 编辑 > 选择刚才建立的用户[Iusr_hostnew.com]

输入该用户的密码.确认.应用.即可,此时该站点的权限已控制在该站点目录!

其实这一切都是相对比较简单的.也没有什么可值得称道的地方.

如果该站点不使用ASP\PHP\CGI等脚本 在该站点属性 > 主目录里面 > 执行权限 里面选择 无

如果要执行ASP等脚本 则 选择纯脚本.如果PHP\CGI等脚本使用的是EXE文件执行方式.则选择脚本和可执行文件