电脑端口防攻击指南
系统安全特辑
“端口”是电脑与外界通讯的出口,也是电脑的第一道安全屏障,端口配置正确与否直接影响到电脑的安全。电脑端口的数量最大可以有65535个,但实际常用的只有几十个,多数端口的功能均可由用户自行定义。这就是黑客可以利用某些法,定义一个特殊端口入侵你系统的原因所在。如何正确配置端口、保护电脑安全正是本文所讨论的内容。
一、端口分类
端口的分类根据其参考对象不同有不同划分方法。
1.从端口的性质分
公认端口(Well Known Ports):也常称之为“常用端口“。这类端口的端口号从0到1024,被绑定于某些特定的服务。通常情况下,这些端口的通信明确表明了某种服务的协议,这种端口不能再重新定义它的作用对象。例如:80端口总是HTTP通信协议所使用,而23号端口则为Telnet服务专用,这些端口通常不会被黑客程序所利用。
注册端口(Registered Ports):端口号从1025到49151。它们松散地绑定于某些服务。也就是说,有许多服务绑定于这些端口,但这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义。
动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535。理论上,不应把常用服务分配在这些端口上。而实际上,某些较为特殊的程序,特别是一些木马程序就非常喜欢使用这些端口,因为这些端口常常不被引起注意,容易隐蔽。
2.从提供的服务方式分
电脑之间相互通信一般采用“TCP协议端口”和“UDP协议端口”。“TCP协议端口”是一种直接与接收方进行连接的方式,发送方发送信息后,可以确认信息是否到达,这种连接方式多采用TCP协议。“UDP协议端口”是一种不直接与接收方进行连接的方式,发送方只管发送信息,而不管信息是否到达,这种连接方式多采用UPD协议、IP协议。
使用TCP协议的常见端口主要有以下几种:
FTP:它定义了文件传输协议,使用21端口。常说某某电脑开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。
Telnet:它是一种用于远程登录的端口,用户可以以自己的身份远程连接到电脑上。通过这种端口可以提供一种基于DOS模式下的通信服务。如支持BBS的服务器将打开23端口,对外提供服务。
SMTP:它定义了简单邮件传送协议,用于发送邮件。如常见的免费邮件服务中用的就是这个服务端口,服务器开放的是25号端口。
POP3:和SMTP对应,主要用于接收邮件,通常使用110端口。也是说,只要你有相应的使用POP3协议的程序(例如Foxmail或Outlook),就可以不以Web方式登录进邮箱界面,直接用邮件程序就可以收到邮件。
使用UDP协议的常见端口主要有以下几种:
HTTP:这是大家用得最多的协议,它就是常说的“超文本传输协议”。上网浏览网页时,就得在提供网页资源的电脑上打开80号端口以提供服务。“WWW服务”、“Web服务器”用的就是这个端口。
DNS:用于域名解析服务,这种服务在Windows NT系统中用得最多。因特网上的每一台电脑都有一个网络地址与之对应,这个地址就是常说的IP地址,它以纯数字加“.”的形式表示。但这种方式不便记忆,于是出现了域名,访问电脑的时候只需要知道域名即可。域名和IP地址之间的变换由DNS服务器来完成,DNS用的是53号端口。
SNMP:简单网络管理协议,使用161号端口,用来管理网络设备。由于网络设备很多,无连接的服务就体现出其优势。
QQ:QQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。QQ用的是无连接的协议,也就是说它用的是UDP协议。QQ服务器使用8000号端口,侦听是否有信息到来,客户端使用4000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。
下表所列的都是服务器默认的端口,不允许改变,一般通信过程都主要用到这些端口。

