摘 要:Linux是常作为服务器的系统,其系统安全不容忽视.然而加固系统又不是一件很容易的事.本文简单介绍了一下提升Linux 系统安全的几个方面。
关键词:Linux;安全性
Linux系统安全是作为网站、系统运维必须要重视的部分,众所周知,就安全性而言,Linux相对于Windows具有更多的优势。但是,不管选择哪一种Linux发行版本,在安装完成以后都应该进行一些必要的配置,来增强它的安全性。对Linux系统的安全加固包括许多方面,下面仅就几个常用的策略做些介绍、讨论。
1.取消不必要的服务和端口
任何网络连接都是通过开放的应用端口来实现的。如果尽可能少地开放端口,就使网络攻击变成无源之水,从而大大减少了攻击者成功的机会。Linux系统在/etc/rc.d/init.d下定义了很多的系统服务向用户提供,默认情况下这些服务大多都是随机启动,但是很多服务一般是不需要的,或者是没有进行配置就根本不起作用的,但由于设置成随机启动,在内核加载进内存开始运行后会花时间启动这些服务相应的进程从而大大降低开机速度,所以可以通过关闭这些服务从而加快开机速度。
在Linux中有两种不同的服务型态:一种是仅在有需要时才执行的服务,如finger服务;另一种是一直在执行的永不停顿的服务。这类服务在系统启动时就开始执行,因此不能靠修改inetd来停止其服务,而只能从修改/etc/rc.d/rc[n].d/文件或用Run level editor去修改它。提供文件服务的NFS服务器和提供NNTP新闻服务的news都属于这类服务。不同的GNU linux版本的系统服务大都一样,但是也会有一些小区别,一般都提供50个左右的服务。
把Linux作为专用服务器是个明智的举措。例如,希望Linux成为的Web服务器,可以取消系统内所有非必要的服务,只开启必要服务。这样做可以尽量减少后门,降低隐患,而且可以合理分配系统资源,提高整机性能。
inetd除了利用/etc/inetd.conf设置系统服务项之外,还利用/etc/services文件查找各项服务所使用的端口。因此,用户必须仔细检查该文件中各端口的设定,以免有安全上的漏洞。
2.保持最新的系统核心
Linux的内核承担着Linux操作系统的最为核心的任务,是其它程序和硬件等运行过程中的仲裁者:它要管理所有进程的内存,保证它们都能 平等得到处理器的时隙。此外,它还提供程序和硬件之间的接口等功能。因此,它的安全性对整个系统安全至关重要。
通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是加强Linux系统安全的必要操作。
早期的Kernel版本存在许多众所周知的安全漏洞,而且也不太稳定,只有2.0.x以上的版本才比较稳定和安全,当前的最新版本已经到了3.x。新版本的运行效率也有很大改观。在设定Kernel的功能时,只选择必要的功能,千万不要所有功能照单全收,否则会使Kernel变得很大,既占用系统资源,也给攻击者留下可乘之机。
在Internet上常常有最新的安全修补程序,Linux系统管理员应该消息灵通,经常光顾安全新闻组,查阅新的修补程序。
3.检查登录口令
用户口令是Linux安全的一个基本起点,设定登录口令是一项非常重要的安全措施,如果用户的口令设定不合适,就很容易被破译,尤其是拥有超级用户使用权限的用户,如果没有良好的口令,将给系统造成很大的安全漏洞。很多人使用的用户口令过于简单,这等于给侵入者敞开了大门,虽然从理论上说,只要有足够的时间和资源可以利用,就没有不能破解的用户口令。但选取得当的口令是难于破解的,较好的用户口令是那些只有他自己容易记得并理解的一串字符,并且绝对不要在任何地方写出来。
口令的长度一般不要少于8个字符,口令的组成应以无规则的大小写字母、数字和符号相结合,严格避免用英语单词或词组等设置口令,而且各用户的口令应该养成定期更换的习惯。另外,口令的保护还涉及到对/etc/passwd和/etc/shadow文件的保护,必须做到只有系统管理员才能访问这2个文件。安装一个口令过滤工具,能帮助检查口令是否耐得住攻击。用单词作密码是根本架不住暴力攻击的。攻击者们经常用一些常用字来破解口令。曾经有一位美国黑客表示,只要用“password”这个字,就可以打开全美多数的计算机。还有其它很多常用的单词被设为口令。口令设置和原则:
(1)足够长,指头只要多动一下为口令加一位,就可以让攻击者的耗费增加十倍;
(2)不要用完整的单词,尽可能包括数字、标点符号和特殊字符等;
(3)混用大小写字符;
(4)经常修改。
在多用户系统中,如果强迫每个用户选择不易猜出的口令,将大大提高系统的安全性。但如果passwd程序无法强迫每个上机用户使用恰当的口令,要确保口令的安全度,就只能依靠密码破解程序了。
实际上,密码破解程序是黑客工具箱中的一种工具,它将常用的口令或者是英文字典中所有可能用来作口令的字都用程序加密成密码字,然后将其与Linux系统的/etc/passwd文件或/etc/shadow影子文件相比较,如果发现有吻合的密码,就可以求得明码了。
在网络上可以找到很多密码破解程序。用户可以自己先执行密码破解程序,找出容易被攻击者破解的口令,先行改正总比被攻击者破解要有利。
4.设定用户账号的安全
应该禁止所有被操作系统本身默认启动而不必要的账号,并且在第一次安装系统时就应这么做。Linux提供了很多默认账号,然而账号越多,系统就越容易受到攻击。除密码之外,用户账号也有安全等级,这是因为在Linux上每个账号可以被赋予不同的权限,因此在建立一个新用户ID时,系统管理员应该根据需要赋予该账号不同的权限,并且归并到不同的用户组中。
在Linux系统上的tcpd中,可以设定允许上机和不允许上机人员的名单。其中,允许上机人员名单在/etc/hosts.allow中设置,不允许上机人员名单在/etc/hosts.deny中设置。设置完成之后,需要重新启动inetd程序才会生效。此外,Linux将自动把允许进入或不允许进入的结果记录到/rar/log/secure文件中,系统管理员可以据此查出可疑的进入记录。
每个账号ID应该有专人负责。在企业中,如果负责某个ID的职员离职,管理员应立即从系统中删除该账号。很多入侵事件都是借用了那些很久不用的账号。
在用户账
号之中,攻击者最喜欢具有root权限的账号,这种超级用户有权修改或删除各种系统设置,可以在系统中畅行无阻。因此,在给任何账号赋予root权限之前,都必须仔细考虑。
Linux系统中的/etc/securetty文件包含了一组能够以root账号登录的终端机名称。例如,在RedHat系统中,该文件的初始值仅允许本地虚拟控制台(rtys)以root权限登录,而不允许远程用户以root权限登录。最好不要修改该文件,如果一定要从远程登录为root权限,最好是先以普通账号登录,然后利用su命令升级为超级用户。
5.限制超级用户的权力
在前面已提到,root是Linux保护的重点,由于它权力无限,因此最好不要轻易将超级用户授权出去。但是,有些程序的安装和维护工作必须要求有超级用户的权限,在这种情况下,可以利用其他工具让这类用户有部分超级用户的权限。sudo就是这样的工具。
sudo程序允许一般用户经过组态设定后,以用户自己的密码再登录一次,取得超级用户的权限,但只能执行有限的几个指令。例如,应用sudo后,可以让管理磁带备份的管理人员每天按时登录到系统中,取得超级用户权限去执行文档备份工作,但却没有特权去作其他只有超级用户才能作的工作。
sudo不但限制了用户的权限,而且还将每次使用sudo所执行的指令记录下来,不管该指令的执行是成功还是失败。在大型企业中,有时候有许多人同时管理Linux系统的各个不同部分,每个管理人员都有用sudo授权给某些用户超级用户权限的能力,从sudo的日志中,可以追踪到谁做了什么以及改动了系统的哪些部分。
值得注意的是,sudo并不能限制所有的用户行为,尤其是当某些简单的指令没有设置限定时,就有可能被攻击者滥用。例如,一般用来显示文件内容的/etc/cat指令,如果有了超级用户的权限,攻击者就可以用它修改或删除一些重要的文件。
6.追踪攻击者的踪迹
在仔细设定了各种与Linux相关的组件,并且安装了必要的安全防护工具之后,Linux操作系统的安全性的确大为提高,但并不能保证防止那些强悍的网络攻击者的入侵。 在平时,网络管理人员要经常提高警惕,随时注意各种可疑状况,并且按时检查各种系统日志文件,包括一般信息日志、网络连接日志、文件传输日志以及用户登录日志等。在检查这些日志时,要注意是否有不合常理的时间记载。例如:不正常的日志记录:比如日志只记录了一半就切断了,或者整个日志文件被删除了; 用户从陌生的网址进入系统; 因口令错误或用户账号错误被摈弃在外的日志记录,尤其是那些一再连续尝试进入失败,但却有一定模式的试错法;非法使用或不正当使用超级用户权限su的指令;重新开机或重新启动各项服务的记录。
从计算机安全的角度看,世界上没有绝对密不透风、百分之百安全的计算机系统,Linux系统也不例外。采用以上几个方面的安全守则,虽然可以使Linux系统的安全性得到提高,使顺手牵羊型的攻击者和一般用户不能轻易闯入,但却不一定能阻挡那些技能卓越的高手,同时,Linux的安全加固还有更多方面此处没有涉及。因此,企业用户还需要详加研究,并借助防火墙等其他安全工具,共同防御攻击者入侵,才能确保系统万无一失。