发信人: gualaguala(大笨象) 
整理人: gzcsl(2002-03-26 17:30:56), 站内信件
 | 
 
 
20、	停止不必要的服务
 HTTP/FTP服务器需要最少的服务:
 l	Event Log 
 l	License Logging Service 
 l	Windows NTLM Security Support Provider 
 l	Remote Procedure Call (RPC) Service 
 l	Windows NT Server or Windows NT Workstation 
 l	IIS Admin Service 
 l	MSDTC 
 l	World Wide Web Publishing Service 
 l	Protected Storage
 
 IIS设置:
 1、	设置Web目录访问权限(NTFS)
 根据下面表格设置Web目录/文件的权限:
 文件类型	ACL
 CGI etc .EXE, .DLL, .CMD, .PL	Everyone (RX)Administrators (Full Control)System (
 Full Control) 
 Script Files .ASP etc	Everyone (RX)Administrators (Full Control)System (Full Con
 trol)  
 Include Files .INC, .SHTML, .SHTM	Everyone (RX)Administrators (Full Control)Syst
 em (Full Control) 
 Static Content .HTML, .GIF, .JPEG	Everyone (R)Administrators (Full Control)Syste
 m (Full Control) 
 
 2、	设置IIS 日志文件的访问权限
 怎样知道IIS日志存放在那里?
 默认是存放在% SystemRoot%\System32\LogFiles目录下,
 
 3、	删除示例(Sample)程序
 示例内容	存放位置
 IIS	c:\inetpub\iissamples  
 IIS SDK	c:\inetpub\iissamples\sdk  
 Admin Scripts	c:\inetpub\AdminScripts  
 Data access	c:\Program Files\Common Files\System\msadc\Samples  
 
 4、	删除脚本映射
 
 5、	禁止RDS支持
 修改注册表,删除以下键值和子键值:
 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \W3SVC\Parameters\ADCLaunch
 \RDSServer.DataFactory 
 
 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \W3SVC\Parameters\ADCLaunch
 \AdvancedDataFactory 
 
 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services W3SVC\Parameters\ADCLaunch\
 VbBusObj.VbBusObjCls
 
 6、	禁止使用#exec调用命令
 位置:HKEY_LOCAL_MACHINE\SYSTEM
 键值:CurrentControlSet\Services\W3SVC\Parameters
 名称:SSIEnableCmdDirective
 类型:REG_DWORD
  值:0
 
 7、	为脚本类文件取消读取访问权限
 注意:不是NTFS的读权限,是Web服务属性设置的读取访问设置。
 
 8、	取消“启用父路径”
 
 SQL Server设置:
 1、	选择合适的认证默认
 SQL Server提供了三种不同的用户身份验证模式。
 
 验证模式	描述
 标准模式(只有6.5版本才有),也叫独立模式	应用程序必须提供一个SQL Server user ID 和
 口令才能访问数据库。不使用Windows 客户的验证方法; 
 Windows NT内置模式	使用Windows 帐号作为验证的方法;
 混合模式	这是同时提供上面两种验证方法的一种混合验证模式。
 
 l	标准模式 –只有6.5版本才有
 标准模式是SQL Server默认安装里已经选定的一项选项。 它提供了简单安全验证模式,因为
 它独立于WIndows NT的域模式。你可以通过设置SQL Server里的安全选项来控制用户访问数
 据库和对象的访问级别。
 
 标准模式使用SQL Server它自身的方法去验证一个用户的身份。要使用标准模式的话,每个
 用户必须要向SQL Server提供一个User ID 和密码来验证身份。每个验证后的用户都可以访
 问他有权限访问的数据库和对象(表、视图、存储过程)。 这是一个比较容易跟IIS集成到一
 块的验证模式。
 
 假如你不使用multi-protocol 或 Named Pipes协议来为你的SQL Server提供服务的话,你就
 需要要使用标准模式。标准模式运行在任何一种SQL Server支持的协议上。使用标准模式的
 SQL Server 不必考虑太多的网络因素,如域,Windows NT 帐号等等。
 
 假如你的应用程序是IIS,那么标准模式是一个最好的选择。这是因为标准模式不管你配置里
 使用的是那种协议。
 
 值得注意的是,从7.0开始,不再单独提供这样的验证模式。要使用这种模式就只能选择下面
 介绍的混合模式。
 
 l	仅Windows
 使用仅Windows的验证模式,, SQL Server 使用Windows NT 的身份验证去验证一个用户的身
 份。 这种方式,用户不需要提供User ID和密码就可以访问数据库,这是因为SQL Server使
 用了Windows NT的验证来代替自标准模式的验证方法。
 
 仅Windows的模式工作在Named Pipes 或Multi-Protocol 协议上的信任连接。信任的连接可
 以是来自Windows NT, Windows 95, 或 Windows for Workgroups 工作站, 和运行在DOS的M
 icrosoft LAN Manager或 Microsoft Windows 客户。
 
 SQL Server 应用程序会从l仅Windows 模式中得到很多好处。例如,域范围的帐号,加密的
 密码,密码同步,登录审核和简单的用户管理。 
 
 注意:假如你的应用程序是IIS,我想你是不会使用此验证模式的。
 
 l	混合模式(SQL Server 和 Windows)
 这种模式允许用户使用两种模式中的任意一种方式去验证自己的身份。
 
 2、	选择合适的网络协议
 为了要使用SQL Server's 的仅Windows 模式,你必须使用Named Pipes 或Multi-Protocol(
 Named Pipes)协议
 
 l	TCP/IP Sockets
 TCP/IP Sockets 是一种无身份验证的协议。意思就是连接是没有实时验证过的。只在开始建
 立连接时做身份的验证。另外在SQL Server 中定义/设置每个用户的访问权限,TCP/IP Soc
 kets比Named Pipes 需要更多的管理。
 
 如果你不需要SQL Server的仅Windows模式, TCP/IP Sockets 是一个好的选择。
 
 l	Named Pipes
 Named Pipes 是一种可靠的协议。每当用户使用Named Pipes访问SQL Server ,这个连接都
 会被确认身份。这也是为什么它在SQL Server 默认安装里被安装的重要原因。另外一个重要
 的原因是Named Pipes的连接速度最快。
 
 l	Multi-Protocol
 Multi-Protocol一个重要的好处是它有加密的功能。
 
 
 3、	以普通NT帐号启动服务
 建议使用“Enterprise Manager”修改。
 1.	帐号需要以下权限:
 2.	替换进程级记号;
 3.	添加配额;
 4.	以操作系统方式操作;
 5.	以服务登录;
 6.	读写以下注册表;
 HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer.
 或:HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server. 
 
 HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQLServer.
 或(只用于SQL 2000):
 HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQL$Instancename.
 
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib
 7.	读取、更改SQL Server 目录 ;
 SQL 2000	\Program Files\Microsoft SQL Server\Mssql
 SQL 7.0		MSSQL7.
 8.	读取、更改 .mdf, .ndf, 和.ldf 数据文件;
 
 
 4、	设置审核级别
 a)	Failure
 b)	Success
 c)	ALL
 
 5、	删除master..xp_cmdshell 存储过程
 a)	删除存储过程
 ============================
 use master
 go
 execute sp_dropextendedproc 'xp_cmdshell'
 go
 
 b)	添加存储过程
 ============================
 
 use master
 go
 execute sp_addextendedproc 'xp_cmdshell' ,'xpsql70.dll'
 go
 
 c)	查找存储过程对应的Dll文件
 ============================
 select o.name,c.text from dbo.syscomments c, dbo.sysobjects o where c.id = o.id 
 and o.name = 'xp_cmdshell'
 
 d)	查找Dll文件对应的存储过程
 ============================
 select o.name,c.text from dbo.syscomments c, dbo.sysobjects o where c.id = o.id 
 and c.text = 'xplog70.dll'
 
 6、	删除OLE automation存储过程(会导致管理器一些功能不能使用)
 l	Sp_OACreate 
 l	Sp_OADestroy 
 l	Sp_OAGetErrorInfo 
 l	Sp_OAGetProperty 
 l	Sp_OAMethod 
 l	Sp_OASetProperty 
 l	Sp_OAStop
 
 7、	删除访问注册表的存储过程
 l	Xp_regaddmultistring 
 l	Xp_regdeletekey 
 l	Xp_regdeletevalue 
 l	Xp_regenumvalues 
 l	Xp_regread 
 l	Xp_regremovemultistring 
 l	Xp_regwrite
 
 如:读取注册表SAM数据:
 xp_regread 'HKEY_LOCAL_MACHINE', 'SECURITY\SAM\Domains\Account', 'F'
 
 8、	删除其他有威胁的存储过程
 sp_sdidebugxp_availablemediaxp_deletemailxp_dirtreexp_dropwebtaskxp_dsninfoxp_en
 umdsnxp_enumerrorlogsxp_enumgroupsxp_enumqueuedtasksxp_eventlogxp_findnextmsgxp_
 fixeddrivesxp_getfiledetailsxp_getnetnamexp_grantloginxp_logeventxp_loginconfigx
 p_logininfoxp_makewebtaskxp_msver xp_perfend	xp_perfmonitorxp_perfsamplexp_perfs
 tartxp_readerrorlogxp_readmailxp_revokeloginxp_runwebtaskxp_schedulersignalxp_se
 ndmailxp_servicecontrolxp_snmp_getstatexp_snmp_raisetrapxp_sprintfxp_sqlinventor
 yxp_sqlregisterxp_sqltracexp_sscanfxp_startmailxp_stopmailxp_subdirsxp_unc_to_dr
 ive
  
 附录一:服务/应用对应端口
 
 服务名/应用	UDP	TCP
 Browsing datagram responses of NetBIOS over TCP/IP	138	 
 Browsing requests of NetBIOS over TCP/IP	137	 
 Client/Server Communication	 	135
 Common Internet File System (CIFS)	445	139, 445
 Content Replication Service	 	560
 Cybercash Administration	 	8001
 Cybercash Coin Gateway	 	8002
 Cybercash Credit Gateway	 	8000
 DCOM (SCM uses udp/tcp to dynamically assign ports for DCOM)	135	135
 DHCP client	 	67
 DHCP server	 	68
 DHCP Manager	 	135
 DNS Administration	 	139
 DNS client to server lookup (varies)	53	53
 Exchange Server 5.0	 	 
    Client Server Communication	 	135
    Exchange Administrator	 	135
    IMAP	 	143
    IMAP (SSL)	 	993
    LDAP	 	389
    LDAP (SSL)	 	636
    MTA - X.400 over TCP/IP	 	102
    POP3	 	110
    POP3 (SSL)	 	995
    RPC	 	135
    SMTP	 	25
    NNTP	 	119
    NNTP (SSL)	 	563
 File shares name lookup	137	 
 File shares session	 	139
 FTP	 	21
 FTP-data	 	20
 HTTP	 	80
 HTTP-Secure Sockets Layer (SSL)	 	443
 Internet Information Services (IIS)	 	80
 IMAP	 	143
 IMAP (SSL)	 	993
 IKE (For more information, see Table C.4)	500	 
 IPSec Authentication Header (AH) (For more information, see Table C.4)	 	 
 IPSec Encapsulation Security Payload (ESP) (For more information, see Table C.4)
 	 	 
 IRC	 	531
 ISPMOD (SBS 2nd tier DNS registration wizard)	 	1234
 Kerberos de-multiplexer	 	2053
 Kerberos klogin	 	543
 Kerberos kpasswd (v5)	464	464
 Kerberos krb5	88	88
 Kerberos kshell	 	544
 L2TP	1701	 
 LDAP	 	389
 LDAP (SSL)	 	636
 Login Sequence	137, 138	139
 Macintosh, File Services (AFP/IP)	 	548
 Membership DPA	 	568
 Membership MSN	 	569
 Microsoft Chat client to server	 	6667
 Microsoft Chat server to server	 	6665
 Microsoft Message Queue Server 	1801	1801
 Microsoft Message Queue Server 	3527	135, 2101
 Microsoft Message Queue Server 	 	2103, 2105
 MTA - X.400 over TCP/IP	 	102
 NetBT datagrams	138	 
 NetBT name lookups	137	 
 NetBT service sessions	 	139
 NetLogon	138	 
 NetMeeting Audio Call Control	 	1731
 NetMeeting H.323 call setup	 	1720
 NetMeeting H.323 streaming RTP over UDP	Dynamic	 
 NetMeeting Internet Locator Server ILS	 	389
 NetMeeting RTP audio stream	Dynamic	 
 NetMeeting T.120	 	1503
 NetMeeting User Location Service	 	522
 NetMeeting user location service ULS	 	522
 Network Load Balancing	2504	 
 NNTP	 	119
 NNTP (SSL)	 	563
 Outlook (see for ports)	 	 
 Pass Through Verification	137, 138	139
 POP3	 	110
 POP3 (SSL)	 	995
 PPTP control	 	1723
 PPTP data (see Table C.4)	 	 
 Printer sharing name lookup	137	 
 Printer sharing session	 	139
 Radius accounting (Routing and Remote Access)	1646 or 1813	 
 Radius authentication (Routing and Remote Access)	1645 or 1812	 
 Remote Install TFTP	 	69
 RPC client fixed port session queries	 	1500
 RPC client using a fixed port session replication	 	2500
 RPC session ports	 	Dynamic
 RPC user manager, service manager, port mapper	 	135
 SCM used by DCOM 	135	135
 SMTP	 	25
 SNMP	161	 
 SNMP Trap	162	 
 SQL Named Pipes encryption over other protocols name lookup	137	 
 SQL RPC encryption over other protocols name lookup	137	 
 SQL session	 	139
 SQL session	 	1433
 SQL session	 	1024 - 5000
 SQL session mapper	 	135
 SQL TCP client name lookup	53	53
 Telnet	 	23
 Terminal Server	 	3389
 UNIX Printing	 	515
 WINS Manager	 	135
 WINS NetBios over TCP/IP name service	137	 
 WINS Proxy	137	 
 WINS Registration	 	137
 WINS Replication	 	42
 X400	 	102
  
 附录二:检查Microsoft SQL版本脚本程序
 SET NOCOUNT ON
 SELECT CONVERT(CHAR(25),@@SERVERNAME) AS 'SQL SERVER',
 SUBSTRING(@@VERSION,23,4) AS 'PRODUCT VERSION',
 SUBSTRING(@@VERSION,35,3) AS 'BUILD NUMBER',
 CASE SUBSTRING(@@VERSION,35, 3)
 -- 6.5
 WHEN '121' THEN 'NO SP'
 WHEN '124' THEN 'SP1'
 WHEN '139' THEN 'SP2'
 WHEN '151' THEN 'SP3'
 WHEN '201' THEN 'NO SP'
 WHEN '213' THEN 'SP1'
 WHEN '240' THEN 'SP2'
 WHEN '252' THEN 'SP3 ** BAD **'
 WHEN '258' THEN 'SP3'
 WHEN '259' THEN 'SP3 + SBS'
 WHEN '281' THEN 'SP4'
 WHEN '297' THEN 'SP4 + SBS'
 WHEN '339' THEN 'SP4 + Y2K'
 WHEN '415' THEN 'SP5 ** BAD **'
 WHEN '416' THEN 'SP5a'
 -- 7.0
 WHEN '198' THEN 'Beta 1'
 WHEN '517' THEN 'Beta 3'
 WHEN '583' THEN 'RC1'
 WHEN '623' THEN 'NO SP'
 WHEN '689' THEN 'SP1 Beta'
 WHEN '699' THEN 'SP1'
 WHEN '835' THEN 'SP2 Beta'
 WHEN '842' THEN 'SP2'
 WHEN '961' THEN 'SP3'
 -- 2000
 WHEN '194' THEN 'NO SP'
 ELSE 'Unknown - may be a Hot-Fix version or script out of date'
 END AS 'SERVICE PACK'
 set nocount off
 
 附录三:SYN攻击
 
 xxx.xx.xxx.xxx机器上用netstat –n –p tcp命令查看,可以发现很多SYN_RECEIVED连接。
 而且都是发生在80端口上,而且无法正常访问80端口上的服务。其他的网络连接、服务都是
 正常的。正常情况下不应该出现大量SYN_RECEIVED状态的TCP连接。例外这些连接的来源地址
 都是有一定的规律。根据经验可以确定是有恶意者对xxx.xx.xxx.xxx进行D.o.S(Denial of
  Service)攻击。
 
 执行netstat命令结果如下:
 
 Active Connections
 
   Proto  Local Address            Foreign Address        State
   TCP    127.0.0.1:1025           127.0.0.1:1033         ESTABLISHED
   TCP    127.0.0.1:1033           127.0.0.1:1025         ESTABLISHED
   TCP    xxx.xx.xxx.xxx:80        1.129.155.213:56048    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        8.71.96.232:18544      SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        17.95.29.168:33072     SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        33.212.238.226:29024   SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        33.250.131.21:46336    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        41.254.157.63:26688    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        44.6.143.72:14352      SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        44.233.0.83:2368       SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        46.172.194.36:60560    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        52.141.107.180:34048   SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        58.92.189.37:59680     SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        147.24.54.140:42160    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        150.41.8.196:50864     SYN_RECEIVED
   ........................
   ........................
   TCP    xxx.xx.xxx.xxx:80        157.176.98.17:49712    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        165.217.228.103:18416  SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        171.191.13.61:64656    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        174.45.224.245:30896   SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        181.118.121.182:23984  SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        191.3.0.46:2864        SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        196.235.126.62:57024   SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        208.104.144.7:50912    SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        209.232.143.50:57248   SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        214.14.49.76:50496     SYN_RECEIVED
   TCP    xxx.xx.xxx.xxx:80        223.71.101.172:62528   SYN_RECEIVED
   ........................
   ........................
 
 
 攻击方式的分析:
 
 通过对netstat命令结果的分析。可以知道这是利用TCP的脆弱性进行攻击的。简单说就是攻
 击者伪造一个假的IP包,发送到目标攻击的机器,浪费目标机器上的TCP资源,从而是目标机
 器无法为正常访问者提供服务的一种攻击。
 
 现今很多Internt的服务都是建立在TCP连接上面的,包括Telnet ,WWW, Email。当一台机器
 (我们称它为客户端)企图跟一个台提供服务的机器(我们称它为服务端)建立TCP连接时,
 它们必须先按次序交换通讯好几次,这样TCP连接才能建立起来。
 
 开始客户端会发送一个带SYN标记的包到服务端;
 服务端收到这样带SYN标记的包后,会发送一个带SYN-ACK标记的包到客户端作为确认;
 当客户端收到服务端带SYN-ACK标记的包后 ,会向服务端发送一个带ACK标记的包。
 完成了这几个步骤(如下图),它们的TCP连接就建立起来了,可以进行数据通讯。
 
 客户端		服务端
 SYN	→	
 	←	SYN-ACK
 ACK	→	
 
 
 攻击者就是利用TCP连接的建立需要这样的过程的特点,作为攻击的手段。
 
 他们(攻击者)伪造一个IP包,其中里面包含一个SYN标记和假的源IP地址,发送到目标机器
 (受攻击的机器)。
 
 目标机器(受攻击的机器)收到攻击者发送过来的伪造的IP包,会尝试向IP包里面记录的源
 IP地址发送一个带SYN-ACK标记的包到源IP地址的机器上。
 
 由于攻击者发送过来的IP包里面包含的源IP地址为伪造的,所以目标机器(受攻击的机器)
 根本无法成功发送带SYN-ACK标记的包到伪造的源IP地址的机器上。造成目标机器(受攻击的
 机器)的等待,尝试再连接。
 
 	因为目标机器(受攻击的机器)的等待是需要占用系统一定的资源的。如果这样的连接到了
 一定的数目,系统没有更多的资源来为新的连接作出响应,那么TCP连接就无法建立,换而言
 之,就是无法提供正常的服务。
 
 	而这些等待的资源会在一定的时间(Time Out)后被释放。而Windows NT的默认设置第一次为
 3秒的超时,尝试5次,每次尝试的超时时间为前一次的两倍。如下表:
 
 
 	花费时间(秒)	累计花费时间(秒)
 第一次,失败	3	3
 尝试第1次,失败	6	9
 尝试第2次,失败	12	21
 尝试第3次,失败	24	45
 尝试第4次,失败	48	93
 尝试第5次,失败	96	189
 
 
 从上表,我们可以看到,如果是Windows NT默认的设置,那么一个这样攻击,将会把响应的
 资源占用189秒,189秒后系统才会自动释放。如果这样的连接数目到了一定程度之后,系统
 就无法提供正常的服务了。
 
 
 
 
  ----
      | 
 
 
 |