另外代理服务器常用以下端口:
①HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080。
②SOCKS协议代理服务器常用端口号:1080。
③FTP协议代理服务器常用端口号:21。
④Telnet协议代理服务器常用端口号:23。
二、端口侦听及扫描
1.端口侦听
以太网(Ethernet)协议的工作方式是将要发送的数据包发往连接在一起的所有电脑。在包头中包括有应该接收数据包的电脑的正确地址,因为只有与数据包中目标地址一致的那台电脑才能接收到信息包。但是当电脑工作在侦听模式下,不管数据包中的目标物理地址是什么,电脑都可以接收到。当同一网络中的两台电脑通信的时候,源电脑将写有目的电脑地址的数据包直接发向目的电脑,或者当网络中的一台电脑同外界的电脑通信时,源电脑将写有目的电脑IP地址的数据包发向网关。但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP协议层交给网络接口——数据链路层。网络接口不会识别IP地址,在网络接口中,由IP协议层来的带有IP地址的数据包又增加了一部分以太网的帧头信息。在帧头中,有两个域分别为只有网络接口才能识别的源电脑和目的电脑的物理地址,这是一个48位的地址,这个48位的地址是与IP地址相对应的。换句话说,一个IP地址也会对应一个物理地址。对于作为网关的电脑,由于它连接了多个网络,它也就同时具备很多个IP地址,在每个网络中它都有一个。而发向网络外的帧中携带的是网关的物理地址。
以太网中填写了物理地址的帧从网络端口中(或者从网关端口中)发送出去,传送到物理的线路上。如果局域网是由一条粗同轴电缆或细同轴电缆连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台电脑。当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个电脑了。当数字信号到达一台电脑的网络接口时,正常状态下网络接口对读入数据帧进行检查,如数据帧中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据帧交给IP协议层软件。对于每个到达网络接口的数据帧都要进行这个过程。但是当电脑工作在侦听模式下,所有的数据帧都将被交给上层协议软件处理。
当连接在同一条电缆或集线器上的电脑被逻辑地分为几个子网的时候,要是有一台电脑处于侦听模式,它可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的电脑的数据包,在同一个物理信道上传输的所有信息都可以被接收到。
在UNIX系统上,当拥有超级权限的用户要想使自己所控制电脑进入侦听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以将电脑设置成侦听模式了。而在Windows系统中则不论用户是否有权限都将可以直接运行侦听工具实现。
在端口处于侦听时,常常要保存大量的信息(也包含很多垃圾信息),并将对收集的信息进行大量整理,这样就会使正在侦听的电脑对其他用户的请求响应变得很慢。同时侦听程序在运行的时候需要消耗大量的处理器时间,如果在这时就详细地分析包中的内容,许多包就会来不及接收而被漏走。所以侦听程序很多时候就会将侦听得到的包存放在文件中等待以后分析。分析侦听到的数据包是很头疼的事情,因为网络中的数据包都非常之复杂。两台电脑之间连续发送和接收数据包,在侦听到的结果中必然会加一些别的电脑交互的数据包。侦听程序将同一TCP协议会话的包整理到一起就相当不容易,如果还期望将用户详细信息整理出来就需要根据协议对包进行大量的分析。
现在网络中所使用的协议都是较早前设计的,许多协议的实现都基于一种非常友好的,通信双方充分信任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,因此进行端口侦听从而获得用户信息并不是一件难事,只要掌握初步的TCP/IP协议知识就可以轻松侦听到想要的信息。
2.端口扫描
“端口扫描”通常指用同一信息对目标电脑所有需要扫描的端口进行发送,然后根据返回端口状态来分析目标电脑的端口是否打开、是否可用。“端口扫描”行为的一个重要特征是:在短时期内有很多来自相同的信源地址传向不同的目的地端口的包。
对于用端口扫描进行攻击的人来说,攻击者总是可以做到在获得扫描结果的同时,使自己很难被发现或者说很难被逆向跟踪。为了隐藏攻击,攻击者可以慢慢地进行扫描,除非目标系统通常闲着(这样对一个没有listen端口的数据包都会引起管理员的注意),有很长时间间隔的端口扫描是很难被识别的。隐藏源地址的方法是发送大量的欺骗性的端口扫描包(1000个),其中只有一个是从真正的源地址来的。这样,即使全部包(1000)都被察觉并记录下来,也没有人知道哪个是真正的信源地址。能发现的仅仅是“曾经被扫描过”。也正因为这样那些黑客们才乐此不疲地大量使用这种端口扫描技术来获取目标电脑信息、并进行恶意攻击。
通常进行端口扫描的工具是端口扫描软件,也称之为“端口扫描器”,端口扫描有三个用途:
①识别目标系统上正在运行的TCP协议和UDP协议服务。
②识别目标系统的操作系统类型(Windows 9x、 Windows 2000、Windows XP或UNIX等)。
③识别某个应用程序或某个特定服务的版本号。
端口扫描器是一种自动检测远程或本地电脑安全性弱点的程序,通过使用扫描器你可不留痕迹地发现远程服务器的各种TCP协议端口的分配及提供的服务,还可以得知它们所使用的软件版本,这就能间接了解到远程电脑所存在的安全问题。
端口扫描器通过选用远程TCP/IP协议不同的端口的服务,记录目标电脑端口给予的回答的方法,可以搜集到关于目标电脑的各种有用信息(比如:是否有端口在侦听,是否允许匿名登录,是否有可写的FTP目录,是否能用TELNET等)。
端口扫描器并不是一个直接攻击网络漏洞的程序,它仅仅能帮助发现目标机的某些内在的弱点。一个好的扫描器还能对它得到的数据进行分析,帮助查找目标电脑的漏洞,但它不会提供一个系统的详细步骤。
端口扫描器在扫描过程中主要具有以下三个方面的能力:
①发现一个电脑或网络的能力。
② 一旦发现一台电脑,就有发现目标电脑正在运行什么服务的能力。
③通过测试目标电脑上的这些服务,发现存在的漏洞的能力。
编写扫描器程序必须要很多TCP/IP协议程序编写基础,如C、Perl、SHELL等语言的知识。需要一些Socket编程的背景,一种在开发客户/服务应用程序的方法。
三、端口安全防范设置
端口的安全防范手法都差不多,这里以最常受到攻击的445攻击为例进行讲解。
445端口是一个毁誉参半的端口,有了它我们可以在局域网中轻松访问各种共享文件夹或共享打印机,但也正是因为有了它,黑客们才有了可乘之机,他们能通过该端口偷偷共享你的硬盘,甚至会在悄无声息中将你的硬盘格式化!我们所能做的就是想办法不让黑客有机可乘,封堵住445端口漏洞。简单起见,本文中都以Windows XP为例。
1.端口排除法
这种方法利用Windows XP系统的端口排除功能将来自于445端口的所有信息包全部禁止掉,让入侵者无法接近你的主机,下面是这种方法的具体实现步骤:
①打开Windows XP系统的开始菜单,选中“设置”项下面的“网络连接”图标,并用鼠标右键单击之,从其后的快捷菜单中,单击“浏览”命令。
②在弹出的窗口中右击“本地连接”图标,选中“属性”选项,弹出本地连接属性窗口;打开“常规”选项卡,将其中的“Internet协议(TCP/IP)”项选中,然后再单击“属性”按钮,打开Internet协议(TCP/IP)属性设置页面。
③继续单击该页面中的“高级”按钮,打开高级TCP/IP设置窗口,选中其中的“选项”选项卡,并在该选项卡的“可选的设置”项中将“TCP/IP筛选”选中,再单击一下对应的“属性”按钮,打开设置窗口,如图1所示。
由于445端口属于一种TCP端口,你可以在对应“TCP端口”的设置项处,将“只允许”项选中,激活下面的“添加”按钮,单击该按钮,在其后打开的“添加筛选器”窗口中,将必须用到的几个服务端口号码,都添加进来,而将用不到的445端口号码排除在外,设置完毕后,单击“确定”按钮,就可以让设置生效了。

