我們在做主機安全檢查或安全事件處置時,避免不了要去檢查系統(tǒng)的安全情況。在進(jìn)行Linux安全檢查時,需要使用相關(guān)的腳本對系統(tǒng)的安全情況進(jìn)行全面分析,一方面需要盡可能的收集系統(tǒng)的相關(guān)信息,另一方面在數(shù)量較多的時候盡可能的提高效率。
由于在多次的安全檢查中遇到檢查時都是幾十臺服務(wù)器要做一個全面檢查的情況,如果人工手寫腳本的話,一方面效率較低另一方面需要安全檢查者熟悉所需要檢查的項。
在這種情況下,本人寫了一個Linux安全檢查的腳本,該腳本主要在以下場景使用:
1.Linux主機安全檢查時;
2.Linux主機發(fā)生安全事件需要全面分析時。
該腳本完成有一段時間,最近在應(yīng)急響應(yīng)群里討論,發(fā)現(xiàn)這塊的安全檢查是大家的一個強需求,因此把該檢查腳本共享給大家,共享的目的主要以兩個:一是提高大家在Linux安全檢查時的效率,釋放大家的精力;另一方面希望大家在使用的過程中可以不斷地發(fā)現(xiàn)問題,不斷的總結(jié)缺少的安全檢查項,協(xié)助完善該檢查腳本。所以大家在使用過程中有任何問題或建議歡迎及時同步給我。
檢查內(nèi)容
整體框架
關(guān)于Linux安全檢查,這里面我總結(jié)主要需要檢查以下內(nèi)容:
1.系統(tǒng)安全檢查(進(jìn)程、開放端口、連接、日志等)
這一塊是目前個人該腳本所實現(xiàn)的功能;
2.Rootkit
建議使用rootkit專殺工具來檢查,如rkhunter;
3.Webshell
這一塊查殺技術(shù)難度相對較高,不是本腳本所需要實現(xiàn)的功能,針對這一塊的檢查可以使用D盾來檢查 (Linux下可以將web目錄掛載到Windows下進(jìn)行檢查);
4.Web日志
5.流量
這一塊主要側(cè)重主機的長期的流量分析,目前個人使用tshark實現(xiàn)了基礎(chǔ)的流量分析,后期會進(jìn)行相應(yīng)的完善。流量這一塊可以提取流量五元組、DNS流量、HTTP流量再結(jié)合威脅情報的數(shù)據(jù)進(jìn)行深度分析。這個后期個人會進(jìn)行相關(guān)的嘗試,可能的話會進(jìn)行相應(yīng)內(nèi)容的分享。
系統(tǒng)安全檢查框架


功能實現(xiàn)
功能設(shè)計
V1.0 主要功能用來采集信息
V1.1 主要功能將原始數(shù)據(jù)進(jìn)行分析,并找出存在可疑或危險項
V1.2 增加基線檢查的功能
V1.3 可以進(jìn)行相關(guān)危險項或可疑項的自動處理
目前到V1.2版本,后期完善V1.3相關(guān)的功能。
另外,操作上可以實現(xiàn)一鍵進(jìn)行安全檢查,并將檢查后的結(jié)果保存到本機。只需要在hosts文本中輸入相應(yīng)的IP、賬號、密碼。操作上人工參與最小化。
各腳本功能說明
下載后相關(guān)整個腳本的目錄結(jié)構(gòu)如下所示:
checkrulues
: 部分判斷邏輯,這里面目前僅有端口的判斷邏輯,后期可以將進(jìn)程、應(yīng)用程序是否有漏洞等,邏輯放在這里面進(jìn)行安全檢查,比較簡單的判斷邏輯直接在buying_linuxcheck.sh中可以實現(xiàn);
buying_linuxcheck.sh
: 核心檢查邏輯;
del.exp
: 刪除遠(yuǎn)程服務(wù)器上的腳本與檢查結(jié)果;
get.exp
: 獲取遠(yuǎn)程服務(wù)器上安全檢查的結(jié)果;
hosts.txt
:需要被檢查的服務(wù)器列表;
login.sh
:一鍵進(jìn)行登錄檢查,安全檢查時只需要運行該腳本即可;
put.exp
:將安全檢查腳本上傳到遠(yuǎn)程服務(wù)器上;
readme.txt
:使用相關(guān)說明文檔;
sh.exp
:在遠(yuǎn)程服務(wù)器上執(zhí)行安全檢查腳本;
下面針對其中部分腳本進(jìn)行介紹。
Ø Checkrules
判斷邏輯主要放在兩個文件中:一個是checkrules中,格式為dat,這里面建議將比較復(fù)雜的判斷邏輯放在這里,如下面的TCP危險端口這塊,因為比較多,如果放在buying_linuxcheck.sh中則代碼有些冗長,下面是TCP高危端口的判斷邏輯,主要還是根據(jù)木馬默認(rèn)使用的端口號,這里面判斷的邏輯相對簡單,可能會存在誤報的情況,所以后續(xù)需要人工介入分析。

