许多刚接触Linux系统的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文这篇文章件的界面。这篇文章列出七条管理员能够也应该可以做到的步骤,从而帮助他们建立更加安全的Linux服务器,并显著降低他们所面临的风险。
请任何大型机构的网络管理员对Linux系统和网络操作系统(如Windows NT或Novell)进行比较,可能他会承认Linux是一个内在更加稳定,扩展性更强的解决方案。可能他还会承认,在保护系统免受外部攻击方面,Linux可能是三者中最难配置的系统。
这种认识相当普遍——许多刚接触Linux系统的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文这篇文章件的界面。多数管理员充分认识到他们需要手工设置阻碍和障碍,以阻止可能的黑客攻击,从而保护公司数据的安全。只是在他们并不熟悉的Linux领域内,他们不确定自己的方向是否正确,或该从何开始。
这就是这篇文章的目的所在。它列出一些简易的步骤,帮助管理员保障Linux系统的安全,并显著降低他们面临的风险。本教程列出了七个这样的步骤,但您也可以在Linux手册和讨论论坛中发现更多内容。
保护根账户
Linux系统上的根账户(或超级用户账户)就像是滚石演唱会上的后台通行证一样——它允许您访问系统中的所有内容。因此,值得采取额外的步骤对它加以保护。首先,用密码命令给这个账户设置一个难以猜测的密码,并定期进行修改,并且这个密码应仅限于公司内的几个主要人物(理想情况下,只需两个人)知晓。
然后,对/etc/securetty文件进行编辑,限定能够进行根访问的终端。为避免用户让根终端“开放”,可设置TMOUT当地变量为非活动根登录设置一个使用时间;并将HISTFILESIZE当地变量设为0,保证根命令记录文件(其中可能包含机密信息)处于禁止状态。最后,制订一个强制性政策,即使用这个账户只能执行特殊的管理任务;并阻止用户默认以根用户服务登录。
提示:关闭这些漏洞后,再要求每一个普通用户必须为账户设立一个密码,并保证密码不是容易识别的启示性密码,如生日、用户名或字典上可查到的单词。
安装一个防火墙
防火墙帮助您过滤进出服务器的数据包,并确保只有那些与预定义的规则相匹配的数据包才能访问系统。有许多针对Linux的优秀防火墙,并且防火墙代码甚至可直接编译到系统内核中。首先应用ipchains或iptables命令为进出网络的数据包定义输入、输出和转寄规则。可以根据 IP地址、网络界面、端口、协议或这些属性的组合制订规则。这些规则还规定匹配时应采取何种行为(接受、拒绝、转寄)。规则设定完毕后,再对防火墙进行详细检测,保证没有漏洞存在。安全的防火墙是您抵御分布式拒绝服务[注](DDoS[注])攻击这类常见攻击的第一道防线。
使用OpenSSH处理网络事务
在网络上传输的数据安全是客户-服务器构架所要处理的一个重要问题。万一网络事务以纯文本的形式进行,黑客就可能“嗅出”网络上传输的数据,从而获取机密信息。您可以用OpenSSH之类的安全壳应用程序为传输的数据建立一条“加密”通道,关闭这个漏洞。以这种形式对连接进行加密,未授权用户就很难阅读在网络主机间传输的数据。
禁用不必要的服务
大多数Linux系统安装后,各种不同的服务都被激活,如FTP、 telnet、UUCP、ntalk等等。多数情况下,我们很少用到这些服务。让它们处于活动状态就像是把窗户打开让盗贼有机会溜进来一样。您可以在 /etc/inetd.conf或/etc/xinetd.conf文件中取消这些服务,然后重启inetd或xinetd后台程序,从而禁用它们。另外,一些服务(如数据库服务器)可能在开机过程中默认启动,您可以通过编辑/etc /rc.d/*目录等级禁用这些服务。许多有经验的管理员禁用了所有系统服务,只留下SSH通信端口。
使用垃圾邮件和反病毒过滤器
垃圾邮件和病毒干扰用户,有时可能会造成严重的网络故障。Linux有极强的抗病毒能力,但运行Windows的客户计算机可能更易受病毒攻击。因此,在邮件服务器上安装一个垃圾邮件和病毒过滤器,以“阻止”可疑信息并降低连锁崩溃的风险,会是一个不错的主意。
首先安装SpamAssassin这个应用各种技术识别并标注垃圾邮件的一流开源工具,该程序支持基于用户的白名单与灰名单,提高了精确度。接下来,根据常规表达式安装用户级过滤,这个工具可对收件箱接收的邮件进行自动过滤。最后再安装Clam Anti-Virus,这个免费的反病毒工具整合 Sendmail和SpamAssassin,并支持电子邮件附件的来件扫描。
安装一个入侵检测系统
入侵检测系统(IDS)是一些帮助您了解网络改变的早期预警系统。它们能够准确识别(并证实)入侵系统的企图,当然要以增加资源消耗与错误线索为代价。您可以试用两种相当知名的IDS:tripwire,它跟踪文件签名来检测修改;snort,它使用基于规则的指示执行实时的信息包分析,搜索并识别对系统的探测或攻击企图。这两个系统都能够生成电子邮件警报(以及其它行为),当您怀疑您的网络受到安全威胁而又需要确实的证据时,可以用到它们。
定期进行安全检查
要保障网络的安全,这最后一个步骤可能是最为重要的。这时,您扮演一个反派的角色,努力攻破您在前面六个步骤是建立的防御。这样做可以直接客观地对系统的安全性进行评估,并确定您应该修复的潜在缺陷。
有许多工具可帮助您进行这种检查:您可以尝试用Crack和John the Ripper之类的密码破解器破译您的密码文件;或使用nmap或 netstat来寻找开放的端口;还可以使用tcpdump探测网络;另外,您还可以利用您所安装的程序(网络服务器、防火墙、Samba)上的公开漏洞,看看能否找到进入的方法。万一您设法找到了突破障碍的办法,其他人同样也能做到,您应立即采取行动关闭这些漏洞。
保护Linux系统是一项长期的任务,完成上述步骤并不表示您可以高枕无忧。访问Linux安全论坛了解更多安全提示,同时主动监控并更新系统安全措施。