Linux服务器安全问题的分析实现策略
1 引言(Introduction)
随着信息技术的广泛应用,承载企业重要资料和信息的服务器扮演着极为重要的角色,很多企业和单位都搭建了服务器,一旦服务器受到破坏或发生故障,将会给企业带来巨大的经济损失,所以服务器的安全是十分重要的。
目前,由于很多具有攻击性的程序,如病毒、木马等大多是针对Windows系统开发,故Linux系统一直被认为是安全稳定的,很多大型的网站和公司都倾向于使用Linux操作系统作为服务器平台。但是安全总是相对的,目前针对Linux系统的入侵和攻击手段愈来愈多,Linux服务器本身的漏洞也愈来愈多,Linux服务器的安全风险正在日益增长,如何应对千变万化的攻击并保证Linux服务器的安全,已成为至关重要的课题。
本文将详细分析常见的Linux服务器安全隐患和攻击手段,并提出一些具体的防护措施。
2 Linux服务器的安全隐患(The security risks of
Linux server)
我们将Linux服务器的安全隐患总结为以下三点:
(1)Linux系统自身的安全漏洞;
(2)Linux服务的安全隐患;
(3)Linux的网络安全隐患。
下面详细分析这三点隐患。
2.1 Linux系统自身的安全漏洞
任何系统都不是绝对完美的,Linux系统也是如此,随着Linux应用的复杂化和开源化,Linux操作系统自身的漏洞也逐渐增多,我们将其分为以下几点:
(1)Linux账号漏洞
Linux账号漏洞也可以称为权限提升漏洞,这类漏洞一般都是来自系统自身或程序的缺陷,使得攻击者可以在远程登录时获得root管理员权限。以RedHat系统为例,其某个版本曾经存在账号漏洞,使得黑客入侵系统时通过执行特定的脚本可以轻松获得root级别的权限。此外,如果普通用户在重启系统后通过单用户模式进入Linux系统,通过修改Passwd账号文件,也可以获取root权限。
(2)Linux文件系统漏洞
Linux文件系统的安全保障是靠设置文件权限来实现的。Linux的文件权限包括三个属性,分别是所有者,用户组和其他人的权限,权限包括读、写、执行、允许SUID、允许SGID等。黑客会利用SUID和SGID获得某些程序的运行权限。另外黑客还可能修改一些可执行文件的脚本,让用户在登录时执行从而达到破坏系统的目的。
(3)Linux内核漏洞
系统内核出现漏洞往往是很危险的,Linux的内核短小精悍、稳定性和扩展性好,但是其内核的漏洞却不少。例如2003年9月份被发现的do_brk()边界检查不充分漏洞可以使攻击者可以绕过系统安全防护,直接对内核区域进行操作。再比如Linux内核中的整数溢出漏洞会导致内核中的数据被破坏,从而使得系统崩溃。
2.2 Linux服务的安全隐患
Linux系统上的服务种类繁多,其中网络服务最为重要,网络服务主要用来搭建各种服务器,下面我们就针对不同的网络服务探讨Linux系统的安全隐患。
(1)Apache服务的安全隐患
Apache是最为常见的开源WEB网站服务器程序,如果Apache服务出现漏洞将会对网站造成极大的威胁。目前Apache服务漏洞主要包括拒绝服务攻击、文件描述符泄露、日志记录失败等问题。
一些Apache服务的模块也可能存在漏洞,例如Apache的线程多处理模块(MPM)和Apache mod_cache模块中的cache_util.c可以引发服务器系统的崩溃。
(2)BIND域名服务的安全隐患
很多Linux域名服务器都采用BIND(Berkeley Internet Name Domain)软件包,据统计互联网上的DNS服务器有一半以上用的是有漏洞的BIND版本。常见的BIND漏洞有:solinger bug,黑客可以利用其让BIND服务产生间隔为120秒以上的暂停;fdmax bug,可以造成DNS服务器的崩溃;nxt bug,允许黑客以运行DNS服务的身份(默认为root)进入系统。
(3)SNMP服务的安全隐患
SNMP的全称是简单网络管理协议,Linux中SNMP服务的作用是管理监控整个核心网络,黑客利用SNMP的漏洞可以控制整片区域的网络。常见的SNMP漏洞有:Net-SNMP安全漏洞,黑客通过发送畸形的SNMP报文使服务器程序发生溢出,而导致系统崩溃[1];SNMP口令漏洞,SNMPv1版本使用明文口令,默认情况下系统自动开启并使用默认口令public,这是很多管理者经常忽略的问题[2]。
2.3 Linux的网络安全隐患
Linux作为网络操作系统,要频繁的与网络交互数据包,很多数据包经过伪装进入系统内部,会给系统带来破坏。较为常见的Linux网络安全隐患有:
(1)口令隐患
口令是操作系统的首道屏障,黑客入侵服务器的第一步往往就是破解口令。Linux操作系统的口令以文件的形式保存在系统中,例如RedHat版本中口令保存在/etc/passwd中。如果文件中存在不设口令或者弱口令的账号,就很容易被黑客破解。
(2)TCP/IP隐患
TCP/IP协议栈是网络操作系统内核中的重要模块,从应用层产生的网络数据都要经过TCP/IP协议的逐层封装才能发送到网络中去。当协议栈收到一些特殊的网络数据时就会发生异常。例如TCP模块收到SYN报文后,会回复一个ACK报文并稍带自己的SYN序号,这时如果黑客再回复一个RST报文,服务器就会重置TCP信息,这样黑客就可以在不暴露自己信息情况下对服务器进行端口扫描。
还有一些黑客给服务器的某个端口发送大量的SYN报文,而自己不回复确认,这样就会消耗服务器的资源而造成其瘫痪[3]。
3 针对Linux服务器的攻击手段(The means of
attack to Linux server)
在信息安全领域,攻击是指在未经授权的情况下进入信息系统,对系统进行更改、破坏或者窃取信息等行为的总称。在Linux服务器中,攻击行为主要可以概括为:
(1)口令入侵:对于一些采用弱口令的账户,黑客可以很轻松的通过暴力破解穷举口令以获得账户的权限。目前有很多口令破解的工具,例如字典破解工具将常见的口令和有意义的词组录入到字典库中,破解的时候优先选择这些常见的口令,可以大大的减少穷举的时间。另外,随着计算机处理能力的发展,口令破解对于普通人来说已经不是难事,如果口令长度不长,组合不复杂,破解时间都在可以接受的范围内。
(2)木马病毒:木马病毒是指植入到计算机系统中可以破坏或窃据机密信息的隐藏程序,木马一般常见于客户端主机,但也可能潜伏在Linux服务器中,例如
.C木马可以通过系统漏洞传播,打开服务器的UDP端口27015以允许黑客远程控制服务器。
(3)端口扫描:端口扫描是黑客入侵服务器的第一步,通过端口扫描,黑客可以获知服务器的相关信息。端口是应用层网络进程的标识,入侵计算机系统的实质是入侵系统中的进程,所以获知端口是否开启后才能实施真正的攻击。端口扫描的原理是利用系统的网络漏洞,绕过防火墙并获得服务器的回复,例如常见的S扫描就是利用TCP建立连接时三次握手的漏洞,在最后一次握手时发给服务器重置命令,在获得服务器端口信息后让服务器删除和自己相关的连接信息。
(4)拒绝服务攻击:拒绝服务攻击是指通过某种手段使得服务器无法向客户端提供服务,拒绝服务攻击可能是最不容易防护的攻击手段,因为对于服务器而言向外提供服务的形式是开放的,我们很难判断请求服务的主机是否为入侵者,当大量的主机发送请求时,服务器就会因为资源耗光而陷入瘫痪。
(5)缓冲区溢出:缓冲区溢出是指经过精心设计的程序将系统内执行程序的缓冲区占满而发生溢出,溢出的数据可能会使系统跳转执行其他非法程序或造成系统崩溃。缓冲区溢出的原因是程序员编写程序时没有检查数据长度造成的。
(6)僵尸网络:僵尸网络是指受黑客控制的大量主机,这些主机可以同时对一个服务器发起攻击,而自身却不知情。这种攻击手段是很隐秘的,很难查到攻击者的真实身份。
(7)网络监听:网络监听是指通过某种手段截获主机之间的通信数据以获得口令等重要信息。一些常见网络监听工具可以解析网段内的所有数据,此时如果主机之间的通信是明文传输的,黑客就可轻而易举地读取包括口令在内的所有信息资料。
(8)网络欺骗:网络欺骗包括IP地址欺骗、WWW欺骗、DNS欺骗、ARP欺骗等一系列欺骗方法。其主要目的是通过虚假的网络信息欺骗目的主机,已达到扰乱通信的目的。
4 Linux服务器的防护措施(The protective
measures of Linux server)
针对以上漏洞和攻击,Linux服务器的防护措施主要可以分为系统安全防护和网络安全防护两类,下面逐一介绍:
4.1 Linux系统安全防护措施
(1)系统账号及口令安全:对于网络服务器而言,很多账户都是不必要的,账号越多,系统就越易受攻击。所以应该最大限度的删除多余账户,并对用户账号设置安全级别,以保证每个账号的权限都被限制在被允许的范围内。
另外还要确保每个已有账户都设置了复杂度高的口令,口令的复杂度设置可以通过修改/文件来实现,其中的PASS_MAX_DAYS表示密码最长的过期天数,PASS_MIN_DAYS用来设置密码最小的过期天数,PASS_MIN_LEN表示密码最小的长度,PASS_WARN_AGE表示密码过期后的警告天数。
口令文件的安全性也至关重要,我们可以通过chattr命令给口令文件加入只读属性:chattr+i/etc/passwd,这样口令文件就不能随意被修改了。
(2)文件安全设置:Linux的文件系统提供了访问控制的功能,访问控制的客体是文件和目录,主体是用户,包括文件或目录的所有者,用户所在组及其他组。访问控制的操作包括读(r)、写(w)和执行(x),管理员根据不同的权限设置关于主体的能力表以及关于客体的访问控制列表。
(3)系统日志:Linux服务器的系统日志也是应该被关注的设置,因为日志文件详细的记录了系统发生的各类事件,例如系统的错误记录,每次用户登录系统记录,各种服务的运行记录以及网络用户的访问记录等等。如果服务器遭受到攻击,管理员可以通过日志追踪到黑客留下的痕迹,另外,当涉及到法律纠纷时,系统日志经过专业人员提取还可以作为电子证据。
(4)服务安全:Linux服务器中往往开启了很多服务,首先应该确定的是哪些服务是不必要的,可以通过chkconfig命令关闭系统自启动的服务。接下来要在必须启动的服务中找到存在的风险,例如apache服务的目录浏览功能会使访问者进入网站的根目录,并能浏览其中的所有文件。
(5)安全工具:Linux服务器中带有很多安全工具方便管理员的使用,例如SSH可以加密传输数据,Tcpdump可以用来检查网络通讯的原始数据。
4.2 Linux网络安全防护措施
Linux网络服务器也采用了传统的网络安全防护手段,即防火墙与入侵检测系统。防火墙是保护内网的屏障,它过滤并分析网络数据包,阻止有威胁的数据进入;入侵检测是内网和系统内部的监控器,它分析异常数据并作出报警,有些入侵检测还会与防火墙联动,一同保护服务器的安全。Linux系统中的Iptables和Snort是比较成熟的防火墙和入侵检测系统,下面我们逐一介绍:
(1)防火墙:Iptables,目前使用的最新版本是Linux 2.4内核中的Netfilter/Iptables包过滤机制。
(2)入侵检测:Snort是一个免费的轻量级网络入侵检测系统。它能兼容多个不同的操作系统平台,可以用于监视小型网络或者服务器系统内部的服务,在进行网络监控时Snort可以将网络数据与入侵检测规则做模式匹配,从而检测出可能的入侵数据,同时Snort也可以使用统计学的方法对网络数据进行异常检测[6]。
5 结论(Conclusion)
针对Linux的攻击手段日益增多,Linux服务器的安全隐患也随之增大,对于企业而言,总结出一整套有效且规范的防护措施是极为必要的。本文结合实际工作经验,分析并总结了Linux服务器存在的安全隐患和常见的攻击手段,提出了一些措施与方法。
参考文献(References)
[1] 思科系统公司.网络互联故障排除手册[R].北京:电子工业出版社,2002:120-125.
[2] 胡冠宇,陈满林,王维.SNMP网络管理安全性研究与应用[J].哈尔滨师范大学自然科学学报,2010,26(3):95-98.
[3] 刘晓萍.Linux2.4内核TCP/IP协议栈安全性研究[D].中国人民解放军信息工程大学,2004:10-11.
[4] 董剑安,王永刚,吴秋峰.iptables防火墙的研究与实现[J].计算机工程与应用,2003,39(17):161-163.
[5] 王波.Linux网络技术[M].北京:机械工业出版社,2007.
[6] 郭兆丰,徐兴元,刑静宇.Snort在入侵检测系统中的应用[J].大众科技,2007(2):69-71.
作者简介:
胡冠宇(1982-),男,硕士,讲师.研究领域:网络安全.
杨 明(1980-),男,硕士,讲师.研究领域:网络安全.
下一篇:结温精密测量及相关因素的综述研究
热门论文
- Linux服务器安全问题的分析实现策略
- Linux服务器安全问题的分析实现策略
- 浅析LINUX系统服务器的安全问题
- 基于Linux的FTP服务器安全研究
- 电子商务中安全问题的分析及其安全策略
- VLAN网络下的Web服务器的安全问题及优化策略
- Linux SVN服务器权限精确控制的实现
- 浅析Linux操作系统的安全策略
- 面向服务构架下Web服务安全问题和策略探讨
- 面向服务构架下Web服务安全问题和策略探讨
- 基于视频服务器的安全访问控制策略应用研究
- 电子商务安全性策略分析
- Access数据库的安全性分析的问题和策略
- 简析电子商务的安全问题及解决策略
- Win2003服务器RPL远程启动服务的安装与实现