作者:曹江华
Linux的组网能力非常强大,它的TCP/IP代码是最高级的。Linux提供了对于当前的TCP/IP协议的完全支持,并且包括了对下一代Internet协议IPv6的支持。互联网中接入的机器中,有相当大一部分使用的是Linux操作系统。但Linux是一个多用户的系统,黑客们为了在攻击中隐藏自己,往往选择Linux系统作为首先攻击的对象,进而利用它来做一些非法的勾当,如:进行DOS(拒绝服务)攻击、运行IRC bot、发布非法软件等。作为一个Linux用户,时刻要防止攻击,以下十项建议可以使你的Linux系统更加安全。
关闭无用的端口
任何网络连接都是通过开放的应用端口来实现的。如果我们尽可能少地开放端口,就使网络攻击变成无源之水,从而大大减少了攻击者成功的机会。
首先检查你的inetd.conf文件。inetd在某些端口上守侯,准备为你提供必要的服务。如果某人开发出一个特殊的inetd守护程序,这里就存在一个安全隐患。你应当在inetd.conf文件中注释掉那些永不会用到的服务(如:echo、gopher、rsh、rlogin、rexec、talk、ntalk、pop-2、finger等)。注释除非绝对需要,你一定要注释掉rsh、rlogin和rexec,而telnet建议你使用更为安全的ssh来代替,然后杀掉lnetd进程。这样inetd不再监控你机器上的守护程序,从而杜绝有人利用它来窃取你的应用端口。你最好是下载一个端口扫描程序扫描你的系统,如果发现有你不知道的开放端口,马上找到正使用它的进程,从而判断是否关闭它们。
删除不用的软件包
在进行系统规划时,总的原则是将不需要的服务一律去掉。默认的Linux就是一个强大的系统,运行了很多的服务。但有许多服务是不需要的,很容易引起安全风险。这个文件就是/etc/inetd.conf,它制定了/usr/sbin/inetd将要监听的服务,你可能只需要其中的两个:telnet和ftp,其它的类如shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth等,除非你真的想用它,否则统统关闭。
需要提醒你的是以下三个服务漏洞很多,强烈建议你关闭它们:S34yppasswdd(NIS服务器)、S35ypserv(NIS服务器)和S60nfs(NFS服务器)。
不设置缺省路由
在主机中,应该严格禁止设置缺省路由,即default route。建议为每一个子网或网段设置一个路由,否则其它机器就可能通过一定方式访问该主机。
口令管理
口令的长度一般不要少于8个字符,口令的组成应以无规则的大小写字母、数字和符号相结合,严格避免用英语单词或词组等设置口令,而且各用户的口令应该养成定期更换的习惯。另外,口令的保护还涉及到对/etc/passwd和/etc/shadow文件的保护,必须做到只有系统管理员才能访问这2个文件。安装一个口令过滤工具加npasswd,能帮你检查你的口令是否耐得住攻击。如果你以前没有安装此类的工具,建议你现在马上安装。如果你是系统管理员,你的系统中又没有安装口令过滤工具,请你马上检查所有用户的口令是否能被穷尽搜索到,即对你的/ect/passwd文件实施穷尽搜索攻击。对那些糟糕的口令,强令它们的主人修改它,或干脆锁住它们的账号。
分区管理
一个潜在的攻击,它首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!
为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区纪录数据,如log文件和email,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了部分针对Linux分区溢出的恶意攻击。
谨慎使用.rhosts文件
.rhosts文件中存储的是可以直接远程访问本系统的主机及用户名。当你用telnet命令或r*命令(如rlogin、rcp等)来远程访问本系统时,系统首先检查.rhosts文件中是否存有你此时的主机名和用户名。当找到你的主机名和用户名后,它将允许你直接访问它,而不需输入口令。当黑客一旦攻破你的系统,他必将要在你的系统中留下一个供他日后自由出入的后门。只要他将自己的主机名和用户名写进.rhosts文件,就达到了这一目的。
所以我们要时刻检查我们的orhosts文件,一旦发现里面出现莫名其妙的主机名和用户名,马上删除它们。并把它们报告给它们的服务提供商,警告他们的行为。
日志管理
日志文件时刻为你记录着你的系统的运行情况。当黑客光临时,也不能逃脱日志的法眼。所以黑客往往在攻击时修改日志文件,来隐藏踪迹。因此我们要限制对/var/log文件的访问,禁止一般权限的用户去查看日志文件。
另外,我们还可以安装一个icmp/tcp日志管理程序,如iplogger,来观察那些可疑的多次的连接尝试(加icmp flood3或一些类似的情况)。还要小心一些来自不明主机的登录。
终止正进行的攻击
假如你在检查日志文件时,发现了一个用户从你未知的主机登录,而且你确定此用户在这台主机上没有账号,此时你可能正被攻击。首先你要马上锁住此账号(在口令文件或shadow文件中,此用户的口令前加一个Ib或其他的字符)。若攻击者已经连接到系统,你应马上断开主机与网络的物理连接。如有可能,你还要进一步查看此用户的历史记录,查看其他用户是否也被假冒,攻击音是否拥有根权限。杀掉此用户的所有进程并把此主机的ip地址掩码加到文件hosts.deny中。
防范身边的攻击
如果你的身边躲藏有攻击的人,要做到对他们的防范难上加难。因为他们甚至可以用如下方法获得你的根权限:攻击者首先用引导磁盘来启动系统,然后mount你的硬盘,改掉根口令,再重启动机器。此时攻击者拥有了根口令,而作为管理员的你却被拒之门外。要避免此类情况的发生,最简单的方法是改变机器中BIOS的配置,使机器的启动顺序改为硬盘第一序,并为你的BIOS设置一个口令。
补丁问题
你应该经常到你所安装的Linux系统发行商的主页上去找最新的补丁。例如:对于Redhat系统而言,可以在:http://www.redhat.com/corp/support/errata/上找到补丁。在Redhat6.1以后的版本带有一个自动升级工具up2date,它能自动测定哪些rpm包需要升级,然后自动从Redhat的站点下载并完成安装。