2.服务关闭法
考虑到文件夹或打印机共享服务才会利用到445端口,因此直接将文件夹或打印机共享服务停止掉,同样也能实现关闭445端口的目的,让黑客无法破坏各种共享资源,下面是关闭文件夹或打印机共享服务的具体步骤:
①打开Windows XP系统的开始菜单,选中“设置”项下面的“网络连接”图标,右击从其后的快捷菜单中单击“浏览”命令。
②在接着出现的窗口中,右击“本地连接”图标,选中“属性”选项,弹出本地连接属性窗口;打开“常规”选项卡,并在“此连接使用下列项目”列表框中,将“Microsoft网络的文件或打印机共享”选项前面的勾号取消。最后单击“确定”按钮,重新启动系统,Internet上的其他人就没有权利访问到各种共享资源了。
当然,你也可以在不停止共享服务的条件下,剥夺其他人的共享访问权利;利用本地安全设置中的“用户权利指派”功能,指定Internet上的任何用户都无权访问本地主机,具体步骤为:
①在Windows XP系统的开始菜单中,依次单击“程序”→“管理工具”→“本地安全策略”选项,接着展开 “本地策略”→“用户权利指派”文件夹,在对应的右边子窗口中选中“拒绝从网络访问这台电脑”选项,并用鼠标左键双击,如图2所示。

②在打开的设置窗口中单击“添加”按钮,从弹出的“选择用户或组”对话框中选中“Everyone”选项,如图3所示,再单击“确定”按钮,这样任何一位用户都无法从网络访问到本地主机。不过该方法“打击”范围比较广,造成的后果是无论是“敌人”还是“良民”,都无法访问到共享资源了,因此这种方法适宜在保存有绝对机密信息的服务器中使用。

