服务器架设篇 - CentOS 4.x

第七章、资安一 - 限制连接端口口

将 Linux 对外开放的 port ,只要是不需要,就给他关掉!

最近更新时间: 2006/08/08

本文数据主要针对 CentOS 4.x 的系统进行说明,而 CentOS 4.x 已经在 2012 年 2 月份正式不再进行维护,事实上,在 2009 年底几乎就不再维护了。 因此,建议您前往本站查找最新版本的 Linux distribution 文章来阅读,比较不会浪费时间。那为何还需要编辑 CentOS 4 的数据呢? 鸟哥只想要做个自己曾经撰写过的文档内容保存而已啰! ^_^!最新文章请前往鸟站首页查阅啰!
为什么我们的主机会回应网络上面的一些要求封包呢?例如我们设置了一部 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以来统计人数

    其他链接
    环境工程模式篇
    鸟园讨论区
    鸟哥旧站

    今日 人数统计
    昨日 人数统计
    本月 人数统计
    上月 人数统计