Linux 版 (精华区)

发信人: jonny (san), 信区: Linux
标  题: 第24章 安全
发信站: 紫 丁 香 (Sat Aug 22 14:08:34 1998), 转信

                           安全
    这一章覆盖了保持你的系统安全的基础。简要介绍了你需要的首要的防卫手段,
用来保护你自己以避免通过电话线(MODEM)以及网络连接的其他方面的未授权的
访问。此外,本文解释了如何保护你的用户文件并确保口令完整性。
    这一章不打算涉及难于实现的复杂的解决办法,因为这需要大量的知识而且
只适用于特定的配置。相反,这章采用基本的安全方法,大部分都是明白简单并
有效的。
                            改善口令
    通过网络、MODEM连接或坐在终端前侵入系统的最常用的方法是通过脆弱的
口令。脆弱的(意味着容易猜测)口令是非常普遍的。当系统用户中有这样的
口令时,甚至最安全的系统也无法阻止入侵。
    如果你正管理一个有多个用户的系统,实现这样一个制度:要求用户们
每隔一段时间(通常 6到 8个星期)就改变口令并使用非英语单词。最好的口令
是字母与数字的组合。有时,虽然,仅有一个策略对付脆弱的口令是不够的。
你可能考虑使用健壮的口令,通过使用公共的或商业的软件检验潜在的易被侵入性。
这些软件包常常在源代码中,因此你可以毫无问题地将它们编译到 Linux系统中。
    是什么构成一个健壮的口令(不容易破解的口令)?这里有一些许多系统
管理员坚持采用常规的指导方针:
      #   避免使用用户的真实姓名和该用户家庭成员或宠物名字的一部分
            (这些口令是最容易猜测的)。
      #   在任何变化中避免使用重要的日期
            (生日,结婚日期等)。
      #   避免有特殊意义的数字或数字与字母的组合
            (如车牌号码,电话号码、特殊日期等)。
      #   避免任何能很容易地用来区分一个用户的地方名或项目名
            (电话字母、爱好等)。
      #   避免可能在字典中的任何单词
            (不要使用真正的单词)。
    生成一个健壮的口令不是很困难。应该使你的用户养成任意混合字母、数字和
特征的习惯。假设一个用户想用狮子王(lionking)作为口令,鼓励修改成
lion!king!,l_ionk_ing,lion5king ,或作一些相似的变化。甚至对口令
常规模式的轻微改变能使想猜测口令的人非常困难。
    ----------------------------------------------------------------
            改变root口令使它难于猜测。一旦某人有root口令,
        你的系统就完全受到威胁。
    ----------------------------------------------------------------
    定期检查 /etc/passwd文件,看看是否有你不认识的入口,这可能是被添加的
进入你的系统的途径。还应该确认每个帐户都有一个口令。删去任何你不再需要的
帐户。
                        保护你的文件
    安全从你的文件的许可权级别开始。不管你想保护一个文件以避免非法入侵者
或其他用户的窥视,都应该小心设置你的 umask(文件创建掩码)来设置你的文件
以获得最大的安全。你将不得不有意识地努力去共享文件。
    当然,这个预防措施非常重要,如果你的系统上有不止一个用户或不得不考虑
对别人隐藏信息的话。如果你在一个有许多用户的系统上,可以考虑强行将每个人
的 umask设置成只对该用户可读可写,而不给其他人任何权利。这个过程事实上
等于你能处理文件的安全。
    考虑用简单的办法加密确实敏感的文件(如帐目或雇员信息)。许多这样的
程序都是可以获得的。许多只需要口令来触发加密或解密过程。
                控制MODEM访问
    对许多 Linux用户来说,防止他们的系统被人通过Internet网关访问是不重要
的,因为很少有能直接访问Internet的机器直接连到他们的 Linux系统。相反,
主要方面应该是保护你的系统防止通过最容易访问的对系统侵略者开放的途径:
MODEM。
    MODEM是最常使用的接入 Linux系统的接口(除非你单机运行或在一个封闭的
网络上)。MODEM用于远程用户的访问、网络和Internet的访问。保护你的系统的
MODEM线以防入侵是简单并足够有效的阻止不经意的浏览者的方法。
                        回拨MODEMs
    最安全的阻止未授权的访问的技术是使用回拨MODEM。回拨MODEM让用户随意
连接到系统,然后挂断,参照一系列有效的用户和他们的电话号码并回拨到用户
建立通话。回拨MODEM很贵,因此这个方案对许多系统是不实用的。回拨MODEM也有
一些问题,特别是如果用户经常改变住处。而且,由于MODEM电话开关的向前呼叫
特性,回拨MODEM容易被滥用。
                        MODEM线问题
    典型的电话调制解调器可能会引起问题:如果一个用户会话结束了而它不能
