发新话题
打印

使用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:0perator:/root:/sbin/nologin

  #games:x:12:100:games:/usr/games:/sbin/nologin

  #gopher:x:13:30:gopher:/var/gopher:/sbin/nologin

  #ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

  #vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin

  #rpc:x:32:32ortmapper RPC user:/:/sbin/nologin

  #rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

  #nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

  #nscd:x:28:28:NSCD Daemon:/:/bin/false

  #radvd:x:75:75:radvd user:/:/bin/false

  去掉这些用户上出多余的rpm包

  rpm -e softname

  rpm -e autofs-3.1.7-28

  rpm -e gd-devel-1.8.4-4

  rpm -e up2date-2.7.86-7.x.3

  rpm -e pump

  rpm
发新话题