鸟哥的 Linux 私房菜
为取得较佳浏览结果,请爱用 firefox 浏览本网页
目录 | Linux 基础文件 | Linux 架站文件 | Linux 企业运用 | 新手讨论 |
     
 
最近更新日期:2006/09/06
在介绍了‘网路基础’、‘限制连线 port number ’、‘网路升级套件’之后,再来准备要上 Internet 了吗?!如果只是想要上 Internet 去浏览,那么自然没有问题,如果是想要对 Internet 开放网路服务,那么最好还是先认识一下网路安全会比较好一些。什么?套件也更新了, port 也关闭了,还需要认识什么网路安全啊?!呵呵!当然啦!因为难保我们的主机不会被新的套件漏洞以及阻断式攻击 (DoS)所困扰啊!在这个章节里面,我们会稍微介绍一些基础的网路防护观念,尤其是系统管理员应该要做的事情呐!


大标题的图示网路封包连线进入主机的流程
在这一章当中,我们要讨论的是,当来自一个网路上的连线要求想进入我们的主机时, 这个网路封包在进入主机实际取得资料的整个流程是如何?了解了整个流程之后, 你才会发现:原来系统操作的基本概念是如此的重要! 而你也才会了解要如何保护你的主机安全呐!闲话少说,咱们赶紧来瞧一瞧先。


小标题的图示封包进入主机的流程
网路基础章节当中我们谈到过目前的网路架构主要是 TCP/IP 为主, 而绝大部分的网路连线是双向的,其中又以 TCP 封包为代表。 另外,根据 Server/Client 的连线方向与 TCP/IP 的概念,我们会知道建立一条可靠的网路连线需要一组 Socket Pair 的辅助, 亦即成对的来源与目标之 IP 与 port 啰,以使连线的两端可以顺利的连接到相对的应用软体上。

上面谈到的这些都是属于网路的基础概念,在这里我们要谈的是,那么要让这个 TCP 封包顺利的进入到 Linux 主机上, 然后使用 port 所对应的软体来存取系统的档案系统资源时,还得要经过哪些关卡呢? 举例来说,如果你的 Linux 主机有开启 WWW 的 port 80 网路服务,而 port 80 是由一个名称为 httpd 的程式所启动的,这个程式的设定档为 httpd.conf ,那么 Client 的连线要进入到你 Linux 主机的 WWW 时, 会经过什么阶段呢?基本上,会经过如下图的几个阶段:

网路封包进入本机的流程顺序
图一、网路封包进入本机的流程顺序

  1. 封包过滤防火墙:IP Filtering 或 Net Filter
    要进入 Linux 本机的封包都会先通过 Linux 核心的预设防火墙,就是称为 IP Filter 或 Net Filter 的咚咚, 简单的说,就是 iptables 这个软体所提供的防火墙功能。iptables 这个 Linux 预设的防火墙软体可以针对网路封包的 IP, port, MAC, 以及连线状态如 SYN, ACK 等资料进行分析, 以过滤不受欢迎的网路封包呢!举例来说,如果有个 IP 为 aaa.bbb.ccc.ddd 是个恶意网站来源, 那你就可以透过 iptables 抵挡来自该 IP 的网路封包的连线,以达到基本的主机防火墙功能。 这部份我们会在下一章深入了解。

  2. 第二层防火墙:TCP Wrappers
    通过 IP Filter 之后,网路封包会开始接受 Super daemonsTCP_Wrappers 的检验,那个是什么呢? 呵呵!说穿了就是 /etc/hosts.allow 与 /etc/hosts.deny 的设定档功能啰。 这个功能也是针对 TCP 的 Header 进行再次的分析,同样你可以设定一些机制来抵制某些 IP 或 Port ,好让来源端的封包被丢弃或通过检验;

  3. 服务 (daemon) 的功能:
    前面这两个动作基本上是 Linux 预设的功能,而这第三个步骤就是属于软体功能了。 举例来说,你可以在 httpd.conf 这个设定档之内规范某些 IP 来源不能使用 httpd 这个服务来取得主机的资料, 那么即使该 IP 通过前面两层的过滤,他依旧无法取得主机的资源喔!但要注意的是, 如果 httpd 这支程式本来就有问题的话,那么 client 端将可直接利用 httpd 软体的漏洞来入侵主机,而不需要取得主机内 root 的密码!因此, 要小心这些启动在网际网路上面的软体喔! 所以前一章网路升级套件是很重要的!

  4. 使用主机的档案系统资源:
    想一想,你使用浏览器连接到 WWW 主机最主要的目的是什么?当然就是读取主机的 WWW 资料啦! 那 WWW 资料是啥?就是档案啊!^_^!所以,最终网路封包其实是要向主机要求档案系统的资料啦。 我们这里假设你要使用 httpd 这支程式来取得系统的档案资料,但 httpd 预设是由一个系统帐号名称为 httpd 来启动的,所以:你的网页资料的权限当然就是要让 httpd 这支程式可以读取才行啊!如果你前面三关的设定都 OK ,最终权限设定错误, 使用者依旧无法浏览你的网页资料的。
在这些步骤之外,我们的 Linux 以及相关的软体都可能还会支援登录档记录的功能, 为了记录历史历程,以方便管理者在未来的错误查询与入侵侦测,良好的分析登录档的习惯是一定要建立的, 尤其是 /var/log/messages 与 /var/log/secure 这些个档案! 虽然各大主要 Linux distribution 大多有推出适合他们自己的登录档分析套件,例如 CentOS 的 logwatch ,不过毕竟该套件并不见得适合所有的 distributions ,所以鸟哥尝试自己写了一个 logfile.sh 的 shell script,您可以在底下的网址下载该程式:
好了,那么根据这些流程,你觉得我们可以如何保护自己的主机呢?


小标题的图示主机能作的保护: 权限设定、套件更新、SELinux
基础篇里面的前面几章我们谈到很多关于档案权限方面的注意事项, 关于目录最重要的是那个 w (可写入)的权限,至于对档案来说,那个 r (可读取) 也是非常重要的!而由前一小节的图一我们也知道网路服务其实就是提供主机的档案资源给 client 端来查阅就是了。

