最强的windows2003安全设置
系统:windows2003  服务:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]
  描述:为了演示,绑定了最多的服务.大家可以根据实际情况做筛减
  
1、WINDOWS本地安全策略 端口限制
  A.对于我们的例子来说.需要开通以下端口
  外->本地 80
  外->本地 20
  外->本地 21
  外->本地 PASV所用到的一些端口
  外->本地 25
  外->本地 110
  外->本地 3389
  然后按照具体情况.打开SQL SERVER和MYSQL的端口
  外->本地 1433
  外->本地 3306
  B.接着是开放从内部往外需要开放的端口
  按照实际情况,如果无需邮件服务,则不要打开以下两条规则
  本地->外 53 TCP,UDP
  本地->外 25
  按照具体情况.如果无需在服务器*****问网页.尽量不要开以下端口
  本地->外 80
  C.除了明确允许的一律阻止.这个是安全规则的关键.
  外->本地 所有协议 阻止
  
2、用户帐号
  a.将administrator改名,例子中改为root
  b.取消所有除管理员root外所有用户属性中的
  远程控制->启用远程控制 以及
  终端服务配置文件->允许登陆到终端服务器
  c.将guest改名为administrator并且修改密码
  d.除了管理员root,IUSER以及IWAM以及ASPNET用户外.禁用其他一切用户.包括SQL DEBUG以及TERMINAL USER等等
3、目录权限
  将所有盘符的权限,全部改为只有
  administrators组 全部权限
  system 全部权限
  将C盘的所有子目录和子文件继承C盘的administrator(组或用户)和SYSTEM所有权限的两个权限
  然后做如下修改:
  C:\Program Files\Common Files 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限
  C:\WINDOWS\ 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限
  C:\WINDOWS\Temp 开放Everyone 修改,读取及运行,列出文件目录,读取,写入权限
出现msdtc日志问题,运行 msdtc -resetlog 重起
===================================================================================
  
4、IIS
  在IIS 6下.应用程序扩展内的文件类型对应ISAPI的类型已经去掉了IDQ,PRINT等等危险的脚本类型,
  在IIS 5下我们需要把除了ASP以及ASA以外所有类型删除.
  安装URLSCAN
  在[DenyExtensions]中一般加入以下内容
  .cer
  .cdx
  .mdb
  .bat
  .cmd
  .com
  .htw
  .ida
  .idq
  .htr
  .idc
  .shtm
  .shtml
  .stm
  .printer
  这样入侵者就无法下载.mdb数据库.这种方法比外面一些在文件头加入特殊字符的方法更加彻底.
  因为即便文件头加入特殊字符.还是可以通过编码构造出来的
IIS的安全:
   1、不使用默认的Web站点,如果使用也要将 将IIS目录与系统磁盘分开。
   2、删除IIS默认创建的Inetpub目录(在安装系统的盘上)。
   3、删除系统盘下的虚拟目录,如:_vti_bin、IISSamples、Scripts、IIShelp、IISAdmin、IIShelp、MSADC。
   4、删除不必要的IIS扩展名映射。
   右键单击“默认Web站点→属性→主目录→配置”,打开应用程序窗口,去掉不必要的应用程序映射。主要为.shtml, .shtm, .stm
   5、更改IIS日志的路径
   右键单击“默认Web站点→属性-网站-在启用日志记录下点击属性
   6、如果使用的是2000可以使用iislockdown来保护IIS,在2003运行的IE6.0的版本不需要。
IIS (Internet信息服务器管理器) 在”主目录”选项设置以下:
读 允许
写 不允许
脚本源访问 不允许
目录浏览 建议关闭
记录访问 建议关闭
索引资源 建议关闭
执行权限 推荐选择 “纯脚本”
>> 建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。
(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。
>> 在IIS6.0 -本地计算机 – 属性- 允许直接编辑配置数据库在IIS中 属性->主目录->配置->选项中
>> 在网站把”启用父路径“前面打上勾
>> 在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”
>> 优化IIS6应用程序池
   1、取消“在空闲此段时间后关闭工作进程(分钟)”
   2、勾选“回收工作进程(请求数目)”
   3、取消“快速失败保护”
>> 解决SERVER 2003不能上传大附件的问题
   在“服务”里关闭 iis admin service 服务。
   找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
   找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(可修改为20M即:20480000)
   存盘,然后重启 iis admin service 服务。
>> 解决SERVER 2003无法下载超过4M的附件问题
   在“服务”里关闭 iis admin service 服务。
   找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
   找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)
   存盘,然后重启 iis admin service 服务。
