鸟哥的 Linux 私房菜
为取得较佳浏览结果,请爱用 firefox 浏览本网页
目录 | Linux 基础文件 | Linux 架站文件 | Linux 企业运用 | 新手讨论 |
     
 
最近更新日期:2006/08/08
为什么我们的主机会回应网路上面的一些要求封包呢?例如我们设定了一部 WWW 主机后,当有来自 Internet 的 WWW 要求时,我们的主机就会予以回应,这是因为我们的主机有启用了 WWW 的监听埠口 (port) 啊!这里就要特别留意了,当我们启用了一个 daemon 时,就可能会造成主机的 Port 在进行 Listen 的动作,此时该 daemon 就是已经对网路上面提供服务了!万一这个 daemon 有漏洞,因为他提供 Internet 的服务,所以就容易被 Internet 上面的 cracker 所入侵了!所以说,仔细的检查自己系统上面的 port 到底开了多少个,并且予以严格的管理, 才能够降低被入侵的可能性啊!


大标题的图示Linux 的埠口 (port)
我们在网路基础的通讯协定那个小节曾经谈到 TCP 封包表头最重要的就是来源与目标的埠口 (port) 了,若再加上来源与目标的 IP 就可成为一组 Socket pair ,这个 port 就是用在网路连线时提供连线接口的咚咚啰,在开始这一节之前,请您先前往网路基础那一章再瞧一瞧先。 除了这个之外,还有没有其他需要注意的事项呢?底下我们就来谈一谈先!


小标题的图示什么是 port
你或许常常会在网路上听说‘我的主机开了多少的 port ,会不会被入侵呀?’ 或者是说‘开那个 port 会比较安全?又,我的服务应该对应什么 port 呀?’呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的 port 呢?

其实也不怎么难啦!在网路基础里面我们曾经介绍过很多的网路概念, 所以你会知道要达成一条 server/client 的连线,需要一组 Socket pair 来建立连线, 这也就是说,网路连线是‘双向’的。 此外,既然我们想要连线到主机端,那么主机势必得要启动一个大家都知道的 port 在‘监听’吧, 否则如何达成连线呢?您说是吧!另外, client 端是否要启用固定的 port 来连线? 当然不需要啊~那共有多少 port 呢?底下我们就先来谈一谈。
  • 主机端的监听 (Listen)
    想一想,你要如何连上 Yahoo 的网站去看新闻?首先当然是要打开浏览器,然后输入 Yahoo 的网址,之后我们的浏览器就会连接到 Yahoo 的 WWW 网站去要求资料了。既然如此的话,那么那部 Yahoo 的 WWW 主机当然就得要启动 WWW 的服务啦, 然后我们的浏览器才能够连接到该服务。这也就是说‘主机所启用的 port 其实是由某些网路服务 (program) 所启动的’。而为了连接上的方便,因此很多服务所开启的 port 是固定的,例如 WWW 开启在 port 80 ,mail 开启在 port 25 等等;

  • 用户端的 port
    用户端启动的 port 是随机产生的, 主要是开启在大于 1024 以上的埠口,这个 port 也是由某些软体所产生的,例如上面提到的例子, 我们的浏览器想要连接到 Yahoo 的 WWW 主机,那么浏览器就得要启用一个 port 来与主机进行连线, 以组成一组 Socket pair 来传输资料嘛!
所谓的‘监听’是某个服务程式会一直常驻在记忆体当中,所以该程式启动的 port 就会一直存在。 至于 port 在传输过程中的判断,那就由 TCP/UDP 等通讯协定的表头资料来记录的啊, 我们的主机透过分析 TCP/UDP 的表头资料就能够了解到该连线所需要连接的软体是那个, 而给予正确的资料回应。所以,一部主机上面当然可以同时启动很多不同的服务啊! ^_^。

