作者:杨蔚宇
到目前为止,您安装了Linux的计算机如果还没有任何安全措施的话,那我觉得您应该了解一些有关Linux的安全知识了,并且在此基础上运用本文介绍的方法让您的Linux平台更安全。当然,我只是根据自己的需求来让加固Linux平台的,所以不一定能够完全满足您的要求,但是我想也应该会有一些帮助。
安全需求
在家里,我使用的是Red Hat Linux。一般来说,我很少关机,也经常使用这台机器通过宽带连在互联网上。也就是说,我的机器一般情况下都处于在线状态。对于这台计算机的安全性,我有两点考虑:
1. 我要把那些不想让别人看见的数据和文档隐藏起来;
2.不让不速之客用我的计算机资源。
在我的电脑上,有很多重要的数据。我想大部分人电脑上都有自己认为很重要的文档和数据。我不想让除了我之外的任何人读写这些文件。此外,我不想让入侵者使用我的机器来攻击另外一个目标。如果我发现有人使用我的机器来攻击别人,我会感到很气愤。相信大家也会与我有同感。更令人忐忑不安的问题是,有时虽然我们被“黑”,充当了攻击别人系统的角色,而自己却蒙在鼓里。
做好安全计划
在开始安装Linux系统时,我就要在内核中配置Iptables。Iptabels被认为是Linux中实现包过滤功能的第四代应用程序。第一代是Linux内核1.1版本所使用的,Alan Cox从BSD Unix中移植过来的ipfw。在Linux 2.0版的内核中,Jos Vos和其它一些程序员对ipfw进行了扩展,并且添加了ipfwadm用户工具。在Linux2.2版内核中,Russell和Michael Neuling做了一些非常重要的改进。也就是在该内核中,Russell添加了帮助用户控制过滤规则的ipchains工具。现在,Russell又完成了其名为NetFilter的内核框架。
NetFilter的目的是为用户提供一个专门用于包过滤的底层结构。并且,用户和开发人员还可以将其内建在Linux内核中。Iptables是一个内建在NetFilter框架中的模块。它可以让用户访问内核过滤规划和命令。如果您了解ipchains,就会发现事实上Iptables和ipchains是非常相似的。
通过对Iptables的配置,我可以阻止任何一个数据包进入或者离开我的机器。这非常重要,因为我的机器24小时在线。有了这个新的保护功能,就使得我的机器时刻都能阻击来自网络上的各种攻击。Iptables的使用和配置并不困难。在此限于篇幅,我就不再讨论(读者可以很容易就在网上找到相关资料)。
接下来要讨论的是LIDS(Linux入侵检测系统)。LIDS以内核补丁的方式存在。LIDS的目的是通过限制对计算机文件和进程的访问,来提高计算机的安全性。在有人试图破坏这些限制时,它就会向你报警。LIDS另外一个优点就是它甚至可以限制root账号的权限。这种限制root账号权限的方法,在入侵者得到root权限时,可以最大限度地降低损失。我使用LIDS来保护二进制系统文件、/var/log目录下的日志文件、/etc目录下的配置文件。我将其标志为Readonly的二进制文件没有任何用户,包括root在内,可以对其进行删改操作。对于日志文件,我将其标识为Append。这样对于该目录里的文件,可以进行写操作,但是不能修改或者删除现存的数据。
下一步我要做的就是要尽量减少在机器上运行的服务。在机器上运行的服务越少,别人入侵我的机器的可能性就越小。在缺省情况下,很多Linux发行版都会运行很多常驻程序。就我个人看来,这样做并不是十分合理的。所以我关闭了我的Telnet、FTP以及所有以“R”字母开头的常驻程序。这样,我就可以避免有时候来不及升级或者安装一些补丁程序而给系统带来威胁。对于那些我一定要使用的服务,我就会尽可能及时地安装安全补丁。并且,如果该服务发现了漏洞,而又没有相关的补丁出现时,我就会暂时关闭该服务,直到有修正补丁出现为止。
一旦尽量减少了计算机上运行的服务数量之后,我就使用“netstat l”命令来进行监听。这样做的目的是为了确保我没有遗漏任何我不需要的服务。事实上,不做任何监听工作是我们经常容易犯的错误。如果监听到任何我不需要的服务,这时候就可以修正了。
用好安全门
在电脑世界里,没有绝对的安全,也就是说你不可能完全杜绝黑客的攻击。虽然我的计算机还没有被攻破过,但是我从来不认为它就是100%安全的。在我刚开始使用Linux的头几个月里,几乎没有考虑过其安全性。我做的工作基本上都是如何让这个新的操作系统工作起来、工作得更好等。那时,我把更多的精力投入到了学习一些Linux方面的基本命令以及如何使用系统等,而没有精力来关注其它事情。在那段时间里,我受到过很多攻击。虽然当时并没有造成致命的伤害,但现在想起来仍心有余悸。
好了,既然你的机器注定将永远受到攻击,那么还是让我们来看一看如何看好它吧。首先来看一下TCT(The Coroner’s Toolkit,http://www.porcupine.org/forensics/tct.html),这是一个不错的工具。它可以运行于Linux、FreeBSD、OpenBSD、Solaris、Unix等平台之上。它能够针对文件的最后修改、访问或者改变的时间来进行分析,并且根据数据节点的值提取出文件列表,以进行恢复。你可以在你怀疑有危险的机器上运行它,来进行检查。运行这个工具后,它会在你的硬盘上收集数据并进行检查。不过,我感觉这个工具对于新手来说,使用起来过于困难。因此,如果您以前从来没有使用过TCT,那么在使用前必须要读非常多的文档。还好,在该工具的主页上,有很多HOWTO文档的链接,所以如果想试一试的朋友可以先看一看这些文档。如果觉得英文文档看起来比较费力,可以在Google中查找TCT关键字的中文网页,就可以找到很多相关的中文资料。
安全的信息传送
缺省的信息传送是不安全的。这种情况下,你在Internet上传输的内容可以被别的人看到。你可以使用traceroute验证一下看看。
在命令行方式下输入“traceroute www.google.com”后,你就可以知道在你向Google提交搜索数据包时,到底有多少台机器可以看到你的数据包了。
平时,在我登录某一站点时,我要确保自己使用的是安全页――HTTPS。HTTPS使用SSL对传输的数据进行加密。如果不这样做,我所传输的数据就很容易被别有用心的机器所窃听。比如,在使用它们的各种Web服务时,Yahoo就提供了一个安全的登录和提交的方式。我有一个Yahoo电子邮件账号。使用该账号,我可以在任何时候登录来检查我的邮件,而不用担心我的信息会被别人偷窥。
对于远程管理,我使用ssh和scp两个程序来代替Telnet和FTP。它们安装起来非常容易,并且功能也完全可以满足我的需要。一旦安装好以后,我可以在Iptables配置中打开相应的机器端口,这样我就可以从外部连接到机器上了。
这里尽量简单地介绍了我是如何使自己的机器变得安全起来的。希望这些经验能对大家如何安全地用好Linux有所帮助。