全部博文(52)
分类: LINUX
2008-11-01 23:45:26
Linux 简单的安全措施
概要: 众所周知,由于Linux操作系统是一个开放源代码的免费操作系统,因此受到越来越多用户的欢迎。随着Linux操作系统在我国的不断普及,有关的政府部门更是将基于Linux开发具有自主版权的操作系统提高到保卫国家信息安全的高度来看待,因此我们不难预测今后Linux操作系统在我国将得到更快更大的发展。虽然Linux与UNIX很类似,但它们之间也有一些重要的差别。对于众多的习惯了UNIX和Windows NT的系统管理员来讲,如何保证Linux操作系统的安全将面临许多新的挑战。本文介绍了一系列实用的Linux安全管理经验。
本文之所以称之为简单,因为Linux 安全不是用一篇文章可以写出来。要想写完,恐怕的需要像TCP/IP 卷1﹑2﹑3合到一块那么多的文字。具体到一个项目的实施,就需要很多关于Linux方面的知识。好了,我们直接进入正题吧。
Ⅰ 文件系统
在Linux系统中,分别为不同的应用安装单独的主分区将关键的分区设置为只读将大大提高文件系统的安全。这主要涉及到Linux自身的ext2/3文件系统的只添加(只添加)和不可变这两大属性。
文件分区Linux的文件系统可以分成几个主要的分区,每个分区分别进行不同的配置和安装,一般情况下至少要建立/、/usr/local、/var和/home等分区。以root用户登录,用chmod和chattr把/usr可改为只读并且可以被认为是不可修改的。如果/usr等中有任何文件发生了改变,那么系统将立即发出安全报警。当然这不包括用户自己改变/usr等中的内容。/lib、/boot和/sbin的安装和设置也一样。在安装时应该尽量将它们设置为只读,并且对它们的文件、目录和属性进行的任何修改都会导致系统报警。当然将所有主要的分区都设置为只读是不可能的,有的分区如/var等,其自身的性质就决定了不能将它们设置为只读,但应该不允许它具有执行权限。
扩展ext2/3使用ext2/3文件系统上的只添加和不可变这两种文件属性可以进一步提高安全级别。不可变和只添加属性只是两种扩展ext2/3文件系统的属性标志的方法。一个标记为不可变的文件不能被修改,甚至不能被根用户修改。一个标记为只添加的文件可以被修改,但只能在它的后面添加内容,即使根用户也只能如此。ext3 只是在ext2 的基础上增加了日志。俩种文件系统各有优点,应根据不同的用途考虑。可以通过chattr命令来修改文件的这些属性,如果要查看其属性值的话可以使用lsattr命令。对于Linux不懂的命令,可借助man。要想了解更多的关于ext2/3文件属性的信息,可使用命令man chattr来寻求帮助。这两上文件属性在检测黑客企图在现有的文件中安装入侵后门时是很有用的。为了安全起见,一旦检测到这样的活动就应该立即将其阻止并发出报警信息。
如果你的关键的文件系统安装成只读的并且文件被标记为不可变的,入侵者必须重新安装系统才能删除这些不可变的文件但这会立刻产生报警,这样就大大减少了被非法入侵的机会。
保护log文件,当与log文件和log备份一起使用时不可变和只添加这两种文件属性特别有用。系统管理员应该将活动的log文件属性设置为只添加。当log被更新时,新产生的log备份文件属性应该设置成不可变的,而新的活动的log文件属性又变成了只添加。这通常需要在log更新脚本中添加一些控制命令。高级主题是建一个专用日志服务器,来管理日志。向日志守护进程加 *.* @hostname的一行字符。 即可把日志转储到远程日志服务器或者本地专用局域网上的日志服务器。对于管理员来说,日志在检测入侵和一些非法事项中发挥者举足轻重的作用。
不同的版本,Linux的日志配置文件就不一样,甚至伴随不同版本的发布,同一个商家也不一样。比如红帽公司的,Redhat 9和Redhat10.
Ⅱ 软件校验
这是针对Redhat的rpm包来说的。RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。在开始安以及安装以后可以来数据包的权限,内容,组用户等是否改变校验。RPM是一个强大的工具,用来安装、升级和校验Red Hat系统上的软件包。它的校验功能可以用来确认文件是否被修改或覆盖,数据包的权限,内容,时间戳,组用户等是否改变。除了文件的大小和时间戳,RPM还能检查文件的信息文摘或MD5签名.这里面又牵涉到rpm库,编写合适的shell脚本定期校验并把此类信息通过mail命令发送给管理员。这一个shell脚本开发出来,其实就是一个小型IDS。对于Linux管理员来说可以开发一些shell脚本来轻松的完成一些看似完不成的任务。当然完成这些功能的脚本应该隐藏起来,对于及其聪明的入侵者停止一些你的服务,很随意的。
Ⅲ 备份
在完成Linux系统的安装以后应该对整个系统进行备份,以后可以根据这个备份来验证系统的完整性,这样就可以发现系统文件是否被非法窜改过。如果发生系统文件已经被破坏的情况,也可以使用系统备份来恢复到正常的状态。
CD-ROM备份当前最好的系统备份介质就是CD-ROM光盘,以后可以定期将系统与光盘内容进行比较以验证系统的完整性是否遭到破坏。如果对安全级别的要求特别高,那么可以将光盘设置为可启动的并且将验证工作作为系统启动过程的一部分。这样只要可以通过光盘启动,就说明系统尚未被破坏过。
如果你创建了一个只读的分区,那么可以定期从光盘映像重新装载它们。即使象/boot、/lib和/sbin这样不能被安装成只读的分区,你仍然可以根据光盘映像来检查它们,甚至可以在启动时从另一个安全的映像重新下载它们。
对于中小型企业,磁带备份已经足够了。当然建立koh备份机制是许多企业的首选。对于大型企业,管理员会建立自己的存储网络,即所谓的SAN。
再次声明对Linux管理员来说应把备份看成首要任务。不要到后悔时才意识到重要性。
Ⅳ 加固内核
对于大型站点来说,Linux管理员应使用定制内核。这样带来的安全性和性能优势更显著。因为我们管理员可以选择系统必须的选项来增强系统的安全性。通过禁止不必要的驱动程序的支持和模块的支持,我们可以减少攻击系统的路径。我们还可以通过改进Linux操作系统的内核来防止缓冲区溢出攻击这种破坏力极强却又最难预防的攻击方式,虽然这样的改进需要系统管理员具有相当丰富的经验和技巧,但对于许多对安全级别要求高的Linux系统来讲还是很有必要的。
缓冲区溢出实施起来是相当困难的,因为入侵者必须能够判断潜在的缓冲区溢出何时会出现以及它在内存中的什么位置出现。缓冲区溢出预防起来也十分困难,系统管理员必须完全去掉缓冲区溢出存在的条件才能防止这种方式的攻击。正因为如此,许多人甚至包括Linux Torvalds本人也认为这个安全Linux补丁十分重要,因为它防止了所有使用缓冲区溢出的攻击。但是需要引起注意的是,这些补丁也会导致对执行栈的。基于加固内核的措施,可从一些安全权威网站上找到,比如 , http://www.gresecurity.net 。比如现在当然此类软件有的是收费的有的是免费的。但记住啊,收费的并不一定比免费的好!!!!
Ⅴ 设置陷阱和蜜罐
所谓陷阱就是激活时能够触发报警事件的软件,而蜜罐(honey pot)程序是指设计来引诱有入侵企图者触发专门的报警的陷阱程序。通过设置陷阱和蜜罐程序,一旦出现入侵事件系统可以很快发出报警。在许多大的网络中,一般都设计有专门的陷阱程序。陷阱程序一般分为两种:一种是只发现入侵者而不对其采取报复行动,另一种是同时采取报复行动。
设置蜜罐的一种常用方法是故意声称Linux系统使用了具有许多脆弱性的IMAP服务器版本。当入侵者对这些IMAP服务器进行大容量端口扫瞄就会落入陷阱并且激发系统报警。
另一个蜜罐陷阱的例子就是很有名的phf,它是一个非常脆弱的Web cgi-bin脚本。最初的phf是设计来查找电话号码的,但它具有一个严重的安全漏洞:允许入侵者使用它来获得系统口令文件或执行其它恶意操作。系统管理员可以设置一个假的phf脚本,但是它不是将系统的口令文件发送给入侵者,而是向入侵者返回一些假信息并且同时向系统管理员发出报警。
另外一类蜜罐陷阱程序可以通过在防火墙中将入侵者的IP地址设置为黑名单来立即丢弃入侵者继续进行访问。丢弃不友好的访问,既可以是短期的,也可以是长期的。Linux内核中的防火墙代码非常适合于这样做。千万记住丢弃(DROP)和拒绝的区别(REJECT)。拒绝会回显一个echo不可到达目的地址的的消息。丢弃不回回送任何消息。拒绝的策略对于外部的Dos攻击,会引起服务器的崩溃。
Ⅵ 将入侵消灭在萌芽状态
我们需要一些好的工具来帮助我们监视系统,并向我们发出警告,告诉我们哪里可能出现问题,因此我们可以经常地轻松一下。入侵检测可能是一种令我们操心的问题之一。不过,事情总有两方面,幸好Linux的管理员们拥有可供选择的强大工具。最佳的策略是采用分层的方法,即将“老当益壮”的程序,如Snort、 iptables等老前辈与psad、AppArmor、SELinuxu等一些新生力量结合起来,借助强大的分析工具,我们就可以始终站在技术的前沿。在现代,机器上的任何用户账户都有可能被用来作恶。将全部的重点都放在保护root上,就好像其它用户账户不重要一样,这是Linux和 Unix安全中一个长期存在的、慢性的弱点问题。一次简单的重装可以替换受损的系统文件,不过数据文件怎么办?任何入侵都拥有造成大量破坏的潜力。事实上,要散布垃圾邮件、复制敏感文件、提供虚假的音乐或电影文件、对其它系统发动攻击,根本就不需要获得对root的访问。
入侵者进行攻击之前最常做的一件事情就是端口扫瞄,如果能够及时发现和阻止入侵者的端口扫瞄行为,那么可以大大减少入侵事件的发生率。反应系统可以是一个简单的状态检查包过滤器,也可以是一个复杂的入侵检测系统或可配置的防火墙。
Linux自带的iptables防火墙管理程序可以很容易的对一些入侵事件记录。通过查看以root用户登录,用var/log/messages可以查看。
当然更好的办法就是使用专门的入侵检测系统,如ISS公司的RealSecure等,它们可以根据入侵报警和攻击签名重新配置防火墙。但这样的产品一般价格较高,普及的用户承受起来有困难。
Ⅶ 反攻击检测
系统主要通过阻止入侵企图来防止入侵,而反攻击系统则可以反向进行端口扫瞄或发起其它的攻击,这一着让入侵者不仅入侵阴谋未能得逞,反而“引狼入室”,招致反攻击。
有些安全系统如Abacus Sentry具有一定的反攻击能力。比如有的站点有了防止用户通过telnet进行连接,在应答telnet连接请求时,系统将返回一些不受欢迎的恶意信息。这只是一种最简单也是最轻微的反攻击措施。
一般情况下并不提倡使用反攻击功能,因为这样的反攻击措施很容易被非法利用来攻击其它的系统。入侵者利用修改源地址来入侵我们时,我们的反攻击会领不相关的人受害。
Ⅷ 改进登录
服务器将系统的登录服务器移到一个单独的机器中会增加系统的安全级别,使用一个更安全的登录服务器来取代Linux自身的登录工具也可以进一步提高安全。
在大的Linux网络中,最好使用一个单独的登录服务器用于syslog服务。它必须是一个能够满足所有系统登录需求并且拥有足够的磁盘空间的服务器系统,在这个系统上应该没有其它的服务运行。更安全的登录服务器会大大削弱入侵者透过登录系统窜改日志文件的能力。
Ⅸ 使用单一登录
系统维护分散的大网络环境中的多个用户帐号对于系统管理员来讲是一件非常头疼的事情。现在有一些单一的登录(sign on)系统不仅可以减轻管理员的负担,而同时还提高了安全级别。
网络信息服务(NIS)是一个很好的单一登录系统,它在Sun公司的Yellow Page服务的基础上发展来的,它的基本安全特性不够健状,由于不断有一些bug和脆弱性被公布,因此有人戏称它为网络入侵者服务(Network Intruder Service)。NIS的更新版本NIS+原NIS的不足进行了改进,现在已经有了用于Linux的NIS+版本。
Kerberos也是一种非常有名的单一登录系统。Kerberos v4具有一些很有名的安全漏洞,如入侵者可以离线进行穷尽攻击Kerberos cookie而不会被发现。Kerberos v5大大进行了改进,不会再有v4的问题。
在大的网络中,象NIS和Kerberos这样的单一的登录系统虽然有有利的一面,但也有它不利的一面。一方面,在不同系统上都具有认证机制有助于隔离该功能并且减少它与其它服务相互之间的影响。另一方面,一旦一个系统中的某个帐号被破坏,所有可通过这个帐号访问的系统都将同样遭到破坏。因此在单一的登录系统中特别要求具有较高防猜测水平的口令字。
基于Windows的网络在Windows NT域系统中有自己的单一登录系统。Linux系统可以根据Windows系统进行认证。这允许用户在Windows系统下修改、维护和管理它们的帐号和口令字并且修改结果会在同时在UNIX登录中得到体现。如使用pam_smb,Linux系统可以根据Windows SMB Domain进行认证。这在以Windows网络管理为中心的网络中是相当方便的,但它也带来了Windows认证系统自身的一些不安全性。
Ⅹ 服务器的安全
一切从实际出发,我们制定一个安全策略,应该从实际考虑。安全策略根据站点的需我等级被保护数据的重要性以及数据丢失的代价来定义。对于大型站点来说,Linux下的服务器应放在DMZ中,有网关防火墙来提供高级过滤以及访问策略。服务器除提供服务外,另加简单的防火墙策略来提高安全性。这里很容易忽视一个问题,我安全策略已经很到位,但我们还是被入侵了。这就是我们应该及时更新防火墙策略和跟踪服务器站点下载最新补丁。不是有这样一句话吗:没有打不开的锁。
Ⅺ 掌握最新安全产品和技术
作为一个系统管理员,还必须时刻跟踪Linux安全技术的发展动向,并且适时采用更先进的Linux安全工具。目前国际上有许多有关Linux安全的研究和开发项目,目前至少有三个安全Linux项目已经启动,每个项目的目标都有自己的侧重点,它们分别是:
http://www.securityfocus.com/ http://www.securityportal.com/
关于此类的站点还很多,可根据自己的喜好选择。如果你用Redhat公司的产品,那么你应该经常浏览一下。如果你是一名fedora的客户开发者,你应该经常到。这里有比较权威的常见错误,比如防火墙以及漏洞列表等。
Ⅻ 多管齐下
任何一种单一的安全措施其防范能力都是有限的,一个安全的系统必须采取多种安全措施,多管齐下才能更好的保证安全。假如一个Linux系统采取了以上各种安全措施,那么要想侵入你的系统,攻击者将不得不绕过防火墙、避开入侵检测系统、跳过陷井程序、通过系统过滤器、逃过你的日志监视器、修改文件系统属性、破坏安全登录服务器才能最终达到目的。由于其中任何一个环节都可能激发报警,因此入侵者要想侵入这样的系统而又不被发现几乎是不可能的。
总的来说,我们也并不是要用到所以的安全策略。我们应开发脚本,让脚本定义触发器。如果一定的安全策略被触发,脚本会自动启动更严密的措施来防止我们的系统被入侵,同时产生报警信号来通知管理员。这就是所谓的“分布式防火墙”。他有一系列的规则连罗列而成,当然对系统的性能是有所要求的。