胡冠宇 楊明
摘 要:Linux系統(tǒng)作為主流的網(wǎng)絡(luò)服務(wù)器平臺(tái),正面臨著日益嚴(yán)峻的安全問(wèn)題,各種攻擊和漏洞給企業(yè)帶來(lái)了巨大的損失。本文針對(duì)Linux服務(wù)器的安全問(wèn)題,分析并總結(jié)了Linux服務(wù)器存在的安全隱患,研究了在Linux系統(tǒng)上的常見(jiàn)的攻擊手段。最后,本文結(jié)合實(shí)際經(jīng)驗(yàn)提出了一些有效的防護(hù)措施。
關(guān)鍵詞:Linux服務(wù)器;安全隱患;攻擊;防護(hù)措施
中圖分類號(hào):TP393.0 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:Linux system as a mainstream network server is facing increasingly serious security problems,various attacks and vulnerabilities impose devastating losses on businesses.In this paper,we analyze and summarize the security risks of the Linux server according to the safety problem,and researching the familiar attack methods in Linux system.Finally,we represent some effective protective measures combining with the practical experience.
Keywords:Linux server;security risks;attack;protective measures
1 引言(Introduction)
隨著信息技術(shù)的廣泛應(yīng)用,承載企業(yè)重要資料和信息的服務(wù)器扮演著極為重要的角色,很多企業(yè)和單位都搭建了服務(wù)器,一旦服務(wù)器受到破壞或發(fā)生故障,將會(huì)給企業(yè)帶來(lái)巨大的經(jīng)濟(jì)損失,所以服務(wù)器的安全是十分重要的。
目前,由于很多具有攻擊性的程序,如病毒、木馬等大多是針對(duì)Windows系統(tǒng)開(kāi)發(fā),故Linux系統(tǒng)一直被認(rèn)為是安全穩(wěn)定的,很多大型的網(wǎng)站和公司都傾向于使用Linux操作系統(tǒng)作為服務(wù)器平臺(tái)。但是安全總是相對(duì)的,目前針對(duì)Linux系統(tǒng)的入侵和攻擊手段愈來(lái)愈多,Linux服務(wù)器本身的漏洞也愈來(lái)愈多,Linux服務(wù)器的安全風(fēng)險(xiǎn)正在日益增長(zhǎng),如何應(yīng)對(duì)千變?nèi)f化的攻擊并保證Linux服務(wù)器的安全,已成為至關(guān)重要的課題。
本文將詳細(xì)分析常見(jiàn)的Linux服務(wù)器安全隱患和攻擊手段,并提出一些具體的防護(hù)措施。
2 Linux服務(wù)器的安全隱患(The security risks of
Linux server)
我們將Linux服務(wù)器的安全隱患總結(jié)為以下三點(diǎn):
(1)Linux系統(tǒng)自身的安全漏洞;
(2)Linux服務(wù)的安全隱患;
(3)Linux的網(wǎng)絡(luò)安全隱患。
下面詳細(xì)分析這三點(diǎn)隱患。
2.1 Linux系統(tǒng)自身的安全漏洞
任何系統(tǒng)都不是絕對(duì)完美的,Linux系統(tǒng)也是如此,隨著Linux應(yīng)用的復(fù)雜化和開(kāi)源化,Linux操作系統(tǒng)自身的漏洞也逐漸增多,我們將其分為以下幾點(diǎn):
(1)Linux賬號(hào)漏洞
Linux賬號(hào)漏洞也可以稱為權(quán)限提升漏洞,這類漏洞一般都是來(lái)自系統(tǒng)自身或程序的缺陷,使得攻擊者可以在遠(yuǎn)程登錄時(shí)獲得root管理員權(quán)限。以RedHat系統(tǒng)為例,其某個(gè)版本曾經(jīng)存在賬號(hào)漏洞,使得黑客入侵系統(tǒng)時(shí)通過(guò)執(zhí)行特定的腳本可以輕松獲得root級(jí)別的權(quán)限。此外,如果普通用戶在重啟系統(tǒng)后通過(guò)單用戶模式進(jìn)入Linux系統(tǒng),通過(guò)修改Passwd賬號(hào)文件,也可以獲取root權(quán)限。
(2)Linux文件系統(tǒng)漏洞
Linux文件系統(tǒng)的安全保障是靠設(shè)置文件權(quán)限來(lái)實(shí)現(xiàn)的。Linux的文件權(quán)限包括三個(gè)屬性,分別是所有者,用戶組和其他人的權(quán)限,權(quán)限包括讀、寫、執(zhí)行、允許SUID、允許SGID等。黑客會(huì)利用SUID和SGID獲得某些程序的運(yùn)行權(quán)限。另外黑客還可能修改一些可執(zhí)行文件的腳本,讓用戶在登錄時(shí)執(zhí)行從而達(dá)到破壞系統(tǒng)的目的。
(3)Linux內(nèi)核漏洞
系統(tǒng)內(nèi)核出現(xiàn)漏洞往往是很危險(xiǎn)的,Linux的內(nèi)核短小精悍、穩(wěn)定性和擴(kuò)展性好,但是其內(nèi)核的漏洞卻不少。例如2003年9月份被發(fā)現(xiàn)的do_brk()邊界檢查不充分漏洞可以使攻擊者可以繞過(guò)系統(tǒng)安全防護(hù),直接對(duì)內(nèi)核區(qū)域進(jìn)行操作。再比如Linux內(nèi)核中的整數(shù)溢出漏洞會(huì)導(dǎo)致內(nèi)核中的數(shù)據(jù)被破壞,從而使得系統(tǒng)崩潰。
2.2 Linux服務(wù)的安全隱患
Linux系統(tǒng)上的服務(wù)種類繁多,其中網(wǎng)絡(luò)服務(wù)最為重要,網(wǎng)絡(luò)服務(wù)主要用來(lái)搭建各種服務(wù)器,下面我們就針對(duì)不同的網(wǎng)絡(luò)服務(wù)探討Linux系統(tǒng)的安全隱患。
(1)Apache服務(wù)的安全隱患
Apache是最為常見(jiàn)的開(kāi)源WEB網(wǎng)站服務(wù)器程序,如果Apache服務(wù)出現(xiàn)漏洞將會(huì)對(duì)網(wǎng)站造成極大的威脅。目前Apache服務(wù)漏洞主要包括拒絕服務(wù)攻擊、文件描述符泄露、日志記錄失敗等問(wèn)題。
一些Apache服務(wù)的模塊也可能存在漏洞,例如Apache的線程多處理模塊(MPM)和Apache mod_cache模塊中的cache_util.c可以引發(fā)服務(wù)器系統(tǒng)的崩潰。
(2)BIND域名服務(wù)的安全隱患
很多Linux域名服務(wù)器都采用BIND(Berkeley Internet Name Domain)軟件包,據(jù)統(tǒng)計(jì)互聯(lián)網(wǎng)上的DNS服務(wù)器有一半以上用的是有漏洞的BIND版本。常見(jiàn)的BIND漏洞有:solinger bug,黑客可以利用其讓BIND服務(wù)產(chǎn)生間隔為120秒以上的暫停;fdmax bug,可以造成DNS服務(wù)器的崩潰;nxt bug,允許黑客以運(yùn)行DNS服務(wù)的身份(默認(rèn)為root)進(jìn)入系統(tǒng)。endprint
(3)SNMP服務(wù)的安全隱患
SNMP的全稱是簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議,Linux中SNMP服務(wù)的作用是管理監(jiān)控整個(gè)核心網(wǎng)絡(luò),黑客利用SNMP的漏洞可以控制整片區(qū)域的網(wǎng)絡(luò)。常見(jiàn)的SNMP漏洞有:Net-SNMP安全漏洞,黑客通過(guò)發(fā)送畸形的SNMP報(bào)文使服務(wù)器程序發(fā)生溢出,而導(dǎo)致系統(tǒng)崩潰[1];SNMP口令漏洞,SNMPv1版本使用明文口令,默認(rèn)情況下系統(tǒng)自動(dòng)開(kāi)啟并使用默認(rèn)口令public,這是很多管理者經(jīng)常忽略的問(wèn)題[2]。
2.3 Linux的網(wǎng)絡(luò)安全隱患
Linux作為網(wǎng)絡(luò)操作系統(tǒng),要頻繁的與網(wǎng)絡(luò)交互數(shù)據(jù)包,很多數(shù)據(jù)包經(jīng)過(guò)偽裝進(jìn)入系統(tǒng)內(nèi)部,會(huì)給系統(tǒng)帶來(lái)破壞。較為常見(jiàn)的Linux網(wǎng)絡(luò)安全隱患有:
(1)口令隱患
口令是操作系統(tǒng)的首道屏障,黑客入侵服務(wù)器的第一步往往就是破解口令。Linux操作系統(tǒng)的口令以文件的形式保存在系統(tǒng)中,例如RedHat版本中口令保存在/etc/passwd中。如果文件中存在不設(shè)口令或者弱口令的賬號(hào),就很容易被黑客破解。
(2)TCP/IP隱患
TCP/IP協(xié)議棧是網(wǎng)絡(luò)操作系統(tǒng)內(nèi)核中的重要模塊,從應(yīng)用層產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù)都要經(jīng)過(guò)TCP/IP協(xié)議的逐層封裝才能發(fā)送到網(wǎng)絡(luò)中去。當(dāng)協(xié)議棧收到一些特殊的網(wǎng)絡(luò)數(shù)據(jù)時(shí)就會(huì)發(fā)生異常。例如TCP模塊收到SYN報(bào)文后,會(huì)回復(fù)一個(gè)ACK報(bào)文并稍帶自己的SYN序號(hào),這時(shí)如果黑客再回復(fù)一個(gè)RST報(bào)文,服務(wù)器就會(huì)重置TCP信息,這樣黑客就可以在不暴露自己信息情況下對(duì)服務(wù)器進(jìn)行端口掃描。
還有一些黑客給服務(wù)器的某個(gè)端口發(fā)送大量的SYN報(bào)文,而自己不回復(fù)確認(rèn),這樣就會(huì)消耗服務(wù)器的資源而造成其癱瘓[3]。
3 針對(duì)Linux服務(wù)器的攻擊手段(The means of
attack to Linux server)
在信息安全領(lǐng)域,攻擊是指在未經(jīng)授權(quán)的情況下進(jìn)入信息系統(tǒng),對(duì)系統(tǒng)進(jìn)行更改、破壞或者竊取信息等行為的總稱。在Linux服務(wù)器中,攻擊行為主要可以概括為:
(1)口令入侵:對(duì)于一些采用弱口令的賬戶,黑客可以很輕松的通過(guò)暴力破解窮舉口令以獲得賬戶的權(quán)限。目前有很多口令破解的工具,例如字典破解工具將常見(jiàn)的口令和有意義的詞組錄入到字典庫(kù)中,破解的時(shí)候優(yōu)先選擇這些常見(jiàn)的口令,可以大大的減少窮舉的時(shí)間。另外,隨著計(jì)算機(jī)處理能力的發(fā)展,口令破解對(duì)于普通人來(lái)說(shuō)已經(jīng)不是難事,如果口令長(zhǎng)度不長(zhǎng),組合不復(fù)雜,破解時(shí)間都在可以接受的范圍內(nèi)。
(2)木馬病毒:木馬病毒是指植入到計(jì)算機(jī)系統(tǒng)中可以破壞或竊據(jù)機(jī)密信息的隱藏程序,木馬一般常見(jiàn)于客戶端主機(jī),但也可能潛伏在Linux服務(wù)器中,例如Linux.Plupii.C木馬可以通過(guò)系統(tǒng)漏洞傳播,打開(kāi)服務(wù)器的UDP端口27015以允許黑客遠(yuǎn)程控制服務(wù)器。
(3)端口掃描:端口掃描是黑客入侵服務(wù)器的第一步,通過(guò)端口掃描,黑客可以獲知服務(wù)器的相關(guān)信息。端口是應(yīng)用層網(wǎng)絡(luò)進(jìn)程的標(biāo)識(shí),入侵計(jì)算機(jī)系統(tǒng)的實(shí)質(zhì)是入侵系統(tǒng)中的進(jìn)程,所以獲知端口是否開(kāi)啟后才能實(shí)施真正的攻擊。端口掃描的原理是利用系統(tǒng)的網(wǎng)絡(luò)漏洞,繞過(guò)防火墻并獲得服務(wù)器的回復(fù),例如常見(jiàn)的S掃描就是利用TCP建立連接時(shí)三次握手的漏洞,在最后一次握手時(shí)發(fā)給服務(wù)器重置命令,在獲得服務(wù)器端口信息后讓服務(wù)器刪除和自己相關(guān)的連接信息。
(4)拒絕服務(wù)攻擊:拒絕服務(wù)攻擊是指通過(guò)某種手段使得服務(wù)器無(wú)法向客戶端提供服務(wù),拒絕服務(wù)攻擊可能是最不容易防護(hù)的攻擊手段,因?yàn)閷?duì)于服務(wù)器而言向外提供服務(wù)的形式是開(kāi)放的,我們很難判斷請(qǐng)求服務(wù)的主機(jī)是否為入侵者,當(dāng)大量的主機(jī)發(fā)送請(qǐng)求時(shí),服務(wù)器就會(huì)因?yàn)橘Y源耗光而陷入癱瘓。
(5)緩沖區(qū)溢出:緩沖區(qū)溢出是指經(jīng)過(guò)精心設(shè)計(jì)的程序?qū)⑾到y(tǒng)內(nèi)執(zhí)行程序的緩沖區(qū)占滿而發(fā)生溢出,溢出的數(shù)據(jù)可能會(huì)使系統(tǒng)跳轉(zhuǎn)執(zhí)行其他非法程序或造成系統(tǒng)崩潰。緩沖區(qū)溢出的原因是程序員編寫程序時(shí)沒(méi)有檢查數(shù)據(jù)長(zhǎng)度造成的。
(6)僵尸網(wǎng)絡(luò):僵尸網(wǎng)絡(luò)是指受黑客控制的大量主機(jī),這些主機(jī)可以同時(shí)對(duì)一個(gè)服務(wù)器發(fā)起攻擊,而自身卻不知情。這種攻擊手段是很隱秘的,很難查到攻擊者的真實(shí)身份。
(7)網(wǎng)絡(luò)監(jiān)聽(tīng):網(wǎng)絡(luò)監(jiān)聽(tīng)是指通過(guò)某種手段截獲主機(jī)之間的通信數(shù)據(jù)以獲得口令等重要信息。一些常見(jiàn)網(wǎng)絡(luò)監(jiān)聽(tīng)工具可以解析網(wǎng)段內(nèi)的所有數(shù)據(jù),此時(shí)如果主機(jī)之間的通信是明文傳輸?shù)模诳途涂奢p而易舉地讀取包括口令在內(nèi)的所有信息資料。
(8)網(wǎng)絡(luò)欺騙:網(wǎng)絡(luò)欺騙包括IP地址欺騙、WWW欺騙、DNS欺騙、ARP欺騙等一系列欺騙方法。其主要目的是通過(guò)虛假的網(wǎng)絡(luò)信息欺騙目的主機(jī),已達(dá)到擾亂通信的目的。
4 Linux服務(wù)器的防護(hù)措施(The protective
measures of Linux server)
針對(duì)以上漏洞和攻擊,Linux服務(wù)器的防護(hù)措施主要可以分為系統(tǒng)安全防護(hù)和網(wǎng)絡(luò)安全防護(hù)兩類,下面逐一介紹:
4.1 Linux系統(tǒng)安全防護(hù)措施
(1)系統(tǒng)賬號(hào)及口令安全:對(duì)于網(wǎng)絡(luò)服務(wù)器而言,很多賬戶都是不必要的,賬號(hào)越多,系統(tǒng)就越易受攻擊。所以應(yīng)該最大限度的刪除多余賬戶,并對(duì)用戶賬號(hào)設(shè)置安全級(jí)別,以保證每個(gè)賬號(hào)的權(quán)限都被限制在被允許的范圍內(nèi)。
另外還要確保每個(gè)已有賬戶都設(shè)置了復(fù)雜度高的口令,口令的復(fù)雜度設(shè)置可以通過(guò)修改/etc/login.defs文件來(lái)實(shí)現(xiàn),其中的PASS_MAX_DAYS表示密碼最長(zhǎng)的過(guò)期天數(shù),PASS_MIN_DAYS用來(lái)設(shè)置密碼最小的過(guò)期天數(shù),PASS_MIN_LEN表示密碼最小的長(zhǎng)度,PASS_WARN_AGE表示密碼過(guò)期后的警告天數(shù)。
口令文件的安全性也至關(guān)重要,我們可以通過(guò)chattr命令給口令文件加入只讀屬性:chattr+i/etc/passwd,這樣口令文件就不能隨意被修改了。endprint
(2)文件安全設(shè)置:Linux的文件系統(tǒng)提供了訪問(wèn)控制的功能,訪問(wèn)控制的客體是文件和目錄,主體是用戶,包括文件或目錄的所有者,用戶所在組及其他組。訪問(wèn)控制的操作包括讀(r)、寫(w)和執(zhí)行(x),管理員根據(jù)不同的權(quán)限設(shè)置關(guān)于主體的能力表以及關(guān)于客體的訪問(wèn)控制列表。
(3)系統(tǒng)日志:Linux服務(wù)器的系統(tǒng)日志也是應(yīng)該被關(guān)注的設(shè)置,因?yàn)槿罩疚募敿?xì)的記錄了系統(tǒng)發(fā)生的各類事件,例如系統(tǒng)的錯(cuò)誤記錄,每次用戶登錄系統(tǒng)記錄,各種服務(wù)的運(yùn)行記錄以及網(wǎng)絡(luò)用戶的訪問(wèn)記錄等等。如果服務(wù)器遭受到攻擊,管理員可以通過(guò)日志追蹤到黑客留下的痕跡,另外,當(dāng)涉及到法律糾紛時(shí),系統(tǒng)日志經(jīng)過(guò)專業(yè)人員提取還可以作為電子證據(jù)。
(4)服務(wù)安全:Linux服務(wù)器中往往開(kāi)啟了很多服務(wù),首先應(yīng)該確定的是哪些服務(wù)是不必要的,可以通過(guò)chkconfig命令關(guān)閉系統(tǒng)自啟動(dòng)的服務(wù)。接下來(lái)要在必須啟動(dòng)的服務(wù)中找到存在的風(fēng)險(xiǎn),例如apache服務(wù)的目錄瀏覽功能會(huì)使訪問(wèn)者進(jìn)入網(wǎng)站的根目錄,并能瀏覽其中的所有文件。
(5)安全工具:Linux服務(wù)器中帶有很多安全工具方便管理員的使用,例如SSH可以加密傳輸數(shù)據(jù),Tcpdump可以用來(lái)檢查網(wǎng)絡(luò)通訊的原始數(shù)據(jù)。
4.2 Linux網(wǎng)絡(luò)安全防護(hù)措施
Linux網(wǎng)絡(luò)服務(wù)器也采用了傳統(tǒng)的網(wǎng)絡(luò)安全防護(hù)手段,即防火墻與入侵檢測(cè)系統(tǒng)。防火墻是保護(hù)內(nèi)網(wǎng)的屏障,它過(guò)濾并分析網(wǎng)絡(luò)數(shù)據(jù)包,阻止有威脅的數(shù)據(jù)進(jìn)入;入侵檢測(cè)是內(nèi)網(wǎng)和系統(tǒng)內(nèi)部的監(jiān)控器,它分析異常數(shù)據(jù)并作出報(bào)警,有些入侵檢測(cè)還會(huì)與防火墻聯(lián)動(dòng),一同保護(hù)服務(wù)器的安全。Linux系統(tǒng)中的Iptables和Snort是比較成熟的防火墻和入侵檢測(cè)系統(tǒng),下面我們逐一介紹:
(1)防火墻:Iptables,目前使用的最新版本是Linux 2.4內(nèi)核中的Netfilter/Iptables包過(guò)濾機(jī)制[4]。Iptables包括三個(gè)功能表,分別完成數(shù)據(jù)包過(guò)濾、網(wǎng)絡(luò)地址轉(zhuǎn)換和數(shù)據(jù)拆分的任務(wù)。每個(gè)表中有若干規(guī)則連:這五個(gè)位置也被稱為五個(gè)鉤子函數(shù)(hook functions),也叫五個(gè)規(guī)則鏈:PREROUTING(路由前)、INPUT(數(shù)據(jù)包流入鏈)、FORWARD(轉(zhuǎn)發(fā)鏈)、OUTPUT(數(shù)據(jù)包出口鏈)、POSTROUTING(路由后),不同的鏈用于不同位置的數(shù)據(jù),每個(gè)鏈中又可以包含若干條規(guī)則[5]。
(2)入侵檢測(cè):Snort是一個(gè)免費(fèi)的輕量級(jí)網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)。它能兼容多個(gè)不同的操作系統(tǒng)平臺(tái),可以用于監(jiān)視小型網(wǎng)絡(luò)或者服務(wù)器系統(tǒng)內(nèi)部的服務(wù),在進(jìn)行網(wǎng)絡(luò)監(jiān)控時(shí)Snort可以將網(wǎng)絡(luò)數(shù)據(jù)與入侵檢測(cè)規(guī)則做模式匹配,從而檢測(cè)出可能的入侵?jǐn)?shù)據(jù),同時(shí)Snort也可以使用統(tǒng)計(jì)學(xué)的方法對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行異常檢測(cè)[6]。
5 結(jié)論(Conclusion)
針對(duì)Linux的攻擊手段日益增多,Linux服務(wù)器的安全隱患也隨之增大,對(duì)于企業(yè)而言,總結(jié)出一整套有效且規(guī)范的防護(hù)措施是極為必要的。本文結(jié)合實(shí)際工作經(jīng)驗(yàn),分析并總結(jié)了Linux服務(wù)器存在的安全隱患和常見(jiàn)的攻擊手段,提出了一些措施與方法。
參考文獻(xiàn)(References)
[1] 思科系統(tǒng)公司.網(wǎng)絡(luò)互聯(lián)故障排除手冊(cè)[R].北京:電子工業(yè)出版社,2002:120-125.
[2] 胡冠宇,陳滿林,王維.SNMP網(wǎng)絡(luò)管理安全性研究與應(yīng)用[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報(bào),2010,26(3):95-98.
[3] 劉曉萍.Linux2.4內(nèi)核TCP/IP協(xié)議棧安全性研究[D].中國(guó)人民解放軍信息工程大學(xué),2004:10-11.
[4] 董劍安,王永剛,吳秋峰.iptables防火墻的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(17):161-163.
[5] 王波.Linux網(wǎng)絡(luò)技術(shù)[M].北京:機(jī)械工業(yè)出版社,2007.
[6] 郭兆豐,徐興元,刑靜宇.Snort在入侵檢測(cè)系統(tǒng)中的應(yīng)用[J].大眾科技,2007(2):69-71.
作者簡(jiǎn)介:
胡冠宇(1982-),男,碩士,講師.研究領(lǐng)域:網(wǎng)絡(luò)安全.
楊 明(1980-),男,碩士,講師.研究領(lǐng)域:網(wǎng)絡(luò)安全.endprint