根据这样的说法,你可以知道,如果你有某些不想要被读取的资料在主机上面的话, 那么将该资料的权限设定为不能被某些网路服务读取的情况, 就能达到最基础的保护了。所以您说档案权限重不重要啊!很重要的!不是吗?


  • 权限的重要性
    鸟哥常常在上课的时候会开玩笑,说如果你只要下达一个指令,那你的系统就得要重新安装了! 那就是:‘chmod -R 777 /’,这个指令可是‘极度危险’的喔!为何呢?因为系统上面本来就有很多需要被保护的资料, 例如 /etc/shadow 以及 /etc/passwd 等,尤其是 shadow 密码档案。虽然里头是加密过的资料, 不过别忘了,现在的 PC 速度实在太快了,而网路上又有太多暴力破解密码的软体, 如果你的 /etc/shadow 被取得后,嘿嘿!你的密码其实就算‘公开了’。那万一你有开放某些网路服务的话, 例如可连线登入的 ssh 服务或 mail 服务,那任何人都可以使用你的主机来登入, 或者是利用你的主机来收你主机上的其他使用者的信,唉!糗大了!

    再者,很多朋友在主机上面常常喜欢建立权限为 drwxrwxrwx 的目录来提供使用者上传资料, 这实在是很危险ㄟ!如果使用者的功力够高的话,他可以在网路软体如 httpd 的使用上, 来建立一些危险的 script 在你的 drwxrwxrwx 的目录中,那如果你不小心进入到该目录, 又不小心执行了该恶意使用者所建立的 script ,恭喜您~中标!

    另外,如果你是学校老师,为了公平与同学本身的权益起见,你会希望同学们所上传的资料不会被其他同学所窃取。 那么你该如何进行权限的规范?如果单纯的让学生通通上传到单一目录,并且没有指定特殊的权限时, 不但某些同学的资料可能会被窃取与复制,更惨的是,可能资料会被某些恶意同学所删除! 那可就麻烦了!所以,权限的设定真的很重要啦!

    而除了传统的权限之外,事实上目前 Linux 支援一种称为 ACL 的额外权限控制方式, 也支援更强化安全的 SELinux ,这两个小东西我们会在本章的后面部分继续介绍。


  • 严格的密码的重要性:
    很多使用者为了方便记忆,老是跟系统管理员说:‘喂!我的密码可不可以简单一点啊? 太麻烦的我都记不住!’如果您是那个可怜的系统管理员,你该如何回应? 如果你大开方便之门,未来可是后患无穷的!举例来说,如果你的 mail server 上面某个使用者帐号为 alex 好了,那么他的 email address 将会是:‘ alex@your.host.name ’, 那这个使用者由于使用习惯不良,他将他的 mail address 留在 Internet 上,所以很多人都知道这个 address。

    知道就知道,会有什么了不起吗?呵呵!了不起的很!如果有个坏家伙,他想要偷偷的收取 alex 的信, 那他就在他的收信软体上面偷偷填上你的主机,然后偷偷输入帐号 alex 并且输入密码为 alex , 如果你真的帮 alex 这个使用者建立同名的密码,哈哈!系啊(请台语发音,谢谢)!这个 alex 永远都收不到他的信了!

    这算还好呐!如果你有开放远端连线登入的服务,那么坏家伙就可以利用 alex 这个帐号与密码来登入你的主机, 如果你没有做好权限规划的话,哇!整部主机的资料被偷光光!那可有的瞧的了! 所以,您说密码不重要吗?我可不认为!


  • 套件更新的重要性:
    很多朋友由于网路文章的关系,可能会拿比较旧的 Linux distribution 来作为架站的平台, 举例来说,使用 Red Hat 9 来架站的朋友想必还是不少的。如果你真的利用旧的版本来进行网站的架设, 而且还对 Internet 开放服务的话,那么你的主机将会在不到一天的时间内被‘绑架’的! 为什么呢?因为套件软体都是可能有漏洞的,如果你没有补洞的话.....

    有些朋友认为:‘我的密码设定的严格一点,应该就好了吧?’真的吗?让我们瞧一瞧图一的流程, 第三个步骤是否使用到 httpd 这个程式的功能了,万一这个程式有问题怎么办? 举例来说,酷学园的朋友曾经在他举办的研讨会当中露一手如何绑架没有修补漏洞的 Linux 系统, 利用的就是 httpd 这个软体的漏洞,整个入侵的过程没有花费一分钟以上! 而且他取到的可是 root 的权限呐!不是什么阿猫阿狗的喔! 而且他完全没有输入任何密码,使用的入侵程式则是由 Internet 上面取得的。

    在上头这个例子鸟哥不是要说该朋友的功力,而是要提醒大家,套件修补的重要性! 要取得破解程式的管道实在太多了,但如果你都有在最短的时间内取得套件的更新的话, 那么至少该破解程式对你的系统就不会生效!你的主机自然就会比较安全些。 而这个问题在所有的作业系统上面都是存在的! Windows 系统也是每个月必须要推出他们的套件程式修补, 否则一样会被攻击或入侵啊!不过 Linux 的套件漏洞修补要快多了!


  • SELinux
    在最新的 Linux 2.6 版核心上所发展的 distributions 目前预设都会启动一个名为 SELinux 的核心模组, 这个 SELinux 必须要在开机载入核心时就得要载入,那这个玩意儿是啥咚咚? SELinux 是 Security Enhanced Linux (安全加强的 Linux) 的缩写, 他并不是一个防火墙的软体,而是一个‘针对档案系统权限作更细部规划的一个模组’。

    传统的 Linux 权限是分为三种身份 (owner, group, others) 以及三种权限 (r, w, x), 但事实上,这三种身份的三种权限组合并无法有效的管理所有系统上的 daemon 存取资料时所需要的行为。 因此美国国家安全局便发展出这个可以更细部规划档案权限功能的 SELinux 了。

    由于 SELinux 主要是进行档案系统的细部权限设定,所以想要使用 SELinux 的配置时, 需要对 Linux 的档案系统以及基础的作业系统概念要很清楚,否则将会使得很多的网路服务无法正确的启用系统资源, 导致你的主机很多服务无法存取系统资料!因此,对于我们刚接触到 Linux 架站的朋友来说, 建议你先关闭 SELinux ,等到两三年后对于 Linux 有很深的概念后, 再来尝试配置 SELinux 这个有趣的咚咚!

    也就是说,如果你没有关闭 SELinux 的话,那么你就得要针对 SELinux 进行档案权限的额外配置, 否则你的网路服务就不可能会正常的启动!那么如何关闭 SELinux 呢?你可以这样做:
    1. 先关闭 /etc/selinux/config 的内容 
    [root@linux ~]# vi /etc/selinux/config
    # 将底下的设定值改成这样:
    SELINUX=disabled
    
    2. 修改开机时 grub 的设定档
    [root@linux ~]# vi /boot/grub/menu.lst
    .....省略.....
        kernel /boot/vmlinuz-2.6.9 ro root=/dev/hda1 rhgb selinux=0
    .....省略.....
    
    3. 重新开机
    [root@linux ~]# sync; reboot
    
    因为 SELinux 必须要在开机的时候载入,同样的,要卸载也必须要重新开机才行! 因此,如果你使用的是您 distributions 的预设安装,那么几乎 SELinux 都是预设启动的! 你可以依据上述的几个步骤将 SELinux 取消后,重新开机即可。如果对于 SELinux 有兴趣的话, 底下的连结可以参考看看:

  • 大标题的图示主机的细部权限规划:ACL 的使用
    在前一小节当中我们提到 Linux 系统的权限是很重要的,偏偏传统的权限仅有三种身份、三种权限而已, 配合 chmod, umask, chown, chgrp 等指令来进行使用者与群组相关权限的设定。如果要进行比较复杂的权限设定时, 例如某个目录要开放给某个特定的使用者来使用时,传统的 owner,group,others 的权限方法可能就无法满足了。 不过还好,我们有 ACL 这个玩意儿可以使用!这玩意挺有趣的,底下我们就来谈一谈:


    小标题的图示什么是 ACL?
    ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者, 单一档案或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。

    由于 ACL 是传统的 Unix-like 作业系统权限的额外支援项目,因此要使用 ACL 必须要有档案系统的支援才行。 目前绝大部分的档案系统都有支援 ACL 的功能,包括 ReiserFS, EXT2/EXT3, JFS, XFS 等等。 在 SuSE 这个版本当中,预设是有启动 ACL 控制的,不过在 CentOS 则预设没有启动 ACL。 所以等一下要使用 ACL 的功能时,你必须要先启动你系统 filesystem 的支援才行喔!

    那 ACL 主要可以针对哪些方面来控制权限呢?他主要可以针对几个项目:
    • 使用者 (user):可以针对使用者来设定权限;
    • 群组 (group):针对群组为对象来设定其权限;
    • 预设属性 (mask):还可以针对在该目录下在建立新档案/目录时,规范新资料的预设权限;
    好了,再来看看如何让你的档案系统可以支援 ACL 吧!


    小标题的图示如何启动 ACL
    要让你的档案系统支援 ACL 非常的简单!假如要让你的 /home 支援 ACL 的话,可以直接这样做:
    [root@linux ~]# mount -o remount,acl /home
    [root@linux ~]# mount | grep /home
    /dev/hda5 on /home type ext3 (rw,acl)
    
    看到那个出现的 ACL 了吧!那就对了~如果没有出现这一行,你的档案系统是无法支援 ACL 的, 那下一节的练习您可就无能为力了~那如果想要一开机就让你的档案系统支援 ACL 呢? 呵呵!修改 /etc/fstab 就对了!将他改成类似底下的模样:
    [root@linux ~]# vi /etc/fstab
    /dev/hda5  /home   ext3   defaults,acl   1 2
    
    加入那一段特殊字体的资料,那么下次开机就能够支援 ACL 了!很简单吧! ^_^


    小标题的图示ACL 的设定技巧: getfacl, setfacl
    好了,让你的 filesystem 启动 ACL 支援后,接下来该如何设定与观察 ACL 呢? 很简单,利用这两个指令就可以了:
    • getfacl:取得某个档案/目录的 ACL 设定项目;
    • setfacl:设定某个目录/档案的 ACL 规范。
    先让我们来瞧一瞧 setfacl 如何使用吧!
    [root@linux ~]# setfacl [-mxdb] 设定值
    参数:
    -m  :设定一个 ACL 规范;
    -x  :取消一个 ACL 规范;
    -b  :全部的 ACL 规范都移除;
    -d  :设定预设的 ACL 规范,仅能针对目录使用。
    
    最常用的就是那个 -m 的参数啦!用来定义一笔 ACL 的设定规范说。那么 ACL 该如何设定呢? 不同的使用者、群组与预设权限设定方法有点不同,不过,基本上有底下这三种简易的设定方法:
    1. 针对使用者
    设定值的规范为: u:[使用者帐号列表]:[rwx]
    例如针对 dmtsai 这个使用者来规范其权限为 rx ,则:
    [root@linux ~]# setfacl -m u:dmtsai:rx somefilename
    
    2. 针对群组来设定
    设定值的规范为: g:[群组名]:[rwx]
    例如针对 users 这个群组来规范其权限为 rw ,则:
    [root@linux ~]# setfacl -m g:users:rw somefilename
    
    3. 针对预设权限来规范,类似 umask 的功能
    设定值的规范为: m:[rwx]
    例如假设预设权限为 rwx,则:
    [root@linux ~]# setfacl -m m:rwx somefilename
    
    了解了上面的设定方式后,现在让我们来实际操作一下吧!假设:
    • 你已经将 /home 这个独立的 partition 设定了 ACL 的支援了,
    • 并且在 /home 底下设定了一个名称为 project 的目录,
    • 该目录要给 eric 这个使用者,且属于 users 这个群组,预设权限应该是 770 ;
    • 有个使用者帐号名称为 jordan ,他属于 jordan 那个群组,但他想要进入到 project 那个目录来工作, 意思是说,jordan 在该目录下需有 w 的权限才行;
    • 有个使用者他是其他班级的老师,名称为 tip ,群组名亦为 tip ,他想要进入该目录查阅所有档案资料, 但是不能够进行删除与新增的工作,亦即他不能拥有 w 的权限。
    在传统的 Linux 档案权限中,要达成上述的功能时,你得要让 jordan 与 tip 这两个使用者加入 users 那个群组才行,但是 jordan 是希望可以在该目录内工作的,所以他必须要拥有 w 的权限, 而 tip 却仅能读取,所以他不能拥有 w 的权限!哇!如此一来,就无法完成上述的交代事项了! 此时我们只好透过 ACL 来单独的针对 tip/jordan 这两个使用者来设定他的权限呐!整个流程可以是这样的:
    1. 建立该目录并规划好权限:
    [root@linux ~]# mkdir /home/project
    [root@linux ~]# chown eric:users /home/project
    [root@linux ~]# chmod 770 /home/project
    [root@linux ~]# ls -ld /home/project
    drwxrwx---  2 eric users 4096 Sep  5 15:54 /home/project/
    # 瞧!已经将需要的目录规划好了!使用者/群组与权限都OK了;
    
    2. 建立 jordan 的使用权限(需要有 w):
    [root@linux ~]# cd /home
    [root@linux home]# setfacl -m u:jordan:rwx project
    
    [root@linux home]# getfacl project
    # file: project    <==前面三行只是指出这个档名的传统 Linux 权限
    # owner: eric
    # group: users
    user::rwx          <==注意看,这是针对‘预设使用者’的权限设定;
    user:jordan:rwx    <==这是针对 jordan 的权限设定
    group::rwx         <==这是针对‘预设群组’的权限设定
    mask::rwx          <==这玩意儿则是预设属性啦!
    other::---
    # 上面这个输出共 8 行我们会在底下详细说明!
    
    [root@linux home]# ls -ld project
    drwxrwx---+ 2 eric users 4096 Sep  5 15:54 project
    # 看看!多了一个 + 的标志喔!
    
    那个 getfacl 指令可以用来取得某个档名的 ACL 资料啦!至于输出的共 8 行资料你必须要这样看:
    • 第 1-3 行:前面三行会显示出这个档案的 Linux 传统属性,包括使用者、群组与档名,预设会用 # 开头作为说明;

    • 接下来的每一行的输出会以底下的格式来处理:
      针对的目标(使用者、群组等]:[各种帐号列表]:[rwx]
      针对的目标主要有:
      	user	使用者
      	group	群组
      	mask	预设权限
      	other	非本群组的其他使用者
      各种帐号列表中,如果没有任何资料,如 user::rwx ,则代表预设使用者帐号;
      
      主要有三个栏位,用‘ : ’来隔开三个栏位;

    • 第 4 行‘user::rwx’:由于使用者列表栏位中没有填写任何帐号,所以代表这个权限是针对预设使用者, 亦即是这个目录的拥有人 eric 啦,是 eric 的权限为‘ rwx ’的意思说!

    • 第 5 行‘user:jordan:rwx’:使用者 jordan 在这个目录下具有 rwx 的权限的意思啦!

    • 第 6 行‘group::rwx’:没有填写群组名称,所以同样是预设群组,亦即是那个 users 啰, 该群组的权限为‘rwx’啦;

    • 第 7 行‘mask::rwx’:预设的 mask 为 rwx 的意思,这个 mask 是有用途的!底下会说明。

    • 第 8 行‘other::---’:指的就是其他的未规定的使用者与群组的权限了
    好了,现在 jordan 这位朋友当他进入 /home/project 后,立刻就会拥有 rwx 的权限了! 而不需要加入 users 这个群组呢!真是很方便吧!太好了! 另外,你如何知道某个档名具有额外的 ACL 权限呢?可以参考上面最终的输出结果中, 会发现 /home/project 这个目录的权限项目竟然是出现‘ drwxrwx---+ ’呢! 那个多出来的‘ + ’就是表示该档名有额外的 ACL 控制项目啦! 那接下来如何处理 tip 呢?同样使用 ACL 来控制:
    3. 设定 tip 这个使用者的权限资料: 
    [root@linux home]# setfacl -m u:tip:rx project
    [root@linux home]# getfacl project
    # file: project
    # owner: eric
    # group: users
    user::rwx
    user:tip:r-x   <==瞧!多出来的咚咚啦!
    user:jordan:rwx
    group::rwx
    mask::rwx
    other::---
    
    如此一来, tip 这位使用者则仅能进入该目录去读取而已,而无法进行写入的动作呢! 是否很方便啊!有了 ACL 的控制项目后,您就可以将你系统内的有需要使用到特殊权限设定的目录进行细部设定, 让你的系统变的更合理,更安全啊!


  • ACL 内的 mask 项目
    虽然这样就能够设定好一个 ACL 控制项目,不过你还需要了解到在 ACL 内的 mask 所代表的意义喔! 在上面的那个小案例当中,我们并没有去设定这个 mask,mask 需要与使用者的权限进行逻辑运算 (AND) 后, 才是有效的权限呐(effective permission)!

    举例来说,如果你觉得你的目录要让所有的人都暂时仅能读取不能写入时,可以将 ACL 内的 mask 设定为 rx 即可, 那其他人就不需要再额外的设定了!看看底下这个例子:
    [root@linux ~]# cd /home
    [root@linux home]# setfacl -m m:rx project
    [root@linux home]# getfacl project
    # file: project
    # owner: eric
    # group: users
    user::rwx
    user:tip:r-x
    user:jordan:rwx        #effective:r-x
    group::rwx             #effective:r-x
    mask::r-x
    other::---
    
    上面的输出全部都是 getfacl 的输出结果,鸟哥并没有加工啊! ^_^! 原本的 jordan 具有‘rwx’的权限,而 mask 仅有‘r-x’,两者去比较后 ‘两者都有的权限才会生效,就称为有效权限 (effective permission) 啰’! 所以,jordan 则仅会有 rx 的权限而已啊!这样对 mask 的用法了了吗?

  • 大标题的图示一些常见的攻击手法与主机的保护方式
    我们由图一了解到资料传送到本机时所需要经过的几道防线后, 现在您应该比较清楚为何我们常常在基础篇里面一直谈到设定正确的权限可以保护您的主机了吧? 那么除了前面的谈到的主机基本保护之外, 通常人家是如何攻击你的 Linux 主机呢?底下我们就来谈一谈吧! 先了解一下人家是如何攻击你的,我们才有办法想到如何防御,您说是吧?!


  • 取得帐号资讯后猜密码:
    由于很多人喜欢用自己的名字来作为帐号资讯,因此帐号的取得是很容易的! 举例来说,如果你的朋友将你的 email address 不小心泄漏出去,例如: dmtsai@your.host.name 之类的样式, 那么人家就会知道你有一部主机,名称为 your.host.name,且在这部主机上面会有一个使用者帐号, 帐号名称为 dmtsai ,之后这个坏家伙再利用某些特殊软体例如 nmap 来进行你主机的 port scan 之后,嘿嘿!他就可以开始透过你主机有启动的软体功能来猜你这个帐号的密码了!

    另外,如果你常常观察你的主机登录档,那你也会发现如果你的主机有启动 Mail server 的服务时, 你的登录档就会常常出现有些怪家伙尝试以一些奇怪的常见帐号在试图猜测你的密码, 举例来说像:admin, administrator, webmaster .... 之类的帐号,尝试来窃取你的私人信件。 如果你的主机真的有这类的帐号,而且这类的帐号还没有良好的密码规划,那就容易‘中标’! 唉!真是麻烦!所以我们常讲,系统帐号千万不能给予密码,容易被猜密码啊

    这种猜密码的攻击方式算是最早期的入侵模式之一了,攻击者知道你的帐号,或者是可以猜出来你的系统有哪些帐号, 欠缺的就只是密码而已, 因此他会‘很努力的’去猜你的密码,此时,你的密码规划如果不好的话,很容易就被攻击了! 主机也很容易被绑架啊!所以,良好的密码设置习惯是很重要的

    不过这种攻击方式比较费时,因为目前很多软体都有密码输入次数的限制, 如果连续输入三次密码还不能成功的登入,那该次连线就会被断线! 所以,这种攻击方式日益减少,目前偶而还会看到就是了!这也是初级 cracker 会使用的方式之一。 那我们要如何保护呢?基本方式是这样的:
    • 减少资讯的曝光机会:例如不要将 Email Address 随意散布到 Internet 上头;
    • 建立较严格的密码设定规则:包括 /etc/shadow, /etc/login.defs 等档案的设定, 建议您可以参考基础篇内的 帐号管理那一章来规范你的使用者密码变更时间等等, 如果主机够稳定且不会持续加入某些帐号时,也可以考虑使用 chattr 来限制帐号 (/etc/passwd, /etc/shadow) 的更改;
    • 完善的权限设定:由于这类的攻击方式会取得你的某个使用者帐号的登入权限, 所以如果你的系统权限设定得宜的话,那么攻击者也仅能取得一般使用者的权限而已, 对于主机的伤害比较有限啦!所以说,权限设定是重要的;

  • 利用系统的程式漏洞‘主动’攻击:
    图一里面的第三个步骤中,我们知道如果你的主机有开放网路服务时, 就必须有启动某个网路软体嘛!我们也知道由于软体可能撰写方式的问题,可能产生一些会被 cracker 乱用的臭虫程式码,而这些臭虫程式码由于产生问题的大小,有分为 bug (臭虫,可能会造成系统的不稳定或当机) 与 Security (安全问题,程式码撰写方式会导致系统的使用权限被恶意者所掌握) 等问题。

    当程式的问题被公布后,某些较高阶的 cracker 会尝试撰写一些针对这个漏洞的攻击程式码, 并且将这个程式码放置到 cracker 常去的网站上面,藉以推销自己的‘功力’..... 鸟哥要提醒的是,这种程式码‘是很容易被取得的’。 当更多‘盈盈美黛子(台语,闲闲没事干之意)’取得这些程式码后,他可能会想要‘试一试这个攻击程式的威力’, 所以就拿来‘扫射’一番,如果你八字比较轻,或者当天星座学家说你比较倒楣时, 可能就会被不小心的攻击到......

    这种攻击模式是目前最常见的,因为攻击者只要拿到攻击程式就可以进行攻击了, ‘而且由攻击开始到取得你系统的 root 权限不需要猜密码, 不需要两分钟,就能够立刻入侵成功’,所以‘盈盈美黛子’们最爱的就是这个咚咚了。 但这个玩意儿本身是靠‘你主机的程式漏洞’来攻击的,所以,如果你的主机随时保持在即时更新的阶段, 或者是关闭大部分不需要的程式,那就可以躲避过这个问题。因此,你应该要这样做:
    • 关闭不需要的网路服务:开的 port 越少,可以被入侵的管道越少, 一部主机负责的服务越单纯,越容易找出问题点。看看前面谈到的 限制 Linux 的连线埠口 一章吧!
    • 随时保持更新:这个没话讲!一定要进行的!参考前一章 网路升级套件
    • 关闭不需要的软体功能:举例来说,后面会提到的远端登入伺服器 SSH 可以提供 root 由远端登入,那么危险的事情当然要给他取消啊!^_^

  • 利用社交工程作欺骗:
    社交工程 (Social Engineering) 指的其实很简单,就是透过人与人的互动来达到‘入侵’的目的! @_@!人与人的互动可以入侵你的主机?鸟哥在呼咙你吗?当然不是。

    近日在台湾的社会你不是常看到某些人会以‘退税、中奖、花小钱买贵重物品’等名义来欺骗善良老百姓, 让老百姓掏出口袋里的金钱给那些可恶的金光党吗?社交工程也是类似的方法。在大公司里面, 或许你可能会接到这样的电话:‘我是人事部门的经理,我的帐号为何突然间不能登入了? 你给我看一看,恩?干脆直接帮我另建一个帐号,我告诉你我要的密码是....’。如果你一时不查给他帐号密码的话, 你的主机可能就这样被绑走了~

    社交工程的欺骗方法多的是,包括使用‘好心的 email 通知’、‘警告信函’、‘中奖单’等等, 在在都是要欺骗你的帐号密码,有的则利用钓鱼方式来欺骗你在某些恶意网站上面输入你的帐号密码, 很讨厌的啦!那要如何防范呢?
    • 追踪对谈者:不要一味的相信对方,你必须要有信心的向上呈报, 不要一时心慌就中了计!
    • 不要随意透露帐号/密码等资讯:最好不要随意在 Internet 上面填写这些资料, 真的很危险的!因为在 Internet 上面,你永远不知道对方荧幕前面坐着的是谁?

  • 利用程式功能的‘被动’攻击:
    啥?除了主动攻击之外,还有所谓的被动攻击喔?没错啊,‘系金ㄟ’!那如何作被动攻击呢? 那就得要由‘恶意网站’讲起了。如果你喜欢上网随意浏览的话,那么有的时候可能会连上一些广告很多, 或者是一堆弹出式视窗的网站,这些网站有时还会很好心的‘提供你很多好用的软体自动下载与安装’的功能, 如果该网站是你所信任的,例如 Red Hat, CentOS, Windows 官网的话,那还好, 如果是一个你也不清楚他是干嘛的网站,那你是否要同意下载安装该软体?

    如果你常常在注意一些网路危机处理的相关新闻时,常会发现 Windows 的浏览器 (IE) 有问题, 有时则是全部的浏览器 (Firefox, Netscap, IE...) 都会出现问题。那你会不会觉得奇怪啊, 怎么‘浏览器也会有问题?’这是因为很多浏览器会主动的答应对方 WWW 主机所提供的各项程式功能, 或者是自动安装来自对方主机的软体,有时浏览器还可能由于程式发生安全问题, 让对方 WWW 浏览器得以传送恶意程式码给你的主机来执行,嘿嘿!中标!

    那你又会想啊,那我干嘛浏览那样的恶意网站?喝!总是会有些粗心大意的时候啊! 如果你今天不小心收到一个 email ,里面告诉你你的银行帐号有问题, 希望你赶紧连上某个网页去看看你的帐号是否在有问题的行列中,你会不会去? 如果今天有个网路消息说某某网页在提供大特价商品,那你会不会去碰碰运气? 都是可能的啊!不过,这也就很容易被对方攻击到了。

    那如何防备啊?当然建立良好的习惯最重要了:
    • 随时更新主机上的所有套件:如果你的浏览器是没有问题的, 那对方传递恶意程式码时,你的浏览器就不会执行,那自然安全的多啊!
    • 较小化软体的功能:举例来说,让你的收信软体不要主动的下载档案, 让你的浏览器在安装某些软体时,要通过你的确认后才安装,这样就比较容易克服一些小麻烦;
    • 不要连接到不明的主机:其实鸟哥认为这个才最难! 因为很多时候我们都用 google 在搜寻问题的解决之道啊,那你如何知道对方是否是骗人的? 所以,前面两点防备还是很重要的!不要以为没有连接上恶意网站就不会有问题啊!

  • 蠕虫或木马的 rootkit:
    rootkit 意思是说可以取得 root 权限的一群工具组 (kit),就如同前面主动攻击程式漏洞的方法一样, rootkit 主要也是透过主机的程式漏洞。不过, rootkit 也会透过社交工程让使用者下载、安装 rootkit 软体, 结果让 cracker 得以简单的绑架对方主机啊!

    rootkit 除了可以透过上述的方法来进行入侵之外,rootkit 还会伪装或者是进行自我复制, 举例来说,很多的 rootkit 本身就是蠕虫或者是木马间谍程式。蠕虫会让你的主机一直发送封包向外攻击, 结果会让你的网路频宽被吃光光,例如 2001-2003 年间的 Nimda, Code Red 等等;至于木马程式 (Trojan Horse) 则会对你的主机进行开启后门 (开一个 port 来让 cracker 主动的入侵),结果就是....绑架、绑架、绑架!

    rootkit 其实挺不好追踪的,因为很多时候他会主动的去修改系统观察的指令, 包括 ls, top, netstat, ps, who, w, last, find 等等,让你看不到某些有问题的程式, 如此一来,你的 Linux 主机就很容易被当成是跳板了!有够危险!那如何防备呢?
    • 不要随意安装不明来源的档案或者是不明网站的档案资料;
    • 不要让系统有太多危险的指令:例如 SUID/SGID 的程式, 这些程式很可能会造成使用者不当的使用,而使得木马程式有机可趁!
    • 可以定时以 rkhunter 之类的软体来追查:有个网站提供 rootkit 程式的检查,你可以前往下载与分析你的主机:
      http://www.rootkit.nl/projects/rootkit_hunter.html

  • DoS 攻击法 ( Denial of Service )
    这类型的攻击中文翻译成‘阻断式攻击’,这种攻击法也很要命,而且方法有很多,最常见的就属 SYN Flood 攻击法了!还记得我们在网路基础里面提到的,当主机接收了一个带有 SYN 的 TCP 封包之后,就会启用对方要求的 port 来等待连线,并且发送出回应封包 (带有 SYN/ACK 旗标的 TCP 封包),并等待 Client 端的再次回应。

    好了,在这个步骤当中我们来想一想,如果 cient 端在发送出 SYN 的封包后,却将来自 Server 端的确认封包丢弃,那么您的 Server 端就会一直空等,而且 Client 端可以透过软体功能,在短短的时间内持续发送出这样的 SYN 封包,那么您的 Server 就会持续不断的发送确认封包,并且开启大量的 port 在空等~呵呵!等到全部主机的 port 都启用完毕,那么.....系统就挂了!

    更可怕的是,通常攻击主机的一方不会只有一部!他会透过 Internet 上面的僵尸主机 (已经成为跳板,但网站主却没有发现的主机) 发动全体攻击,让你的主机在短时间内就立刻挂点。 这种 DoS 的攻击手法比较类似‘玉石俱焚’的手段, 他不是入侵您的系统,而是要让您的系统挂点呢! 最常被用来作为阻断式服务的网路服务就是 WWW 了,因为 WWW 通常得对整个 Internet 开放服务。

    这种攻击方法也是最难处理的,因为要嘛就得要系统核心有支援自动抵挡 DoS 攻击的机制, 要嘛您就得要自行撰写侦测软体来判断!真是麻烦啊~而除非您的网站非常大, 并且‘得罪不少人’,否则应该不会被 DoS 攻击啦! ^_^


  • 其他:
    上面提到的都是比较常见的攻击方法,是还有一些高竿的攻击法啦, 不过那些攻击法都需要有比较高的技术水准,例如 IP 欺骗。他可以欺骗你主机告知该封包来源是来自信任网域, 而且透过封包传送的机制,由攻击的一方持续的主动发送出确认封包与工作指令。 如此一来,你的主机可能就会误判该封包确实有回应,而且是来自内部的主机。

    不过我们知道网际网路是有路由的,而每部主机在每一个时段的 ACK 确认码都不相同, 所以这个方式要达成可以登入,会比较麻烦,所以说,不太容易发生在我们这些小型主机上面啦! 不过你还是得要注意一下说:
    • 设定规则完善的防火墙:利用 Linux 内建的防火墙软体 iptables 建立较为完善的防火墙,可以防范部分的攻击行为;
    • 核心功能:这部份比较复杂,您必须要对系统核心有很深入的了解, 才有办法设定好你的核心网路功能。
    • 登录档与系统监控:你可以透过分析登录档来了解系统的状况, 另外也可以透过类似 MRTG 之类的监控软体 来即时了解到系统是否有异常,这些工作都是很好的努力方向!

  • 主机防护小结语:
    要让你的系统更安全,没有‘三两三’是没办法达成的!我们也一直鼓吹, ‘维护网站比架设网站还要重要’的观念!因为‘一人得道鸡犬升天’,同样的道理:‘一人中标全员挂点’, 不要以为你的主机没有啥重要资料,被入侵或被植入木马也没有关系, 因为我们的伺服器通常会对内部来源的主机规范的较为宽松,如果你的主机在公司内部, 但是不小心被入侵的话,那么贵公司的伺服器是否就会暴露在危险的环境当中了?

    另外,在蠕虫很‘发达’的年代,我们也会发现只要区域网路里面有一部主机中标, 整个区域网路就会无法使用网路了,因为频宽已经被蠕虫塞爆! 如果老板发现他今天没有办法收信了,但无法收信的原因并非伺服器挂点, 而是因为内部人员的某部个人电脑中了蠕虫,而那部主机中蠕虫的原因只是因为该使用者不小心去看了一下色情网站, 你觉得老板会高兴的跟该员工一起看色情网站还是 fire 掉该人员?

    所以啊,主机防护还是很重要的!不要小看了!提供几个方向给大家思考看看吧:
    1. 建立完善的登入密码规则限制;
    2. 完善的主机权限设定;
    3. 设定自动升级与修补套件漏洞、及移除危险套件;
    4. 在每项系统服务的设定当中,强化安全设定的项目;
    5. 利用 iptables, TCP_Wrappers 强化网路防火墙;
    6. 利用主机监控软体如 MRTG 与 logwatch 来分析主机状况与登录档;

  • 大标题的图示被入侵后的修复工作
    如果你的主机被入侵的话,而你也由于了解到主机监控的需要,所以在最短的时间内发现此一事件, 那么该如何针对这个被入侵的主机来修复?那如果你要修复的话,你这个网管人员还需要哪些额外的技能? 底下我们就来谈一谈。


    小标题的图示网管人员的额外技巧与任务
    从前一小节的分析当中,您会发现网管还真的是挺累的,他需要对于作业系统有一定程度的熟悉, 对于程序的运作 (process) 与权限概念,则需要更了解!否则就麻烦了!那除了作业系统的基本概念之外, 咱们网管还需要啥特殊技巧呢?当然需要啊!其实一部主机最常发生问题的状况, 都是由‘内部的网路误用所产生的’,所以啊,你只管好主机而已是‘没有办法杜绝问题’的啦! 底下就来谈谈你还需要啥技巧呢?

  • 了解什么是需要保护的内容:
    我的天呐,还要知道什么是需要保护的呀?呵呵!没错,就是如此!由刚刚我们知道的主机入侵方法当中, 不难了解,只要有人坐在您的主机前面,那么任何事都有可能会发生!因此,如果您的主机相当的重要, 请‘不要让任何人靠近!’您可以参考一下汤姆克鲁斯在‘不可能的任务’里面要窃取一部电脑内的资料的困难度! ^_^""
    • 硬体:能锁就锁吧!
    • 软体:还包含最重要的资料呢!
  • 预防黑客( Black hats )的入侵:
    这可不是开玩笑的,什么是黑客呀!这是因为原本在西部电影当中,坏人都是戴黑色帽子的, 所以之前的人们就称网路攻击者为 Black hats 啦!在预防这方面的攻击者时,除了严格管制网路的登入之外, 还需要特别控制原本您的主机中的人物!就我们小网站来说,不要以为好朋友就随便他啦! 他说要指定密码是跟他的帐号相同比较好记,您就答应他!等到人家用他的密码登入您的主机,并破坏您的主机, 那可就得不偿失了!如果是大企业的话,那么员工使用网路时,也要分等级的呢! ^_^

  • 主机环境安全化:
    没什么好讲的,除了多关心,还是多关心!仔细的分析登录档,常常上网看看最新的安全通告,这都是最基础的! 还包含了以最快的速度更新有问题的套件!因为,越快更新您的套件,就越快可以杜绝黑客的入侵!

  • 防火墙规则的订定:
    这部份比较麻烦一些啦!因为您必需要不断的测试测试再测试!以取得最佳化的网路安全设定! 怎么说呢?要晓得的是,如果您的防火墙规则订定得太多的时候, 那么一个资料封包就要经过越多的关卡才能完整的通过防火墙,以进入到主机内部!嘿嘿! 这可是相当的花费时间的!会造成主机的效能不彰!特别留意这一点呢!

  • 即时维护您的主机:
    就像刚刚说的,您必需要随时维护您的主机,因为,防火墙不是一经设定之后就不用在再他了! 因为,再严密的防火墙,也会有漏洞的!这些漏洞包括防火规则设定不良、利用较新的侦测入侵技术、 利用您的旧软体的服务漏洞等等!所以,必需要即时维护您的主机呀!这方面除了分析 log files 之外,也可以藉由即时侦测来进行这个工作!例如 PortSentry 就是蛮不错的一套软体呢!

  • 良好的教育训练课程:
    不是所有的人都是电脑网路高手,尤其虽然现在资讯爆炸但是仍然有很多的机会会遇到电脑白痴呀! 这个时候,要晓得的是,我们对于内部网域通常没有太多的规范,那如果他用内部的电脑去做坏事怎么办? 有时候还是无心的~挖哩~所以说,需要特别的教育训练课程呀!这也是公司需要网管的主因之一!

  • 完善的备份计划:
    天有不测风云,人有旦夕祸福呀!什么人都不知道什么时候会有大地震、我们也都不知道什么时候会突然的硬碟挂掉去~ 所以说,完善的备份计划是相当重要的!此外,大概没有人会说他的主机是 100% 的安全吧! 那如果你的系统被入侵,造成资料的损毁时,你要如何复原你的主机啊?呵呵!一个良好的网站管理人员, 无时无刻都会进行重要资料的备份的!很重要啊! 这一部份请参考一下基础学习篇Linux 主机备份的内容吧! 本书后续的远端连线伺服器 SSH 章节内也会提到一个很棒的 rsync 工具,您可以瞧瞧!

  • 小标题的图示入侵恢复工作
    所谓‘百密一疏’啊,人不是神,总会有考虑不周的情况,万一您的主机就因为这‘一疏’导致被入侵了, 那该怎么办?由上面的说明当中,我们知道‘木马’是很严重的,因为他会在您的系统下开个后门(Back door)让攻击者可以登入您的主机,而且还会窜改您 Linux 上面的程式,让您找不到该木马程式!怎么办?

    很多朋友都习惯‘反正只要将 root 的密码改回来就好了’ 这样的观点,事实上,那样一部主机还是有被做为中继站的危险啊!所以, 万一您的主机被入侵了,最好的方法还是‘重新安装Linux ’会比较干净

    那该如何重新安装呢?很多朋友一再地安装,却一再地被入侵~为什么呢?因为他没有‘记取教训’啊!呵呵! 底下我们就来谈一谈,一部被入侵的主机应该如何修复比较好?
    1. 立即拔除网路线:

      既然发现被入侵了,那么第一件事情就是拿掉网路功能!拿掉网路功能最简单的作法自然就是拔掉网路线了! 事实上,拿掉网路线最主要的功能除了保护自己之外,还可以保护同网域的其他主机。怎么说呢?举个最近 (2003/08) 发病的疾风病毒好了,他会感染同网域之内的其他主机喔!所以,拔除网路线之后, 远端的攻击者立即就无法进入您的 Linux 主机,而且您还可以保护网域内的其他相关主机啊!

    2. 分析登录档资讯,搜寻可能的入侵途径:

      被入侵之后,决不是只要重新安装就好,还需要额外分析 ‘为什么我的主机这一次会被入侵,对方是如何入侵的?’, 如果您能够找出问题点,那么不但您的 Linux 功力立刻增强了,主机也会越来越安全喔! 而如果您不知道如何找出被入侵的可能途径,那么重新安装后,下次还是可能被以同样的方法入侵啊! 粉麻烦的啦!好了,那该如何找出入侵的途径呢?

      • 分析登录档:低级的 cracker 通常仅是利用工具软体来入侵您的系统,所以我们可以藉由分析一些主要的登录档来找出对方的 IP 以及可能有问题的漏洞。可以分析 /var/log/messages, /var/log/secure 还有利用 last 指令来找出上次登入者的资讯。

      • 检查主机开放的服务:很多 Linux 使用者常常不晓得自己的系统上面开了多少的服务?我们说过, 每个服务都有其漏洞或者是不应该启用的增强型或者是测试型功能,所以,找出您系统上面的服务, 并且检查一下每个服务是否有漏洞,或者是在设定上面有了缺失,然后一个一个的整理吧!

      • 查询 Internet 上面的安全通报: 透过安全通报来了解一下最新的漏洞资讯,说不定您的问题就在上面!

    3. 重要资料备份:

      主机被入侵后,显得问题相当的严重,为什么呢?因为主机上面有相当重要的资料啊! 如果主机上面没有重要的资料,那么直接重新安装就好了!所以,被入侵之后,检查完了入侵途径, 再来就是要备份重要的资料了。好了,问个问题,什么是‘重要资料’? who, ps, ls 等等指令是重要资料吗?还是 httpd.conf 等设定档是重要资料?又或者是 /etc/passwd, /etc/shadow 才是重要资料?

      呵呵!基本上,重要的资料应该是‘非 Linux 系统上面原有的资料’,例如 /etc/passwd, /etc/shadow, WWW 网页的资料, /home 里面的使用者重要档案等等,至于 /etc/*, /usr/, /var 等目录下的资料,就不见得需要备份了。 注意:不要备份一些 binary 执行档,因为 Linux 系统安装完毕后本来就有这些档案,此外, 这些档案也很有可能‘已经被窜改过了’,那备份这些资料,反而造成下次系统还是不干净!

    4. 重新全新安装:

      备份完了资料,再来就是重新安装 Linux 系统了。而在这次的安装中, 您最好选择适合您自己的安装套件即可,不要全部套件都给他安装上去啊!挺危险的!

    5. 套件的漏洞修补:

      记得啊,重新安装完毕之后,请立即更新您的系统套件,否则还是会被入侵的啦!鸟哥喜欢先在其他比较干净的环境下将 Internet 上面的漏洞修补套件下载下来,然后烧录起来,然后拿到自己的刚刚安装完成的系统上面,mount CD 之后全部给他更新,更新之后,并且设定了相关的防火墙机制,同时进行下一步骤‘ 关闭或移除不需要的服务’后,我才将网路线插上主机的网路卡上! 因为鸟哥不敢确定在安装完毕后,连上 Internet 去更新套件的这段时间,会不会又受到入侵攻击说....

    6. 关闭或移除不需要的服务:

      这个重要性不需要再讲了吧?!启用越少的服务,系统当然可以被入侵的可能性就比较低。

    7. 资料回复与恢复服务设定:

      刚刚备份的资料要赶紧的复制回来系统,同时将系统的服务再次的重新开放,请注意, 这些服务的设定最好能够再次的确认一下,避免一些不恰当的设定参数在里头喔!

    8. 连上 Internet:

      所有的工作都进行的差不多了,那么才将刚刚拿掉的网路线接上来吧!恢复主机的运作了!
    经过这一连串的动作后,您的主机应该会恢复到比较干净的环境,此时还不能掉以轻心, 最好还是参考防火墙的设定,并且多方面的参考 Internet 上面一些老手的经验,好让您的主机可以更安全一些!

    大标题的图示重点回顾
    • 要管制登入伺服器的来源主机,得要了解网路封包的特性,这主要包括 TCP/IP 的封包协定, 以及重要的 Socket Pair ,亦即来源与目标的 IP 与 port 等。在 TCP 封包方面,则还得了解 SYN/ACK 等封包状态;
    • TCP 封包要进入我们 Linux 本机,至少需要通过 IP Filter, super daemon/TCP Wrappers, Daemons, 密码验证功能 等等步骤;
    • 主机的基本保护之一,就是拥有正确的权限设定。而复杂的权限设定可以利用 ACL 或者是 SELinux 来辅助;
    • ACL 必须要让 Filesystem 支援,故可以在 /etc/fstab 内加入 acl 的控制参数;
    • 关闭 SELinux 可在 /etc/selinux/config 档案内设定,亦可在核心功能中加入 selinux=0 的项目;
    • ACL 主要可针对 user, group, mask 来设定,可针对单一个人帐号设定权限;
    • 设定 ACL 的方法为使用 setfacl, 查阅则以 getfacl 指令来动作;
    • ACL 内的 mask 是很重要的,必须与使用者的权限进行逻辑 AND 的运算,才会得到正确的最终权限;
    • rootkit 为一种取得 root 的工具组,您可以利用 rkhunter 来查询您主机是否被植入 rootkit;
    • 网管人员应该注意在员工的教育训练还有主机的完善备份方案上面;
    • 一些所谓的黑客软体,几乎都是透过您的 Linux 上面的套件漏洞来攻击 Linux 主机的;
    • 套件升级是预防被入侵的最有效方法之一;
    • 良好的登录档分析习惯可以在短时间内发现系统的漏洞,并加以修复。

    大标题的图示课后练习
    • 我老是发现我的系统怪怪的,似乎有点停顿的模样,怀疑可能是 CPU 负荷太大,所以要去检查一下系统相关的资讯。请问,我该以什么指令去检查我的系统相关的资讯?
    • 可以使用 top, sar, free, ps -aux, uptime, last 等功能去查询系统的相关资讯喔!然后再以 kill 之类的指令删除;
    • 我怀疑我的系统上面有过多的具有 SUID 的档案存在,导致一般使用者可以随意的取得 root 的权限,请问,我要如何找出这些具有 SUID 权限的档案?
    • 因为 SUID 是 4000 这个权限的模样,所以我可以这样做:
      find / -perm +4000
    • 我由国内一些 ftp 网站上下载了 Red Hat 公司释出的套件,我想安装他,但又不知道该套件档案是否被修改过! 请问我该如何确定这个套件的可用性?
    • 利用最简易的 MD5 编码来测试一下,例如‘ md5sum 套件名称’,再比对与原始套件释出的 MD5 数据是否相同!?
    • 如果我发现使用‘ setfacl -m u:dmtsai:rwx /path/to/file ’时,系统却显示‘setfacl: Operation not supported’, 你认为是哪里出问题?
    • 这是由于您的 filesystem 没有启用 ACL 支援,或者是系统的核心不支援。 请先使用 mount -o remount,acl /mount_point 测试看能否支援 ACL ,若不支援时,则可能是由于核心版本太旧了。
    • 如果要设定 dmtsai 可以使用 /home/project 这个目录 (假设 /home 已经支援 ACL),在该目录内 dmtsai 可以拥有完整的权限。请问该如何设定该目录?
    • 除了使用 setfacl -m u:dmtsai:rwx /home/project 之外,还需要设定 setfacl -m m:rwx /home/project , 因为 ACL 在目录方面,必须透过使用者权限及 mask 的逻辑运算后才能生效!
    • SELinux 是否为防火墙?
    • SELinux 并非防火墙,他是用来作为更细部权限设定的一个核心模组。
    • 良好的密码规划是防备主机的第一要务,请问 Linux 系统当中,关于密码相关的档案与规则设定在哪些档案里面?
    • 密码的设定规则在 /etc/login.defs 里面!至于密码档案在 /etc/shadow 内!
    • 简易说明,当一部主机被入侵之后,应该如何处理?
    • 找出问题、重新安装、漏洞修补、资料还原!请参考本章最后一节的说明。

    大标题的图示参考资料

    2002/08/12:第一次完成日期!
    2003/08/23:重新编排与增加重点回顾、课后练习
    2006/08/31:将旧的文章移动到此处
    2006/09/06:增加 SELinux 的简单说明,增加 ACL 的控制项目!

    2002/08/12以来统计人数

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