还有上面提到的一些重点你也得再了解一下,那就是:
  • 共 65536 个 port
    预设的情况下,我们的主机会有 65536 个 port,而这些 port 又分成两个部分,以 port 1024 作区隔:

  • 只有 root 才能启动的保留的 port
    在小于 1023 (连同 1023) 的埠口,都是需要以 root 的身份才能启动的, 这些 port 主要是用于一些常见的通讯服务,在 Linux 系统下,常见的协定与 port 的对应是记录在 /etc/services 里面的。 一般来说,这些 port 最好保留给一些预设的服务来使用,不要自己随意使用到这些 port, 因为这些 port 是目前 Internet 上面所惯用的,所以一些程式开发者在进行软体的开发时, 就能够针对这些 well know 的埠口直接来开发,大家也比较容易使用伺服器的功能啊!

  • 大于 1024 用于 client 端的 port
    在大于 1024 以上的 port 主要是作为 client 端的软体启动的 port 。这些 port 几乎都是依序随机使用的, 例如前面谈到的浏览器,就是使用大于 1024 以上的 port。那如果用到 port 65535 后, 系统会主动再由前面没有使用到的埠口 (如 1024) 再重新依序使用。

  • 是否需要三向交握
    建立可靠的连线服务需要使用到 TCP 协定,也就需要所谓的 三向交握了, 如果是非可靠的连线服务,例如 DNS ,那只要使用 UDP 协定即可。

  • 通讯协定启用在非正规的 port
    我们知道浏览器预设会连接到 WWW 主机的 port 80,那么你的 WWW 是否可以启动在非 80 的其他埠口? 当然可以啊!你可以透过 WWW 软体的设定功能将该软体使用的 port 启动在非正规的埠口, 只是如此一来,您的用户端要连接到你的主机时,就得要在浏览器的地方额外指定你所启用的非正规的埠口才行。 这个启动在非正规的埠口功能,常常被用在一些所谓的地下网站啦!^_^。另外, 某些软体预设就启动在大于 1024 以上的埠口,如 MySQL 资料库软体就启动在 3306。

  • 所谓的 port 的安全性
    事实上,没有所谓的 port 的安全性!因为‘Port 的启用是由服务软体所造成的’, 也就是说,真正影响网路安全的并不是 port ,而是启动 port 的那个软体 (程式)! 或许你偶而会听到:‘没有修补过漏洞的 bind 8.x 版,很容易被黑客所入侵,请尽快升级到 bind 9.x 以后版本’,所以啰,对安全真正有危害的是‘某些不安全的服务’ 而不是‘开了哪些 port ’才是!因此,没有必要的服务就将他关闭吧! 尤其某些网路服务还会启动一些 port 哩!另外,那些已启动的软体也需要持续的保持更新喔!

小标题的图示观察 port
好了,我们现在知道这个 port 是什么鬼东西了,再来就是要去‘看他到底在干啥?’没错! 再来就是要来了解一下,我们的主机到底是开了多少的 port 呢?如同我们前面说的, 您得要先了解一下,我们的‘服务’跟‘ port ’对应的档案是哪一个?再提醒一次呦!是‘ /etc/services ’啦! 而常用来观察 port 的则有底下两个程式:
  • netstat:在本机上面以自己的程式监测自己的 port;
  • nmap:透过网路的侦测软体辅助,可侦测非本机上的其他网路主机,但有违法之虞。
