写这篇文章是针对使用linux的管理员,爱好者,对linux安全性很关心的同僚们,希望对大家有所帮助,废话就不多说了,进入正题吧。
在说安全设置之前,我想先说说关于发行版和安装的问题。对于发行版,我相信大都知道,linux发行版实在是太多了我也不止一次在很多网站的文章,很多书籍上看到过议论那种发行版是最好的,其实我个人认为,在linux世界中,没有最好的这种说法,只要自己习惯,熟悉的一种版本,那么我就可以说他是最好的。写这篇文章,我也试找了很多资料,试图找到一个大家都觉得常用的,熟悉的,最后,我觉得redhat linux真的很不错,虽然它的内核比较庞大,而且效率不使所有发行版中最高的,但是它的普遍性,易用性和软件升级支持,应用软件支持方面是值得提出的,这些方面也正是一个好的linux发行版需要具有的。 这篇文章建立在redhat linux 7.3版之上,所有的软件设置均在这个版本上测试通过。
说到这里,可能大家要问,为什么我要用redhat 7.3?现在不是有很多吗?就redhat来说就有redhat 8.0, redhat 9.0还有什么redhat 高级企业版,等等。这么多新的东西为什么不用呢?这个问题问得很好,这正是我要说的安装和选择发行版是要注意的一点。
1、版本的选择
我使用redhat也有很长时间了,个人认为,redhat的.0版本都属于大版本升级的第一个版本,这个版本往往很多软件包不是很稳定,而且容易出现故障,对于管理员来说linux绝大部分是用来作为服务器使用的,那么要最为服务器,最最大的首要问题就是稳定,其次最重要的也是安全,所以如果你是管理员,而非狂热的爱好者,发烧友,我建议你选择redhat 7.3。redhat 的版本号,后面跟了小版本号的就是软件包有很多更新和修改的,虽然这个更新可能不是最新,但是至少它是这个稳定版本中最新最稳定的,不知大家理解这个问题没有,后面我将详细介绍一下版本的升级问题,那里我将会说明这个理论。
2、安装方式
选择好了安装发行版,那么我们就开始安装了,其实安装的时候只有几个需要注意的地方,其一就是分区,其二就是安装的软件包。分区的讲究就是你需要针对你的应用来规划分区,过去看过很多论述linux是否有一个最佳的分区方案,虽然很多人也提出了很多优秀的分区方案,但是我觉得还是需要更具自己的应用作的分区才是最佳的分区,下面各个分区方案,但是纯属建议,还是要更具自己的需要来作。个人认为,标准的服务器,至少扩常用的分区,因此建议将硬盘划分为以下的样子: /boot swap / /var /usr /home /tmp ,大小根据自己的应用来,/不能小于1G,/usr 和 /var都要大一点,因为大部分软件在里面,其他几个更具需要来,说到swap我想关于这个区的大小争议也比较大,我在综合了很多朋友的意见后,总结出一条规则,如果你的内存小于1G那么分为内存的2倍,如果大于1G那么就分最大2G的swap,这样做是为什么呢?因为swap大家都知道,是虚拟内存的空间,小了又不能发挥最好的作用,大了又浪费空间,这个大小是具体的理由就是,内存大的话,那么应用程序占用的虚拟空间就小,但是为了完全满足服务器的内存需要,据很多朋友的经验,还有我切身的体验,这种分法可以说是一个最佳的方案了,特别对于数据库等大型应用程序的内存需要来讲,而且很多服务器的内存都是1G-2G左右。安装软件包,讲究的是安装得越少越精越好,但是redhat开始安装的时候,作为一个服务器,下面的几个软件包组需要选择:
Networ support(网络支持)
Messaging and web tools(可选择安装,一些联网的工具如ncftp等)
Router/Firewall(防火墙软件,需要安装,但是他有一点不好把ipchian,iptables,ipwf等都安装了,后面将解释如何删除)
Network managed workstation(管理用工具)
Utilities(常用工具,备份工具等)
虽然我们现在安装是简单的选择了这几个软件包组,我们在后面的安全设置时将会删除一些不用的包,这将在后面说。
3、更新软件
虽然redhat 7.3是更新过的版本,但是其中还有很多软件包有漏洞,其中最大的漏洞就是2.4.18的一个漏洞,它会导致ext3文件系统崩溃,我就遇到过很几次(据ext3开发小组称,这种现象是在特定的操作和条件下才会产生的,一般用户很少出现这种现象),虽然很多现在已近解决这个问题,但是7.3没有更新内核的话还是不稳定的,更新有两种方式,一种时下在更新的软件包手动的用rpm ?Uvh 来更新,另外一种也是我推荐的方式,使用up2date来更新,这可是一个好东西,它能很方便的更新你的系统,而且是更具你安装的软件包来更新的,他不会把bind8更新为bind9,不会把redhat 7.3更新到redhat 9.0,这样就确保了你目前使用的版本的稳定性和完整性,它只是针对这个版本的软件包进行了修正,版本号一般就是这样变得,比如iptables ,7.3的rpm 版本是1.2.5那么更新后就是1.2.8修正了很多漏洞错误,但是并没有作大的调整,确保了你的使用和与应用程序的兼容性。
Up2date的使用,在自动升级之前,建议几个操作:
* 第一个,由于redhat 7.3版自带的up2date有SSL的bug,因此,需要取下在一个最新的up2date来更新,下载地址https://rhn.redhat.com/errata/RHSA-2003-267.html
* 第二个,一般来说,我们都不希望up2date自动更新内核,然后内核的更新直接解决很多重大漏洞,特别是新安装的redhat 7.3就有ext3崩溃的漏洞因此,我建议大家自己先手工升级内核,当然使用rpm 包来升级,这样节约很多时间,开始我就说过,虽然redhat不是效率最高的,但是确实做得最普遍的一个系统,rpm的方便就完全体现了这点优势,redhat 7.3内核的下载地址:
http://updates.redhat.com/7.3/en/os/i386/kernel-2.4.20-20.7.i386.rpm
http://updates.redhat.com/7.3/en/os/i386/kernel-2.4.20-20.7.i586.rpm
http://updates.redhat.com/7.3/en/os/i386/kernel-2.4.20-20.7.i686.rpm
对于你自己的系统,你可以用uname ?a看看目前的是i386还是i686然后根据这个来选择下载的内核升级包。建议最好使用rpm ?ivh 来升级,这样可以保留原来的内核,确保没有问题再将原来内核rpm ?e掉,这个rpm包非常简单甚至你不用修改你的lilo.conf或者grub.conf的配置文件,它自动给你加入了,你需要做的就是重起然后选择新的内核启动就行了。做完了内核的升级,用新内核重起后就是up2date的时候了。运行rhn_register随便注册一个号码(这个要保密哦,我自己研究的,rhn网络的升级实际上是收费的服务,但是一个邮箱一个账号是免费的,但是一个账号只有一个升级系统的权限,你可以通过rhn的网络来登录修改这个权限给其他的机器,不过这样太麻烦了,而且redhat7.3的升级基本上稳定了,只需要在安装第一次升级一下就行了,所以我们就随便注册帐号来升级下:P)根据提示,它默认选择了你机器上所有的包,为你升级,没关系,一路next最后finish然后回到控制台,接下来就是激动人心的升级了,运行命令:
up2date ?u
就开始升级了,这个过程看你的网络了,大约有1小时左右。
它会自动为你下载安装,虽然不用重起,但是建议你还是重起一下,确保新内核和新的软件包能够正确使用到此为止,系统更新就做完了,下面就是比较重要的安全设置了。
4、安全设置
其实linux的安全已经比较好了,我们做得初浅的安全讨论,无非就是关闭服务,设置一定的防火墙,如果大家对防黑客和高级的安全设置感兴趣的话,那么请关注我下几篇文章,我将向大家介绍有关简单的IDS等等防黑技术,谢谢。关闭不用的服务,这个问题,很多文章都提出过,我个人认为最有效的关闭方法如下,大家都知道,linux中控制服务的有chkconfig ,ntsysv等等,其实这些工具控制的服务都是linux已sysV的风格保存的服务启动项目,其实都是/etc/rc.d/下面的东西,已rc3.d为例,3表示init3时要做的项目,里面的文件都是一些连接,S开头表示启动,K开头表示终止,所以rc0.d里面基本都是K开头的,所以大家不用害怕觉得linux的服务多么神秘,这里介绍两个简单可行的控制服务的办法。
运行ntsysv控制服务
使用ntsysv关闭服务只开
crond 可定义计划任务
network 网络
random 生成随机数,用于ssh的会话对称密钥的生成
sshd ssh服务器端
syslog 系统日志服务
xinetd 超级进程(下面没有服务要用的话,可以关闭)
其实xinetd是类似于init这个超级进程的一个进程,不过可以完全关闭它,因为下面都是些没有用服务监听程序,对于一般的服务器,基本上只需要上面ntsysv所列的服务就行了,其他的都关闭,当然如果你要web当然要开httpd了。
服务关闭完了以后,就是去掉一些不用的用户,用vipw
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#news:x:9:13:news:/var/spool/news:
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x: