Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp]
"PortNumber"=dword:00002683
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\wds\rdpwd\tds\tcp]
"PortNumber"=dword:00002683
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Task scheduler 允许程序在指定时间运行
Routing and Remote Access 在局域网以及广域网环境中为企业提供路由服务
Removable storage 管理可移动媒体、驱动程序和库
Remote Registry Service 允许远程注册表操作
Print Spooler 将文件加载到内存中以便以后打印。要用打印机的朋友不能禁用这项
IPSEC Policy Agent 管理IP安全策略以及启动ISAKMP/OakleyIKE)和IP安全驱动程序
Distributed Link Tracking Client 当文件在网络域的NTFS卷中移动时发送通知
Com+ Event System 提供事件的自动发布到订阅COM组件
Error Reporting Service 收集、存储和向 Microsoft 报告异常应用程序
Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
Telnet 允许远程用户登录到此计算机并运行程序
在"网络连接"里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里--"NetBIOS"设置"禁用tcp/IP上的NetBIOS(S)"。在高级选项里,使用"Internet连接防火墙",这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
C盘只给administrators 和system权限,其他的权限不给,其他的盘也可以这样设置,这里给的system权限也不一定需要给,只是由于某些第三方应用程序是以服务形式启动的,需要加上这个用户,否则造成启动不了。
先给C:\Windows\目录加上IIS_WPG用户组的默认权限
然后再去分别给个别目录加 先去C:\Program Files\Common Files\上Guests默认权限
然后再去 C:\WINNT\Temp 加上Guests的读写两个权限 其他的去小
然后就是C:\WINDOWS\system32目录里的了
最后还要C:\WINNT\system32\inetsrv目录要加上Guests默认权限
这下就好了 我用ASP马试了一下 权限加好了 没问题
要是想开WEB的话 就给WEB所在目录加上 administrator(组或用户)和SYSTEM所有权限和新建立的 Guest组用户 这个用户只给 读写权限就可以了.
C:\WINDOWS\Microsoft.Net\ IIS_WPG 默认的读取及运行 列出文件目录 读取三个权限
网站程序目录 IIS_WPG 默认的读取及运行 列出文件目录 读取三个权限
如果.Net程序使用Access数据库则还要配置:
网站程序目录 ASPNET 默认的读取及运行 列出文件目录 读取和修改四个权限
注意:所有目录除后加上的权限外本身还有administrator(组或用户)和SYSTEM所有权限
Windows目录要加上给users的默认权限,否则ASP和ASPX等应用程序就无法运行。以前有朋友单独设置Instsrv和temp等目录权限,其实没有这个必要的。
另外在c:/Documents and Settings/这里相当重要,后面的目录里的权限根本不会继承从前的设置,如果仅仅只是设置了C盘给administrators权限,而在All Users\Application Data目录下会 出现everyone用户有完全控制权限,这样入侵这可以跳转到这个目录,写入脚本或只文件,再结合其他漏洞来提升权限;譬如利用serv-u的本地溢出提升权限,或系统遗漏有补丁,数据库的弱点,甚至社会工程学等等N多方法,从前不是有牛人发飑说:“只要给我一个webshell,我就能拿到system",这也的确是有可能的。在用做web\ftp服务器的系统里,建议是将这些目录都设置的锁死。其他每个盘的目录都按照这样设置,没个盘都只给adinistrators权限。
另外,还将:net.exe,cmd.exe,tftp.exe,netstat.exe,regedit.exe,at.exe,attrib.exe,cacls.exe,format.com这些文件都设置只允许administrators访问。
把不必要的服务都禁止掉,尽管这些不一定能被攻击者利用得上,但是按照安全规则和标准上来说,多余的东西就没必要开启,减少一份隐患。
在“网络连接”里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里--“NetBIOS”设置“禁用tcp/IP上的NetBIOS(S)”。在高级选项里,使用“Internet连接防火墙”,这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。
删掉c:/inetpub目录,删除iis不必要的映射
首先是每一个web站点使用单独的IIS用户,譬如这里,新建立了一个名为 ,权限为guest的。
在IIS里的站点属性里“目录安全性”---“身份验证和访问控制“里设置匿名访问使用下列Windows 用户帐户”的用户名密码都使用 这个用户的信息.在这个站点相对应的web目录文件,默认的只给IIS用户的读取和写入权限(后面有更BT的设置要介绍)。
在“应用程序配置”里,我们给必要的几种脚本执行权限:ASP.ASPX,PHP,
ASP,ASPX默认都提供映射支持了的,对于PHP,需要新添加响应的映射脚本,然后在web服务扩展将ASP,ASPX都设置为允许,对于php以及CGI的支持,需要新建web服务扩展,在扩展名(X):下输入 php ,再在要求的文件(E):里添加地址 C:\php\sapi\php4isapi.dll ,并勾选设置状态为允许(S)。然后点击确定,这样IIS就支持PHP了。支持CGI同样也是如此。
要支持ASPX,还需要给web根目录给上users用户的默认权限,才能使ASPX能执行。
另外在应用程序配置里,设置调试为向客户端发送自定义的文本信息,这样能对于有ASP注入漏洞的站点,可以不反馈程序报错的信息,能够避免一定程度的攻击。
在自定义HTTP错误选项里,有必要定义下譬如404,500等错误,不过有有时候为了调试程序,好知道程序出错在什么地方,建议只设置404就可以了。
IIS6.0由于运行机制的不同,出现了应用程序池的概念。一般建议10个左右的站点共用一个应用程序池,应用程序池对于一般站点可以采用默认设置,
新建立一个站,采用默认向导,在设置中注意以下几个地方:在应用程序设置里:执行权限为默认的纯脚本,应用程序池使用独立的名为:315safe的程序池。
名为315safe的应用程序池可以适当设置下“内存回收”:这里的最大虚拟内存为:1000M,最大使用的物理内存为256M,这样的设置几乎是没限制这个站点的性能的。
在应用程序池里有个“标识”选项,可以选择应用程序池的安全性帐户,默认才用网络服务这个帐户,大家就不要动它,能尽量以最低权限去运行大,隐患也就更小些。在一个站点的某些目录里,譬如这个“uploadfile"目录,不需要在里面运行asp程序或其他脚本的,就去掉这个目录的执行脚本程序权限,在“应用程序设置”的“执行权限”这里,默认的是“纯脚本”,我们改成“无”,这样就只能使用静态页面了。依次类推,大凡是不需要asp运行的目录,譬如数据库目录,图片目录等等里都可以这样做,这样主要是能避免在站点应用程序脚本出现bug的时候,譬如出现从前流行的upfile漏洞,而能够在一定程度上对漏洞有扼制的作用。
在默认情况下,我们一般给每个站点的web目录的权限为IIS用户的读取和写入,如图:
但是我们现在为了将SQL注入,上传漏洞全部都赶走,我们可以采取手动的方式进行细节性的策略设置。
1. 给web根目录的IIS用户只给读权限。如图:
然后我们对响应的uploadfiles/或其他需要存在上传文件的目录额外给写的权限,并且在IIS里给这个目录无脚本运行权限,这样即使网站程序出现漏洞,入侵者也无法将asp木马写进目录里去,呵呵,不过没这么简单就防止住了攻击,还有很多工作要完成。如果是MS-SQL数据库的,就这样也就OK了,但是Access的数据库的话,其数据库所在的目录,或数据库文件也得给写权限,然后数据库文件没必要改成.asp的。这样的后果大家也都知道了把,一旦你的数据库路径被暴露了,这个数据库就是一个大木马,够可怕的。其实完全还是规矩点只用mdb后缀,这个目录在IIS里不给执行脚本权限。然后在IIS里加设置一个映射规律,如图:
这里用任意一个dll文件来解析.mdb后缀名的映射,只要不用asp.dll来解析就可以了,这样别人即使获得了数据库路径也无法下载。这个方法可以说是防止数据库被下载的终极解决办法了。
比如,FSO和XML是非常常用的组件之一,很多程序会用到他们。WSH组件会被一部分主机管理程序用到,也有的打包程序也会用到。
最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,
regsvr32/u C:\Windows\System32\wshom.ocx
del C:\Windows\System32\wshom.ocx
regsvr32/u C:\Windows\system32\shell32.dll
del C:\Windows\system32\shell32.dll
然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。
1. 隐藏重要文件/目录可以修改注册表实现完全隐藏:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL],鼠标右击 “CheckedValue”,选择修改,把数值由1改为0
2. 3.防止SYN洪水攻击: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] 新建DWORD值,名为SynAttackProtect,值为2 EnablePMTUDiscovery REG_DWORD 0 NoNameReleaseOnDemand REG_DWORD 1 KeepAliveTime REG_DWORD 300000 TcpMaxConnectResponseRetransmissions 2
TcpMaxHalfOpen 500 TcpMaxHalfOpenRetried 400
TcpMaxPortsExhausted 5 TcpMaxDataRetransmissions 2
3. 防止ICMP重定向报文的攻击: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] 将EnableICMPRedirects 值设为0
4. 抵御 SNMP 攻击 [HKLM\System\CurrentControlSet\Services\Tcpip\Parameters] EnableDeadGWDetect 0
5. 不支持IGMP协议: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] 新建DWORD值,名为IGMPLevel 值为0
6. 禁止IPC空连接: [HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control\LSA] RestrictAnonymous 把这个值改成”1”即可。
7. 更改TTL值:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]:DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258
8. 删除默认共享: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]:AutoShareServer类型是REG_DWORD把值改为0即可
1、系统管理员账户最好少建,更改默认的管理员帐户名(Administrator)和描述,密码最好采用数字加大小写字母加数字的上档键组合,长度最好不少于14位。
2、新建一个名为Administrator的陷阱帐号,为其设置最小的权限,然后随便输入组合的最好不低于20位的密码
3、将Guest账户禁用并更改名称和描述,然后输入一个复杂的密码,当然现在也有一个DelGuest的工具,也许你也可以利用它来删除Guest账户,但我没有试过。
4、在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-账户策略-账户锁定策略,将账户设为“三次登陆无效”,“锁定时间为30分钟”,“复位锁定计数设为30分钟”。
5、在安全设置-本地策略-安全选项中将“不显示上次的用户名”设为启用
6、在安全设置-本地策略-用户权利分配中将“从网络访问此计算机”中只保留Internet来宾账户、启动IIS进程账户。如果你使用了Asp.net还要保留Aspnet账户。
8、启用 不允许为网络验证存储凭据或Passport
9、启用 在下一次密码变更时不存储LANMAN哈希值
12、从文件共享中删除允许匿名登陆的DFS$和COMCFG
TCP 1025 137 139 445 593 2745 3127 6129 3389
1、System Administrators 角色最好不要超过两个
3、不要使用Sa账户,为其配置一个超级复杂的密码,数据库键接不使用SA帐户,单数据库单独设使用帐户.只给public和db_owner权限.
sp_dropextendedproc '扩展存储过程名'
xp_cmdshell:是进入操作系统的最佳捷径,删除
Xp_regaddmultistring Xp_regdeletekey Xp_regdeletevalue Xp_regenumvalues
Xp_regread Xp_regwrite Xp_regremovemultistring
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
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
5、隐藏 SQL Server、更改默认的1433端口
右击实例选属性-常规-网络配置中选择TCP/IP协议的属性,选择隐藏 SQL Server 实例,并改原默认的1433端口
本文转自king_819 51CTO博客,原文链接:http://blog.51cto.com/kerry/102144,如需转载请自行联系原作者