见他的大头王!怎么使用 nmap 会违法?呵呵!由于 nmap 的功能太强大了,所以很多 cracker (怪客,网路上面的闲人) 会直接以他来侦测别人的主机,这个时候就可能造成违法啦! 只要您使用 nmap 的时候不要去侦测别人的电脑主机,那么就不会有问题啦! 底下我们分别来说一说这两个宝贝吧!


  • netstat
    在做为主机的 Linux 系统中,开启的网路服务越少越好! 因为较少的服务可以较容易除错 (debug) 与了解安全漏洞,并可避免不必要的入侵管道! 所以,这个时候请了解一下您的系统当中有没有哪些服务被开启了呢? 要了解自己的系统当中的服务项目,最简便的方法就是使用 netstat 了!这个东西不但简单 (每一部 Linux 机器当中预设都会安装的程式喔!) ,而且功能也是很不错的。 这个指令的使用方法在 Linux 常用网路功能指令介绍当中提过了, 底下我们仅提供如何使用这个工具的方法啰!

    列出在监听的网路服务:
    列出网路服务的方式简单,如下所示:
    [root@linux ~]# netstat -tunl
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address       Foreign Address     State
    tcp        0      0 0.0.0.0:25          0.0.0.0:*           LISTEN
    tcp        0      0 :::80               :::*                LISTEN
    tcp        0      0 :::22               :::*                LISTEN
    tcp        0      0 :::25               :::*                LISTEN
    
    上面说明了我的主机有启动 port 25, 80, 22 等,而且观察各连线介面,可发现这三个 port 都有对外提供连线的能力喔!

    列出已连线的网路连线状态:
    如果仅是要列出网路介面上已经连线的或者是一些连线过程挂断、连接程序的网路状态, 可以使用如下的方式来处理:
    [root@linux ~]# netstat -tun
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address        Foreign Address      State
    tcp        0      0 192.168.10.100:25    192.168.10.5:3151    TIME_WAIT
    tcp        0      0 192.168.10.100:22    192.168.10.150:1832  ESTABLISHED
    
    从上面的资料来看,我的主机 (192.168.10.100) 目前仅有一条已建立的连线, 那就是与 192.168.10.150 那部主机连接的连线,并且连线方线是由对方连接到我主机的 port 22 来取用我主机的服务呐!至于那个 TIME_WAIT 则是在等待该连线挂断啦!

    删除已建立或在监听当中的连线:
    如果想要将已经建立,或者是正在监听当中的网路服务关闭的话,最简单的方法当然就是找出该连线的 PID, 然后将他 kill 掉即可啊!例如下面的范例:
    [root@linux ~]# netstat -tunp
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address     Foreign Address      State       PID/P name
    tcp        0     68 192.168.10.100:22 192.168.10.150:1832  ESTABLISHED 13247/sshd
    
    如上面的范例,我们可以找出来该连线是由 sshd 这个程式来启用的,并且他的 PID 是 13247, 希望你不要心急的用 killall 这个指令,否则容易删错人 (因为你的主机里面可能会有多个 sshd 存在), 应该要使用 kill 这个指令才对喔!
    [root@linux ~]# kill -9 13247
    

  • nmap
    如果你要侦测的设备并没有自己的作业系统,举例来说,你想要了解一下公司的网路印表机是否有开放某些协定时, 那该如何处理啊?现在你知道 netstat 可以用来查阅本机上面的许多监听中的通讯协定, 那例如网路印表机这样的非本机的设备,要如何查询啊?呵呵!用 nmap 就对了!

    nmap 的套件说明之名称为:‘Network exploration tool and security scanner’,顾名思义, 这个东西是被系统管理员用来管理系统安全性查核的工具!他的具体描述当中也提到了, nmap 可以经由程式内部自行定义的几个 port 对应的指纹资料,来查出该 port 的服务为何,所以我们也可以藉此了解我们主机的 port 到底是干嘛用的!如果您是安装 Linux 是 Red Hat 系统的话,那么这个 nmap 套件应该已经安装妥当了,万一没有这个套件的话,也可以来到底下的网站下载:
    [root@linux ~]# nmap [扫瞄类型] [扫瞄参数] [hosts 位址与范围]
    参数:
    [扫瞄类型]:主要的扫瞄类型有底下几种:
        -sT:扫瞄 TCP 封包已建立的连线 connect() !
        -sS:扫瞄 TCP 封包带有 SYN 标签的资料
        -sP:以 ping 的方式进行扫瞄
        -sU:以 UDP 的封包格式进行扫瞄
        -sO:以 IP 的协定 ( protocol ) 进行主机的扫瞄
    [扫瞄参数]:主要的扫瞄参数有几种:
        -PT:使用 TCP 里头的 ping 的方式来进行扫瞄,可以获知目前有几部电脑存活(较常用)
        -PI:使用实际的 ping (带有 ICMP 封包的) 来进行扫瞄
        -p :这个是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式
    [Hosts 位址与范围]:这个有趣多了,有几种类似的类型
        192.168.0.100  :直接写入 HOST IP 而已,仅检查一部;
        192.168.0.0/24 :为 C Class 的型态,
        192.168.*.*  :嘿嘿!则变为 B Class 的型态了!扫瞄的范围变广了!
        192.168.0.0-50,60-100,103,200 :这种是变形的主机范围啦!很好用吧!
    
    范例一:使用预设参数扫瞄本机所启用的 port
    [root@linux ~]# nmap localhost
    PORT     STATE SERVICE
    22/tcp   open  ssh
    25/tcp   open  smtp
    80/tcp   open  http
    139/tcp  open  netbios-ssn
    # 在预设的情况下, nmap 仅会扫瞄 TCP 的协定喔!
    
    nmap 的用法很简单呐!就直接在指令后面接上 IP 或者是主机名称即可。不过,在预设的情况下 nmap 仅会帮你分析 TCP 这个通讯协定而已,像上面这个例子,他只会帮我列出 4 个已经开启的 TCP 的埠口号码, 但优点是顺道也将开启该埠口的服务也列出来了,真是好! ^_^!那如果想要同时分析 TCP/UDP 这两个常见的通讯协定呢?可以这样做:
    [root@linux ~]# nmap -sTU localhost
    PORT      STATE         SERVICE
    22/tcp    open          ssh
    25/tcp    open          smtp
    80/tcp    open          http
    137/udp   open|filtered netbios-ns
    138/udp   open|filtered netbios-dgm
    139/tcp   open          netbios-ssn
    
    嘿嘿!与前面的范例比较一下,你会发现这次多了两个 UDP 的埠口,分别是 137 与 138 , 这样分析好多了吧!然后,如果你想要了解一下到底有几部主机活在你的网路当中时, 则可以这样做:
    [root@linux ~]# nmap -sP 192.168.10.0/24
    Host 192.168.10.171 appears to be up.
    MAC Address: 00:01:E6:B3:AA:CC (Hewlett-Packard Company)
    Host 192.168.10.174 appears to be up.
    MAC Address: 00:04:75:FF:CC:DD (3 Com)
    Host 192.168.10.175 appears to be up.
    MAC Address: 00:0C:6E:BA:11:22 (Asustek Computer)
    
    看到否?你的环境当中有三部主机活着呐!并且该 IP 所对应的 MAC 也会被记录下来, 很不错吧!如果你还想要将各个主机的启动的 port 作一番侦测的话,那就得要使用:
    [root@linux ~]# nmap 192.168.10.0/24
    
    之后你就会看到一堆 port number 被输出到荧幕上啰~如果想要随时记录整个网段的主机是否不小心开放了某些服务, 嘿嘿!利用 nmap 配合资料流重导向 (>, >> 等) 来输出成为档案, 那随时可以掌握住您区域网路内每部主机的服务启动状况啊! ^_^

    请特别留意,这个 nmap 的功能相当的强大,也是因为如此, 所以很多刚在练习的黑客会使用这个软体来侦测别人的电脑,这个时候请您特别留意, 目前很多的人已经都有‘特别的方式’来进行登录的工作!例如以 TCP_Wrappers (/etc/hosts.allow, /etc/hosts.deny) 的功能来记录曾经侦测过该 port 的 IP! 这个软体用来‘侦测自己机器的安全性’是很不错的一个工具,但是如果用来侦测别人的主机, 可是会‘吃上官司’的!特别留意!!

  • 大标题的图示Port 的启动与关闭
    现在你知道其实 port 是由某些程式所启动的,所以要关闭某些 port 时,那就直接将某个程式给他关闭就是了! 那关闭的方法你当然可以使用 kill ,不过,毕竟不是正统的解决之道,因为 kill 这个指令通常具有强制关闭某些程式的功能,但我们想要正常的关闭该程式啊! 所以,就利用系统给我们的 script 来关闭就好了啊。 在此同时,我们就得再来稍微复习一下,一般传统的服务有哪几种类型?


    小标题的图示stand alone 与 super daemon
    我们在鸟哥的 Linux 私房菜 -- 基础学习篇内谈到, 在一般正常的 Linux 系统环境下,服务的启动与管理主要有两种方式:
    • stand alone
      顾名思义,stand alone 就是直接执行该服务的执行档,让该执行档直接载入到记忆体当中运作, 用这种方式来启动可以让该服务具有较快速回应的优点。一般来说,这种服务的启动 script 都会放置到 /etc/init.d/ 这个目录底下,所以你通常可以使用:‘ /etc/init.d/sshd restart ’之类的方式来启动这种服务;

    • Super daemon
      用一个超级服务作为总管,以管理一些网路服务。在 CentOS 4.x 里面使用的则是 xinetd 这个 super daemon 啊!这种方式启动的网路服务虽然在回应上速度会比较慢, 不过,可以透过 super daemon 额外提供一些控管,例如控制何时启动、何时可以进行连线、 那个 IP 可以连进来、是否允许同时连线等等。通常设定档放置在 /etc/xinetd.d/ 当中,但设定完毕后需要重新以‘ /etc/init.d/xinetd restart ’重新来启动才行!
    关于更详细的服务说明,请参考基础篇的 认识服务 一文, 鸟哥在这里不再赘述。好,那么如果我想要将我系统上面的 port 25 关掉的话, 那应该如何关闭呢?最简单的作法就是先找出那个 port 25 的启动程式喔!
    [root@linux ~]# netstat -tnlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State   PID/Program name
    tcp        0      0 127.0.0.1:25  0.0.0.0:*       LISTEN  2030/master
    tcp        0      0 :::22         :::*            LISTEN  1961/sshd
    # 咦!怎么会是 master 这个玩意儿?用 which 这个指令还找不到这个 master
    # 那怎办?没关系,我们可以透过 locate 配合正规表示法找到这个指令的!
    
    [root@linux ~]# locate master | grep '/master$'
    /usr/libexec/postfix/master
    # 嘿嘿!那个正规表示法就可以找到上述的输出结果,然后再由 rpm 来处理!
    
    [root@linux ~]# rpm -qf /usr/libexec/postfix/master
    postfix-2.2.2-2
    # 找到了!就是这个套件!所以将他关闭的方法可能就是:
    
    [root@linux ~]# rpm -qc postfix | grep init
    /etc/rc.d/init.d/postfix
    [root@linux ~]# /etc/init.d/postfix stop
    
    透过上面的这个分析的流程,你可以利用系统提供的很多方便的工具来达成某个服务的关闭! 为啥这么麻烦?不是利用 kill -9 2030 就可以删掉该服务了吗? 是没错啦!不过,你知道该服务是做啥用的吗?你知道将他关闭之后,你的系统会出什么问题吗? 如果不知道的话,那么利用上面的流程不就可以找出该服务套件,再利用 rpm 查询功能, 不就能够知道该服务的作用了?所以说,这个方式还是对您会有帮助的啦! 底下请您试着将您 CentOS 或者是其他版本的 Linux 的 Telnet 打开试看看。

    例题:我们知道系统的 Telnet 服务通常是以 super daemon 来控管的,请您启动您系统的 telnet 试看看。

    答:
    1. 要启动 telnet 首先必须要已经安装了 telnet 的伺服器才行,所以请先以 rpm 查询看看是否有安装 telnet-server 呢? ‘rpm -qa | grep telnet-server’如果没有安装的话,请利用原版光碟来安装,或者使用‘yum install telnet-server’ 安装一下先;
    2. 由于是 super daemon 控管,所以请编辑 /etc/xinetd.d/telnet 这个档案,将其中的‘disable = yes’改成 ‘disable = no’之后以‘/etc/init.d/xinetd restart’重新启动 super daemon 吧!
    3. 利用 netstat -tnlp 察看是否有启动 port 23 呢?


    小标题的图示设定开机时启动服务
    如果刚刚你已经利用类似前一节的方法将一些服务关闭了,但是下次再重新开机后,咦! 怎么那些被关闭的服务又‘春风吹又生’的给他‘长’出来了?呵呵~没错啊, 因为前一节的作法是可以立即将某个服务关闭,但是却不会影响到开机时是否会启动与否的设定。 唉~伤脑筋~

    如果你想要在开机的时候就启动或不启动某项服务时,那就得要了解一下 基础学习篇里面谈到的开机流程管理 的内容啦! 在 Unix like 的系统当中我们都是透过 run level 来设定某些执行等级需要启动的服务, 以 Red Hat 系统来说,这些 run level 启动的资料都是放置在 /etc/rc.d/rc[0-6].d/ 里面的,那如何管理该目录下的 script 呢? 手动处理吗?会疯掉的呐!所以你必须要熟悉 chkconfigRed Hat 系统的 ntsysv 这几个指令才行!
    Tips:
    这几个指令不熟吗?这个时候鸟哥不得不说了:‘有 man 堪用直需用,莫待无 man 空自猜’赶紧给他 man 下去啦!
    鸟哥的图示
    例题:(1)如何查阅 portmap 这个程式一开机就执行? (2)如果开机就执行,如何将他改为开机时不要启动? (3)如何立即关闭这个 portmap 服务?

    答:
    1. 可以透过‘ chkconfig --list | grep portmap ’与‘ runlevel ’确认一下你的环境与 portmap 是否启动?
    2. 如果有启动,可透过‘ chkconfig --level 35 portmap off ’来设定开机时不要启动;
    3. 可以透过‘ /etc/init.d/portmap stop ’来立即关闭他!

    聪明的你一定会问说:‘鸟哥,你的意思是只要将系统所有的服务都关闭,那系统就会安全啰?’ 当然....不是!因为‘很多的系统服务是必须要存在的,否则系统将会出问题’ 举例来说,那个保持系统可以具有工作排程的 crond 服务就一定要存在,而那个记录系统状况的 syslogd 也当然要存在~否则怎知道系统出了啥问题? 底下鸟哥列出几个常见的必须要存在的系统服务给大家参考参考先!这些服务请不要关闭啊!

    服务名称服务内容
    acpid新版的电源管理模组,通常建议开启,不过,某些笔记型电脑可能不支援此项服务,那就得关闭
    atd在管理单一预约命令执行的服务,应该要启动的
    crond在管理工作排程的重要服务,请务必要启动啊!
    iptablesLinux 内建的防火墙软体,这个也可以启动啦!
    keytables如果你的键盘非正规的格式时,这个服务的启动或许可以帮助你喔!
    network这个重要了吧?要网路就要有他啊!
    sshd这是系统预设会启动的,可以让你在远端以文字型态的终端机登入喔!
    syslog系统的登录档记录,很重要的,务必启动啊!
    xinetd就是那个 super daemon 嘛!所以也要启动啦!
    xfs用来管理 X Window 字形资料的服务,如果你会需要 X Window 时,这个服务要启动。

    没错!不要怀疑!只要这些就可以啦!这几个服务是必须要启动的! 至于其他服务则都先不用启动!例如 sendmail 啦!其他林林总总的资料,都先摆着! 我们会在后续的章节当中提到如何启动这些服务的啦!


    小标题的图示安全性的考量
    我们的 Linux distribution 很好心的帮使用者想到很多了,所以在一安装完毕之后, 系统会开启一堆有的没有的网路服务,例如那个 portmap 之类的咚咚,以及网路印表机的 cups 服务等等, 这些东西你或许知道或许不知道,不过他就是有开启~但我们的主机明明就是用来做为伺服器的, 所以这些本来预计要给 client 使用的服务其实有点‘多此一举’的感觉~ 所以啦,请你将他关闭吧!就利用 ntsysv 或 chkconfig 来关闭他! 只留下前一节咱们建议的那些服务就好了~其他的以后再说啊!

    不过要记得, ntsysv 及 chkconfig 都是在管理开机是否启动某些服务的 script 而已, 所以使用 chkconfig 管理完毕后,请记得最好使用 reboot 来完整的重新载入这些服务, 然后以‘ netstat -tunpl ’来看看是否有什么其他的网路服务在启动啊? 如果有的话,在一样一样的将他关闭吧! ^_^

    大标题的图示课后练习
    • 如何观察您 Linux 主机上面已经有多少 port 被打开了?
    • 1. 如果是 Linux 这个作业系统上面的话,可以利用‘ netstat -tunlp ’观察已经在监听的 port 与服务的对应;
      2. 如果是想要查阅所有的 port (包含已建立的连线),可以使用‘ netstat -tunp ’来查阅;
      3. 如果不在 Linux 本机上,可以用‘ nmap IP ’来处理啊!
    • 如何观察程序?
    • 利用‘ ps -aux ’或‘ top ’都可以,另外,‘ pstree -p ’则可以了解所有的程序相依性,而‘ lsof ’ 则可以察看所有程序所开的档案喔!
    • 请问 LISTEN 的 port 与 daemon 的关系为何?
    • 正在 LISTEN 当中的埠口均是由某些服务(daemons)所启动的,所以要启动埠口就得启用某个服务, 要了解某个埠口是由那个 daemon 所启动的,就利用 netstat -tulp 来查阅。
    • 请问 stand alone 与 super daemon 各是什么?
    • Linux 系统的服务有独立启动(stand alone)及超级服务员(super daemon)两种启动的方式。挂在 super daemon 底下的服务可以经由 super daemon 的控管,以加强一些安全功能,不过由于还要经过 super daemon 的管理,所以服务的连接速度上会比 stand alone 慢一点。
    • 请问您的 Linux 主机 (不论是那个 distributions ) 有关 daemon 启动与关闭的 scripts 与档案放置在那个目录下?
    • 各个 daemons 的启动与关闭的 scripts 是放置在 /etc/init.d/ 内, Red Hat 系统则是放到 /etc/rc.d/init.d 里面,至于 super daemon 的控管参数档案则在 /etc/xinetd.d 里面!
    • 为什么阻断式服务 (DDoS) 会造成系统的当机与网路瘫痪?试由三向交握的角度来探讨。
    • 所谓的阻断式服务是利用三向交握程序的漏洞,多个 cient 端持续发送 tcp 封包的连线要求, 但却不理会 server 端的 SYN/ACK 的封包,导致 server 端会持续启动很多的 port 在等待 client 端的回应, 那我们知道一般 port 有 65536 个,万一用完了,那系统网路就瘫痪了!所以 DDoS 会造成系统网路瘫痪的问题。 另外,由于多个 client 同时要求,所以网路频宽也会被用光!

    2002/08/02:首次完成释出
    2003/08/21:重新编辑,并且加入课后练习。
    2003/09/19:加入参考用解答了。
    2006/08/08:将旧的文章移动到 此处

    2002/08/02以来统计人数

     
         
    本网页主要以 firefox 配合解析度 1024x768 作为设计依据
    http://linux.vbird.org is designed by VBird during 2001-2009. Aerosol Lab.