0210port_limit.htm
来自「鸟哥LINUX 学习课本」· HTM 代码 · 共 881 行 · 第 1/5 页
HTM
881 行
<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"><html><head> <meta http-equiv="Content-Type" content="text/html; "> <meta name="Author" content="VBird"> <meta name="GENERATOR" content="Mozilla/4.5 [zh-TW] (WinNT; I) [Netscape]"> <meta name="Description" content="將 Linux 對外開放的 port ,只要是不需要,就給他關掉!"> <title>鸟哥的 Linux 私房菜 -- 限制 Linux 对外的埠口 port limit</title><!-- saved from url=(0022)http://internet.e-mail --><style> <!-- body{background-image=url(http://linux.vbird.org/VBirdLinux.jpg);background-ATTACHMENT=FIXED} --></style></head><body nosave="" background="0210port_limit_files/VBirdLinux.jpg"><center><center><b><font size="+2" color="#3333ff"><font face="SimSun">鸟哥的</font><font face="Times New Roman,Times"> Linux </font><font face="SimSun">与</font><font face="Times New Roman,Times"> ADSL </font><font face="SimSun">私房菜</font></font></b><br><a href="http://linux.vbird.org/" target="_top"><img src="0210port_limit_files/VBirdTitle2.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_basic"><img src="0210port_limit_files/icon_system.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_server"><img src="0210port_limit_files/icon_server.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/linux_security"><img src="0210port_limit_files/icon_security.jpg" nosave="" border="0" height="25" width="90"></a><a href="http://phorum.vbird.org/" target="_blank"><img src="0210port_limit_files/icon_forums.gif" nosave="" border="0" height="25" width="90"></a><a href="http://linux.vbird.org/adsl"><img src="0210port_limit_files/icon_adsl.gif" nosave="" border="0" height="25" width="90"></a><br><hr width="100%"></center><font size="+2" color="#3333ff"><a href="http://linux.vbird.org/linux_server/0210port_limit.php" target="_self"><font face="SimSun">限制</font><font face="Times New Roman,Times">Linux </font><font face="SimSun">对外联机的埠口</font></a></font></center><div align="right"><font size="-1" color="#3333ff" face="SimSun">最近更新日期:2003/09/19</font></div><font size="-2" color="#000099"> </font><table bgcolor="#ffcccc" border="1" cols="1" width="100%"><tbody><tr><td><font size="-1" color="#000099">为什么我们的主机会响应网络上面的一些要求封包呢?例如我们设定了一部WWW 主机后,当有来自 Internet 的 WWW 要求时,我们的主机就会予以响应,这是因为我们的主机有启用了WWW 的监听埠口 (port) 啊!这里就要特别留意了,当我们启用了一个 daemon 时,就可能会造成主机的Port 在进行 Listen 的动作,此时该 daemon 就是已经对网络上面提供服务了!万一这个daemon 有漏洞,因为他提供 Internet 的服务,所以就容易被 Internet 上面的cracker 所入侵了!所以说,仔细的检查自己系统上面的 port 到底开了多少个,并且予以严格的管理,才能够降低被入侵的可能性啊!</font></td></tr></tbody></table><font size="-2" color="#000099"> </font><br><font color="#000099"><font size="+1"><a href="#What_is_ports">什么是埠口(port )</a></font>:</font><br><font color="#000099"> :<a href="#What_is_ports_number">总共有多少埠口?哪些是保留的port ?</a></font><br><font color="#000099"> :<a href="#What_is_ports_three">Server/Client联机建立的 TCP 三向交握</a></font><br><font color="#000099"> :<a href="#What_is_ports_secure">安不安全</a></font><br><font color="#000099"><font size="+1"><a href="#How_to_look_port">如何观察埠口</a></font>:</font><br><font color="#000099"> :<a href="#How_to_look_port_netstat">使用netstat</a></font><br><font color="#000099"> :<a href="#How_to_look_port_nmap">使用 nmap</a></font><br><font color="#000099"><font size="+1"><a href="#How_To_Close">如何关闭或启动一个埠口</a></font>:</font><br><font color="#000099"><font size="+1"><a href="#open_at_open">设定开机时启动服务的方法</a></font>:</font><br><font color="#000099"><font size="+1">安全性: </font><a href="#last_safe">关闭所有对外开放的port</a></font><br><font size="+1" color="#000099"><a href="#ex">课后练习</a></font>:<br><hr width="100%"><a name="What_is_ports"></a><font color="#000099"><font size="+1">什么是埠口(port )</font>:</font><ul>在开始这个章节之前,我们先来聊一聊什么是埠口 ( port ) 呢?常常在网络上听说『<font color="#000066">我的主机开了多少的port ,会不会被入侵呀!</font>?』或者是说『<font color="#000066">开那个port 会比较安全?又,我的服务应该对应什么 port 呀</font>!?』呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的port 呢?这个 port 有什么作用呢?!事实上,一部主机的 port 可分为『<font color="#000066">监听,LISTEN</font>』与『<font color="#000066">随机取用的 high port』</font>:<br> <ul><li>所谓的 LISTEN 就是您的主机有启动某些服务,那么这个服务就会在 Linux 系统上面启用一个port 以监听来自 Internet 的要求!例如以 FTP 的服务来说好了,如果您的主机有启用FTP 这个服务的话,那么主机就会启用 port 21 喔!而且 port 21 是一直启用的,直到FTP 这个服务关闭为止!</li><br> <li>那么万一我的主机是要对外主动的联机呢?举例来说好了,我的 Linux 要对外面的WWW 主机要求数据 ( WWW 主机预设的 port number 为 80 ) ,那么我的 Linux总是需要启用一个 port 来对外联机吧?!不然数据封包怎么传递?那么启用的port number 是多少呢?呵呵!Linux 主机会『<font color="#000066">随机</font>』取用一个没有被使用的<font color="#000066">大于1024 以上</font>的 port 来进行这次的联机行为。</li></ul> <br>所以,您应该知道 Server/Client 之间的数据传送其实是 port 与 port 之间的递送喔!那就是我们在网络基础里面谈到的socket pair 当中的一环啰。那么数据透过这些 port 来进行传送的时候,会不会跑错地方啊?!还记得我们在<a href="http://linux.vbird.org/linux_server/0110network_basic.php">网络基础</a>里头提到的<a href="http://linux.vbird.org/linux_server/0110network_basic.php#IP">TCP/IP</a>资料吧?对啦! <a href="http://linux.vbird.org/linux_server/0110network_basic.php#packet_tcp">TCP</a> 封包在传送的时候,在TCP 封包的表头 (header) 不是会填有来源与目的之 IP 及 port 吗?在这里您可以这样想,由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当您的主机同时开启了FTP 与 WWW 服务的时候,那么别人送来的数据封包,就会依照 TCP 表头上面的port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!( <i><font color="#000066">注:嘿嘿!有些很少接触到网络的朋友,常常会问说:『咦!为什么您的计算机同时有FTP、WWW、E-Mail这么多服务,但是人家传数据过来,您的计算机怎么知道如何判断?计算机真的都不会误判吗?!』现在知道为什么了吗?!对啦!就是因为port不同嘛!您可以这样想啦,有一天,您要去银行存钱,那个银行就可以想成是『主机』,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么您一进大门的时候,在门口的服务人员就会问您说:『嗨!您好呀!您要做些什么事?』您跟他说:『我要存钱呀!』,服务员接着就会告诉您:『喝!那么请前往三号窗口!那边的人员会帮您服务!』这个时候您总该不会往其它的窗口跑吧?!^_^""这些窗口就可以想成是『 port 』啰!所以啦!每一种服务都有特定的 port在监听!您无须担心计算机会误判的问题呦! </font></i>)<br> <br><hr width="100%"><a name="What_is_ports_number"></a><font color="#000099">总共有多少埠口?哪些是保留的port ?</font><br> <br>我想,您或许会很好奇,咦!那么通常一般的主机会有多少个 port 呢?!正常来说,<font color="#000066">所有的port 是由 1 ~ 65535 这么多个啦</font>!好啦,那么在这些 port 上面有没有保留给系统使用的呢!?是有的!一般而言,<font color="#000066">只有root 才可以启用 1 ~ 1023 以内的 port </font>,这些 port 就是特殊的埠口,是保留给系统来使用的!<font color="#000066">至于大于1024 以上的 port 除了给系统随机取用来作为联机的需求之外,也可以用来作为服务的LISTEN 之用。</font>举例来说,如果您觉得 0~1023 的 port 需要以 root 的身份来启动,这样如果该port 的程序被入侵了,那么入侵者将拥有 root 的权限,这实在很危险~所以,这个时候您可以以一般身份账号并使用大于1024 以上的 port 来启用某些服务呢!例如 FTP 的 port 预设为 21 ,您也可以将FTP 以 10021 的 port number 来启动,并且使用一般身份的账号来启用这个 FTP的服务,会比较安全一点。不过,这样一来会造成 client 端的困扰,因为一般FTP Client 软件都是预设以连接到主机的 port 21 来进行联机的,现在您的主机FTP 改成 10021 了,除非您的 Client 知道这个设定值,否则 Client 软件就无法联机成功了。<br> <br>好了,那么您应该又会说,这些保留的 port ( 或称为 well know )有什么特殊的功能呢?!这些well know 的埠口其实是目前一些 Internet 上面常见的 Services 所惯用的埠口咯,为了保留给这些埠口给特殊的服务使用,以避免不小心被使用者或者是Client 端软件给占用了,所以就需要订定这样的保留功能啰。此外,因为这些 port是目前 Internet 上面所惯用的,所以一些程序开发者在进行软件的开发时,就能够针对这些well know 的埠口直接来开发,大家也比较容易使用服务器的功能啊!<br> <br>至于这些 well know 的埠口与他所对应的服务 (services) 其实已经在我们的Linux 系统当中存在一个对照表了,那就是 /etc/services 这个档案啰!我们在<a href="http://linux.vbird.org/linux_server/0140networkcommand.php">Linux常用网络指令</a>里面提到的 <a href="http://linux.vbird.org/linux_server/0140networkcommand.php#netstat">netstat</a>的功能时,有没有加上 -n 这个参数是有影响的!当不加 -n 这个参数时,直接下达『<font color="#000066" face="SimSun">netstat-tl </font>』竟然可以告诉我目前正在 LISTEN 的服务名称!嘿嘿!这就是/etc/services 的功能啦!此外, /etc/services 也是某些服务在启动的时候,设定port number 的重要依据,例如 <a href="http://linux.vbird.org/linux_server/0400wuftp.php">Wu-FTP</a> 的埠口就是由这个档案来控管的。来看一看/etc/services 的几个主要内容吧!<br> <table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">vi /etc/services</font></font><br><font size="-1" color="#ffffff" face="SimSun">ftp-data       20/tcp</font><br><font size="-1" color="#ffffff" face="SimSun">ftp-data       20/udp</font><br><font size="-1" color="#ffffff" face="SimSun">ftp            21/tcp</font><br><font size="-1" color="#ffffff" face="SimSun">ftp            21/udp</font><br><font size="-1" color="#ffffff" face="SimSun">ssh            22/tcp                         # SSH Remote Login Protocol</font><br><font size="-1" color="#ffffff" face="SimSun">ssh            22/udp                         # SSH Remote Login Protocol</font><br><font size="-1" color="#ffffff" face="SimSun">telnet         23/tcp</font><br><font size="-1" color="#ffffff" face="SimSun">telnet         23/udp</font><br><font size="-1" color="#ffffff" face="SimSun">smtp           25/tcp          mail</font><br><font size="-1" color="#ffffff" face="SimSun">smtp           25/udp          mail</font><br><font size="-1" color="#ffffff" face="SimSun">domain         53/tcp          nameserver     # name-domain server</font><br><font size="-1" color="#ffffff" face="SimSun">domain         53/udp          nameserver</font><br><font size="-1" color="#ffffff" face="SimSun">bootps         67/tcp                         # BOOTP server</font><br><font size="-1" color="#ffffff" face="SimSun">bootps         67/udp</font><br><font size="-1" color="#ffffff" face="SimSun">bootpc         68/tcp                         
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?