liusimin 发表于 2004-9-1 00:14:03

用LINUX做路由已经有些时候了现在说说本人用了这么长时间LINUX的一点安全经验和其他什么的现在已经转向BSD平台但是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/k...0-20.7.i386.rpmhttp://updates.redhat.com/7.3/en/os/i386/k...0-20.7.i586.rpmhttp://updates.redhat.com/7.3/en/os/i386/k...0-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了J服务关闭完了以后,就是去掉一些不用的用户,用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: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:32:Portmapper 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 softnamerpm -e autofs-3.1.7-28rpm -e gd-devel-1.8.4-4rpm -e up2date-2.7.86-7.x.3rpm -e pumprpm -e apmdrpm -e lsapnptoolsrpm -e redhat-logosrpm -e mt-strpm -e kernel-pcmcia-csrpm -e setserialrpm -e redhat-releaserpm -e ejectrpm -e kudzurpm -e gdrpm -e raidtoolsrpm -e mailcaprpm -e setconsolsrpm -e gnupg   修改/etc/fstab只给分区必须的权限像这样LABEL=/bakups /bakups ext3 nosuid,noexec 1 2noexec表示不能在这个分区运行程序,nosuid不能使用nosuid的程序,根据情况自行设置其他分区,一般来说/tmp,/usr都要nosuid到此我们做了一些基本的安全设置,当然你也可以考虑,比如启用wheel组,只能让wheel组的用户能够变为su但是一般来说管理员都不用考虑这些,因为只有你一人能够登录这台机器,:),这些细节的设置我也会在下篇文章详细说明,应为毕竟这不是我这篇文章主要的东西。他们会同IDS等内容在下一篇文章详细呈现给大家。5、防火墙设置上面的基本安全设置做完了,那么接下来一个比较主要的安全就是防火墙,这是很重要的,如果你的设置没有作得很好,也许软件还有一些漏洞,但是防火墙设置得好的话,基本上可以帮你弥补这些问题,给大家一个基本的单个服务器的防火墙脚本,里面不包括端口转发,伪装等网关功能的内容,如果大家对这方面有兴趣,欢迎给我来信探讨#!/bin/bash#启用转发功能echo 1 > /proc/sys/net/ipv4/ip_forward#显示开始信息echo "Start FireWall for this server..."#清空目前的规则iptables -F#编辑默认策略为不能通过,数据接入链iptables -P INPUT DROP#转发链默认dropiptables -P FORWARD DROP#数据输出链默认dropiptables -P OUTPUT DROP#输出链允许源地址是xxx.xxx.xxx.xxx的数据输出,也可以指定网卡例: ?i eth0iptables -A OUTPUT -s xxx.xxx.xxx.xxx -j ACCEPT#接入链允许端口为15818的源地址为xxx.xxx.xxx.xxx的数据通过iptables -A INPUT -p tcp -d xxx.xxx.xxx.xxx --dport 15818 -j ACCEPT#如果需要添加端口就在下面修改,xxx处添加端口号#iptables -A INPUT -p tcp -d xxx.xxx.xxx.xxx --dport xxx -j ACCEPT#允许所有udp包通过iptables -A INPUT -d xxx.xxx.xxx.xxx -p udp -j ACCEPT#限制ping包每一秒钟一个,10个后开始iptables -A INPUT -p icmp -d xxx.xxx.xxx.xxx -m limit --limit 1/s --limit-burst 10 -j ACCEPT#限制IP碎片,每秒钟只允许100个碎片,防止DoS攻击iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT还有什么问题欢迎和我交流
页: [1]
查看完整版本: 今天研究一下linux的安全问题