>> 超时问题
   解决大附件上传容易超时失败的问题
   在IIS中调大一些脚本超时时间,操作方法是: 在IIS的“站点或虚拟目录”的“主目录”下点击“配置”按钮,
   设置脚本超时时间为:300秒 (注意:不是Session超时时间)
   解决通过WebMail写信时间较长后,按下发信按钮就会回到系统登录界面的问题
   适当增加会话时间(Session)为 60分钟。在IIS站点或虚拟目录属性的“主目录”下点击“配置–>选项”,
   就可以进行设置了(Windows 2003默认为20分钟)
  
5、WEB目录权限
  作为虚拟主机.会有许多独立客户
  比较保险的做法就是为每个客户,建立一个windows用户
  然后在IIS的响应的站点项内把IIS执行的匿名用户.绑定成这个用户
  并且把他指向的目录权限变更为:
  administrators 全部权限
  system 全部权限
  单独建立的用户(或者IUSER) 选择高级->打开除 完全控制,遍历文件夹/运行程序,取得所有权 3个外的其他权限.
  如果服务器上站点不多.并且有论坛.我们可以把每个论坛的上传目录去掉此用户的执行权限.只有读写权限.这样入侵者即便绕过论坛文件类型检测上传了webshell也是无法运行的.
6、SQL2000 SERV-U FTP安全设置
   SQL安全方面
   1、System Administrators 角色最好不要超过两个
   2、如果是在本机最好将身份验证配置为Win登陆
   3、不要使用Sa账户,为其配置一个超级复杂的密码
   4、删除以下的扩展存储过程格式为:
   use master
   sp_dropextendedproc ‘扩展存储过程名’
   xp_cmdshell:是进入操作系统的最佳捷径,删除
   访问注册表的存储过程,删除
   Xp_regaddmultistring  Xp_regdeletekey  Xp_regdeletevalue  Xp_regenumvalues
   Xp_regread      Xp_regwrite    Xp_regremovemultistring
   OLE自动存储过程,不需要删除
   Sp_OACreate   Sp_OADestroy    Sp_OAGetErrorInfo  Sp_OAGetProperty
   Sp_OAMethod  Sp_OASetProperty  Sp_OAStop
   5、隐藏 SQL Server、更改默认的1433端口
   右击实例选属性-常规-网络配置中选择TCP/IP协议的属性,选择隐藏 SQL Server 实例,并改原默认的1433端口
  
serv-u的几点常规安全需要设置下:
   选中”Block “FTP_bounce”attack and FXP”。什么是FXP呢?通常,当使用FTP协议进行文件传输时,客户端首先向FTP服务器发出一个”PORT”命令,该命令中包含此用户的IP地址和将被用来进行数据传输的端口号,服务器收到后,利用命令所提供的用户地址信息建立与用户的连接。大多数情况下,上述过程不会出现任何问题,但当客户端是一名恶意用户时,可能会通过在PORT命令中加入特定的地址信息,使FTP服务器与其它非客户端的机器建立连接。虽然这名恶意用户可能本身无权直接访问某一特定机器,但是如果FTP服务器有权访问该机器的话,那么恶意用户就可以通过FTP服务器作为中介,仍然能够最终实现与目标服务器的连接。这就是FXP,也称跨服务器攻击。选中后就可以防止发生此种情况。

7、 修改3389远程连接端口
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]
“portNumber”=dword:0000端口号
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
“portNumber”=dword:0000端口号
设置这两个注册表的权限, 添加“IUSR”的完全拒绝 禁止显示端口号
修改完3389后记得在防火墙打开修改后的端口
8、本地策略:
>> 本地策略—>用户权限分配
   关闭系统:只有Administrators组、其它全部删除。
   通过终端服务允许登陆:只加入Administrators,Remote Desktop Users组,其他全部删除
>> 在安全设置里 本地策略-用户权利分配,通过终端服务拒绝登陆,加入
ASPNET
IUSR_
IWAM_
NETWORK SERVICE
(注意不要添加进user组和administrators组 添加进去以后就没有办法远程登陆了)
>>本地安全策略->本地策略->审核策略
  打开以下内容
  审核策略更改 成功,失败
  审核系统事件 成功,失败
  审核帐户登陆事件 成功,失败
  审核帐户管理 成功,失败