Ø buying_linuxcheck.sh
核心的功能收集與判斷邏輯,比較簡單的判斷邏輯可以放在這里面進(jìn)行判斷。

使用
使用比較簡單,將本腳本拷貝到自己一臺Linux主機上,可以使用虛擬機,將需要被檢查的服務(wù)器的IP、賬號、密碼放到hosts.txt目錄中,直接運行即可實現(xiàn)一鍵安全檢查。
相關(guān)操作
1.將需要被檢查的服務(wù)器IP、賬號、密碼寫入到hosts.txt文件中,格式為:
IP:port:user:userpassword:rootpassword
其中user為普通用戶的賬號,port為ssh登錄端口,uesrpassword為普通賬號的密碼,rootpassword為root的密碼,只所以加個普通用戶是因為有的系統(tǒng)做了安全策略,不允許root直接登錄,如果被檢查的服務(wù)器允許root直接登錄,可以直接把user和userpassword寫成root以及root密碼。

這里面被檢查的服務(wù)器允許root直接登錄,因此直接寫root賬號和密碼。
2.運行安全檢查腳本:sh login.sh
安全檢查腳本就在后臺運行了,稍等…….

3.看到刪除遠(yuǎn)程服務(wù)器上的檢查腳本與檢查結(jié)果,就說明檢查結(jié)束了。

4.檢查結(jié)束后,會將遠(yuǎn)程服務(wù)器上的結(jié)果保存到本地主機上:

檢查結(jié)果說明
檢查結(jié)束后,將相應(yīng)的結(jié)果解壓后目錄結(jié)構(gòu)如下所示:

Ø Check_file
保存的是檢查的最終結(jié)果,長這個樣子……

Ø Log
目錄中保存的是Linux系統(tǒng)日志,web日志這塊目前腳本沒有實現(xiàn)自動打包的功能,原因就是web日志經(jīng)常太大,并且保存的日志可能從運行到現(xiàn)在的所有日志,很多日志并不需要進(jìn)行檢查與分析,因此在檢查時相關(guān)人員可以根據(jù)具體情況進(jìn)行打包相應(yīng)的日志。

Ø danger_file.txt
保存的是在安全檢查過程中發(fā)現(xiàn)的問題:

Ø sysfile_md5.txt
保存的是系統(tǒng)關(guān)鍵文件或系統(tǒng)文件的MD5值,之所以將這些關(guān)鍵文件的MD5記錄下來主要有兩個功能:一是周期性的檢查時,可以與第一次的結(jié)果進(jìn)行對比,若有變動會提示;另一個是可以將這些關(guān)鍵文件的MD5值跑一下威脅情報庫或virustotal以發(fā)現(xiàn)可能存在的系統(tǒng)文件被替換的情況。

代碼下載
相關(guān)代碼已上傳到github,有需要可自行下載,有問題也可以直接聯(lián)系:
https: