譚仁龍
(廣東省技師學(xué)院 廣東 惠州 516100)
Linux 操作系統(tǒng)的特點(diǎn)是安全性較高、運(yùn)行狀態(tài)穩(wěn)定、資源占用率較低,是目前常用的服務(wù)器平臺(tái),但是Linux操作系統(tǒng)面臨的安全問(wèn)題也日益嚴(yán)重,要積極分析Linux系統(tǒng)中各種風(fēng)險(xiǎn)形成的原因,并制定合理的防護(hù)措施。 本文針對(duì)Linux 操作系統(tǒng)中存在的安全問(wèn)題,分析了問(wèn)題形成的原因以及攻擊的常見(jiàn)手段,制定針對(duì)性的防護(hù)對(duì)策,這也是目前計(jì)算機(jī)維護(hù)與管理人員關(guān)注的重點(diǎn)問(wèn)題。
采用掃描技術(shù)來(lái)檢查服務(wù)器中是否存在安全問(wèn)題,因此黑客能夠借此采用爆破注入的方式對(duì)服務(wù)器產(chǎn)生攻擊。例如,Web 服務(wù)器接口經(jīng)常使用80、443、2222、2223 等接口,而關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(my structured query language, MySQL)數(shù)據(jù)庫(kù)接口經(jīng)常使用3306 等接口。
口令是系統(tǒng)安全的第一步,最簡(jiǎn)單有效的方法是用暴力拆解,該方法的成本比較低,很多系統(tǒng)管理人員則采用root、admin、shell 等默認(rèn)的用戶名,用戶口令為默認(rèn)密碼,比如system、root、1234 等。 如果攻擊者使用的是高速的電腦,再加上密碼詞典,那么很容易就會(huì)被攻破。
隨著智能手機(jī)的應(yīng)用,基于Linux 內(nèi)核的Android 手機(jī)正面臨著不斷增多的木馬、病毒等威脅。 在1996 年,Staog 病毒系統(tǒng)出現(xiàn),是第一個(gè)以Linux 系統(tǒng)為基礎(chǔ)的病毒程序,Staog 的病毒體系存在著提權(quán)的危險(xiǎn),Staog 預(yù)示著系統(tǒng)存在著被病毒侵襲的風(fēng)險(xiǎn),各種類型的挖礦木馬也在不斷增加,特別是針對(duì)Linux 操作系統(tǒng)的更是如此。
拒絕服務(wù)作為近幾年來(lái)計(jì)算機(jī)網(wǎng)絡(luò)中常用的、預(yù)防難度大的攻擊手段,由于傳輸控制協(xié)議(transmission control protocol, TCP)的限制,TCP 連接請(qǐng)求容易被偽造或更改,若是Syn 半連接的數(shù)目達(dá)到了基線,那么系統(tǒng)很容易因?yàn)橛帽M所有資源而崩潰,會(huì)導(dǎo)致系統(tǒng)不能對(duì)正當(dāng)?shù)倪B接請(qǐng)求做出反應(yīng)。 通常情況下,此攻擊并不會(huì)影響到系統(tǒng)的數(shù)據(jù),而是會(huì)讓系統(tǒng)失去反應(yīng)能力,導(dǎo)致計(jì)算機(jī)或者網(wǎng)絡(luò)已經(jīng)無(wú)法提供相應(yīng)的服務(wù)。
Linux 是一款免費(fèi)的開(kāi)源軟件,在系統(tǒng)的二次開(kāi)發(fā)過(guò)程中,不同的程序員都能參與到系統(tǒng)的優(yōu)化中,因此會(huì)導(dǎo)致黑客通過(guò)系統(tǒng)開(kāi)發(fā)的源代碼進(jìn)行木馬病毒的傳播與攻擊,常見(jiàn)問(wèn)題包括:第一,Linux 系統(tǒng)賬號(hào)發(fā)生漏洞,遠(yuǎn)程攻擊人員采用獲取服務(wù)器的root 超級(jí)管理員賬號(hào)來(lái)進(jìn)行木馬病毒的傳播,并且獲取操作服務(wù)器的可執(zhí)行權(quán)限,可進(jìn)行增刪改查等各種操作,進(jìn)入系統(tǒng)根目錄下獲取企業(yè)或用戶的文檔信息以及數(shù)據(jù)信息。 第二,Linux 系統(tǒng)中的內(nèi)核系統(tǒng)發(fā)生漏洞,遠(yuǎn)程攻擊者可以利用內(nèi)核的漏洞,繞過(guò)Linux 系統(tǒng)本身的安全保護(hù)體系進(jìn)入到核心區(qū)域內(nèi),然后對(duì)系統(tǒng)中內(nèi)核參數(shù)進(jìn)行篡改,導(dǎo)致系統(tǒng)交互服務(wù)發(fā)生問(wèn)題,從而造成服務(wù)終止并且直接造成系統(tǒng)癱瘓。 第三,因?yàn)長(zhǎng)inux 系統(tǒng)具有經(jīng)濟(jì)性、兼容性的特點(diǎn),很多企業(yè)都采用Linux 作為企業(yè)服務(wù)器系統(tǒng)。 各個(gè)企業(yè)部署在服務(wù)器中的廣域網(wǎng)服務(wù)(world electronic broadcast, WEB)、數(shù)據(jù)庫(kù)服務(wù)、網(wǎng)絡(luò)服務(wù)等都會(huì)面臨安全漏洞問(wèn)題。 (1)WEB 服務(wù)。 不法分子會(huì)盜取用戶WEB 頁(yè)面中的配置信息和其他數(shù)據(jù)庫(kù)中的信息,發(fā)生文件描述符泄露、日志記錄失敗等問(wèn)題。 (2)數(shù)據(jù)庫(kù)服務(wù)。 常見(jiàn)的數(shù)據(jù)庫(kù)包括MySQL、遠(yuǎn)程字典服務(wù)(remote dictionary server, REDIS)、橡樹(shù)嶺自動(dòng)化計(jì)算機(jī)和邏輯引擎(oak ridge automated computer and logical engine, ORACLE)等。 因此數(shù)據(jù)庫(kù)的漏洞修復(fù)、賬號(hào)管理授權(quán)都是容易被黑客攻擊的地方。 (3)文件傳輸協(xié)議(file transfer protocol, FTP)文件服務(wù)。 常見(jiàn)的FTP文件系統(tǒng)中保存了網(wǎng)站和用戶大量的數(shù)據(jù)、圖片信息等。一旦發(fā)生數(shù)據(jù)和信息的泄露,用戶隱私、身份信息都會(huì)被攻擊者有償販賣[1]。 黑客利用Linux 的協(xié)議漏洞,能夠明確獲取服務(wù)器IP 流向,也可以通過(guò)對(duì)服務(wù)器端口的分析來(lái)獲取端口占用狀況,進(jìn)而快速定位到平臺(tái)的工作流程中。
2.2.1 Linux 服務(wù)器中有不同類型的漏洞
Linux 服務(wù)器中的常見(jiàn)漏洞為:涉及提權(quán)漏洞,該弱點(diǎn)很大程度上是通過(guò)系統(tǒng)daemon 獲取用戶權(quán)限的;分布式拒絕服務(wù)攻擊(distributed denial of service,DDoS)漏洞,此漏洞會(huì)在短時(shí)間內(nèi)對(duì)服務(wù)器端傳送非法鏈接,導(dǎo)致服務(wù)器無(wú)法對(duì)正常的請(qǐng)求做出回應(yīng)。
2.2.2 Linux 系統(tǒng)中開(kāi)源軟件存在缺陷
開(kāi)源軟件包括信息服務(wù)塊(server messages block,SAMBA)、開(kāi)源數(shù)據(jù)庫(kù)軟件(open source database software,OSDS)、安全的文件傳輸協(xié)議守護(hù)進(jìn)程(very secure FTP daemon, VSFTPD)、 修補(bǔ)服務(wù)器( a patched server,APACHE)等,開(kāi)放源碼軟件自身也有許多缺陷。 VSFTPD軟件對(duì)FTP 服務(wù)器進(jìn)行了配置,如果使用了缺省配置,那么用戶就有可能在登錄之后瀏覽全部文件。 BIND 也隱含著嚴(yán)重的安全性缺陷,攻擊人員可以通過(guò)它來(lái)實(shí)現(xiàn)TKEY的查詢,對(duì)DNS 服務(wù)器進(jìn)行DoS 的攻擊,造成服務(wù)器無(wú)法完成域名解析的服務(wù)[2]。
3.1.1 保證用戶賬號(hào)管理的合理性
賬戶作為用戶使用系統(tǒng)的條件,對(duì)賬號(hào)進(jìn)行科學(xué)合理的規(guī)劃是確保計(jì)算機(jī)系統(tǒng)安全的關(guān)鍵。 具體步驟如下:(1)避免root 用戶遠(yuǎn)程登錄。 因?yàn)閞oot 用戶擁有最高的權(quán)限,可以通過(guò)遠(yuǎn)程登錄,所以很容易被人攻破密碼。 通過(guò)修改配置文件能夠約束root 遠(yuǎn)程登錄系統(tǒng)。 見(jiàn)圖1,將PermitRootLongin 更換為no 則完成設(shè)置。 若是需要root 權(quán)限才可以遠(yuǎn)程操作,那么可以先通過(guò)普通用戶登錄以后再轉(zhuǎn)為root 用戶,進(jìn)行遠(yuǎn)程操作,能夠先采用普通用戶登錄系統(tǒng)后再轉(zhuǎn)換為root 用戶,使用ssh 與身份驗(yàn)證文件相結(jié)合的方法來(lái)執(zhí)行登錄操作是最好的方法。 (2)停止使用多余的賬戶。 在應(yīng)用Linux 系統(tǒng)中,會(huì)默認(rèn)對(duì)所有用戶開(kāi)放權(quán)限,但是賬號(hào)數(shù)量越多則風(fēng)險(xiǎn)系數(shù)就越高,因此可以刪除一些賬戶來(lái)保證服務(wù)器的安全。 對(duì)于某些危險(xiǎn)賬戶,可以改變默認(rèn)的shell 變量,來(lái)確保安全性,比如FTP 賬戶,就不能設(shè)置/bin/bash 或bin/sh 等shell 變量[3]。(3)su、sudo 命令必須合理選擇。 Linux 系統(tǒng)中的普通用戶沒(méi)有足夠的權(quán)限,也無(wú)法對(duì)系統(tǒng)進(jìn)行修改,但是普通用戶需要系統(tǒng)的使用權(quán)限,那么就必須通過(guò)su 或sudo 命令來(lái)實(shí)現(xiàn)。 su 命令在切換用戶時(shí),需要將根的密碼與別人共享,該做法有很大的風(fēng)險(xiǎn),sudo 命令僅需一般的用戶口令即可運(yùn)行,所以要盡量避免使用su,而選擇sudo 命令。
圖1 禁止遠(yuǎn)程登錄
3.1.2 確保用戶口令的正規(guī)化
(1)設(shè)置密碼對(duì)策。 不能設(shè)定較簡(jiǎn)單的密碼,比如,攻擊者可以輕松地破解弱口令的密碼從而獲取應(yīng)用權(quán)限,通過(guò)設(shè)置密碼的默認(rèn)參數(shù)可以避免弱口令的形成,通過(guò)修改/etc/login. defs 配置文件中的PASS-MIN-LEN、PASSMAX-DAYS 等字段,可以通過(guò)減少密碼的長(zhǎng)度從而符合最小長(zhǎng)度的要求來(lái)進(jìn)行設(shè)計(jì)。 如圖2 所示。 (2)空口令使用者要添加新密碼。 空口令用戶因?yàn)樵趧?chuàng)建的時(shí)候沒(méi)有設(shè)置密碼所以有極大的風(fēng)險(xiǎn)。 要先找到系統(tǒng)中的空口令用戶,通過(guò)空口令用戶的查找,為用戶設(shè)定符合復(fù)雜度要求的密碼。 (3)注意控制用戶的登錄次數(shù)。 可以將用戶的多次登錄視為錯(cuò)誤,當(dāng)輸入的口令超出了設(shè)定值時(shí),將會(huì)自動(dòng)鎖定使用者的登錄,并會(huì)重新設(shè)定上鎖的時(shí)間,才會(huì)重新允許使用者登錄。 通過(guò)修改/etc/pam.d/login 的配置文件,可以設(shè)置錯(cuò)誤的登錄次數(shù)和鎖定的時(shí)間。
圖2 設(shè)置口令策略
設(shè)置后的用戶連續(xù)輸入5 次錯(cuò)誤密碼后,系統(tǒng)會(huì)自動(dòng)鎖定600 s,可避免字典被暴露破解,同時(shí)用戶采用SSH 方式登錄系統(tǒng)的時(shí)候也能夠通過(guò)修改/etc/pam.d/sshd 文件來(lái)鎖定賬戶。
3.1.3 文件權(quán)限設(shè)置合理性
(1)對(duì)于敏感文件,屬性是不能改變的,比如passwd、陰影文件,而對(duì)于日志文件來(lái)說(shuō),附加屬性是可以被設(shè)置的。 (2)保存臨時(shí)文件的文件夾要注意權(quán)限設(shè)置,向用戶提供讀取、寫(xiě)入和執(zhí)行的權(quán)限時(shí)要確保安全。 (3)文件特殊權(quán)限設(shè)置,例如sid、 sgid、 sbit 三種許可。 比如當(dāng)某個(gè)可執(zhí)行程序設(shè)置用戶標(biāo)識(shí)符(set user identifier, SUID)權(quán)限時(shí),其他用戶就可獲取臨時(shí)權(quán)限。 黑客就是利用SUID與根賬戶結(jié)合在一起,讓普通的使用者臨時(shí)獲得擁有者的權(quán)限,為了避免該問(wèn)題,則需要從一些系統(tǒng)文件中移除SUID 和SGID 權(quán)限[4]。
3.1.4 做好補(bǔ)丁并保持更新
不管是Windows 還是Linux 系統(tǒng),都要重視系統(tǒng)安全,盡早地打好補(bǔ)丁并準(zhǔn)備好更新,在更新和補(bǔ)丁未公布之前,要先制定安全提議。
3.1.5 設(shè)置好用戶賬號(hào)的安全等級(jí)
Linux 的每個(gè)賬號(hào)都有不同的權(quán)限,在構(gòu)建一個(gè)新的ID 后,管理人員要賦予賬號(hào)相關(guān)權(quán)限并且歸并到不同用戶組中。 在Linux 系統(tǒng)中的tcpd 上設(shè)置允許上機(jī)和不允許上機(jī)的人員名單,允許上機(jī)名單放置在/etc/hosts.allow文件中,不允許上機(jī)名單則放置在/etc/hosts. deny 中,完成后要重新啟動(dòng)inetd 程序,Linux 系統(tǒng)可以自動(dòng)將允許和不允許進(jìn)入的結(jié)果記錄在rar/log/secure 文件中,系統(tǒng)管理員可以在此文件中查看可以的登錄記錄。 每個(gè)賬號(hào)由單人負(fù)責(zé),若是某個(gè)負(fù)責(zé)ID 的員工離開(kāi)那么就要立刻刪除賬號(hào)。 以往黑客常用具有root 權(quán)限的賬號(hào),超級(jí)用戶有權(quán)修改、刪除各種系統(tǒng)設(shè)置從而可以隨意侵襲系統(tǒng),因此在賦予賬號(hào)root 權(quán)限前必須做好慎重的考慮和檢查。
3.2.1 采取遠(yuǎn)程管理保障網(wǎng)絡(luò)安全
管理員通常使用遠(yuǎn)程登錄方法來(lái)維護(hù)和管理服務(wù)器,常使用的工具有Struts、Spring、Hibernate、安全外殼協(xié)議(secure shell, SSH)等。 由于telnet 是以明文傳輸協(xié)議為基礎(chǔ)的,所以它極易被入侵,因此若是需要遠(yuǎn)程登錄,要采用SSH 的方式,取消telnet。 SSH 協(xié)議可以實(shí)現(xiàn)對(duì)數(shù)據(jù)流的加密,從而保障了數(shù)據(jù)的安全性,保證了網(wǎng)絡(luò)安全。 一般SSH允許根用戶登錄,但是登錄方式也有一定的風(fēng)險(xiǎn),需要對(duì)sshd 服務(wù)進(jìn)行修改,才能讓用戶登錄,例如遠(yuǎn)程使用管理權(quán)限則需要用普通用戶身份登錄,登錄后轉(zhuǎn)變?yōu)楦脩簟?同時(shí),用5 位以上的不知名端口號(hào)來(lái)代替默認(rèn)的sshd 偵聽(tīng)端口號(hào)22,比如12345,避免服務(wù)器受到暴露攻擊。
3.2.2 不定期監(jiān)測(cè)端口
管理員要針對(duì)系統(tǒng)開(kāi)放的端口進(jìn)行明確,通過(guò)netstat命令可以知道哪些是開(kāi)放的、哪些是在運(yùn)行中的。 關(guān)閉不使用的端口,從而可以減少被攻擊的可能性,關(guān)閉端口可以使用/ect/sysconfig/iptables 配置文件[5]。
3.2.3 資源限制
為了解決DoS 類的攻擊,系統(tǒng)對(duì)用戶使用資源的權(quán)限來(lái)進(jìn)行控制,比如管理用戶創(chuàng)建的最大數(shù)量、內(nèi)存量、文件數(shù)量等,通過(guò)修改profile/ect/security/limits. co nf 就可以限制用戶資源。 設(shè)定后,最多只能有20 個(gè)用戶和5 M 的內(nèi)存。
3.2.4 安裝防火墻
防火墻主要用于管理網(wǎng)絡(luò)流量,保證局域網(wǎng)安全性,Linux 自帶Firewalld 防火墻,在此基礎(chǔ)上,提出了一種基于網(wǎng)絡(luò)的多個(gè)分區(qū)的接入控制策略,以保證各分區(qū)間的數(shù)據(jù)流量的精確流動(dòng)。 Firewalld 防火墻具有拒絕和管理服務(wù)器訪問(wèn)、自動(dòng)斷開(kāi)端口連接、控制主機(jī)訪問(wèn)權(quán)限等作用,因此防火墻對(duì)保證服務(wù)器的安全有重要意義。
綜上所述,由于攻擊Linux 的手段越來(lái)越多,為了能夠預(yù)防各種風(fēng)險(xiǎn)因素的形成,制定有效的保護(hù)措施是維管人員重點(diǎn)關(guān)注的問(wèn)題。 通過(guò)研究,Linux 系統(tǒng)遇到的安全問(wèn)題,無(wú)論是系統(tǒng)賬號(hào)安全問(wèn)題,還是內(nèi)核系統(tǒng)安全問(wèn)題都影響著Linux 系統(tǒng)用戶的體驗(yàn)感。 因此,本文從系統(tǒng)安全和網(wǎng)絡(luò)安全兩個(gè)方面細(xì)化解決對(duì)策,來(lái)保證Linux 系統(tǒng)的安全性。