完全挂断电话的话。这个问题经常源于MODEM的配线或配置的设置。
    配线问题可能听起来微不足道,但许多手工绕线的MODEM(hand-wired modem)
使得系统无法完全地控制所有的接线(pin),MODEM会话不完全关闭会使得系统
没有执行完注销(logoff)程序。任何人拨号到这个MODEM将继续最后一个用户的
会话。要阻止这类问题,必须确保连接MODEM和 Linux机器的电缆是完善的。将你
不能确保好使的手工绕制的电缆换成绕制完善的商品电缆(commercial ones)。
而且,会话完成时应检查MODEM以确保电话完全挂断。
    配置问题也能防碍线路挂断。检查MODEM说明书,确保你的 Linux脚本能在
连接断开时挂断电话。这个问题在最常见的MODEM上很少发生,但没有注册商标的
MODEM没有真正的兼容性因而会引起问题。再一次强调,在一个呼叫完成后查看
MODEM,确保它完全挂断。
    一个防止闯入的办法是当MODEM不再需要时将它从电路上移去。因为讨厌的
入侵者通常在上班时间之外试图通过MODEM访问系统,你能用 cron 改变下班后
与 MODEM连接的串行口的状态或完全禁止该端口来控制MODEM。如果深夜的访问是
必需的,缓冲池之外的一两个MODEM可以保持活动状态。一些大的系统在上班时间
之外只保持一定数量的MODEM处于活动状态,这个数量通常不同于一般的数量。
                        MODEM如何处理呼叫
    一个用户想通过MODEM线获得对 Linux的访问权,系统必须使用 getty进程。
 getty进程本身由 init 进程为每一个串行线生成。 getty进程负责获得用户的
名字,设置通信参数(例如波特率和终端类型),并进行超时控制。在 Linux中,
/etc/ttys 文件控制串行和多端口板的端口。
    一些 Linux系统允许执行一个拨号口令系统。这类系统要求一个对MODEM呼叫
的用户通过MODEM输入口令来验证身份。如果你的系统支持这个特性,它通常用
一个称为 /etc/dialups  的文件。 Linux系统用 /etc/dialups文件来支持一系列
提供拨号口令的端口;另一个文件(如 /etc/d_passwd)有MODEM线的口令。访问
决定于用户使用的 shell的类型。你能将同样的方法应用于UUCP访问。
                        使用UUCP
    UUCP(Unix to Unix CoPy)程序允许两个 Linux系统来回传送文件和电子邮件
(参照第 27 章,“UUCP”)。虽然这个程序设计时一直注意着安全问题,它是
许多年前设计的,从那以后安全需求变了许多。这些年来发现了UUCP的许多安全
问题,其中许多已被标注并打上了补丁。UUCP仍然需要系统管理员注意并确保它
正常工作、是安全的。
    UUCP在系统口令文件 /etc/passwd 中有它自己的口令入口。远程系统拨号进来
用 uucp 登入到本地系统(通过提供登入名和口令),如果你不给UUCP登入提供
口令,任何人都能访问这个系统。你应该做的第一件事情是用 root 登入并发出
命令
        passwd uucp
来设置一个UUCP口令。这样一来,如果你想让远程系统通过UUCP连接,你就必须向
他们提供你的口令,因此要确保它不同于其他的口令(也不同于 guess 口令)。
将口令提供给远程系统的管理员总比提供给一个完全开放的系统要好得多。
    如果你不打算用UUCP,可以从 /etc/passwd 文件中完全删去uucp用户,或者
提供一个健壮的不会被猜到的口令(在 /etc/passwd 的 passwd 域中输入一个
星号作为第一个字母就能有效地禁止登入)。从 /etc/passwd文件中删去uucp将
不会影响 Linux系统的任何其他方面。
    在UUCP目录(通常是 /usr/lib/uucp,/usr/spool/uucp,和 
/usr/spool/uucppublic)中尽可能地限制权限。对这些目录的管理往往是松懈的,
有必要用 chown,chmod,和 chgrp来对uucp登入限制权限。将所有文件的组和
用户名设为uucp。定期地检查文件的许可权。
    UUCP使用好几个文件来控制允许谁登入。这些文件(例如 
/usr/lib/uucp/Systems 和 /usr/lib/uucp/Permissions)应该为UUCP登入所拥有
并访问。这个设置阻止了用其他登入名的入侵者对它们的修改。
    /usr/spool/uucppublic 目录经常成为入侵者的目标,因为任何访问它的系统
