﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-&lt;font size="5"&gt;Web2.0学习园地&lt;/font&gt;-文章分类-网络安全</title><link>http://www.blogjava.net/CrazyJava/category/29546.html</link><description>&lt;marquee behavior="alternate" scrolldelay=3 scrollamount=3&gt;
&lt;font face="楷体_GB2312" color="#FFFF00" size="4"&gt;网络无所不在,信息无所不在,应用无所不在!&lt;/font&gt;
&lt;/marquee&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 06 Mar 2008 03:32:55 GMT</lastBuildDate><pubDate>Thu, 06 Mar 2008 03:32:55 GMT</pubDate><ttl>60</ttl><item><title>BlackICE设置手册</title><link>http://www.blogjava.net/CrazyJava/articles/184079.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 05 Mar 2008 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/184079.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/184079.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/184079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/184079.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/184079.html</trackback:ping><description><![CDATA[<p>随着教育信息化的不断深入，越来越多的学校拥有了属于自己的网站。出于成本和日常维护的考虑，很多中小学校都选择在自己的网络服务器上架设Web站点，服务器的安全也随之成为了一个不得不考虑的问题。安装防火墙是不错的选择，但现在常见的个人防火墙软件如天网、金山网镖等功能较弱，不足以保护服务器的安全；同时市面上专业的硬件和软件防火墙价格较高，其设置也相当复杂。那么有没有一款适合中小学校服务器安全防护的网络防火墙呢？笔者的答案就是BlackICE Server。</p>
<p><br />
　　一、BlackICE Server</p>
<p><br />
　　功能简介</p>
<p>　　BlackICE Server集成有非常强大的检测和分析引擎，可以识别黑客常用的入侵技巧，提供全面的网络检测以及系统防护功能。它能即时监测网络端口和协议，拦截所有可疑的网络入侵，还可以查明那些试图入侵者的详细信息并记录下来。该软件的灵敏度和准确率非常高，稳定性也相当出色，系统资源占用率极少，同时简单易用，非常适合应用于学校服务器安全防护。</p>
<p><br />
　　二、BlackICE Server的安装</p>
<p><br />
　　BlackICE Server是一款共享软件，可在其官方主页http://www.iss.net。</p>
<p>　　双击下载后得到的安装文件，会弹出一个对话框，有&#8220;AP Off&#8221;和&#8220;AP On&#8221;两个选项。其中&#8220;AP&#8221;为&#8220;应用程序控制&#8221;，也就是安装后扫描系统中的所有文件，找出可以访问Internet的程序，并对所有应用程序的运行进行控制，这样可以有效地防止木马程序访问网络。为安全起见，我们选择&#8220;AP On&#8221;。点击[next]直到安装完成后，BlackICE Server开始扫描系统中的所有程序，这会花上一点时间。扫描完成，任务栏中出现BlackICE的小图标，防火墙开始工作。</p>
<p><br />
　　三、BlackICE Server的设置</p>
<p><br />
　　任何一款防火墙，要想达到最好的防护效果，都需要对其进行合理的设置，BlackICE Server也不例外。</p>
<p>　　1． 防护设置</p>
<p>　　右键单击任务栏中的小图标，选择&#8220;Edit BlackICE Settings&#8221;，打开软件设置窗口（图1）。其中各标签项设置如下：</p>
<p>　　FireWall（防火墙）：默认防护级别为&#8220;Trusting（信任）&#8221;，允许所有入站信息，这当然不符合服务器的安全要求，通常应选择&#8220;Nervous（敏感）&#8221;级别。如果你的网站已经受到频繁而持续的攻击，则应选择最高防护级别Paranoid（偏激），拦截所有不经请求的入站信息。下面三个选项分别为&#8220;Enable Auto-blocking（允许自动拦截）&#8221;、&#8220;Allow Internet file sharing（允许Internet文件共享）&#8221;、&#8220;Allow NetBIOS Neighborhood（允许NetBIOS网络邻居）&#8221;。第一项从安全出发必须选择，其余两项您可以根据实际情况来决定是否允许。</p>
<p>　　Back Trace（追踪）：选择是否跟踪并分析攻击者的网络信息，其中第一项是启用DNS追踪，而第二项是启用NetBIOS节点追踪，建议全部选中。</p>
<p>　　Packet Log（数据包日志）：将所有信息记录在日志中，建议选中，不过要限制日志文件的大小，防止无用信息占用过多资源。</p>
<p>　　Evidence Log（证据日志）：如果你想把入侵跟踪信息存档记录作为证据，记得选择此项。</p>
<p>　　Intrusion Detection（入侵检测）：添加绝对信任的IP地址或服务。如果你的网站对某个IP地址绝对信任，或开放某个绝对安全的服务，都可以在此添加。</p>
<p>　　Communications Control（通讯控制）：当出现一个未经许可的应用程序访问网络时，应该怎么办？安全起见，您可以在此标签下选择&#8220;Always block network access for the app&#8221;（拦截访问）。</p>
<p>　　Application　Control（应用程序控制）：其中有两项，分别设置当出现一个未经许可或被修改过的程序在服务器上运行时如何处理。因为服务器一般不允许擅自运行软件，所以两项都可以选择&#8220;Always terminate the app&#8221;（总是终止应用程序），这样可以防止木马或病毒程序破坏服务器系统。</p>
<p>　　Notifications（通告）：可以在此设置出现异常事件时是否进行提示，以及是否进行声音报警。通常应该选中。</p>
<p>　　2． 规则设置 </p>
<p>　　经过上面的设置，您的服务器现在应该足够安全了，但同时您会发现服务器的很多服务功能也被防火墙挡住了，比如IIS网站服务、FTP服务、电子邮件服务等都无法访问。同时，局域网中通过这个服务器共享上网的工作站也无法正常访问网络了，这是因为BlackICE Server已经关闭了所有未经许可的端口。所以此时你应当根据需要对防火墙进行规则设置。</p>
<p>　　右键单击任务栏中的小图标，选择&#8220;Advanced firewall setting&#8221;，打开防火墙规则设置窗口。此处列出了防火墙允许及禁止使用的端口，我们可以在此打开允许使用的端口。以开放IIS的Http服务为例：单击[Add]，弹出添加防火墙规则对话框（图2），在&#8220;Name&#8221;栏中给这条防火墙规则起一个名字，方便以后识别，此处起名为Http；选择&#8220;IP&#8221;后的&#8220;All dress&#8221;，允许所有IP地址访问（如果你不想对某一IP开放，可以再单独添加一条规则，对此地址进行拦截）；在&#8220;Port&#8221;一栏中填入IIS的Web服务默认端口&#8220;80&#8221;；&#8220;Type&#8221;（通信协议类型）选择&#8220;TCP&#8221;；&#8220;Mode&#8221;（规则类别）选择&#8220;Accept&#8221;（允许）；&#8220;Duration of Rule&#8221;（规则有效期）选择&#8220;Forever&#8221;（永远）；最后单击[Add]，规则添加完成。这时，局域网内用户就可以对内部Web站点和Internet进行访问了。</p>
<p>　　如果服务器还提供了其他服务，也可以像上面一样添加相应防火墙规则，打开所使用的端口即可。下面笔者将一些常用的服务所使用的通信协议类型和默认端口提供如下：</p>
<p>　　DNS：UDP 53</p>
<p>　　FTP：TCP　21</p>
<p>　　POP3：TCP 110</p>
<p>　　SMTP：TCP 25</p>
<p>　　QQ：UDP TCP 4000</p>
<p>　　ICQ：TCP 4000</p>
<p>　　MSN：TCP 6891-6901 UDP 6901</p>
<p>　　大家可能已经发现，利用BlackICE Server还可以对学生的上网行为进行管理，比如在完成教学任务之前可以关闭80端口禁止学生浏览网页、关闭4000端口禁止学生登录QQ等。这里还要提醒大家：对服务器来说，端口开放得越多，受到攻击的可能性就越大。记住这样一句名言：最少的服务等于最大的安全。</p>
<p><br />
　　四、BlackICE Server的使用</p>
<p><br />
　　双击任务栏中的图标打开BlackICE Server的主界面（图3），其中有三个选项卡：</p>
<p>　　Events（事件）：此项中记录着近期防火墙的访问情况及所发生的事件。每个事件按严重程度分为绿、黄、橙、红四级，分别代表着安全、可疑、很可疑和危急。如果你发现记录中出现了多条红色纪录，就要留意查看是否有人在恶意攻击或试图入侵你的服务器了。</p>
<p>　　Ntruders（入侵者）：如果根据&#8220;Events&#8221;记录，确信某人对服务器图谋不轨，您可以双击事件名称，进入此项（图4）。此处记录了攻击者的NetBIOS名、DNS名、目前所使用的IP地址、计算机名甚至网卡MAC地址。你可以在入侵者名单上单击右键，选择&#8220;Block intruter&#8221;和&#8220;Forever&#8221;，永久性拦截此入侵者对服务器的访问。</p>
<p>　　His（历史）：此处用记录图的方式直观地表现一段时间内服务器接收数据的情况，可以让您对服务器近期的安全状况了然于胸。</p>
<p>　　好了，现在你已经有了一道铜墙铁壁，虽说不是万无一失，但普通的入侵者再也无法轻易攻陷我们的服务器了。</p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/184079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2008-03-05 19:02 <a href="http://www.blogjava.net/CrazyJava/articles/184079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>保障数据安全 架设配置SSH服务器教程</title><link>http://www.blogjava.net/CrazyJava/articles/183870.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Wed, 05 Mar 2008 02:31:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/183870.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/183870.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/183870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/183870.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/183870.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSH的英文全称是Secure SHell，它可以分为两个部分——服务器端和客户端。SSH客户端与服务器端通讯时，用户名和密码均进行了加密，这就有效地防止了他人对密码的盗取。而且通信中所传送的数据包都是&#8220;非明码&#8221;方式的。正因为SSH采用加密的传输方式，即使数据被窃取，对该数据解密也不是一件很容易的事，所以使用SSH服务远程维护服务器是非常安全的。
<p>　　一、安装启动SSH服务器 </p>
<p>　　下面以Windows 2000 Server为例介绍SSH服务器的安装，可在SSH服务器端使用&#8220;F-Secure SSH Server&#8221;软件，它的安装非常简单，和一般软件安装没什么区别。安装完成后，需要启动&#8220;SSH Server&#8221;服务，这一过程比较复杂，这里介绍三种启动&#8220;SSH Server&#8221;的方法。 </p>
<p>　　1、使用批处理文件 </p>
<p>　　在服务器端安装目录下有两个批处理文件&#8220;start-ssh.bat&#8221;和&#8220;stop-ssh.bat&#8221;。运行&#8220;start-ssh.bat&#8221;文件就可以启动SSH服务，要停止该服务只要执行&#8220;stop-ssh.bat&#8221;文件即可。 </p>
<p>　　2、使用SSH服务配置程序 </p>
<p>　　在安装目录下，运行&#8220;fsshconf.exe&#8221;程序，它虽是SSH服务器的配置程序，但也可以用来启动和停止SSH服务。在弹出的&#8220;F-Secure SSH Server Configuration&#8221;窗口中，点击左面列表框中的&#8220;Server Settings&#8221;后，在右边的&#8220;Service status&#8221;栏中会显示服务器状态按钮，如果服务器是停止状态，则按钮显示为&#8220;Start service&#8221;，点击该按钮就可启动SSH服务，再次点击可停止SSH服务。 </p>
<p>　　3、使用NET命令 </p>
<p>　　在服务器端的&#8220;命令提示符&#8221;窗口中，输入&#8220;net start &#8243;F-secure SSH Server&#8243;&#8221;命令，就可以启动SSH服务，要停止该服务，输入&#8220;net stop &#8243;F-Secure SSH Server&#8243;&#8221;命令即可。其中&#8220;F-Secure SSH Server&#8221;为SSH服务器名，&#8220;net start&#8221;和&#8220;net stop&#8221;为Windows系统启动和停止系统服务所使用的命令。 <br />
<br />
提示：启动了SSH服务后，一定要关闭Telnet服务，这样服务器就处在安全环境之中了，不用再怕数据被窃取。 </p>
<p>　　二、合理设置SSH服务器参数 </p>
<p>　　启动SSH服务后，网络管理员就可以远程登录服务器进行维护了。但是每个局域网使用SSH服务的需求是不同的，因此默认的服务参数未必能满足需要，那么我们就可以自行设置这些参数。 </p>
<p>　　1、基本参数设置 </p>
<p>　　运行&#8220;fsshconf.exe&#8221;服务配置程序，在弹出的&#8220;F-Secure SSH Server Configuration&#8221;窗口左栏中，依次选择&#8220;Server Settings&#8594;General&#8221;，然后在右边的&#8220;General&#8221;框体中就可以对参数进行设置了。 </p>
<p>　　在&#8220;Maximum number of connections&#8221;栏中输入合适的数值，对连接到SSH服务器的最大用户数进行限制，在这里我们可根据需要进行设置，如输入&#8220;50&#8221;，则只允许50个用户同时连接SSH服务器。&#8220;Event log filter&#8221;多选框用来定义系统日志记录哪些信息，我们可采用默认设置，勾选&#8220;Errors&#8221;和&#8220;Warnings&#8221;两项即可，建议大家不要勾选&#8220;Information&#8221;，否则会浪费系统资源。&#8220;Idle timeout&#8221;是用户远程登录的超时时间设置，默认为&#8220;0&#8221;，就是不进行登录超时限制。 </p>
<p>　　大家可能还记得FTP服务器的个性化的登录信息，SSH服务器也一样可以做到。首先编写一个登录信息文本文件保存在文件夹中，然后点击&#8220;Banner message file&#8221;栏的浏览按钮，指定已编写好的文本文件即可，这样用户远程登录时就能看到这些个性化的信息了。最后，大家一定要记住点击&#8220;Apply&#8221;按钮保存参数设置。 </p>
<p>　　2、网络参数设置 </p>
<p><!-- 分页 --></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在&#8220;F-Secure SSH Server Configuration&#8221;窗口左栏中点击&#8220;Network&#8221;选项，SSH服务器默认使用的是&#8220;22&#8221;端口，当然也可以自定义端口号（注意，SSH服务器使用的端口号一定不能和服务器上别的程序的端口号冲突）。在&#8220;Port&#8221;栏中输入想使用的端口号即可，其他的参数设置建议使用默认值。
<p>　　点击&#8220;Identity&#8221;选项，在右栏中，我们可以使服务器重新产生新的用户加密密钥和对外公开使用的公钥，它们分别存放在安装文件夹的&#8220;hostkey&#8221;和&#8220;hostkey.pub&#8221;文件中，点击&#8220;Generate&#8221;按钮就可以重新生成这两个文件。 </p>
<p>　　提示：SSH服务器产生一对密钥和公钥。客户端使用公钥对SSH服务器发送来的信息进行解密。当用户第一次登录SSH服务器时，服务器会将它的公钥发送给客户端，以便客户机能对服务器发送的信息进行解密。 </p>
<p>　　3、主机限制参数设置 </p>
<p>　　点击&#8220;Host Restrictions&#8221;选项，在右栏中就可以对远程登录的计算机进行限制设置。例如，不允许IP地址为&#8220;192.168.0.2&#8221;的客户机远程登录SSH服务器，在&#8220;Deny login from hosts&#8221;输入框中输入&#8220;192.168.0.2&#8221;，然后点击&#8220;Apply&#8221;按钮即可。<br />
提示：SSH服务器还有很多参数就不详细介绍了，大部分参数使用默认值即可。SSH服务器的参数保存在&#8220;sshd2_config&#8221;文件中，用户也可以用记事本打开它，直接进行编辑，但这种方法比较麻烦，建议大家不要使用。 </p>
<p>　　三、SSH客户端软件的使用 </p>
<p>　　1、连接SSH服务器 </p>
<p>　　客户端使用&#8220;F-Secure SSH Client&#8221;程序，它的安装也很简单。安装完成后，运行桌面上的客户端程序，弹出&#8220;F-Secure SSH Client&#8221;主窗口，点击工具栏中的&#8220;Connect&#8221;(连接)按钮，弹出&#8220;Connect to Remote Host&#8221;对话框。 </p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先，在&#8220;Host name or IP address&#8221;栏中输入SSH服务器的地址，如输入它的IP地址&#8220;218.22.123.26&#8221;。其次，在&#8220;User Name&#8221;栏中输入SSH服务器的管理员账号名，在&#8220;Port&#8221;栏中输入SSH服务器使用的端口号。最后，点击&#8220;Connect&#8221;按钮即可连接SSH服务器。
<p>　　此时，如果用户是第一次远程登录SSH服务器，则会弹出&#8220;是否将SSH服务器公钥保存在本地数据库中&#8221;的提示框，点击&#8220;是&#8221;按钮，接着弹出&#8220;请输入密码&#8221;对话框，输入管理员账号、密码后，点击&#8220;OK&#8221;按钮，就可以登录到SSH服务器，对服务器进行远程维护了。 </p>
<p>　　提示：SSH客户端也会产生用户的加密密钥和公钥，客户端在第一次登录时，会将产生的公钥复制到SSH服务器上的用户目录中，以便服务器能对客户端发送的信息进行解密。用户目录在服务器上的存储路径为&#8220;CDocuments and Settings用户名&#8221;（假设操作系统是安装在C盘中）。 </p>
<p>　　2、文件传输功能 </p>
<p>　　SSH服务器不但提供了远程登录功能，还提供了文件传输功能。点击&#8220;F-Secure SSH Client&#8221;主窗口的文件传输按钮后，则可弹出文件传输窗口，以进行文件的传输。在&#8220;Local Folders&#8221;栏中选择一个本地文件，然后将它拖到&#8220;Remote Folders&#8221;栏中的SSH服务器上用户的主目录中即可，在窗口底部的状态栏中会显示文件的传输状态。 </p>
<p>　　提示：客户端连接SSH服务器时，SSH服务器提供两种级别的安全验证。第一种级别基于用户账号密码的安全验证，只要知道账号和密码就可以登录到SSH服务器；第二种级别基于密钥的安全验证，客户端必须为自己创建一对密钥，并把公用密钥传送到SSH服务器上，这样就有效地保证了客户端和服务器端数据的安全传输。</p>
<!-- 分页 --><!-- 分页 -->
<img src ="http://www.blogjava.net/CrazyJava/aggbug/183870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2008-03-05 10:31 <a href="http://www.blogjava.net/CrazyJava/articles/183870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DDoS的原理 </title><link>http://www.blogjava.net/CrazyJava/articles/181028.html</link><dc:creator>CrazyJava</dc:creator><author>CrazyJava</author><pubDate>Thu, 21 Feb 2008 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/CrazyJava/articles/181028.html</guid><wfw:comment>http://www.blogjava.net/CrazyJava/comments/181028.html</wfw:comment><comments>http://www.blogjava.net/CrazyJava/articles/181028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/CrazyJava/comments/commentRss/181028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/CrazyJava/services/trackbacks/181028.html</trackback:ping><description><![CDATA[分布式攻击系统和我们日常生活中司空见惯的客户机/服务器模式非常相象，但是DDoS系统的日趋复杂性和隐蔽性使人难以发现。入侵者控制了一些节点，将它们设计成控制点，这些控制点控制了Internet大量的主机，将它们设计成攻击点，攻击点中装载了攻击程序，正是由这些攻击点计算机对攻击目标发动的攻击。这种结构使入侵者远离攻击的目标，隐藏了入侵者的具体位置。为什么入侵者能够控制Internet网上的这些机器？而这些机器是如何进一步控制其它更多的机器呢？
<p>&nbsp;</p>
<p>这都是因为Internet本身的弱点及Internet总体上的不安全性使入侵者有了可乘之机。首先，入侵者先攻破一些安全性较差的机器作为控制点主机。因为这些机器在标准网络服务程序中存在众所周知的缺陷，它们还没有来得及打补丁，或进行系统升级，还有可能是操作系统本身有Bug，对于这样的系统，入侵者很容易闯入。根据攻击类型的不同，入侵者可能需要通过盗用Root口令，或使用raw socket等不同的途径。但大多数的攻击程序使用一般用户的权力就足够了。 </p>
<p>在侵入这些机器之后，接下来要做三件事，一是隐藏自己的身份和隐藏运行在这些机器中的程序，抹去作案的痕迹。例如，替换进程查看工具(如ps)，使自己的程序不显示出来；替换其他用户管理工具，使其他的超级用户不发现自己；删除自己记录在系统日志中的部分等等。二是安装远端遥控程序，用于等待入侵者的命令。三是记录下被攻破的这些机器的地址。这些步骤是自动、高速完成的，系统的正常用户不会有所察觉。 </p>
<p>入侵者攻破这些机器，通过在这些机器中安装的程序，再去入侵别的更多的机器，这样，重复执行以上步骤，便会控制越来越多的机器，并且使自己远离攻击对象，达到隐藏自己的目的。现在到了攻击的时候，入侵者运行了一个简单命令，一层一层发送命令到所有控制的攻击点上，让这些攻击点一齐&#8220;开炮&#8221;——向目标传送大量的无用的数据包，就在这样的"炮火"下，攻击目标的网络带宽被占满，路由器处理能力被耗尽，Yahoo、CNN等巨人一个一个地倒下了。当入侵者想停止攻击时，只需发送另外一条简单的命令即可。&nbsp;<br />
&nbsp;&nbsp;<br />
<font size="4"><strong>DDoS攻击的特点</strong>&nbsp;<br />
</font>&nbsp;<br />
大多数DDoS攻击的"炮弹"--数据包直接到达攻击对象，但也有例外。名叫"Smurf"的攻击软件会将炮弹发到别的网络上，再衍生出大量"echo"命令攻击真正的目标。 </p>
<p>DDoS的攻击"炮弹"并不是简单的炮弹，它不仅仅是简单的数据包，它们是瞄准了网络协议的弱点来打，比如：大多数攻击的TCP数据包使用了&#8220;SYN"的状态标志，意味着想要开始一个连接，这非常耗费资源，需要服务器进行一定的处理，再放到有限的队列中去，这样就可以将正常的服务连接拒之门外；或是在TCP数据包中同时加入SYN和ACK两种状态标志，这就使目标机器出现一些混乱，要花一些时间来处理这些异常情况。当这些数据包大量涌来时，就会使目标机器疲于处理这些情况，无法进行正常的服务，除此以外，还有一些怪异的数据包，如：错误的分段，混乱的header偏移量等.</p>
<p><strong><font size="4">为什么难以跟踪？</font></strong>&nbsp;<br />
&nbsp;&nbsp;<br />
Yahoo等网站被黑客利用DDoS技术攻击后，很难跟踪到攻击的来源。为什么？不是每个攻击的数据包都有IP地址显示出数据包的来源吗？ </p>
<p>这是因为入侵者使用了一种叫"伪IP(IP spoofing)"的技术，这也是当前Internet的一个缺陷。让我来解释一下： </p>
<p>当计算机之间相互通信时，会将信息打成"包"，每一个包中都包含源IP地址和目的IP地址。当这样的数据包在Internet 中传递的时候，首先会遇到最近的一个路由器。通常此路由器是此局域网与Internet的连接处，这种路由器叫边界路由器。(当然，在大公司中的情况可能复杂得多，会由多个局域网构成)。当数据包到达边界路由器后，再由此路由器传递到上一级核心路由器上，这个路由器可能位于主干网上，连接着所有其它的核心路由器。数据包在路由器之间传递，直到目的地址为止。在每次传递时，源IP目的地址通常被路由器忽略，仅仅是保留在数据包中不作处理，路由器只关心数据的目的地址，就好象邮递员只关心收件人地址一样。但因为这样，才产生了现在面临的问题。</p>
<p>所有的DDoS攻击，都使用伪IP。收到此数据包的第一个边界路由器能够很容易发现这个问题，因为它知道和它连接的网络地址，以便将进来的数据包分发给局域网内的机器，因此它也能发现从它这出去的数据包是不是用了非局域网内的地址。可是，大多数的边界路由器并不进行此项检查。 而一旦装有伪IP的数据包通过了第一个路由器，那么以后，这个谎话永远也不会有人发现了。因此说，每一个边界路由器都对出去的数据包进行IP 地址的效验，防止IP Spoofing是解决DDoS问题最根本的方案。</p>
<p>让我们从被攻击对象的角度来看看吧，当你发现自己的服务器出现问题的时候，正有成千上万的数据包同时从世界各地的网点向你涌来，不久你会发现你的路由器崩溃了，接着会发现你的服务器已经不堪重负。你想看看到底出了什么事，捕获到其中的一个数据包，打开一看：上面除了把你的IP地址当作目的地址外，还有任意的一个IP地址作为源地址(这个地址也许根本就不存在)你都不知道这个数据包是从哪儿发给你的。用最底层的工具查看一下数据包硬件地址(MAC)吧，在数据包中只有上一级的路由器的硬件地址。&nbsp;<br />
&nbsp;&nbsp;<br />
<strong><font size="4">怎样发现自己被攻击</font></strong>&nbsp;<br />
&nbsp;&nbsp;<br />
怎样确定自己的网站真的遭受到DDoS的攻击呢？通常来说，突然出现大量的数据包，服务器突然超负载运作，性能突然降低，这些都有可能是受攻击的征兆，但是也有可能是网站遇上了正常情况下的使用高峰。检查一下来往的数据包，如果都是正常的服务连接和应答，那么你的网站应该升级扩容，或是提高网络服务器的性能，增加新的设备。但如果出现以下几类情况，那么你就可以断定是遭到了DDoS的攻击。 </p>
<p>1. 网站的数据流量突然超出平常的十几倍甚至上百倍，而且，同时到达网站的数据包分别来自大量不同的网站。</p>
<p>2. 大量到达的数据包(包括TCP包和UDP包)并不是网站服务连接的一部分，往往指向你机器任意的端口。比如：你的网站是Web服务器，而数据包却直奔你的FTP端口和其它任意的端口，那么你正在被攻击。</p>
<p>顺便提一句，有很多工具都可以用来分析数据包的结构，如TCPDUMP(数据包头分析工具)是我最常用的。&nbsp;<br />
&nbsp;&nbsp;<br />
<font size="4"><strong>被攻击以后怎么办</strong></font>&nbsp;<br />
&nbsp;&nbsp;<br />
如果发现自己的网站正遭受DDoS的攻击，那么应该立即采取以下措施：&nbsp;</p>
<p>首先是尽可能保护网站的服务器，主要是防火墙以外的服务器，因为它最容易遭到攻击。尽可能关闭不必要的服务，减轻服务器的负担；增加数据包过滤器，限制进出的数据流量。若实在不行，减少服务器可连接的通道数量，牺牲一些性能来保住服务器。如果DDoS的攻击耗尽了你网站的带宽资源的话，实际上已经没有什么事情可做了，认栽吧，你的服务器已经终止服务了。这时你应该加大防火墙的阻塞力度，限制通过防火墙的流量，以保护你防火墙内部的服务器免受伤害。&nbsp;</p>
<p>要想使你的网站恢复正常工作的话，只有一条路，那就是找到攻击你网站的攻击点机器和控制点机器，让它们停止攻击。记住，这些机器不是元凶，它们只不过是别人手中的武器，它们自己丝毫不知道自己在攻击你，因此在找到这些机器以后，需要和这些机器的管理员合作，才能解决问题，合作是唯一的方法。 怎样才能找到那些攻击的机器呢？攻击所用的数据包使用了伪IP，直接找是不可能的，但每个数据包中都有上一级路由器的物理地址，你能够定位攻击的数据包要通过的上一级路由器。然后通过你的ISP，或通过你的上一级部门，或是网络中心与此路由器所在单位联系，请他们一起合作一步一步住上查，直到定位到进行攻击的机器为止，再与此机器的单位一起合作，查出机器中所带的攻击程序，才能消除对你的攻击。 </p>
<p>可是，对网站进行攻击的机器也许有成千上万台，这样一台一台地找，工作量太大，短时间内无法完成。要尽快恢复被攻击网站的服务，最聪明的办法是先找到一些控制点的机器，因为这些机器控制着下层大量的机器，如果这些机器被你查到，它们再也发不出攻击的信号，那么，攻击点的机器所进行的攻击也不会持续很久，群龙无首，剩下的不过是一些乌合之众罢了。只有这样，才能迅速缓解攻击的强度。&nbsp;</p>
<p>除此之外，还应注意以下事项：</p>
<p>1. 很好地记录下每一步分析的过程和结果。&nbsp;</p>
<p>2. 攻击发生以后，最好先与你的网站供应商和你的上级部门联系，因为他们的规模比你大，有更多分析和解决问题的能力，能更快地发现攻击的源头，至少他们能在更宽的网络管道上过滤数据包，减轻你网站的压力。&nbsp;<br />
&nbsp;&nbsp;<br />
<strong><font size="3">使自己不要成为帮凶</font></strong> </p>
<p>如何使自己的机器不成为帮凶呢？只有使你的机器更加安全。从DDoS攻击反映出来的问题来看，自己的主机如果不安全，不仅危害了自己，还危害了别人。</p>
<p>首先，应该经常修补系统的Bug和漏洞，经常查询最新的安全信息，仔细地规划安全方案，管理好自己的用户。特别是管理好边界路由器的入口和出口，对出口的数据包进行检查，防止伪IP的出现，这是解决DDoS的关键。另外，也要注意不要滥用"直接广播"等耗费资源较大的协议。保持系统的安全是一个长期的过程，也是必不可少的工作。&nbsp;<br />
&nbsp;&nbsp;<br />
<font size="4"><strong>后话</strong></font>&nbsp;<br />
&nbsp;&nbsp;<br />
虽然在Yahoo等著名网站遭到攻击的时候，国内很少有站点同时被攻击，但这并不能说明这是我国网络的安全性很好。从发展的角度看，我国的Internet大有市场，不少企业相当有实力，发展速度极快，因此一定要把网络安全放在非常重要的位置上。从DDoS攻击的教训看，Internet是个大家庭，无论谁得了病，其他人都会遭殃，因此，怎样才能保持Internet总体上的安全性，这不仅仅是个技术问题，还可能是个社会问题.</p>
<img src ="http://www.blogjava.net/CrazyJava/aggbug/181028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/CrazyJava/" target="_blank">CrazyJava</a> 2008-02-21 12:07 <a href="http://www.blogjava.net/CrazyJava/articles/181028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>