计算机基础知识-端口
一 摘要
端口是个网络应用中很重要的东西,相当于“门”了。
二 什么是端口
在Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据报顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队,操作系统为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据报的进程需要开启它自己的端口,发送数据报的进程也需要开启端口,这样,数据报中将会标识有源端口,以便接受方能顺利的回传数据报到这个端口。
三 端口的分类
在Internet上,按照协议类型分类,端口被分为TCP端口和UDP端口两类,虽然他们都用正整数标识,但这并不会引起歧义,比如TCP的80端口和UDP的80端口,因为数据报在标明端口的同时,还将标明端口的类型。
从端口的分配来看,端口被分为固定端口和动态端口两大类(一些教程还将极少被用到的高端口划分为第三类:私有端口):
固定端口(0-1023):
使用集中式管理机制,即服从一个管理机构对端口的指派,这个机构负责发布这些指派。由于这些端口紧绑于一些服务,所以我们会经常扫描这些端口来判断对方是否开启了这些服务,如TCP的21(ftp),80(http),139(netbios),UDP的7(echo),69(tftp)等等一些大家熟知的端口;
动态端口(1024-49151):
这些端口并不被固定的捆绑于某一服务,操作系统将这些端口动态的分配给各个进程,同一进程两次分配有可能分配到不同的端口。不过一些应用程序并不愿意使用操作系统分配的动态端口,他们有其自己的‘商标性’端口,如oicq客户端的4000端口,木马冰河的7626端口等都是固定而出名的。
四 端口在入侵中的作用
有人曾经把服务器比作房子,而把端口比作通向不同房间(服务)的门,如果不考虑细节的话,这是一个不错的比喻。入侵者要占领这间房子,势必要破门而入(物理入侵另说),那么对于入侵者来说,了解房子开了几扇门,都是什么样的门,门后面有什么东西就显得至关重要。
入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。
五 端口的相关工具
1 netstat -an
的确,这并不是一个工具,但他是查看自己所开放端口的最方便方法,在cmd中输入这个命令就可以了。如下:
C:/>netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3372 0.0.0.0:0 LISTENING
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1027 *:*
UDP 127.0.0.1:1029 *:*
UDP 127.0.0.1:1030 *:*
这是我没上网的时候机器所开的端口,两个135和445是固定端口,其余几个都是动态端口。
2 fport.exe和mport.exe
这也是两个命令行下查看本地机器开放端口的小程序,其实与netstat -an这个命令大同小异,只不过它能够显示打开端口的进程,信息更多一些而已,如果你怀疑自己的奇怪端口可能是木马,那就用他们查查吧。
3 activeport.exe(也称aports.exe)
还是用来查看本地机器开放端口的东东,除了具有上面两个程序的全部功能外,他还有两个更吸引人之处:图形界面以及可以关闭端口。这对菜鸟来说是个绝对好用的东西,推荐使用喔。
4 superscan3.0
它的大名你不会没听说过吧,纯端口扫描类软件中的NO.1,速度快而且可以指定扫描的端口,不多说了,绝对必备工具。
刚接触网络的朋友一般都对自己的端口很敏感,总怕自己的电脑开放了过多端口,更怕其中就有后门程序的端口,但由于对端口不是很熟悉,所以也没有解决办法,上起网来提心吊胆。其实保护自己的端口并不是那么难,只要做好下面几点就行了:
1 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口;
2 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料(网上多的很),看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断;
3 关闭:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口;
注意:判断时候要慎重,因为一些动态分配的端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用80等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。
七 限制端口防非法入侵一般来说,我们采用一些功能强大的反黑软件和防火墙来保证我们的系统安全,本文拟用一种简易的办法——通过限制端口来帮助大家防止非法入侵。
非法入侵的方式
简单说来,非法入侵的方式可粗略分为4种:
1、扫描端口,通过已知的系统Bug攻入主机。
2、种植木马,利用木马开辟的后门进入主机。
3、采用数据溢出的手段,迫使主机提供后门进入主机。
4、利用某些软件设计的漏洞,直接或间接控制主机。
非法入侵的主要方式是前两种,尤其是利用一些流行的黑客工具,通过第一种方式攻击主机的情况最多、也最普遍;而对后两种方式来说,只有一些手段高超的黑客才利用,波及面并不广泛,而且只要这两种问题一出现,软件服务商很快就会提供补丁,及时修复系统。
因此,如果能限制前两种非法入侵方式,就能有效防止利用黑客工具的非法入侵。而且前两种非法入侵方式有一个共同点,就是通过端口进入主机。
端口就像一所房子(服务器)的几个门一样,不同的门通向不同的房间(服务器提供的不同服务)。我们常用的FTP默认端口为21,而WWW网页一般默认端口是80。但是有些马虎的网络管理员常常打开一些容易被侵入的端口服务,比如139等;还有一些木马程序,比如冰河、BO、广外等都是自动开辟一个您不察觉的端口。那么,只要我们把自己用不到的端口全部封锁起来,不就杜绝了这两种非法入侵吗?
限制端口的方法
对于个人用户来说,您可以限制所有的端口,因为您根本不必让您的机器对外提供任何服务;而对于对外提供网络服务的服务器,我们需把必须利用的端口(比如WWW端口80、FTP端口21、邮件服务端口25、110等)开放,其他的端口则全部关闭。
这里,对于采用Windows 2000或者Windows XP的用户来说,不需要安装任何其他软件,可以利用“TCP/IP筛选”功能限制服务器的端口。具体设置如下:
1、右键点击“网上邻居”,选择“属性”,然后双击“本地连接”(如果是拨号上网用户,选择“我的连接”图标),弹出“本地连接状态”对话框。
2、点击[属性]按钮,弹出“本地连接 属性”,选择“此连接使用下列项目”中的“Internet协议(TCP/IP)”,然后点击[属性]按钮。
3、在弹出的“Internet协议(TCP/IP)”对话框中点击[高级]按钮。在弹出的“高级TCP/IP 设置”中,选择“选项”标签,选中“TCP/IP筛选”,然后点击[属性]按钮。
4、在弹出的“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框,然后把左边“TCP端口”上的“只允许”选上。
每一项服务都对应相应的端口,比如众如周知的WWW服务的端口是80,smtp是25,ftp是21,win2000安装中默认的都是这些服务开启的。对于个人用户来说确实没有必要,关掉端口也就是关闭无用的服务。
“控制面板”的“管理工具”中的“服务”中来配置。
1、关闭7.9等等端口:关闭Simple TCP/IP Service,支持以下TCP/IP服务:Character Generator,Daytime, Discard, Echo, 以及 Quote of the Day。
2、关闭80口:关掉WWW服务。在“服务”中显示名称为"World Wide Web Publishing Service",通过 Internet 信息服务的管理单元提供 Web 连接和管理。
3、关掉25端口:关闭Simple Mail Transport Protocol (SMTP)服务,它提供的功能是跨网传送电子邮件。
4、关掉21端口:关闭FTP Publishing Service,它提供的服务是通过 Internet 信息服务的管理单元提供 FTP 连接和管理。
5、关掉23端口:关闭Telnet服务,它允许远程用户登录到系统并且使用命令行运行控制台程序。
6、还有一个很重要的就是关闭server服务,此服务提供RPC支持、文件、打印以及命名管道共享。关掉它就关掉了win2k的默认共享,比如ipc$、c$、admin$等等,此服务关闭不影响您的其他操作。
7、还有一个就是139端口,139端口是NetBIOS Session端口,用来文件和打印共享,注意的是运行samba的unix机器也开放了139端口,功能一样。以前流光2000用来判断对方主机类型不太准确,估计就是139端口开放既认为是NT机,现在好了。
关闭139口听方法是在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP/IP)”属性,进入“高级TCP/IP设置”“WINS设置”里面有一项“禁用TCP/IP的NETBIOS”,打勾就关闭了139端口。
对于个人用户来说,可以在各项服务属性设置中设为“禁用”,以免下次重启服务也重新启动,端口也开放了。
谨防黑客通过“端口扫描”进行攻击
黑客的探测方式里除了侦察IP,还有一项——端口扫描。通过“端口扫描”可以知道被扫描的计算机哪些服务、端口是打开而没有被使用的(可以理解为寻找通往计算机的通道)。
一、端口扫描
网上很容易找到远程端口扫描的工具,如Superscan、IP Scanner、Fluxay(流光)等(
如图1),这就是用“流光”对试验主机192.168.1.8进行端口扫描后的结果。从中我们可以清楚地了解,该主机的哪些非常用端口是打开的;是否支持FTP、Web服务;且FTP服务是否支持“匿名”,以及IIS版本,是否有可以被成功攻破的IIS漏洞也显示出来。
二、阻止端口扫描
防范端口扫描的方法有两个:
1.关闭闲置和有潜在危险的端口
这个方法有些“死板”,它的本质是——将所有用户需要用到的正常计算机端口外的其他端口都关闭掉。因为就黑客而言,所有的端口都可能成为攻击的目标。换句话说“计算机的所有对外通讯的端口都存在潜在的危险”,而一些系统必要的通讯端口,如访问网页需要的HTTP(80端口);QQ(4000端口)等不能被关闭。
在Windows NT核心系统(Windows 2000/XP/ 2003)中要关闭掉一些闲置端口是比较方便的,可以采用“定向关闭指定服务的端口”和“只开放允许端口的方式”。计算机的一些网络服务会有系统分配默认的端口,将一些闲置的服务关闭掉,其对应的端口也会被关闭了(如图2)。进入“控制面板”、“管理工具”、“服务”项内,关闭掉计算机的一些没有使用的服务(如FTP服务、DNS服务、IIS Admin服务等等),它们对应的端口也被停用了。至于“只开放允许端口的方式”,可以利用系统的“TCP/IP筛选”功能实现,设置的时候,“只允许”系统的一些基本网络通讯需要的端口即可。
2.检查各端口,有端口扫描的症状时,立即屏蔽该端口
这种预防端口扫描的方式显然用户自己手工是不可能完成的,或者说完成起来相当困难,需要借助软件。这些软件就是我们常用的网络防火墙。
防火墙的工作原理是:首先检查每个到达你的电脑的数据包,在这个包被你机上运行的任何软件看到之前,防火墙有完全的否决权,可以禁止你的电脑接收Internet上的任何东西。当第一个请求建立连接的包被你的电脑回应后,一个“TCP/IP端口”被打开;端口扫描时,对方计算机不断和本地计算机建立连接,并逐渐打开各个服务所对应的“TCP/IP端口”及闲置端口,防火墙经过自带的拦截规则判断,就能够知道对方是否正进行端口扫描,并拦截掉对方发送过来的所有扫描需要的数据包。
现在市面上几乎所有网络防火墙都能够抵御端口扫描,在默认安装后,应该检查一些防火墙所拦截的端口扫描规则是否被选中,否则它会放行端口扫描,而只是在日志中留下信息而已。
常见端口关闭
113端口木马的清除(仅适用于windows系统):
这是一个基于irc聊天室控制的木马程序。
1.首先使用netstat -an命令确定自己的系统上是否开放了113端口
2.使用fport命令察看出是哪个程序在监听113端口
fport工具下载
例如我们用fport看到如下结果:
Pid Process Port Proto Path
392 svchost -> 113 TCP C:/WINNT/system32/vhos.exe
我们就可以确定在监听在113端口的木马程序是vhos.exe而该程序所在的路径为
c:/winnt/system32下。
3.确定了木马程序名(就是监听113端口的程序)后,在任务管理器中查找到该进程,
并使用管理器结束该进程。
4.在开始-运行中键入regedit运行注册表管理程序,在注册表里查找刚才找到那个程序,
并将相关的键值全部删掉。
5.到木马程序所在的目录下删除该木马程序。(通常木马还会包括其他一些程序,如
rscan.exe、psexec.exe、ipcpass.dic、ipcscan.txt等,根据
木马程序不同,文件也有所不同,你可以通过察看程序的生成和修改的时间来确定与
监听113端口的木马程序有关的其他程序)
6.重新启动机器。
3389端口的关闭:
首先说明3389端口是windows的远程管理终端所开的端口,它并不是一个木马程序,请先
确定该服务是否是你自己开放的。如果不是必须的,请关闭该服务。
win2000关闭的方法:
win2000server 开始-->程序-->管理工具-->服务里找到Terminal Services服务项,
选中属性选项将启动类型改成手动,并停止该服务。
win2000pro 开始-->设置-->控制面板-->管理工具-->服务里找到Terminal Services
服务项,选中属性选项将启动类型改成手动,并停止该服务。
winxp关闭的方法:
在我的电脑上点右键选属性-->远程,将里面的远程协助和远程桌面两个选项框里的勾去掉。
4899端口的关闭:
首先说明4899端口是一个远程控制软件(remote administrator)服务端监听的端口,他不能
算是一个木马程序,但是具有远程控制功能,通常杀毒软件是无法查出它来的,请先确定该服
务是否是你自己开放并且是必需的。如果不是请关闭它。
关闭4899端口:
请在开始-->运行中输入cmd(98以下为command),然后cd C:/winnt/system32(你的系统
安装目录),输入r_server.exe /stop后按回车。
然后在输入r_server /uninstall /silence
到C:/winnt/system32(系统目录)下删除r_server.exe admdll.dll radbrv.dll三个文件
5800,5900端口:
1.首先使用fport命令确定出监听在5800和5900端口的程序所在位置(通常会是c:/winnt/fonts/
explorer.exe)
2.在任务管理器中杀掉相关的进程(注意有一个是系统本身正常的,请注意!如果错杀可以重新
运行c:/winnt/explorer.exe)
3.删除C:/winnt/fonts/中的explorer.exe程序。
4.删除注册表HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Run中的
Explorer项。
5.重新启动机器。
6129端口的关闭:
首先说明6129端口是一个远程控制软件(dameware nt utilities)服务端监听得端口,他不是
一个木马程序,但是具有远程控制功能,通常的杀毒软件是无法查出它来的。请先确定该服务
是否是你自己安装并且是必需的,如果不是请关闭。
关闭6129端口:
选择开始-->设置-->控制面板-->管理工具-->服务
找到DameWare Mini Remote Control项点击右键选择属性选项,将启动类型改成禁用后
停止该服务。
到c:/winnt/system32(系统目录)下将DWRCS.EXE程序删除。
到注册表内将HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/DWMRCS表项删除。
1029端口和20168端口:
这两个端口是lovgate蠕虫所开放的后门端口。
蠕虫相关信息请参见:Lovgate蠕虫
你可以下载专杀工具:FixLGate.exe
使用方法:下载后直接运行,在该程序运行结束后重起机器后再运行一遍该程序。
45576端口:
这是一个代理软件的控制端口,请先确定该代理软件并非你自己安装(代理软件会给你的机器带
来额外的流量)
关闭代理软件:
1.请先使用fport察看出该代理软件所在的位置
2.在服务中关闭该服务(通常为SkSocks),将该服务关掉。
3.到该程序所在目录下将该程序删除。
查看开放端口判断木马的方法
当前最为常见的木马通常是基于TCP/UDP协议进行client端与server端之间的通讯的,既然利用到这两个协议,就不可避免要在server端(就是被种了木马的机器了)打开监听端口来等待连接。例如鼎鼎大名的冰河使用的监听端口是7626,Back Orifice 2000则是使用54320等等。那么,我们可以利用查看本机开放端口的方法来检查自己是否被种了木马或其它黑客程序。以下是详细方法介绍。
1. Windows本身自带的netstat命令
关于netstat命令,我们先来看看windows帮助文件中的介绍:
Netstat
显示协议统计和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。
netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
参数
-a
显示所有连接和侦听端口。服务器连接通常不显示。
-e
显示以太网统计。该参数可以与 -s 选项结合使用。
-n
以数字格式显示地址和端口号(而不是尝试查找名称)。
-s
显示每个协议的统计。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计。-p 选项可以用来指定默认的子集。
-p protocol
显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。如果与 -s 选项一同使用显示每个协议的统计,protocol 可以是 tcp、udp、icmp 或 ip。
-r
显示路由表的内容。
interval
重新显示所选的统计,在每次显示之间暂停 interval 秒。按 CTRL+B 停止重新显示统计。如果省略该参数,netstat 将打印一次当前的配置信息。
好了,看完这些帮助文件,我们应该明白netstat命令的使用方法了。现在就让我们现学现用,用这个命令看一下自己的机器开放的端口。进入到命令行下,使用netstat命令的a和n两个参数:
C:/>netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:21 0.0.0.0:0 LISTENING
TCP 0.0.0.0:7626 0.0.0.0:0 LISTENING
UDP 0.0.0.0:445 0.0.0.0:0
UDP 0.0.0.0:1046 0.0.0.0:0
UDP 0.0.0.0:1047 0.0.0.0:0
解释一下,Active Connections是指当前本机活动连接,Proto是指连接使用的协议名称,Local Address是本地计算机的 IP 地址和连接正在使用的端口号,Foreign Address是连接该端口的远程计算机的 IP 地址和端口号,State则是表明TCP 连接的状态,你可以看到后面三行的监听端口是UDP协议的,所以没有State表示的状态。看!我的机器的7626端口已经开放,正在监听等待连接,像这样的情况极有可能是已经感染了冰河!急忙断开网络,用杀毒软件查杀病毒是正确的做法。
2. 工作在windows2000下的命令行工具fport
使用windows2000的朋友要比使用windows9X的幸运一些,因为可以使用fport这个程序来显示本机开放端口与进程的对应关系。
Fport是FoundStone出品的一个用来列出系统中所有打开的TCP/IP和UDP端口,以及它们对应应用程序的完整路径、PID标识、进程名称等信息的软件。在命令行下使用,请看例子:
D:/>fport.exe
FPort v1.33 - TCP/IP Process to Port Mapper
Copyright 2000 by Foundstone, Inc.
http://www.foundstone.com
Pid Process Port Proto Path
748 tcpsvcs -> 7 TCP C:/WINNT/System32/ tcpsvcs.exe
748 tcpsvcs -> 9 TCP C:/WINNT/System32/tcpsvcs.exe
748 tcpsvcs -> 19 TCP C:/WINNT/System32/tcpsvcs.exe
416 svchost -> 135 TCP C:/WINNT/system32/svchost.exe
是不是一目了然了。这下,各个端口究竟是什么程序打开的就都在你眼皮底下了。如果发现有某个可疑程序打开了某个可疑端口,可千万不要大意哦,也许那就是一只狡猾的木马!
Fport的最新版本是2.0。在很多网站都提供下载,但是为了安全起见,当然最好还是到它的老家去下:http://www.foundstone.com/knowledge/zips/fport.zip
3. 与Fport功能类似的图形化界面工具Active Ports
Active Ports为SmartLine出品,你可以用来监视电脑所有打开的TCP/IP/UDP端口,不但可以将你所有的端口显示出来,还显示所有端口所对应的程序所在的路径,本地IP和远端IP(试图连接你的电脑IP)是否正在活动。