打印本文 关闭窗口 | |||||||||||||||||||
全面提升Linux服务器的安全性能 | |||||||||||||||||||
作者:陈鹏 文章来源:eNet 点击数 更新时间:2009/9/11 23:14:41 文章录入:陈鹏 责任编辑:陈鹏 | |||||||||||||||||||
|
|||||||||||||||||||
1.安装和配置一个防火墙 一个配置适当的防火墙不仅是系统有效应对外部攻击的第一道防线,也是最重要的一道防线。在新系统第一次连接上Internet之前,防火墙就应该被安装并且配置好。防火墙配置成拒绝接收所有数据包,然后再打开允许接收的数据包,将有利于系统的安全。Linux为我们提供了一个非常优秀的防火墙工具,它就是netfilter/iptables(http://www.netfilter.org/)。它完全是免费的,并且可以在一台低配置的老机器上很好地运行。防火墙的具体设置方法请参见iptables使用方法。 2.关闭无用的服务和端口 任何网络连接都是通过开放的应用端口来实现的。如果我们尽可能少地开放端口,就使网络攻击变成无源之水,从而大大减少了攻击者成功的机会。把Linux作为专用服务器是个明智的举措。例如,希望Linux成为的Web服务器,可以取消系统内所有非必要的服务,只开启必要服务。这样做可以尽量减少后门,降低隐患,而且可以合理分配系统资源,提高整机性能。以下是几个不常用的服务: 1. fingerd(finger服务器)报告指定用户的个人信息,包括用户名、真实姓名、shell、目录和联系方式,它将使系统暴露在不受欢迎的情报收集活动下,应避免启动此服务。 2. R服务(rshd、rlogin、rwhod、rexec)提供各种级别的命令,它们可以在远程主机上运行或与远程主机交互,在封闭的网络环境中登录而不再要求输入用户名和口令,相当方便。然而在公共服务器上就会暴露问题,导致安全威胁。 3.删除不用的软件包 在进行系统规划时,总的原则是将不需要的服务一律去掉。默认的Linux就是一个强大的系统,运行了很多的服务。但有许多服务是不需要的,很容易引起安全风险。这个文件就是/etc/xinetd.conf,它制定了/usr/sbin/xinetd将要监听的服务,你可能只需要其中的一个:ftp,其它的类如telnet、shell、login、exec、talk、ntalk、imap、finger、auth等,除非你真的想用它,否则统统关闭。 4.不设置缺省路由 在主机中,应该严格禁止设置缺省路由,即default route。建议为每一个子网或网段设置一个路由,否则其它机器就可能通过一定方式访问该主机。
5.口令管理 口令的长度一般不要少于8个字符,口令的组成应以无规则的大小写字母、数字和符号相结合,严格避免用英语单词或词组等设置口令,而且各用户的口令应该养成定期更换的习惯。另外,口令的保护还涉及到对/etc/passwd和/etc/shadow文件的保护,必须做到只有系统管理员才能访问这2个文件。安装一个口令过滤工具加npasswd,能帮你检查你的口令是否耐得住攻击。如果你以前没有安装此类的工具,建议你现在马上安装。如果你是系统管理员,你的系统中又没有安装口令过滤工具,请你马上检查所有用户的口令是否能被穷尽搜索到,即对你的/ect/passwd文件实施穷尽搜索攻击。用单词作密码是根本架不住暴力攻击的。黑客们经常用一些常用字来破解密码。曾经有一位美国黑客表示,只要用“password”这个字,就可以打开全美多数的计算机。其它常用的单词还有:account、ald、alpha、beta、computer、dead、demo、dollar、games、bod、hello、help、intro、kill、love、no、ok、okay、please、sex、secret、superuser、system、test、work、yes等。密码设置和原则: 1.足够长,指头只要多动一下为密码加一位,就可以让攻击者的辛苦增加十倍; 2. 不要用完整的单词,尽可能包括数字、标点符号和特殊字符等; 3.混用大小写字符; 4.经常修改。 6.分区管理 一个潜在的攻击,它首先就会尝试缓冲区溢出。在过去的几年中,以缓冲区溢出为类型的安全漏洞是最为常见的一种形式了。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以轻易使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权! 为了防止此类攻击,我们从安装系统时就应该注意。如果用root分区记录数据,如log文件,就可能因为拒绝服务产生大量日志或垃圾邮件,从而导致系统崩溃。所以建议为/var开辟单独的分区,用来存放日志和邮件,以避免root分区被溢出。最好为特殊的应用程序单独开一个分区,特别是可以产生大量日志的程序,还建议为/home单独分一个区,这样他们就不能填满/分区了,从而就避免了部分针对Linux分区溢出的恶意攻击。 很多Linux桌面用户往往是使用Windows、Linux双系统。最好使用双硬盘。方法如下:首先将主硬盘的数据线拆下,找一个10GB左右的硬盘挂在计算机上,将小硬盘设置为从盘,按照平常的操作安装Linux服务器版本,除了启动的引导程序放在MBR外,其它没有区别。 安装完成,调试出桌面后,关闭计算机。将小硬盘的数据线拆下,装上原硬盘,并设定为主盘(这是为了原硬盘和小硬盘同时挂接在一个数据线上),然后安装Windows软件。将两个硬盘都挂在数据线上,数据线是IDE 0接口,将原硬盘设定为主盘,小硬盘设定为从盘。如果要从原硬盘启动,就在CMOS里将启动的顺序设定为“C、D、CDROM”,或者是“IDE0(HDD-0)”。这样计算机启动的时候,进入Windows界面。如果要从小硬盘启动,就将启动顺序改为“D、C、CDROM”,或者是“IDE1(HDD-1)”,启动之后,将进入Linux界面。平时两个操作系统是互相不能够访问的。 7.防范网络嗅探: 嗅探器技术被广泛应用于网络维护和管理方面,它工作的时候就像一部被动声纳,默默的接收看来自网络的各种信息,通过对这些数据的分析,网络管理员可以深入了解网络当前的运行状况,以便找出网络中的漏洞。在网络安全日益被注意的今天.我们不但要正确使用嗅探器.还要合理防范嗅探器的危害.嗅探器能够造成很大的安全危害,主要是因为它们不容易被发现。对于一个安全性能要求很严格的企业,同时使用安全的拓扑结构、会话加密、使用静态的ARP地址是有必要的。
8.完整的日志管理 日志文件时刻为你记录着你的系统的运行情况。当黑客光临时,也不能逃脱日志的法眼。所以黑客往往在攻击时修改日志文件,来隐藏踪迹。因此我们要限制对/var/log文件的访问,禁止一般权限的用户去查看日志文件。 另外要使用日志服务器。将客户机的日志信息保存副本是好主意,创建一台服务器专门存放日志文件,可以通过检查日志来发现问题。修改/etc/sysconfig/syslog文件加入接受远程日志记录。 /etc/sysconfig/syslog SYSLOGD_OPTIONS="-m r 0" 还应该设定日志远程保存。修改/etc/syslog.conf文件加入日志服务器的设置,syslog将保存副本在日志服务器上。 /etc/syslog.conf *.* @log_server_IP 可以使用彩色日志过滤器。彩色日志loco过滤器,目前版本是0.32。使用loco /var/log/messages more可以显示出彩色的日志,明显标记出root的位置和日志中异常的命令。这样可以减少分析日志时人为遗漏。还要进行日志的定期检查。Red Hat Linux中提供了logwatch工具,定期自动检查日志并发送邮件到管理员信箱。需要修改/etc/log.d/conf/ logwatch.conf文件,在MailTo = root参数后增加管理员的邮件地址。Logwatch会定期检查日志,过滤有关使用root、sudo、telnet、ftp登录等信息,协助管理员分析日常安全。完整的日志管理要包括网络数据的正确性、有效性、合法性。对日志文件的分析还可以预防入侵。例如、某一个用户几小时内的20次的注册失败记录,很可能是入侵者正在尝试该用户的口令。 9.终止正进行的攻击 假如你在检查日志文件时,发现了一个用户从你未知的主机登录,而且你确定此用户在这台主机上没有账号,此时你可能正被攻击。首先你要马上锁住此账号(在口令文件或shadow文件中,此用户的口令前加一个Ib或其他的字符)。若攻击者已经连接到系统,你应马上断开主机与网络的物理连接。如有可能,你还要进一步查看此用户的历史记录,查看其他用户是否也被假冒,攻击音是否拥有根权限。杀掉此用户的所有进程并把此主机的ip地址掩码加到文件hosts.deny中。 10.使用安全工具软件: Linux已经有一些工具可以保障服务器的安全。如bastille linux和Selinux。 bastille linux对于不熟悉 linux 安全设定的使用者来说,是一套相当方便的软件,bastille linux 目的是希望在已经存在的 linux 系统上,建构出一个安全性的环境。 增强安全性的Linux(SELinux)是美国安全部的一个研发项目,它的目的在于增强开发代码的Linux内核,以提供更强的保护措施,防止一些关于安全方面的应用程序走弯路,减轻恶意软件带来的灾难。普通的Linux系统的安全性是依赖内核的,这个依赖是通过setuid/setgid产生的。在传统的安全机制下,暴露了一些应用授权问题、配置问题或进程运行造成整个系统的安全问题。这些问题在现在的操作系统中都存在,这是由于他们的复杂性和与其它程序的互用性造成的。SELinux只单单依赖于系统的内核和安全配置政策。一旦你正确配置了系统,不正常的应用程序配置或错误将只返回错误给用户的程序和它的系统后台程序。其它用户程序的安全性和他们的后台程序仍然可以正常运行,并保持着它们的安全系统结构。用简单一点的话说就是:没有任何的程序配置错误可以造成整个系统的崩溃。安装SELinux SELinux的内核、工具、程序/工具包,还有文档都可以到增强安全性的Linux网站上上下载你必须有一个已经存在的Linux系统来编译你的新内核,这样才能访问没有更改的系统补丁包。
11.使用保留IP地址 : ---- 维护网络安全性最简单的方法是保证网络中的主机不同外界接触。最基本的方法是与公共网络隔离。然而,这种通过隔离达到的安全性策略在许多情况下是不能接受的。这时,使用保留IP地址是一种简单可行的方法,它可以让用户访问Internet同时保证一定的安全性。- RFC 1918规定了能够用于本地 TCP/IP网络使用的IP地址范围,这些IP地址不会在Internet上路由,因此不必注册这些地址。通过在该范围分配IP地址,可以有效地将网络流量限制在本地网络内。这是一种拒绝外部计算机访问而允许内部计算机互联的快速有效的方法。 保留IP地址范围: ---- 10.0.0 .0 - 10.255.255.255 ---- 172.16.0.0 - 172.31.255.255 --- 192.168.0.0 - 192.168.255.255 来自保留IP地址的网络交通不会经过Internet路由器,因此被赋予保留IP地址的任何计算机不能从外部网络访问。但是,这种方法同时也不允许用户访问外部网络。IP伪装可以解决这一问题。 12、合理选择Linux发行版本: 对于服务器使用的Linux版本,既不使用最新的发行版本,也不选择太老的版本。应当使用比较成熟的版本:前一个产品的最后发行版本如RHEL 3.0等。毕竟对于服务器来说安全稳定是第一的。 13.部署Linux防范病毒软件 Linux操作系统一直被认为是Windows系统的劲敌,因为它不仅安全、稳定、成本低,而且很少发现有病毒传播。但是,随着越来越多的服务器、工作站和个人电脑使用Linux软件,电脑病毒制造者也开始攻击这一系统。对于Linux系统无论是服务器,还是工作站的安全性和权限控制都是比较强大的,这主要得力于其优秀的技术设计,不仅使它的作业系统难以宕机,而且也使其难以被滥用。Unix经过20多年的发展和完善,已经变得非常坚固,而Linux基本上继承了它的优点。在Linux里,如果不是超级用户,那么恶意感染系统文件的程序将很难得逞。速客一号(Slammer)、冲击波(Blast)、霸王虫(Sobig)、 米虫(Mimail)、劳拉(Win32.Xorala)病毒等恶性程序虽然不会损坏Linux服务器,但是却会传播给访问它的Windows系统平台的计算机。 Linux平台下的病毒分类: 1.可执行文件型病毒:可执行文件型病毒是指能够寄生在文件中的,以文件为主要感染对象的病毒。病毒制造者们无论使用什么武器,汇编或者C,要感染ELF文件都是轻而易举的事情。这方面的病毒有Lindose。 2.蠕虫(worm)病毒:1988年Morris蠕虫爆发后,Eugene H. Spafford 为了区分蠕虫和病毒,给出了蠕虫的技术角度的定义,“计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上。”在Linux平台下,蠕虫病毒极为猖獗,像利用系统漏洞进行传播的ramen,lion,Slapper等,这些病毒都感染了大量的Linux系统,造成了巨大的损失。 3.脚本病毒:目前出现比较多的是使用shell脚本语言编写的病毒。此类病毒编写较为简单,但是破坏力同样惊人。我们知道,Linux系统中有许多的以.sh结尾的脚本文件,而一个短短十数行的shell脚本就可以在短时间内遍历整个硬盘中的所有脚本文件,进行感染。 4.后门程序:在广义的病毒定义概念中,后门也已经纳入了病毒的范畴。活跃在Windows系统中的后门这一入侵者的利器在Linux平台下同样极为活跃。从增加系统超级用户账号的简单后门,到利用系统服务加载,共享库文件注射,rootkit工具包,甚至可装载内核模块(LKM),Linux平台下的后门技术发展非常成熟,隐蔽性强,难以清除。是Linux系统管理员极为头疼的问题。 总体来说计算机病毒对Linux系统存在较小的危险。但是由于各种原因在企业应用中往往是Linux和Windows操作系统共存形成异构网络。所以Linux的防范病毒策略分成两个部分:
1.针对Linux本身(服务器和使用其作为桌面的计算机)防范策略。 可执行文件型病毒、蠕虫(worm)病毒、脚本病毒的防范通过安装GPL查杀病毒软件基本可以防范。服务器端可以使用AntiVir(http://www.hbedv.com/)它是工作在命令行下的,运行时可以较少占用系统资源。 对于后门程序防范可以采用LIDS(http://www.lids.org/)和Chkrootkit(http://www.chkrootkit.org/),LIDS是Linux内核补丁和系统管理员工具(lidsadm),它加强了Linus内核。可以保护dev/目录下的重要文件。而Chkrootkit可以检测系统的日志和文件,查看是否有恶意程序侵入系统,并且寻找关联到不同恶意程序的信号。最新版本的Chkrootkit0.45可以检测出sniffers、Trojans、worms、rootkit等59种。 2.针对使用Linux服务器后端的Windows系统的病毒防范策略。 许多企业使用代理服务器接入互联网,许多用户Windows系统进行都是在进行HTTP网页浏览和文件下载时感染病毒,所以可以在代理服务器上加挂一个病毒过滤器,对用户浏览的HTTP网页进行病毒检测,发现有用户浏览网页感染病毒的状况即由代理服务器进行阻断,丢弃带有病毒的请求,将不安全的进程阻止在代理服务器内,禁止带有病毒的数据向客户端计算机传播。squid是一款非常优秀的代理服务器软件,但是并没有专门的病毒过滤功能。可以考虑使用德国开放源码爱好者开发的一款基于Linux的病毒过滤代理服务器——HAVP(http://www.server-side.de/)。HAVP病毒过滤代理服务器软件既可以独立使用,也可以与Squid串联使用,增强Squid代理服务器的病毒过滤功能。 提供邮件服务是Linux服务器中重要应用。可以使用ClamAV(http://www.clamwin.com/),ClamAV 全名是 Clam AntiVirus,它跟Liunx一样强调公开程序代码、免费授权等观念,ClamAV 目前可以侦测超过40,000 种病毒、蠕虫、木马程序,并且随时更新数据库,有一组分布在世界各地的病毒专家,24小时更新及维护病毒数据库,任何人发现可疑病毒也可以随时跟她们取得 联系,立刻更新病毒码,在极短的时间内,网络上采用ClamAV的邮件服务器就完成最新的防护动作。 14、加强登录安全 通过修改/etc/login.defs文件可以增加对登录错误延迟、记录日志、登录密码长度限制、过期限制等设置。 /etc/login.defs #登录密码有效期90天 PASS_MAX_DAYS 90 #登录密码最短修改时间,防止非法用户短期更改多次 PASS_MIN_DAYS 0 #登录密码最小长度8位 PASS_MIN_LEN 8 #登录密码过期提前7天提示修改 PASS_WARN_AGE 7 #登录错误时等待时间10秒 FAIL_DELAY 10 #登录错误记录到日志 FAILLOG_ENAB yes #当限定超级用户管理日志时使用 SYSLOG_SU_ENAB yes #当限定超级用户组管理日志时使用 SYSLOG_SG_ENAB yes #当使用md5为密码的加密方法时使用
15. 使用OPENSSH代替FTP和Telnet 我们通常使用的网络传输程序FTP和Telnet等在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,黑客利用嗅探器非常容易截获这些口令和数据。SSH的英文全称是Secure SHell。通过使用SSH,用户可以把所有传输的数据进行加密,这样即使网络中的黑客能够劫持用户所传输的数据,如果不能解密的话,也不能对数据传输构成真正的威胁。另外,传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP提供一个安全的“传输通道”。在不安全的网路通信环境中,它提供了很强的验证(authentication)机制与非常安全的通信环境。SSH(Secure Shell)最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。 命令行使用OPENSSH比较麻烦。这里介绍gFTP和OPENSSH整合在一齐,提供一个图形化加密传输方案。gFTP和Windows下的CuteFtp一样使用非常简单,而且几乎所有的Linux发行版本都带有gFTP,不需要安装就可以使用。Windows下支持SSH的客户端软件不少,推荐使用Putty和Filezilla。 16.备份重要的文件 很多木马、蠕虫和后门都会用替换重要文件的办法隐藏自己,将最重要和常用的命令备份是好习惯。准备一套只读介质,光盘或者优盘,甚至放到网上下载都可以。总之是在必要时使用原始的命令而不是系统中可能被感染的命令。需要注意备份的如下: /bin/su /bin/ps /bin/rpm /usr/bin/top /sbin/ifconfig /bin/mount 17.补丁问题 你应该经常到你所安装的系统发行商的主页上去找最新的补丁。操作系统是计算机系统灵魂,维护着系统的底层,对内存、进程等子系统进行管理和调度。如果操作系统本身出现了漏洞,其影响将会是致命的。操作系统的内核,对于网络安全是至关重要的。目前,内核的维护主要分两种模式:对于私有操作系统,如Windows/Solaris等,由于个人用户不能直接接触其源代码,其代码由公司内部开发人员维护,其安全性由同样的团队保证,内核的修正与其他应用程序一样,以patch/SP包的方式发布。对于Linux这样的开放式系统,是一种开放的结构。应该说,开放的模式是双刃剑。从机制上讲,全世界的开发人员都能获得源代码,从而找出其中的纰漏,似乎安全性应该更好;但是同时,如果网络管理人员不能及时更新内核,也会留下安全隐患。而且,影响操作系统安全的因素有很多。从编成水平到用户的使用水平等等,都将影响到系统的安全。仅仅通过开放或者封闭源代码,都不能从根本上解决安全问题。如果你是一个Linux网管员,你经常需要上相应的网站看,是否有补丁,是否有了bug fix,是否需要升级。千万不要报侥幸心理,否则一个Shell脚本就可能拿下你的网站。套用一句名言:你的服务器永远可能在第二天被黑客接管。 Linux服务器运行的软件主要包括:Samba,Ftp,Telnet,Ssh,Mysql,Php,Apache,Mozilla等,这些软件,大都是开源软件,而且都在不停升级,稳定版和测试版交替出现。在www.samba.org和 www.apache.org上,最新的ChangeLog中都写着:bug fix, security bug fix的字样。所以Linux网管员要经常的关注相关网站的bug fix和升级,及时升级或添加补丁。 总结: 正如没有牢不可破的盾一样,没有任何的系统是绝对安全的。同样在安全领域中,也没有谁可以说自己是高手。系统的安全是靠很多前辈的汗水和智慧来换取的。
【责任编辑 徐洋】 |
|||||||||||||||||||
打印本文 关闭窗口 |