一、服务器安全设置
1. IIS6.0的安装和设置
1.1 开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件
应用程序 ———ASP.NET(可选)
|——启用网络 COM+ 访问(必选)
|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)
|——公用文件(必选)
|——万维网服务———Active Server pages(必选)
|——Internet 数据连接器(可选)
|——WebDAV 发布(可选)
|——万维网服务(必选)
|——在服务器端的包含文件(可选)
在”网络连接”里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP)和Microsoft网络客户端。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。
在“本地连接”打开Windows 2003 自带的防火墙,可以屏蔽端口,基本达到一个IPSec的功能,只保留有用的端口,比如远程(3389)和 Web(80),Ftp(21),邮件服务器(25,110),https(443),SQL(1433)
1.2. IIS (Internet信息服务器管理器) 在"主目录"选项设置以下
读 允许
写 不允许
脚本源访问 不允许
目录浏览 建议关闭
记录访问 建议关闭
索引资源 建议关闭
执行权限 推荐选择 “纯脚本”
建议使用W 3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。
(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。
1.3. 在IIS6.0 -本地计算机 - 属性- 允许直接编辑配置数据库
在IIS中 属性->主目录->配置->选项中,在网站“启用父路径”前面打上勾
1.4. 在IIS中的Web服务扩展中选中Active Server Pages,点击“允许”
1.5. 优化IIS6应用程序池
1、取消“在空闲此段时间后关闭工作进程(分钟)”
2、勾选“回收工作进程(请求数目)”
3、取消“快速失败保护”
1.6. 解决SERVER 2003不能上传大附件的问题
在“服务”里关闭 iis admin service 服务。
找到 windows/system32/inetsrv/ 下的 metabase.xml 文件。
找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(可修改为 20M即:20480000)
存盘,然后重启 iis admin service 服务。
1.7. 解决SERVER 2003无法下载超过 4M的附件问题
在“服务”里关闭 iis admin service 服务。
找到 windows/system32/inetsrv/ 下的 metabase.xml 文件。
找到 AspBufferingLimit 把它修改为需要的值(可修改为 20M即:20480000)
存盘,然后重启 iis admin service 服务。
1.8. 超时问题
解决大附件上传容易超时失败的问题
在IIS中调大一些脚本超时时间,操作方法是: 在IIS的“站点或虚拟目录”的“主目录”下点击“配置”按钮,
设置脚本超时时间为:300秒 (注意:不是Session超时时间)
解决通过WebMail写信时间较长后,按下发信按钮就会回到系统登录界面的问题
适当增加会话时间(Session)为 60分钟。在IIS站点或虚拟目录属性的“主目录”下点击“配置-->选项”,
就可以进行设置了(Windows 2003默认为20分钟)
2. WEB目录权限设置
Everyone:顾名思义,所有的用户,这个计算机上的所有用户都属于这个组。
最好在C盘以外(如D,E,F.....)的根目录建立到三级目录,一级目录只给Administrator权限,二级目录给Administrator完全控制权限和Everyone除了完全控制,更改,取得,其它全部打勾的权限和IUSR只有该文件夹的完全拒绝权限,三级目录是每个客户的虚拟主机网站,给Administrator完全控制权限和Everyone除了完全控制,更改,取得,其它全部打勾的权限即可.
3. SQL权限设置
3.1. 一个数据库,一个帐号和密码,比如建立了一个数据库,只给PUBLIC和DB_OWNER权限,SA帐号基本是不使用的,因为SA实在是太危险了.
3.2. 更改 sa 密码为你都不知道的超长密码,在任何情况下都不要用 sa 这个帐户.
3.3. Web登录时经常出现"[超时,请重试]"的问题:如果安装了 SQL Server 时,一定要启用“服务器网络实用工具”中的“多协议”项。
3.4.将有安全问题的SQL扩展存储过程删除. 以下命令删除了调用shell,注册表,COM组件的破坏权限,比较全面.一切为了安全!
将以下代码全部复制到"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一个。
二、系统常规安全设置
4. 系统补丁的更新
点击开始菜单—>所有程序—>Windows Update
按照提示进行补丁的安装。
5. 备份系统
用GHOST备份系统。
6. 安装常用的软件
例如:杀毒软件、防火墙、解压缩软件等;安装完毕后,配置杀毒软件,扫描系统漏洞,安装之后用GHOST再次备份系统。
7. 先关闭不需要的端口,开启防火墙 导入IPSEC策略
在”网络连接”里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。在高级选项里,使用"Internet连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
8. win2003服务器防止海洋木马的安全设置
删除以下的注册表主键:
WScript.Shell
WScript.Shell.1
Shell.application
Shell.application.1
WSCRIPT.NETWORK
WSCRIPT.NETWORK.1
regsvr32/u wshom.ocx回车、regsvr32/u wshext.dll回车
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
再把以上2个文件权限设置为ADMINISTRATOR组完全权限所有
这里只提一下FSO的防范,但并不需要在自动开通空间的虚拟商服务器上使用,只适合于手工开通的站点。可以针对需要FSO和不需要FSO的站点设置两个组,对于需要FSO的用户组给予c:winnt/system32/scrrun.dll文件的执行权限,不需要的不给权限。重新启动服务器即可生效。
对于这样的设置结合上面的权限设置,你会发现海阳木马已经在这里失去了作用!
9. 改名不安全组件
需要注意的是组件的名称和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六个字母。
下面是我修改后的代码(两个文件我合到一起了):
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-b 75a -00a 0c90564fe}"
[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"
你可以把这个保存为一个.reg文件运行试一下,但是可别就此了事,因为万一黑客也看了我的这篇文章,他会试验我改出来的这个名字的。
10. 系统安全策略
A.账户策略 密码策略:
B.密码设定最小值不能少于10位
C.密码设定需要保证复杂性
D.登陆计数器需要开启
E.本地策略 审核策略:
F.审核策略更改:成功
G.审核登陆事件:成功、失败
H.审核目录服务访问:成功
I.审核特权使用:成功
J.审核系统事件:成功、失败
K.审核账户登陆事件:成功、失败
M.审核账户管理:成功
N.本地策略 本地策略:
O.不显示上次的登陆名:启用
P.只有本地用户才能访问cd-rom:启用
Q.只有本地用户才能访问软驱:启用
11. 网络设置[这里针对网卡参数进行设置]
PCI网络适配器。
分别为 Public,Private
实际使用中会改为相关IP
11.1. 网卡顺序调整为外网卡优先,顺序为:
a) 公用网络
b) 专用网络
c) 远程访问连接
11.2. 公网网卡设置:
General
1.配置:Link Speed/Duplex Mode:auto mode
2.TCP/IP
高级 WINS:禁用TCP/IP NetBios
高级 选项 TCP/IP筛选:启用TCP/IP筛选,只开放所需TCP端口
删除文件和打印机共享协议[File and Printer Sharing for Microsoft Networks]
Advanced
1.启用Internet Connection Firewall---settings---Remote Desktop
2.Security Logging,ICMP协议的设置
12. PHP安全
c:/windows/php.ini
administrators 全部
system 全部权限
SERVICE 全部
Users 只读和运行
13. 修改3389远程连接端口
修改注册表
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/Wds/rdpwd/Tds/tcp]
"portNumber"=dword:0000端口号 ;键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000 )
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Terminal Server/WinStations/RDP-Tcp]
"portNumber"=dword:0000端口号 ;键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000 )
注意:别忘了在WINDOWS2003自带的防火墙给+上10000端口,也就是你所修改的那个端口号
设置这两个注册表的权限, 添加“IUSR”的完全拒绝 禁止显示端口号
修改完毕.重新启动服务器.设置生效.
14. 本地策略--->用户权限分配
关闭系统:只有Administrators组、其它全部删除。
通过终端服务允许登陆:只加入Administrators,Remote Desktop Users组,其他全部删除
15. 在安全设置里 本地策略-用户权利分配,通过终端服务拒绝登陆 加入
ASPNET
IUSR_
IWAM_
NETWORK SERVICE
(注意不要添加进user组和administrators组 添加进去以后就没有办法远程登陆了)
16. 计算机管理的本地用户和组
禁用终端服务(TsInternetUser), SQL服务(SQLDebugger), SUPPORT_ 388945a0
17. 删除默认共享
制作以下批处理程序运行:
@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$共享,本功能需要admi