|
|
楼主 |
发表于 2008-1-5 00:31:00
|
显示全部楼层
Windows服务器终极安全设置与优化指南(二)
快捷模式:此设置模式关闭了IIS的一些高级服务属性,其中包括动态网页属性(ASP);所以,我们需要再重复一遍,选择快捷模式只适合提供静态页面的网站,当然,这种模式是相对最安全的。1 }) K5 w z. Y
高级模式:此模式运行安装者自定义各种属性,同时允许高级属性的运行。
6 q! K( ^/ @, i& u5 ~- k
$ y* X6 |( J. I; k 快捷模式设置我们不必介绍,点击【下一步】按钮就可以设置完成。我们选择【Advanced Lockdown】(高级设置),点击【下一步】按钮,
: J* l" O' _3 }& K# _ 以上界面帮助管理员设置各种脚本映射,我们来看每一种影射应该怎样设置:2 V* @* a2 A# U$ d) G* t$ k- z2 D
1 e1 {- m! R1 h& N% F 1)Disable support Active Server Pages(ASP),选择这种设置将使IIS不支持ASP功能;可以根据网站具体情况选择,一般不选择此项,因为网站一般要求运行ASP程序;
# o8 b8 s7 c/ Y- n+ j! c2 E) h" i* |, q. o2 y2 ~0 l r' @
2)Disable support Index Server Web Interface(.idq,.htw,.ida),选择这一项将不支持索引服务,具体就是不支持.idq,.htw,.ida这些文件。我们先来看看到底什么是索引服务,然后来决定取舍。索引服务是IIS4中包含的内容索引引擎。你可以对它进行ADO调用并搜索你的站点,它为你提供了一个很好的web 搜索引擎。如果你的网站没有利用索引服务对网站进行全文检索,也就可以取消网站的这个功能,取消的好处是:1)减轻系统负担;2)有效防止利用索引服务漏洞的病毒和黑客,因为索引服务器漏洞可能使攻击者控制网站服务器,同时,暴露网页文件在服务器上的物理位置(利用.ida、.idq)。因此,我们一般建议在这一项前面打勾,也就是取消索引服务;' z3 O; k$ `/ O( Y* ^& }0 x5 h& `
1 ]+ W/ F; @9 I( K
3) Disable support for Server Side Includes(.shtml,.shtm,.stm),取消服务器端包含;先来看看什么叫服务器端包含,SSI就是HTML文件中,可以通过注释行调用的命令或指针。SSI 具有强大的功能,只要使用一条简单的SSI 命令就可以实现整个网站的内容更新,动态显示时间和日期,以及执行shell和CGI脚本程序等复杂的功能。一般而言,我们没有用到这个功能,所以,建议取消;取消可以防止一些IIS潜在地漏洞;
+ Y5 \4 i: p6 v) |+ z* v! f) g" i/ c8 v) G1 p. u. a4 L/ m
4)Disable for Internet Data Connector(.idc),取消 Internet数据库连接;先看Internet数据库连接的作用,它允许HTML页面和后台数据库建立连接,实现动态页面。需要注意的是,IIS4和 IIS5中基本已经不使用idc,所以,建议在此项打勾,取消idc;
. [% U" Z& ]$ j2 V
! `# z! ^- ]7 `, ^, f+ u$ b 5) Disable support for Internet Printing (.printer),取消Internet打印;这一功能我们一般没有使用,建议取消;取消的好处是可以避免.printer远程缓存溢出漏洞,这个漏洞使攻击者可以利用这个漏洞远程入侵IIS 服务器,并以系统管理员 (system)身份执行任意命令;" N, n. W' r* a6 ?
6 Y8 S9 j: z% L- F$ x+ Z1 H 6)Disable support for .HTR s cripting(.htr),取消htr映射;攻击者通过htr构造特殊的URL请求,可能导致网站部分文件源代码暴露(包括ASP),建议在此项前面打勾,取消映射;
7 X8 V; S- F; F& A9 C$ b/ }2 ~
9 I% O" s$ V( y5 h6 {" @ 理解以上各项设置以后,我们可以根据本网站情况来决定取舍,一般网站除了ASP要求保留以外,其他均可以取消,也就是全消第一项前面的勾,其他全部打勾,按【下一步】按钮,出现以下界面
7 |; g9 _; S& P, a* G4 N5 g4 w 以上界面设置可以让管理员选择一些IIS默认安装文件的保留与否,我们来看怎样选择:
9 U- \. p6 t6 r; A: k6 f& E$ [
" G& R( ]9 o/ ` 1)Remove sample web files,删除web例子文件;建议删除,因为一般我们不需要在服务器上阅读这些文件,而且,这些文件可能让攻击者利用来阅读部分网页源程序代码(包括ASP);' W7 K+ `9 b* c ?! Q. [4 l; K3 P g h
3 ^8 E- _7 ?; P& z+ a 2)Remove the s cripts vitual directory,删除脚本虚拟目录;建议删除;
% B' y: `9 F' R9 |' J+ ^( p8 X+ u* \& v h+ M
3)Remove the MSDAC virtual directory,删除MSDAC虚拟目录,建议删除;5 |! x$ K! w" g% n
: T% \* v. t0 p/ e: k8 y Y 4)Disable Distribauted Authoring and Versioning(WebDAV),删除WEBDAV,WebDav 主要允许管理者远程编写和修改页面,一般我们不会用到,建议删除,删除的好处是可以避免IIS5的一个WebDav漏洞,该漏洞可能导致服务器停止。0 w$ N; n- ^6 L- I* w
( l* v0 \$ F2 r: s8 w% B
5) Set file permissions to prevent the IIS anouymous user from executing system utilities (such as cmd.exe,tftp.exe),防止匿名用户运行可执行文件,比如cmd.exe和tftp.exe;建议选择此项,因为红色代码和尼姆达均利用了以上所说的匿名执行可执行文件的功能;
% \ T, Z9 t, W8 n
2 B u- e; g- S3 e6 S% p9 P' O 6)Set file permissions to prevent the IIS anouymous user from writing to content directories,防止匿名用户对目录具有写权限,这个不要解释,建议选择;
, `: k0 c4 x E# T9 ]
0 G# O& [# Q# O' G5 Y 设置以上选项以后,按【下一步】按钮,要求确认是否接受以上设置,选择【是】我们可以看到对IIS的详细设置情况。设置完成以后,建议重新启动IIS。
) d3 ~# m! [. M( k% Z
- d9 e: ? w7 T0 ]3 E7 }" b. p. d 二、URLScan Tool――过滤非法URL访问
2 e' r" y7 [/ W4 f s9 @# M/ U E1 n! ?! x& M
仔细观察IIS的漏洞,我们几乎可以得出这样一个结论,所有利用这些漏洞实现对网站攻击的手段均是构造特殊的URL来访问网站,一般有以下几种类型的URL可以利用漏洞:+ U3 n" w$ @, {& d( F1 t6 d4 s ]( M* e
1 T# K* b- j0 b/ S$ z/ x
1、特别长的URL,比如红色代码攻击网站的URL就是这样:6 Q5 `" V# N" r) l5 O
& g5 N( G; |: G; @$ d- T
GET/default.idaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX3 I& o# G. m. R5 |; ~
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5 c( P" v8 E. u$ [) o, l2 Y" ~ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$ c; ^. |' [6 |% Q. o; X. u
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801%u y" M% m8 G( V( S
9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u9090%u8190%u
7 d& H" g9 @" V# y6 n" ~ 00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a 200;
# M) _% ], d; \4 L
4 _; `. t) |" @/ H 2、特殊字符或者字符串的URL,比如在URL后面加: DATA可以看到网页(ASP)源代码;0 z( ?: l, m1 z9 R& ]
8 l5 K5 `3 Z+ J- Q1 W0 T" G 3、URL中含有可执行文件名,最常见的就是有cmd.exe;
) a& r" b$ J" E- q) J; u
6 W) ~! x4 l, ?) G5 V+ {9 }. o6 G 既然这些攻击利用特殊的URL来实现,所以, 微软提供了这款专门过滤非法URL的安全工具,可以达到御敌于国门之外的效果,这款工具有以下特点和功能:
. N7 m1 `$ n) q% ^% U6 w: ]1 V" ?: @& }9 _
1、基本功能:过滤非法URL请求;
4 I7 ] U _/ n v" Z+ C4 M3 Q A' t% o ~: N8 u
2、设定规则,辨别那些URL请求是合法的;这样,就可以针对本网站来制定专门的URL请求规则;同时,当有新的漏洞出现时,可以更改这个规则,达到防御新漏洞的效果;2 p( W" e: \) ?7 y$ R' I( C: c I$ A
) P5 S# v+ a; R$ B* S, O5 |+ m 3、程序提供一套URL请求规则,这个规则包含已经发现的漏洞利用特征,帮助管理员设置规则;
3 F9 L5 e: Z# @! T# _
2 u8 `, ^( l; c3 T; o$ M/ O5 J! Q (一)、软件的下载与安装/ d- A) z) z& @3 q& u& V: J0 p
! T. P( B" p2 I% n
URLScan可以在 微软的网站上下载,地址如下:* n( _# r8 _* h/ P0 i& d
$ ?- c& B! U+ A9 I7 ]# c9 a http://download.microsoft.com/download/i ... NT45XP/EN-US/UrlScan.exe1 u- q: Q. o7 d J( ?
. ]. p0 I/ P1 M3 o4 m. N1 }% m
和一般软件一样安装,但是,此软件不能选择安装路径,安装完成以后,我们可以在System32/InetSvr/URLScan目录下找到以下文件:' ^9 y, T6 U9 i0 I" R0 ?
; R: I* N+ }5 d) p# R urlscan.dll:动态连接库文件;8 S( p2 X0 }' X2 T/ r9 J. X8 k: V9 `
urlscan.inf:安装信息文件;
3 `7 N' W- h _7 O3 | urlscan.txt:软件说明文件;
. o" B& F. i( K; C urlscan.ini:软件配置文件,这个文件很只要,因为对URLScan的所有配置,均有这个文件来完成。
* W# L. ?8 _2 W
9 A/ c4 Y( G; Q, J& Z' k (二)、软件的配置$ z5 i; t- [: O9 P$ [5 i X4 b
8 i k# N, C7 B- `, O: ?
软件的配置由urlscan.ini文件来完成,在配置此文件以前,我们需要了解一些基本知识。% S) _7 [ {4 ]" i; v; c
! ~ n1 k8 o7 c/ S5 v, j
1、urlscan配置文件的构造形式
& |) s1 B* y; p/ v6 r1 H% q. ?
3 T4 y8 c+ F8 L/ ?+ ] urlscan配置文件必须遵从以下规则:
& p7 g! Y: H/ [
+ b1 p7 E5 k6 E, F, H, X (1)此文件名必须为urlscan.ini;6 j) M% g& L* q, P' z' l
0 e# T* g1 R. f3 S) ~4 ~4 b2 o' Q, [
(2)配置文件必须和urlscan.dll在同一目录;
! ~7 x3 |/ J$ D, ]
4 u% w7 h; ~; u& y" L6 {/ q/ B' { (3)配置文件必须是标准ini文件结构,也就是由节,串和值组成;8 k+ m+ p; k* C& H6 T$ ~& D+ A
6 {6 K n" N1 g; @0 m" ~ (4)配置文件修改以后,必须重新启动IIS,使配置生效;% J% V! c5 `2 S9 L
, b% ~9 _/ I$ B& q( L/ e( o' b5 i
(5)配置文件由以下各节组成:4 G" ]$ |1 H( c6 j# Y
: a! u- w! Q% [6 X# N) r$ x% q [Option]节,主要设置节;
! m$ M8 o2 {$ Y0 B) ?9 n [AllowVerbs]节,配置认定为合法URL规则设定,此设定与Option节有关;
5 E4 x9 ]2 V- ^( X, _ [DenyVerbs]节,配置认定为非法URL规则设定,此设定与Option节有关;# W% Q+ a+ `1 l" W' L* I' K
[DenyHeaders]节,配置认定为非法的header在设立设置;
& k" W; q k8 g7 |; X. j [AllowExtensions]节,配置认定为合法的文件扩展名在这里设置,此设定与Option节有关;
9 r. [. t- K' ~' g( ? [DenyExtensions]节,配置认定为非法的文件扩展名在这里设置,此设定与Option节有关;
" U* m( r+ M9 O9 ?0 D D) A ^( [3 m* i% u0 W
2、具体配置/ `/ A# S; I% z- Q( V) _
& a$ { L2 x- D! S4 q8 Z3 f (1)Option节的配置,因为Option节的设置直接影响到以后的配置,因此,这一节的设置特别重要。此节主要进行以下属性的设置:4 m# ^( w* U8 ]# q6 J0 z8 m
$ j: p+ C) w. G( m8 V+ ~
UseAllowVerbs:使用允许模式检查URL请求,如果设置为1,所有没有在[AllowVerbs]节设置的请求都被拒绝;如果设置为0,所有没有在[DenyVerbs]设置的URL请求都认为合法;默认为1;* c) X6 A( n7 `$ ~- s3 k
' |, ~+ H7 h$ X6 t) D UseAllowExtensions:使用允许模式检测文件扩展名;如果设置为 1,所有没在[AllowExtensions]节设置的文件扩展名均认为是非法请求;如果设置为0,所有没在[DenyExtensions]节设置的扩展名均被认为是合法请求;默认为0;
- S# t* c) C+ J/ C3 {5 M& Y, Z# k EnableLogging:是否允许使用Log文件,如果为1,将在urlscan.dll的相同目录设置名为urlscan.log的文件记录所有过滤;" ]* X, d% }1 z6 Z, [
AllowLateScanning:允许其他URL过滤在URLScan过滤之前进行,系统默认为不允许0;
" J: s. U# U/ |' q. |% G: l. z AlternateServerName:使用服务名代替;如果此节存在而且[RemoveServerHeader]节设置为0,IIS将在这里设置的服务器名代替默认的“Server”;2 L# q2 M: {. k/ c8 h* ]! p5 K
NormalizeUrlBeforeScan:在检测URL之前规格化URL;如果为1,URLScan将在IIS编码URL之前URL进行检测;需要提醒的是,只有管理员对URL解析非常熟悉的情况下才可以将其设置为0;默认为1;/ k1 Y ~+ Y/ D1 V1 E$ ?$ t
VerifyNormalization:如果设置为1,UrlScan将校验URL规则,默认为1;此节设定与NormalizeUrlBeforeScan有关;$ h0 i' [7 _( v0 P; f
AllowHighBitCharacters:如果设置为1,将允许URL中存在所有字节,如果为0,含有非ASCII字符的URL将拒绝;默认为1;) E# E4 p. b7 ]) k
AllowDotInPath:如果设置为1,将拒绝所有含有多个“.”的URL请求,由于URL检测在IIS解析URL之前,所以,对这一检测的准确性不能保证,默认为0;
" V3 W9 L! P. @9 D" P& a RemoveServerHeader:如果设置为1,将把所有应答的服务头清除,默认为0;7 n5 B* Z8 K: l" i! _) j
(2)[AllowVerbs]节配置
- c/ o6 s$ |3 g0 R 如果UseAllowVerbs设置为1,此节设置的所有请求将被允许,一般设置以下请求: t5 t' ?& y3 C1 e4 ~
GET、HEAD、POST3 s c4 ^- ^, Z1 G& b4 n$ W0 w
(3)[DenyVerbs]节配置6 c# p2 ]0 x" T+ f. |3 o
如果UseAllowVerbs设置为0,此节设置的所有请求将拒绝,一般设置以下请求:" w0 Y: k- D1 J/ J6 X, C
PROPFIND、PROPPATCH、MKCOL、Delete、PUT、COPY、MOVE、LOCK、UNLOCK1 ~% M8 r9 z9 V* I; `
(4)[AllowExtensions]节设置0 S6 X( K; I( }9 D
在这一节设置的所有扩展名文件将被允许请求,一般设置以下请求:! d9 q, F$ r$ Y, d! }9 G0 N3 d
.asp、.htm、.html、.txt、.jpg、.jpeg、.gif,如果需要提供文件下载服务,需要增加.rar、.zip
6 q/ B% |3 _' L* e0 o5 m; x( p' N$ y (5)[DenyExtensions]节设置
% \9 j: N/ u0 `& }. p X 在这一节设置的所有扩展名文件请求将被拒绝,根据已经发现的漏洞,我们可以在这一节增加内容,一般为以下设置:
$ p. Z4 z; [) ^- ]$ S9 K+ e2 Y .asa、可执行文件、批处理文件、日志文件、罕见扩展如:shtml、.printer等。" s3 M+ k0 J% q Q) \7 K
% u7 |' P1 v7 Q1 a" [& r3 ]
三、总结
9 C F" _' \+ H/ P, g4 A, w6 `2 M N7 U' A ^5 I
以上两个工具功能强大,可以真正实现对IIS的保护。IIS Lock Tool简单,相对而言,只是被动的防卫;UrlScan设置比较难,建议对 IIS非常熟悉的管理员使用,只要设置得当,UrlScan的功能更加强大。在使用UrlScan的时候,切记不要设置一次万事大吉,需要不停跟踪新出现的漏洞,随时修改URLScan的配置文件。) a2 `1 d2 _" A9 q3 { t6 w
. d! H# S. J, {: s! g 3。高级篇:NT/2000的高级安全设置/ K, Y+ w2 V4 ^* Q5 d
+ E5 G" u8 \3 \0 C7 `
1.禁用空连接,禁止匿名获得用户名列表
2 g: s7 E i, z( S, h
5 X; U+ J" \; o Win2000 的默认安装允许任何用户通过空用户得到系统所有账号/共享列表,这个本来是为了方便局域网用户共享文件的,但是一个远程用户也可以得到你的用户列表并使用暴力法破解用户密码。很多朋友都知道可以通过更改注册表Local_MachineSystemCurrentControlSetControl LSA-RestrictAnonymous = 1来禁止139空连接,实际上win2000的本地安全策略(如果是域服务器就是在域服务器安全和域安全策略中)就有这样的选项RestrictAnonymous(匿名连接的额外限制),这个选项有三个值: 0: None. Rely on default permissions(无,取决于默认的权限 1 : Do not allow enumeration of SAM accounts and shares(不允许枚举SAM帐号和共享) 2: No access without explicit anonymous permissions(没有显式匿名权限就不允许访问) 0这个值是系统默认的,什么限制都没有,远程用户可以知道你机器上所有的账号、组信息、共享目录、网络传输列表(NetServerTransportEnum等等,对服务器来说这样的设置非常危险。 1这个值是只允许非NULL用户存取SAM账号信息和共享信息。 2这个值是在win2000中才支持的,需要注意的是,如果你一旦使用了这个值,你的共享估计就全部完蛋了,所以我推荐你还是设为1比较好。 好了,入侵者现在没有办法拿到我们的用户列表,我们的账户安全了
# A9 w0 \4 g4 V4 E- H9 b 2。禁止显示上次登陆的用户名HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindowsNT CurrentVersionwinlogon项中的Don’t Display Last User Name串数据改成1,这样系统不会自动显示上次的登录用户名。将服务器注册表HKEY_LOCAL_ MACHINESOFTWARE Microsoft6 O( c7 I* a9 T3 b/ j9 g& m
WindowsNTCurrentVersionWinlogon项中的Don't Display Last User Name串数据修改为1,隐藏上次登陆控制台的用户名。其实,在2000的本地安全策略中也存在该选项/ Z" p0 C; `# `- Y# D4 y" D( w
Winnt4.0修改注册表:2 x- j* v' h: u/ g
HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindows NTCurrent VersionWinlogon 中增加DontDisplayLastUserName,将其值设为1。7 M1 b& W% B7 I; f( E2 R
?" L* ?( Y& v y* m) J3 ~ 2.预防DoS:2 t' s% R# c* a D/ B
S1 p5 B9 a1 s' T4 J1 l
在注册表HKLMSYSTEMCurrentControlSetServicesTcpipParameters中更改以下值可以帮助你防御一定强度的DoS攻击 SynAttackProtect REG_DWORD 28 n4 D8 h: D- n+ P% c& T9 u/ z4 y
EnablePMTUDiscovery REG_DWORD 0 NoNameReleaseOnDemand REG_DWORD 1
/ c1 Z% v! d x8 i* N9 ?$ M4 o; \ EnableDeadGWDetect REG_DWORD 0 KeepAliveTime REG_DWORD 300,000
7 `, M4 Z9 D, A" E6 \. U9 N) m0 ^ PerFORMRouterDiscovery REG_DWORD 0 EnableICMPRedirects REG_DWORD 0
, j. L7 K7 j2 P# b, a A1 b; A
1 ?/ @" C" L2 O0 V% Q( F2 E. N7 O. H 在Win2000中如何关闭ICMP(Ping)
8 C4 h1 |5 s, O+ `' S1 D
# _% v0 c$ w, l/ s4 N% ]/ R 3.针对ICMP攻击1 s7 m4 I8 r) Z$ E# g& B
ICMP 的全名是Internet Control and Message Protocal即因特网控制消息/错误报文协议,这个协议主要是用来进行错误信息和控制信息的传递,例如著名的Ping和Tracert工具都是利用ICMP协议中的ECHO request报文进行的(请求报文ICMP ECHO类型8代码0,应答报文ICMP ECHOREPLY类型0代码0)。
: o9 j- f i# z2 l& r* X& ` ICMP协议有一个特点---它是无连结的,也就是说只要发送端完成 ICMP报文的封装并传递给路由器,这个报文将会象邮包一样自己去寻找目的地址,这个特点使得ICMP协议非常灵活快捷,但是同时也带来一个致命的缺陷- --易伪造(邮包上的寄信人地址是可以随便写的),任何人都可以伪造一个ICMP报文并发送出去,伪造者可以利用SOCK_RAW编程直接改写报文的 ICMP首部和IP首部,这样的报文携带的源地址是伪造的,在目的端根本无法追查,(攻击者不怕被抓那还不有恃无恐?)根据这个原理,外面出现了不少基于 ICMP的攻击软件,有通过网络架构缺陷制造ICMP风暴的,有使用非常大的报文堵塞网络的,有利用ICMP碎片攻击消耗服务器CPU的,甚至如果将 ICMP协议用来进行通讯,可以制作出不需要任何TCP/UDP端口的木马(参见揭开木马的神秘面纱三)......既然ICMP协议这么危险,我们为什么不关掉它呢?
: _9 V, w3 T$ i4 o H) v
% w1 J4 x+ [) |8 _8 G 我们都知道,Win2000在网络属性中自带了一个TCP/IP过滤器,我们来看看能不能通过这里关掉ICMP协议,桌面上右击网上邻居->属性->右击你要配置的网卡->属性->TCP/IP->高级->选项-> TCP/IP过滤,这里有三个过滤器,分别为:TCP端口、UDP端口和IP协议,我们先允许TCP/IP过滤,然后一个一个来配置,先是TCP端口,点击"只允许",然后在下面加上你需要开的端口,一般来说WEB服务器只需要开80(www),FTP服务器需要开20(FTP Data),21 (FTP Control),邮件服务器可能需要打开25(SMTP),110(POP3),以此类推......接着是UDP,UDP协议和ICMP协议一样是基于无连结的,一样容易伪造,所以如果不是必要(例如要从UDP提供DNS服务之类)应该选择全部不允许,避免受到洪水(Flood)或碎片(Fragment)攻击。最右边的一个编辑框是定义IP协议过滤的,我们选择只允许TCP协议通过,添加一个6(6是TCP在IP协议中的代码, IPPROTO_TCP=6),从道理上来说,只允许TCP协议通过时无论UDP还是ICMP都不应该能通过,可惜的是这里的IP协议过滤指的是狭义的 IP协议,从架构上来说虽然ICMP协议和IGMP协议都是IP协议的附属协议,但是从网络7层结构上ICMP/IGMP协议与IP协议同属一层,所以 微软在这里的IP协议过滤是不包括ICMP协议的,也就是说即使你设置了“只允许TCP协议通过”,ICMP报文仍然可以正常通过,所以如果我们要过滤 ICMP协议还需要另想办法。
" I) P2 }% C1 |1 a7 @+ y) f9 u2 k2 w+ S* e! q% i& ^' z
刚刚在我们进行TCP/IP过滤时,还有另外一个选项:IP安全机制(IP Security),我们过滤ICMP的想法就要着落在它身上。$ z, i6 ~4 Y c1 J: E. }& ^
3 x V3 Y9 M4 O- e/ F$ K0 w2 B
打开本地安全策略,选择IP安全策略,在这里我们可以定义自己的IP安全策略。一个IP安全过滤器由两个部分组成:过滤策略和过滤操作,过滤策略决定哪些报文应当引起过滤器的关注,过滤操作决定过滤器是“允许”还是“拒绝”报文的通过。要新建IP安全过滤器,必须新建自己的过滤策略和过滤操作:右击本机的 IP安全策略,选择管理IP过滤器,在IP过滤器管理列表中建立一个新的过滤规则:ICMP_ANY_IN,源地址选任意IP,目标地址选本机,协议类型是ICMP,切换到管理过滤器操作,增加一个名为Deny的操作,操作类型为"阻止"(Block)。这样我们就有了一个关注所有进入ICMP报文的过滤策略和丢弃所有报文的过滤操作了。需要注意的是,在地址选项中有一个镜像选择,如果选中镜像,那么将会建立一个对称的过滤策略,也就是说当你关注 any IP->my IP的时候,由于镜像的作用,实际上你也同时关注了my IP->any IP,你可以根据自己的需要选择或者放弃镜像。再次右击本机的IP安全策略,选择新建IP过滤策略,建立一个名称为ICMP Filter的过滤器,通过增加过滤规则向导,我们把刚刚定义的 ICMP_ANY_IN过滤策略指定给ICMP Filter,然后在操作选框中选择我们刚刚定义的Deny操作,退出向导窗口,右击 ICMP Filter并启用它,现在任何地址进入的ICMP报文都会被丢弃了。; ^) r5 t9 Y9 j
虽然用IP sec能够对ICMP报文进行过滤,不过操作起来太麻烦,而且如果你只需要过滤特定的ICMP报文,还要保留一些常用报文(如主机不可达、网络不可达等),IP sec策略就力不从心了,我们可以利用Win2000的另一个强大工具路由与远程访问控制(Routing & Remote Access)来完成这些复杂的过滤操作。
9 _- W( L8 H2 z* g
. ?7 A, f' E5 o( u* G( P 路由与远程访问控制是Win2000用来管理路由表、配置VPN、控制远程访问、进行IP报文过滤的工具,默认情况下并没有安装,所以首先你需要启用它,打开"管理工具"->"路由与远程访问",右击服务器(如果没有则需要添加本机)选择"配置并启用路由及远程访问",这时配置向导会让你选择是什么样的服务器,一般来说,如果你不需要配置VPN服务器,那么选择"手动配置"就可以了,配置完成后,主机下将出现一个IP路由的选项,在"常规"中选择你想配置的网卡(如果你有多块网卡,你可以选择关闭某一块的ICMP),在网卡属性中点击"输入筛选器",添加一条过滤策略"from:ANY to: ANY 协议:ICMP 类型:8 :编码:0 丢弃"就可以了(类型8编码0就是Ping使用的ICMP_ECHO报文,如果要过滤所有的ICMP报文只需要将类型和编码都设置为255)6 y; s3 z3 ~3 G4 f! O! M) d
9 W7 R& D; C( J
细心的朋友刚才可能已经发现,在输入、输出过滤器的下面,还有一个"碎片检查"功能,这个功能使用来应付IP碎片攻击的,这已经超出了本文所讨论的范围,我会在以后的拒绝服务攻击的文章中继续和大家一起探讨的。Win2000的路由及远程访问是一个功能非常强大的工具集$ B/ R {4 P1 B% M* H
; U* C* |7 T) ]- O5 q: s 4.改变windows系统的一些默认值(例如:数据包的生存时间(TTL)值,不同系统有不同的值,有经验的人可以根据TTL的不同的值判断对方使用的是何种操作系统(例如windows 2000默认值128),我改改改,看你怎么看)4 J2 y3 ~$ g( E
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
4 W$ V! `' J' D* K
z+ o' {% \0 r, L ? DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128), K, v# T$ k0 D
2 e) X: W. q8 j% m
说明:指定传出IP数据包中设置的默认生存时间(TTL)值.TTL决定了IP数据包在到达
: R; `4 D$ p! z$ L5 _ 目标前在网络中生存的最大时间.它实际上限定了IP数据包在丢弃前允许通过的路由 W f4 `+ m5 U' d
器数量.有时利用此数值来探测远程主机操作系统." h4 [1 _3 b) Y$ i; }
$ o; ~ I% R6 W+ g+ T( m z$ U; u2 f% ~ 5.防止ICMP重定向报文的攻击& S' @, ~1 @ _ q; z
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
9 s9 C: t' B+ F# w1 k' I8 c
p2 L$ _* G+ p5 K- j7 S EnableICMPRedirects REG_DWORD 0x0(默认值为0x1)! W5 F! }/ L" p y7 b6 Y
+ Q7 G0 q# o, } 说明:该参数控制Windows 2000是否会改变其路由表以响应网络设备(如路由器)发送给它的ICMP重定向消息,有时会被利用来干坏事.Win2000中默认值为1,表示响应ICMP重定向报文.
: b3 b( ?% {$ n" B- f
: {+ a: n/ X$ H7 P5 Z9 E- d 6.禁止响应ICMP路由通告报文
! O3 ?* B) Y( ] HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersInterfacesinterface
% L5 u8 l+ |. m1 o1 R PerFORMRouterDiscovery REG_DWORD 0x0(默认值为0x2)5 C( X3 N; w/ ^8 D* e, b! P
5 P( E7 T% a5 B$ u) k( v) P
说明:“ICMP路由公告”功能可造成他人计算机的网络连接异常,数据被窃听,计算机被用于流量攻击等严重后果.此问题曾导致校园网某些局域网大面积,长时间的网络异常.因此建议关闭响应ICMP路由通告报文.Win2000中默认值为2,表示当DHCP发送路由器发现选项时启用9 P/ |8 i0 B5 }- X8 K0 t. v
$ E* R6 G* S. G8 m g" Y V2 Y% {
7.防止SYN洪水攻击. w+ w. ^; K5 ?0 }
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
( Y% F1 F; O P$ b* l% W
; B* Z* g- m& u/ ^. B SynAttackProtect REG_DWORD 0x2(默认值为0x0)
8 j( ] ?' H3 R0 d1 |# h# s: M2 p Y+ m1 `! p
说明:SYN攻击保护包括减少SYN-ACK重新传输次数,以减少分配资源所保留的时+ |+ r8 r# M( F/ {/ T
间.路由缓存项资源分配延迟,直到建立连接为止.如果synattackprotect=2,
& ~2 K2 o/ K3 F& w! q 则AFD的连接指示一直延迟到三路握手完成为止.注意,仅在TcpMaxHalfOpen和5 I* c! r5 Z) l! O# J+ m7 K0 ]
TcpMaxHalfOpenRetried设置超出范围时,保护机制才会采取措施.
7 ]" F$ n9 u7 z3 @+ G n& V. n% T2 i: I2 k) j$ s
8.禁止C$、D$一类的缺省共享
; G# b1 D, W- {. y. @- T HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters) F4 u8 J7 s1 g. M, P5 I0 m+ n; h
AutoShareServer、REG_DWORD、0x0% }% Q, E( S! r
9 L4 _; ?5 |' M7 d1 U$ [
9.禁止ADMIN$缺省共享: c: R4 [( \, O9 q+ ]3 N ]
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters- U5 I6 j# k/ q3 Y# S
AutoShareWks、REG_DWORD、0x0. u) P+ A+ ?+ e* C' B% G) {! G
10.限制IPC$缺省共享8 {2 c6 K' d u P, G$ m
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa. T8 K0 ~# h0 _
- {7 Z" w) X: w9 l4 I8 J4 G restrictanonymous REG_DWORD 0x0 缺省
% w8 F5 c" K: Q; {) g& o/ D" P) P 0x1 匿名用户无法列举本机用户列表
% o0 U/ V) ]% w3 ? 0x2 匿名用户无法连接本机IPC$共享
# I+ E: }& u/ ?1 l 说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server+ n6 F3 ]: C% p# h9 r
' I, R3 l! g/ ]
11.不支持IGMP协议) f. ?8 `4 ]1 o2 h
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
3 N# u# i1 y- C/ ]3 ~" R) a( c; `% F) \4 Z6 W
IGMPLevel REG_DWORD 0x0(默认值为0x2)9 q$ J* `3 Y0 L: U
* o: R! x5 O9 m0 f+ X) Q2 N% U: F 说明:记得Win9x下有个bug,就是用可以用IGMP使别人蓝屏,修改注册表可以修正这个
+ D3 V( M" F$ d* J" e: i6 t2 O+ [ bug.Win2000虽然没这个bug了,但IGMP并不是必要的,因此照样可以去掉.改成0后用
7 U: D! ^/ }0 V5 t. y6 z7 Z/ C route print将看不到那个讨厌的224.0.0.0项了.
- f4 L# o/ a; `: r9 j# u* k: d" h* x% f; k
12.设置arp缓存老化时间设置
/ X2 I& F# W+ s. f9 f2 N- T5 l HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices:TcpipParameters
9 w! v, `5 }$ K3 n) Z% l
* r) z+ T% T9 H) `7 v. S! ] ArpCacheLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为120秒)/ b% `! X' V: G1 S: i3 T
ArpCacheMinReferencedLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为600)) u6 l4 u$ z% `+ y; f: L9 V1 K
. ^3 H; d e! `& ^3 S8 ~( _- V
说明:如果ArpCacheLife大于或等于ArpCacheMinReferencedLife,则引用或未引用的ARP缓存项在 ArpCacheLife秒后到期.如果ArpCacheLife小于阿ARPCacheMinReferencedLife,未引用项在 ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期.每次将出站数据包发送到项的IP地址时,就会引用ARP缓存中的项。
4 @( l, H1 f7 f. j8 j
% Q- l$ Y7 c+ ]' B, y 13.禁止死网关监测技术" W, v G5 p5 l& v5 P! l! T
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices:TcpipParameters
. A, w# a) C! f, B3 A& u. j# I% a4 n8 z2 ?# t
EnableDeadGWDetect REG_DWORD 0x0(默认值为ox1)6 e5 @5 @ p7 D3 p
( p+ ^5 ? ~- X0 d* F0 _8 j
说明:如果你设置了多个网关,那么你的机器在处理多个连接有困难时,就会自动改用备份网关.有时候这并不是一项好主意,建议禁止死网关监测.# j- L" I9 K4 \% e1 E; G# G8 g) E
. T# T# S1 L) ~
14.不支持路由功能9 M3 P+ N" D. J K# g% p
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices:TcpipParameters6 d& _) P0 q+ w) e) f0 i
+ d. B$ i8 E$ Y2 Y' G6 M
IPEnableRouter REG_DWORD 0x0(默认值为0x0)
e, Y( g) }7 V. B. r# p! Q2 ~5 b# k$ C% S" G
说明:把值设置为0x1可以使Win2000具备路由功能,由此带来不必要的问题.
9 v6 B' e! n- X- |( z/ R P6 X5 u' k4 X: C
15.做NAT时放大转换的对外端口最大值, W: [) v4 T6 d8 f( E0 Y
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices:TcpipParameters
8 o7 I7 k- e, m5 `" g( v
- R! L2 B1 O$ Z, w, h/ x2 P MaxUserPort REG_DWORD 5000-65534(十进制)(默认值0x1388--十进制为5000)
! f/ j0 J, M8 n' J+ s8 u3 ~. F r- m" A5 i2 O, i
说明:当应用程序从系统请求可用的用户端口数时,该参数控制所使用的最大端口数.正常情况下,短期端口的分配数量为1024-5000.将该参数设置到有效范围以外时,就会使用最接近的有效数值(5000或65534).使用NAT时建议把值放大点.% e0 u: ?5 K, \
16.修改MAC地址
+ E8 K6 F% m! T) K HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass
2 E9 C# C2 G/ E* F0 W
5 }' f& y/ Y% ? 找到右窗口的说明为"网卡"的目录,- I' R0 E, J/ r4 x. A$ p) i9 C6 T
比如说是{4D36E972-E325-11CE-BFC1-08002BE10318}! L& b: j& X2 l& P" D
1 E7 f. S# _' [, x B
展开之,在其下的0000,0001,0002...的分支中找到"DriverDesc"的键值为你网卡的说明,比如说"DriverDesc"的值为 " Intel(R) 82559 Fast Ethernet LAN on Motherboard"然后在右窗口新建一字符串值,名字为 "Networkaddress",内容为你想要的MAC值,比如说是"004040404040"然后重起计算机,ipconfig /all看看.7 G% b) d* P8 Z2 z/ K7 J" I
5 h) `9 O: l3 s) W/ w L# L 17.防止密码被DUMP,你只需在服务里面关掉Remote regisitery services
1 t; i* O/ X9 S) e+ R( o$ z好了,这样一台安全和清晰的服务器系统就完成了,(记得要做GHOST备份哦~~做好数据备份也是很重要的安全常识!) |
|