3.注册表设置法
这种方法是通过修改注册表将用于文件夹或打印机共享的服务禁止掉,具体操作方法为:
①在Windows XP系统的开始菜单中,单击“运行”命令,打开运行对话框,输入“regedit”注册表编辑命令,弹出注册表编辑界面。
②在该窗口中,用鼠标逐一展开分支“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters”;在对应该分支的右边窗口中,新创建一个DWORD字节值,并命名为“SMBDeviceEnabled”,再将其数值直接设置为“0”,完成设置后,退出注册表编辑界面,重新启动一下系统就OK了,如图4所示。

4.防火墙设置法
这种方法利用防火墙的安全过滤规则将通过445端口的任何数据包拦截下来。这里以“金山网镖 2007”为例进行讲解。
①在金山网镖 2007主界面菜单栏单击“工具→安全设置→区域级别设置→自定义级别”。在“自定义IP规则编辑器”中可以对IP规则进行下列操作:单击“添加”按钮,在弹出的“添加IP数据包过滤规则”窗口中设定规则名称“关闭445端口”,在“数据传输方向”设置项处,选中“接受数据包”选项;然后将对方IP地址设置为“任何地址”,“数据协议类型”设置项处选中“TCP类型数据包”。
②单击界面中的“TCP”选项卡,并在本地端口处输入从“445”到“445”的端口号码;在“对方端口”处输入从“445”到“445”的端口号码。接着,在“满足上述条件时动作”设置项处选中“拦截”选项。完成所有参数设置后,再单击“确定”按钮,就可以创建好一个安全过滤规则,如图5所示。

③返回到“自定义IP规则编辑器”,选中刚刚创建好的“关闭445端口”的过滤规则,如图6所示,如此一来,来自445端口的各种非法入侵都会被金山网镖 2007自动拦截。

5.组策略设置法
这种方法,是通过自定义一个IP安全策略,将服务端口关闭掉,具体实现步骤为:
①在Windows XP的开始菜单中,依次单击“程序”→“管理工具”→“本地安全策略”,打开本地组策略编辑界面,用鼠标右键单击该界面中的“IP安全策略,在本地机器”选项,从打开的快捷菜单中单击“创建IP安全策略”选项,弹出一个创建向导界面,如图7所示。

②单击“下一步”按钮,然后在“名称”文本框中输入新创建的安全策略名称,例如这里输入的是“关闭445端口”,再单击 “下一步”按钮,选中“激活默认响应规则”,其余参数均设置为默认值,就可以完成新安全策略的创建操作了,如图8所示。

③单击图中的“添加”按钮,弹出一个安全规则设置向导界面,单击“下一步”按钮,选中“此规则不指定隧道”选项,然后将“网络类型”设置为“所有网络连接”,接着选中“Active Directory默认值”选项,继续单击“下一步”按钮后,弹出一个IP筛选器列表界面。
④选择“所有 IP 通讯量”,单击该界面中的“编辑”按钮,将IP筛选器的名称设置为“阻止445端口”,单击“添加”按钮后,再将源地址设置为“任何IP地址”,将目标地址设置为“我的IP地址”,继续单击“下一步”按钮后,弹出协议类型选择框,将协议类型设置为“TCP”,如图9所示。

⑤接着,在弹出的窗口中,选中“从任意端口到此端口”选项,并将此端口设置为“445”,如图10所示。

⑥单击“完成”按钮,返回到IP筛选器列表页面中单击“确定”按钮,如图11所示。

⑦在“安全规则向导”中选中“阻止445端口”筛选器,单击“下一步”按钮,并从随后打开的窗口中选中“需要安全”选项并单击“编辑”按钮,在“安全措施”选项卡中选择“阻止”,在“常规”选项卡中把名称改为“阻止”,单击“确定按钮”,如图12所示。

⑧再单击“下一步”、“完成”按钮,就可以将“阻止445端口”的筛选器,添加到名为“关闭445端口”的IP安全策略中了,再单击“确定”按钮,返回到“本地安全设置”窗口中,如图13所示。

⑨最后,在“本地安全设置”窗口中,右击“关闭445端口”策略,从弹出的快捷菜单中,依次单击“所有任务”→指派”命令,就能使上述设置生效了,如图14所示。

四、常见端口及其服务列表
在电脑的6万多个端口中,通常把端口号1024以内的称之为常用端口,这些常用端口所对应的服务通常情况下是固定的,所以了解这些常用端口在一定程度上是非常必要的,下表列出了电脑的常用端口所对应的服务。



五、常见木马占用端口列表
木马程序通常都是通过特定的端口对目标电脑进行攻击的,所以了解一些常见木马程序所用的电脑端口,对于防范木马黑客程序的攻击非常有用,下表列出了当前常见的一些木马程序所使用的端口。