>>开始 > 程序 > 管理工具 > 本地安全策略
账户策略 > 密码策略 > 密码最短使用期限 改成0天[即密码不过期,上面我讲到不会造成IIS密码不同步]
账户策略 > 账户锁定策略 > 账户锁定阈值 5 次 账户锁定时间 10分钟 [个人推荐配置]
>> 在安全设置里 本地策略-安全选项
网络访问:可匿名访问的共享;
网络访问:可匿名访问的命名管道;
网络访问:可远程访问的注册表路径;
网络访问:可远程访问的注册表路径和子路径;
将以上四项全部删除
>> 不允许 SAM 账户的匿名枚举 更改为”已启用”
>> 不允许 SAM 账户和共享的匿名枚举 更改为”已启用” ;
>> 网络访问: 不允许存储网络身份验证的凭据或 .NET Passports 更改为”已启用” ;
>> 网络访问.限制匿名访问命名管道和共享,更改为”已启用” ;
将以上四项通通设为“已启用”
本地策略 > 安全选项
> 清除虚拟内存页面文件 更改为”已启用”
> 不显示上次的用户名 更改为”已启用”
> 不需要按CTRL+ALT+DEL 更改为”已启用”
9、备份
  使用ntbackup软件.备份系统状态.
  使用reg.exe 备份系统关键数据
  如reg export HKLM\SOFTWARE\ODBC e:\backup\system\odbc.reg /y
  来备份系统的ODBC
10、杀毒
  这里介绍MCAFEE 8i 中文企业版.因为这个版本对于国内的许多恶意代码和木马都能够及时的更新.比如已经能够检测到海阳顶端2006.而且能够杀除IMAIL等SMTP软件使用的队列中MIME编码的病毒文件.而很多人喜欢安装诺顿企业版.而诺顿企业版,对于WEBSHELL.基本都是没有反应的.而且无法对于MIME编码的文件进行杀毒.
  在MCAFEE中.我们还能够加入规则.阻止在windows目录建立和修改EXE.DLL文件等.我们在软件中加入对WEB目录的杀毒计划.每天执行一次.并且打开实时监控.
 
11、关闭无用的服务
  我们一般关闭如下服务:
  Help and Support
  TCP/IP NetBIOS Helper
  Computer Browser 维护网络上计算机的最新列表以及提供这个列表
  Task scheduler 允许程序在指定时间运行
  Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
  Distributed File System: 局域网管理共享文件,不需要禁用
  Distributed linktracking client:用于局域网更新连接信息,不需要禁用
  Error reporting service:禁止发送错误报告
  Microsoft Serch:提供快速的单词搜索,不需要可禁用
  NT LM Security support provide:telnet服务和Microsoft Serch用的,不需要禁用
  Print Spooler:如果没有打印机可禁用
  Remote Registry:禁止远程修改注册表
  Remote Desktop Help Session Manager:禁止远程协助
  Workstation 关闭的话远程NET命令列不出用户组
禁用DCOM:
   运行中输入 Dcomcnfg.exe。 回车, 单击“控制台根节点”下的“组件服务”。 打开“计算机”子文件夹。
   对于本地计算机,请以右键单击“我的电脑”,然后选择“属性”。选择“默认属性”选项卡。
   清除“在这台计算机上启用分布式 COM”复选框。
   如果服务器不用作域控,我们也可以禁用 Workstation
12、取消危险组件
  如果服务器不需要FSO
  regsvr32 /u c:\windows\system32\scrrun.dll
  注销组件
  使用regedit
  将/HKEY_CLASSES_ROOT下的
  WScript.Network
  WScript.Network.1
  WScript.Shell
  WScript.Shell.1
  Shell.Application
  Shell.Application.1
  键值改名或删除
  将这些键值下CLSID中包含的字串
  如{72C24DD5-D70A-438B-8A42-98424B88AFB8}
  到/HKEY_CLASSES_ROOT/CLSID下找到以这些字串命名的键值
  全部删除
>> 卸载删除具有CMD命令功能的危险组件
WSHOM.OCX对应于WScript.Shell组件
HKEY_CLASSES_ROOT\WScript.Shell\

HKEY_CLASSES_ROOT\WScript.Shell.1\
添加IUSR用户完全拒绝权限
Shell32.dll对应于Shell.Application组件
HKEY_CLASSES_ROOT\Shell.Application\

