众所周知,计算机之间通信是通过端口进行的,例如你访问一个网站时,Windows就会在本机开一个端口(例如1025端口),然后去连接远方网站服务器的一个端口,别人访问你时也是如此。默认状态下,Windows会在你的电脑上打开许多服务端口,黑客常常利用这些端口来实施入侵,因此掌握端口方面的知识,是安全上网必备的技能。
一、常用端口及其分类
电脑在Internet上相互通信需要使用TCP/IP协议,根据TCP/IP协议规定,电脑有256×256(65536)个端口,这些端口可分为TCP端口和UDP端口两种。如果按照端口号划分,它们又可以分为以下两大类:
1.系统保留端口(从0到1023)
这些端口不允许你使用,它们都有确切的定义,对应着因特网上常见的一些服务,每一个打开的此类端口,都代表一个系统服务,例如80端口就代表Web服务。21对应着FTP,25对应着SMTP、110对应着POP3等(如图1)。
端口 应用程序协议 意义或系统服务名称
21 FTP控制 ftp服务器将开启21端口
23 Telnet 支持BBS的服务器会打开23端口,通过该端口入侵,黑客窃取密码
25 SMTP 发邮件服务器开放25端口
53 DNS域名解析 DNS服务器会开放53端口
80 WWW 提供网页资源的主机将打开80端口
110 POP3 收邮件服务器开放110端口
119 NNTP Network News Transfer Protocol
123 NTP、SNTP Windows Tine
135 RPC Remote Procedure Call、Fax Service等
137 NetBIOS Name Resolution Computer Browser等
138 NetBIOS Datagram Service Messenger等
139 NetBIOS Session Service NetBIOS共享服务
161 snmp简单网络管理协议 用来管理网络设备
445 SMB Service等
2.动态端口(从1024到65535)
当你需要与别人通信时,Windows会从1024起,在本机上分配一个动态端口,如果1024端口未关闭,再需要端口时就会分配1025端口供你使用,依此类推。
但是有个别的系统服务会绑定在1024到49151的端口上,例如3389端口(远程终端服务)。从49152到65535这一段端口,通常没有捆绑系统服务,允许Windows动态分配给你使用。
二、如何查看本机开放了哪些端口
在默认状态下,Windows会打开很多“服务端口”,如果你想查看本机打开了哪些端口、有哪些电脑正在与本机连接,可以使用以下两种方法。
1.利用netstat命令
Windows提供了netstat命令,能够显示当前的 TCP/IP 网络连接情况,注意:只有安装了TCP/IP协议,才能使用netstat命令。
操作方法:单击“开始→程序→附件→命令提示符”,进入DOS窗口,输入命令 netstat -na 回车,于是就会显示本机连接情况及打开的端口,如图2。其中Local Address代表本机IP地址和打开的端口号(图中本机TCP打开了135端口),Foreign Address是远程计算机IP地址和端口号,State表明当前TCP的连接状态(LISTENING是监听状态,表明本机正在打开135端口监听,等待远程电脑的连接)。
如果你在DOS窗口中输入了netstat -nab命令,还将显示每个连接都是由哪些程序创建的。上图2中本机在135端口监听,就是由svchost.exe程序创建的,该程序一共调用了5个组件(WS2_32.dll、RPCRT4.dll、rpcss.dll、svchost.exe、ADVAPI32.dll)来完成创建工作。如果你发现本机打开了可疑的端口,就可以用该命令察看它调用了哪些组件,然后再检查各组件的创建时间和修改时间,如果发现异常,就可能是中了木马。
2.使用端口监视类软件
与netstat命令类似,端口监视类软件也能查看本机打开了哪些端口,这类软件非常多,著名的有Tcpview、Port Reporter、绿鹰PC万能精灵、网络端口查看器等,推荐你上网时启动Tcpview,密切监视本机端口连接情况,这样就能严防非法连接,确保自己的网络安全,详见本刊2005年2月88页《让端口开放尽收眼底》一文。
三、关闭本机不用的端口
默认情况下Windows有很多端口是开放的,一旦你上网,黑客可以通过这些端口连上你的电脑,因此你应该封闭这些端口。主要有:TCP139、445、593、1025 端口和 UDP123、137、138、445、1900端口、一些流行病毒的后门端口(如 TCP 2513、2745、3127、6129 端口),以及远程服务访问端口3389。关闭的
方法是:
①137、138、139、445端口:它们都是为共享而开放的,你应该禁止别人共享你的机器,所以要把这些端口全部关闭,方法是:单击“开始→控制面板→系统→硬件→设备管理器”,单击“查看”菜单下的“显示隐藏的设备”,双击“非即插即用驱动程序”,找到并双击NetBios over Tcpip,在打开的“NetBios over Tcpip属性”窗口中,单击选中“常规”标签下的“不要使用这个设备(停用)”,如图3,单击“确定”按钮后重新启动后即可。
②关闭UDP123端口:单击“开始→设置→控制面板”,双击“管理工具→服务”,停止Windows Time服务即可。关闭UDP 123端口,可以防范某些蠕虫病毒。
③关闭UDP1900端口:在控制面板中双击“管理工具→服务”,停止SSDP Discovery Service 服务即可。关闭这个端口,可以防范DDoS攻击。
④其他端口:你可以用网络防火墙来关闭,或者在“控制面板”中,双击“管理工具→本地安全策略”,选中“IP 安全策略,在本地计算机”,创建 IP 安全策略来关闭。
四、重定向本机默认端口,保护系统安全
如果本机的默认端口不能关闭,你应该将它“重定向”。把该端口重定向到另一个地址,这样即可隐藏公认的默认端口,降低受破坏机率,保护系统安全。
例如你的电脑上开放了远程终端服务(Terminal Server)端口(默认是3389),可以将它重定向到另一个端口(例如1234),方法是:
1.在本机上(服务器端)修改
定位到下列两个注册表项,将其中的 PortNumber,全部改成自定义的端口(例如1234)即可:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]
2.在客户端上修改
依次单击“开始→程序→附件→通讯→远程桌面连接”,打开“远程桌面连接”窗口,单击“选项”按钮扩展窗口,填写完相关参数后,单击“常规”下的“另存为”按钮,将该连接参数导出为.rdp文件。用记事本打开该文件,在文件最后添加一行:server port:i:1234 (这里填写你服务器自定义的端口)。以后,直接双击这个.rdp 文件即可连接到服务器的这个自定义端口了。