都要对它读和写。要保护这个目录,可以创建两个子目录:一个用于接收文件,
另一个用于发送。你可以为每一个在有效用户之列的系统创建更多的子目录,如果
你想那么做的话。
    保护UUCP的另一个窍门是改变UUCP程序的登入名,这样对UUCP登入的随意访问
都不起作用。新名字可以是任意的。因为有效的远程系统必须在连接的两边都有
一个配置文件,你可以很容易地让远程系统的管理员知道登入用的新名字。那样,
没有人能用UUCP登入访问。
                       控制本地区网络访问。
    大多数局域网没有考虑安全问题,因此它们往往是进入系统的最简单的办法。
如果网络上某台机器的任何人有一个薄弱的访问点,那么就能通过那台机器的网络
服务访问到网络上所有机器。PC 和 Mac 通常安全性很差,特别是使用MODEM来
呼叫的,因此他们能用相似的方式访问网络服务。局域网的基本法则是网络上有
不安全的机器时就不可能有安全的机器。所以,一台机器的任何解决方案必须为
网络上的所有机器贯彻。
    理想的局域网安全系统强制对所有的连接进行适当的授权,包括机器名和
用户名。但有许多软件问题能造成授权困难。在 Linux系统中实现的信任主机的
概念,允许一台机器建立连接,而不需要验证它的名字是否在主机(Linux)的一个
文件中。在大部分情况下甚至口令都不需要。所有的入侵者要做的是确定信任主机
的名字,然后用那个名字连接。针对可能引起问题的入口仔细检查 
/etc/hosts.equiv,/etc/hosts和 .rhost文件。
    一个现在正被广泛使用的网络验证解决方案是 Kerberos,一个最初在MIT发展
的方法。Kerberos使用一个非常安全的主机作为验证服务器。机器之间的信息被
加密以防止入侵者检验消息头。Kerberos鉴别网络上的所有信息。
    由于许多网络的本质,许多 Linux系统容易受到有渊博知识的入侵者的攻击。
TCP/IP应用中已经知道的安全问题就数以百计。加强系统安全的第一步是禁止掉
你根本不使用TCP/IP服务,因为其他人能通过它们访问你的系统。
                             跟踪入侵者
    许多入侵者都只是对你的系统感到好奇而不是想做任何破坏。他们用一些办法
进入到你的系统,窥视一番,玩一些游戏,然后不改变任何东西就离去。这种活动
使你很难知道你正被侵入。他给你留下的是入侵者的仁慈,可是要是他想做一些
破坏或将你的系统作为跳板进入另一个系统呢?
    你可以非常容易地跟踪你的系统,只要调用稽查程序,一个登记每个用户
每一次连接和断开你的系统过程的的进程。稽查能告诉你用户在你系统上时做了些
什么,尽管这种稽查降低了一点系统效率并创建了很大的日志文件。并不是所有的
 Linux版本都支持稽查,因此要参考你的手册和系统文档以获得更多的信息。
    如果你依赖于稽查,请经常检查日志。值得编写一个快速的摘要脚本统计
每一个用户滞留在系统上的时间,这样你能观察到不符合你的个人知识的不正常的
人以及用户连接的时间。你可以写一个简单的 shell脚本来分析呆滞的登入。你也
可以利用公共域的稽查报告系统。
                            作最坏的打算
    如果某人真的侵入了你的系统,你能做什么?显然,备份可以起一些帮助,
因为它们让你恢复被破坏或被删除的文件。但除此之外,你还应该做什么?
    首先,找出入侵者是如何进入的并找到解决办法,这样同样的方法不会再次
被利用。如果你不能确保访问方法,关闭所有的 MODEM和终端,仔细检查所有的
配置和设置文件中的漏洞。也检查口令和用户列表看看有没有薄弱的或过期的材料。
    如果你再三地被攻击,可以考虑激活稽查系统来跟踪入侵者如何进入以及他们
做了些什么。如果你考虑到对系统的毁坏,可以一发现任何入侵者登入,就将他们
赶出去。
    最后,如果还有入侵,打电话给当地的法律机构。侵入计算机系统(不管是
大企业的还是你的家庭计算机)在大多数国家是非法的。法律机构通常知道如何
跟踪入侵者直到他们的呼叫点。他们能侵入你的系统,就不应该是侥幸的。
                            总结
    
    对大多数 Linux系统,安全不应该是一个问题,因为你是唯一使用这台机器的
人。然而,如果你和其他人共享你的机器或者使它能被网络(或Internet)上的
任何人访问到,不要低估其他人试图侵入你的系统的机会,他们可能能做到这一点。
确保你的系统是你所能做到的最安全的。常识很起作用,但不要忘了,黑客们
老谋深算、刻苦而顽强。

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: dip9.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.749毫秒