HKEY_CLASSES_ROOT\Shell.Application.1\
添加IUSR用户完全拒绝权限
regsvr32/u C:\Windows\System32\wshom.ocx
regsvr32/u C:\Windows\System32\shell32.dll
WSHOM.ocx和Shell32.dll这两个文件只给Administrators组完全权限
14、 删除默认共享
@echo off
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: 先列举存在的分区,然后再逐个删除以分区名命名的共享;
:: 通过修改注册表防止admin$共享在下次开机时重新加载;
:: IPC$共享需要administritor权限才能成功删除
::
::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
title 默认共享删除器
color 1f
echo.
echo ——————————————————
echo.
echo 开始删除每个分区下的默认共享.
echo.
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @(
if exist %%a:\nul (
net share %%a$ /delete>nul 2>nul && echo 成功删除名为 %%a$ 的默认共享 || echo 名为 %%a$ 的默认共享不存在
)
)
net share admin$ /delete>nul 2>nul && echo 成功删除名为 admin$ 的默认共享 || echo 名为 admin$ 的默认共享不存在
echo.
echo ——————————————————
echo.
net stop Server /y>nul 2>nul && echo Server服务已停止.
net start Server>nul 2>nul && echo Server服务已启动.
echo.
echo ——————————————————
echo.
echo 修改注册表以更改系统默认设置.
echo.
echo 正在创建注册表文件.
echo Windows Registry Editor Version 5.00> c:\delshare.reg
:: 通过注册表禁止Admin$共享,以防重启后再次加载
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]>> c:\delshare.reg
echo “AutoShareWks”=dword:00000000>> c:\delshare.reg
echo “AutoShareServer”=dword:00000000>> c:\delshare.reg
:: 删除IPC$共享,本功能需要administritor权限才能成功删除
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]>> c:\delshare.reg
echo “restrictanonymous”=dword:00000001>> c:\delshare.reg
echo 正在导入注册表文件以更改系统默认设置.
regedit /s c:\delshare.reg
del c:\delshare.reg && echo 临时文件已经删除.
echo.
echo ——————————————————
echo.
echo 程序已经成功删除所有的默认共享.
echo.
echo 按任意键退出…
pause>nul

15、命令权限
>> 打开C:\Windows目录 搜索以下DOS命令文件
NET.EXE,NET1.EXE,CMD.EXE,FTP.EXE,ATTRIB.EXE,CACLS.EXE,AT.EXE,FORMAT.COM,
TELNET.EXE,COMMAND.COM,NETSTAT.EXE,REGEDIT.EXE,ARP.EXE,NBTSTAT.EXE tftp.exe
把以上命令文件通通只给Administrators 和SYSTEM为完全控制权限

>>> SQL权限设置
1、一个数据库,一个帐号和密码,比如建立了一个数据库,只给PUBLIC和DB_OWNER权限,SA帐号基本是不使用的,因为SA实在是太危险了.
2、更改 sa 密码为你都不知道的超长密码,在任何情况下都不要用 sa 这个帐户.
3、Web登录时经常出现”[超时,请重试]“的问题
  如果安装了 SQL Server 时,一定要启用“服务器网络实用工具”中的“多协议”项。
4、将有安全问题的SQL扩展存储过程删除. 将以下代码全部复制到”SQL查询分析器”
use master
EXEC sp_dropextendedproc ‘xp_cmdshell’
EXEC sp_dropextendedproc ‘Sp_OACreate’
EXEC sp_dropextendedproc ‘Sp_OADestroy’
EXEC sp_dropextendedproc ‘Sp_OAGetErrorInfo’
EXEC sp_dropextendedproc ‘Sp_OAGetProperty’
EXEC sp_dropextendedproc ‘Sp_OAMethod’
EXEC sp_dropextendedproc ‘Sp_OASetProperty’
EXEC sp_dropextendedproc ‘Sp_OAStop’
EXEC sp_dropextendedproc ‘Xp_regaddmultistring’
EXEC sp_dropextendedproc ‘Xp_regdeletekey’
EXEC sp_dropextendedproc ‘Xp_regdeletevalue’
EXEC sp_dropextendedproc ‘Xp_regenumvalues’
EXEC sp_dropextendedproc ‘Xp_regread’
EXEC sp_dropextendedproc ‘Xp_regremovemultistring’
EXEC sp_dropextendedproc ‘Xp_regwrite’
drop procedure sp_makewebtask
恢复的命令是
EXEC sp_addextendedproc 存储过程的名称,@dllname =’存储过程的dll’
例如:恢复存储过程xp_cmdshell
EXEC sp_addextendedproc xp_cmdshell,@dllname =’xplog70.dll’
注意,恢复时如果xplog70.dll已删除需要copy一个