李洋 骆寒 浙江师范大学
尽管Linux在安全设计上具有一定的先天优势,但也绝不像有些人们认为的“绝对安全”。近年来,基于Linux的安全事件频繁发生。世界上没有绝对安全的操作系统,如果疏于管理,没有正确配置,任何操作系统都有可能被攻击,入侵。因此,无论是Linux还是Windows,在安全问题方面最大的问题不是操作系统本身,而是用户有没有实践一些基本的安全准则。
Linux可以利用启动盘来启动计算机,或利用LILO进入单用户模式,无须使用root口令而获得root用户具有的权限。这是一个很大的安全问题,因为它使root口令失去了意义。
Linux存放的是用户口令明文的One Way Hash运算的结果,加上用户选择易记口令等因素,容易采用词典攻击,同时用户远程登录时传送的是口令明文,易于窃听。
SETUID是为解决某些普通用户在执行程序时须暂时获得root特权的程序执行问题,这也是一个很大的安全隐患。
当输入数据超出所分配存储空间而系统又没有对此作直接处理时将产生缓冲区溢出问题。
(1)直接窃听取得root密码或者取得某位特殊User的密码,而该位User可能为root,再获取任意一位User的密码,因为取得一般用户密码通常很容易。
(2)使用命令就可以知道该台计算机上面的用户名称。然后找这些用户下手,并通过这些容易入侵的用户取得系统的密码文件/etc/passwd,再用密码字典文件搭配密码猜测工具猜出root的密码。
(3)利用一般用户在/tmp目录放置着的SetUID的文件或者执行着SetUID程序,让root去执行,以产生安全漏洞。
(4)利用系统上需要SetUID root权限的程序的安全漏洞,取得root的权限,例如:pppd。
(5)从.rhost的主机入侵。因为当用户执行rlogin登录时,rlogin程序会锁定.rhost定义的主机及账号,并且不需要密码登录。
(6)修改用户的.login、cshrc、.profile等Shell设置文件,加入一些破坏程序。用户只要登录就会执行。
(7)只要用户登录系统,就会不知不觉地执行Backdoor程序(可能是Crack程序),它会破坏系统或者提供更进一步的系统信息,以利Hacker渗透系统。
(8)Hacker会通过中间主机联机,再寻找攻击目标,避免被用逆查法抓到其所在的真正IP地址。
一般来说,对Linux系统的安全设定包括取消不必要的服务、限制远程存取、隐藏重要资料、修补安全漏洞、采用安全工具以及经常性的安全检查等。下文将介绍几种方法,针对Linux系统来增加其安全性。
早期的Unix版本中,每一个不同的网络服务都有一个服务程序在后台运行,后来的版本用统一的/etc/inetd服务器程序担此重任。Inetd是Internetdaemon的缩写,它同时监视多个网络端口,一旦接收到外界传来的连接信息,就执行相应的TCP或UDP网络服务。
在Linux中有两种不同的服务型态:一种是仅在有需要时才执行的服务;另一种是一直在执行的永不停顿的服务。提供文件服务的NFS服务器和提供NNTP新闻服务的news都属于这类服务,如果没有必要,最好取消这些服务。
用户在登陆Linux系统前会被要求输入密码,这些密码被保存在/etc/password文件中。虽然文件本身经过加密,但一般用户可以利用密码破译工具猜测出密码。
这里给出一个较为安全的方法,即设定影子文件/etc/shadow,只允许有特殊权限的用户才可以访问该文件。在Linux系统中,如果要采用shadow文件,必须将所有的公用程序重新编译,才能支持影子文件。这种方法比较麻烦,比较简便的方法是采用插入式验证模块(PAM)。Linux系统管理人员只需花费几小时去安装和设定PAM,就能大大提高Linux系统的安全性,把很多攻击阻挡在系统之外。
用户账号具有安全等级,这是因为在Linux上每个账号可以被赋予不同的权限,因此在建立一个新用户ID时,系统管理员应该根据需要赋予该账号不同的权限,并且归并到不同的用户组中。
FTP服务与前面讲的Telnet服务一样,用户名和用户密码也是明文传输的。因此,为了系统的安全,必须通过对/etc/ftpusers文件的配置,禁止root,bin,daemon,adm等特殊用户对FTP服务器进行远程访问,通过对/etc/ftphosts的设定限制某些主机不能连入FTP服务器,如果系统开放匿名FTP服务,则任何人都可以下载文件(有时还可以上载文件),因此,除非特别需要一般应禁止匿名FTP服务。