服務(wù)項(xiàng)目:網(wǎng)站建設(shè)、仿站、程序開發(fā)、APP開發(fā)設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)設(shè)計(jì)、企業(yè)網(wǎng)站設(shè)計(jì)、電子商務(wù)網(wǎng)站開發(fā)、網(wǎng)站維護(hù)、網(wǎng)站推廣、UX/UI 、HTML5、CSS3、JS / Jquery ...
四川浚??萍加邢薰?></a></div>
                    <div   id=四川???萍加邢薰? title=
四川???萍加邢薰?(開發(fā)設(shè)計(jì)官網(wǎng))TEL : 15308000360 / QQ : 38585404

您的位置:首頁 > 技術(shù)經(jīng)驗(yàn) > 網(wǎng)站運(yùn)維 > 正文

Linux文件系統(tǒng)保護(hù)最佳實(shí)踐:Tripwire
技術(shù)支持服務(wù)電話:15308000360 【7x24提供運(yùn)維服務(wù),解決各類系統(tǒng)/軟硬件疑難技術(shù)問題】

Linux的系統(tǒng)安全管理主要可以分為四個(gè)部分,最重要的部分莫過于其文件系統(tǒng)。Linux系統(tǒng)的最大特點(diǎn)就是文件系統(tǒng),其中所有的設(shè)備都是通過文件進(jìn)行操作和管理。用戶可以采用Linux開源領(lǐng)域最為優(yōu)秀的Tripwire工具來協(xié)助進(jìn)行文件系統(tǒng)安全保護(hù)。

Tripwire是UNIX安全規(guī)范中最有用的工具之一,Tripwire可檢測(cè)多達(dá)10多種的UNIX文件系統(tǒng)屬性和20多種的NT文件系統(tǒng)(包括注冊(cè)表)屬性。Tripwire首先使用特定的特征碼函數(shù)為需要監(jiān)視的系統(tǒng)文件和目錄建立一個(gè)特征數(shù)據(jù)庫,所謂特征碼函數(shù)就是使用任意的文件作為輸入,產(chǎn)生一個(gè)固定大小的數(shù)據(jù)(特征碼)的函數(shù)。入侵者如果對(duì)文件進(jìn)行了修改,即使文件大小不變,也會(huì)破壞文件的特征碼。利用這個(gè)數(shù)據(jù)庫,Tripwire可以很容易地發(fā)現(xiàn)系統(tǒng)的絲毫細(xì)微的變化。而且文件的特征碼幾乎是不可能偽造的,系統(tǒng)的任何變化都逃不過Tripwire的監(jiān)視。

為了防止被篡改,Tripwire對(duì)其自身的一些重要文件進(jìn)行了加密和簽名處理。這里涉及到兩個(gè)密鑰:site密鑰和local密鑰。其中,前者用于保護(hù)策略文件和配置文件,如果多臺(tái)機(jī)器具有相同的策略和配置的話,那么它們就可以使用相同的site密鑰;后者用于保護(hù)數(shù)據(jù)庫和報(bào)告,因此不同的機(jī)器必須使用不同的local密鑰。

下要給出該軟件的安裝以及使用步驟,要得到該軟件可以從Sourceforge直接獲得(當(dāng)前最新版本為tripwire-2.4.1.2-src.tar.bz2)。

(1)解壓縮安裝文件到/usr/local目錄

//切換工作路徑
#cd /usr/local/       

//解壓縮
#tar xvfj tripwire-2.4.1.2-src.tar.bz2  

(2)執(zhí)行make命令,進(jìn)行安裝

//進(jìn)入已經(jīng)解壓的文件夾
#cd tripwire-2.4.1.2-src  

//生成makefile文件
#./configure

//執(zhí)行make命令
#make         

//執(zhí)行make install命令
#make install

(3)生成基準(zhǔn)數(shù)據(jù)庫

成功編譯Tripwire,就可以準(zhǔn)備開始對(duì)須要監(jiān)控的文件進(jìn)行掃描,以生成Tripwire數(shù)據(jù)庫,在Tripwire的src目錄下:如下操作:

#./tripwire –init      

(4)測(cè)試

數(shù)據(jù)庫生成了,使用命令運(yùn)行Tripwire,掃描系統(tǒng)變化和細(xì)小改變

#./tripwire—check

當(dāng)?shù)谝淮芜\(yùn)行Tripwire時(shí),須要進(jìn)行一些準(zhǔn)備工作,主要有編輯config文件、檢查郵件報(bào)告是否正常、根據(jù)需要配置策略文件和初始化數(shù)據(jù)庫文件,即創(chuàng)建一個(gè)簽名的基線數(shù)據(jù)庫。下一次運(yùn)行時(shí),它使用twpol.txt文件產(chǎn)生一個(gè)新的簽名數(shù)據(jù)庫。然后,比較兩個(gè)數(shù)據(jù)庫,實(shí)施用戶定義的任何選項(xiàng)屏蔽(排除經(jīng)常更改的文件),最后通過電子郵件或顯示器來為用戶在終端上輸出一個(gè)可讀的報(bào)告。

為了確保Tripwire正確地運(yùn)行,要特別注意其安裝和配置的過程,具體步驟如下:

1.創(chuàng)建密鑰和簽名

在安裝Tripwire之后,可以使用如下命令進(jìn)行設(shè)置:

#./twinstall.sh

腳本twinstall.sh的作用在于執(zhí)行下列任務(wù):

1.創(chuàng)建site和local密鑰,這時(shí)會(huì)要求輸入口令(參見下面的步驟);如果這兩個(gè)密鑰也已存在,則可以跳過此步驟。其中,site密鑰存放在site.key文件中,而local密鑰則存放在hostname-local.key(這里的hostname是指該機(jī)器的主機(jī)名)文件之中。
2.利用site密鑰對(duì)默認(rèn)配置文件twcfg.txt進(jìn)行簽名,并將簽名(而非被簽名的文件twcfg.txt)存放于文件tw.cfg之中。
3.利用site密鑰對(duì)默認(rèn)策略文件twcfg.pol進(jìn)行簽名,并將簽名(而非被簽名的文件twcfg.pol)存放于文件tw.pol之中。

2.編輯配置文件

首先打開文本格式的配置文件twcfg.txt,該文件的位置在前面所述安裝過程后的/usr/local/etc目錄下。然后根據(jù)需要修改配置文件,修改完畢后存盤。最后使用twadmin命令根據(jù)已編輯的文本文件生成一個(gè)加密的配置文件。

ROOT          =/usr/local/sbin
POLFILE       =/usr/local/etc/tw.pol
DBFILE        =/usr/local/lib/tripwire/$(HOSTNAME).twd
REPORTFILE    =/usr/local/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE   =/usr/local/etc/site.key
LOCALKEYFILE  =/usr/local/etc/localhost.localdomain-local.key
EDITOR        =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL   =3
MAILMETHOD    =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM   =/usr/sbin/sendmail -oi -t
 
#twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key twcfg.txt 

安裝完畢后,該文件已存在,因此不必再重新創(chuàng)建。通常情況下,配置文件的內(nèi)容不會(huì)發(fā)生變化,因此沒有必要去修改它,使用Tripwire默認(rèn)的就可以了。在此時(shí)我們應(yīng)該測(cè)試一下Email報(bào)告功能是否起作用,以防以后遇到麻煩,輸入以下命令進(jìn)行測(cè)試。

#tripwire --test --mail user@domain.com 

3.編輯策略文件

首先打開文本格式的策略文件twpol.txt。該文件的位置在前面所述安裝過程后的/usr/local/etc目錄下。Tripwire在安裝時(shí)已經(jīng)在策略文件中寫入了默認(rèn)的檢查規(guī)則。這些默認(rèn)的規(guī)則主要檢查重要的系統(tǒng)文件和Tripwire自身文件的完整性。

由于默認(rèn)的配置就不能監(jiān)視系統(tǒng)中的SUID和SGID文件,而這對(duì)于我們的系統(tǒng)安全是非常重要的,因此,我們需要修改配置加入對(duì)這個(gè)項(xiàng)目的監(jiān)視。使用如下命令可以找出系統(tǒng)中的所有SUID文件:

#find / -type f -perm -4000 -print

以下命令可以找出系統(tǒng)中的所有SGID文件:

#find / -type f -perm -2000 -print

現(xiàn)在,我們需要把以上命令找出的SUID和SGID文件加入到Tripwire的/策略文件中去。除此之外,我們還要把所有用戶home目錄下的初始文件也納入監(jiān)視的范疇。主要包括以下文件:

1.bashrc、.profile、.bash_profile、.cshrc、kshrc、.login等
2.bash、csh以及ksh登錄之后的初始化命令或者腳本
3.forward:告訴/usr/lib/sendmail把郵件轉(zhuǎn)發(fā)到某些地址
4.rhosts:可以使用rsh登錄到本帳戶的遠(yuǎn)程主機(jī)名
5.xinitrc、.Xauthority、Xdefault等X窗口系統(tǒng)的一些重要文件

在創(chuàng)建Tripwire的特征碼數(shù)據(jù)庫之前,還有一件事情要做,就是檢查.netrc和.rhosts文件的權(quán)限是否是600。修改完策略文件后存盤。最后使用twadmin命令根據(jù)已編輯的文本文件生成一個(gè)加密的策略文件。最后,策略文件的文本文件要?jiǎng)h除掉,否則該文件的內(nèi)容易被察看。

#twadmin --create-polfile twpol.txt 

安裝完畢后,該文件已存在,因此不必再重新創(chuàng)建。

4.生成基準(zhǔn)數(shù)據(jù)庫

配置文件和策略文件都編輯和生成好了之后,就應(yīng)該根據(jù)配置文件的規(guī)則生成基準(zhǔn)數(shù)據(jù)庫?;鶞?zhǔn)數(shù)據(jù)庫在Tripwire安裝完畢后生成一次即可。我們使用Tripwire命令來生成基準(zhǔn)數(shù)據(jù)庫。

#tripwire --init 

基準(zhǔn)數(shù)據(jù)庫生成時(shí),Tripwire會(huì)提示輸入local key,對(duì)其進(jìn)行高強(qiáng)度的加密,以防止對(duì)文件內(nèi)容的非法改變。

5.運(yùn)行完整性檢查

基準(zhǔn)數(shù)據(jù)庫生成完畢之后,我們可以使用tripwire命令隨時(shí)進(jìn)行完整性檢查了:

#tripwire --check 

進(jìn)行檢查時(shí)可以指定檢查報(bào)告的存貯位置:

#tripwire --check --twfile/var/lib/report/report.twr 

進(jìn)行檢查時(shí)也可發(fā)送Email報(bào)告結(jié)果:

#tripwire --check --email-report 

進(jìn)行檢查時(shí)指定使用Email進(jìn)行發(fā)送的報(bào)告等級(jí):

#tripwire --check --email-report --email-report-level 2 

使用指定嚴(yán)重性等級(jí)的規(guī)則進(jìn)行檢查:

#tripwire --check --severity 80 

使用指定的規(guī)則名進(jìn)行檢查:

#tripwire --check --rule-name rulename 

只檢查指定的文件或目錄:

#tripwire --check object1 object2 object3 … 

進(jìn)行檢查時(shí)忽略某些屬性(因?yàn)橛行傩缘臋z查比較耗費(fèi)系統(tǒng)資源,比如Hash算法):

#tripwire --check --ignore "property, property, property, property" 

如果完整性檢查完畢后,發(fā)現(xiàn)Email報(bào)告功能未生效,可以檢查兩個(gè)方面:一個(gè)是策略文件中規(guī)則的emailto屬性必須填寫妥當(dāng),另一個(gè)是運(yùn)行tripwire命令時(shí),--email-report選項(xiàng)必須被包含。

6.查閱報(bào)告

完整性檢查進(jìn)行完畢后,我們就可以查閱報(bào)告以發(fā)現(xiàn)有哪些文件遭到了改動(dòng),改動(dòng)了什么。使用twprint命令可以輸出報(bào)告,它有多種使用方式。

如下命令將加密的報(bào)告內(nèi)容輸出到顯示器:

#twprint --print-report --twrfile /var/lib/report/report.twr 

如下命令將加密的報(bào)告內(nèi)容輸出到一個(gè)文本文件:

#twprint --print-report --twrfile /var/lib/report/report.twr - >myreport.txt 

如下命令輸出報(bào)告時(shí)指定輸出的報(bào)告等級(jí):

#twprint --print-report --report-level 4 --twrfile /var/lib/report/report.twr 

7.升級(jí)基準(zhǔn)數(shù)據(jù)庫文件

如果在報(bào)告中發(fā)現(xiàn)了一些違反策略的錯(cuò)誤,而這些錯(cuò)誤又是被認(rèn)為正常的,那就要使用Tripwire命令更新基準(zhǔn)數(shù)據(jù)庫:

#tripwire --update --twrfile /var/lib/report/report.twr 

也可以在進(jìn)行完整性檢查之后立即自動(dòng)進(jìn)行更新:

#tripwire --check --interactive 

8.升級(jí)策略文件

隨著系統(tǒng)的變化,原來的策略文件必然會(huì)不能滿足需要,因此必須要不斷的更新策略文件中的規(guī)則。更新和創(chuàng)建新的策略文件不同,因?yàn)槿绻麨門ripwire創(chuàng)建了新的策略文件,那么就必須要重新生成基準(zhǔn)數(shù)據(jù)庫。更新時(shí)首先打開策略文件的文本文件:

#twadmin --print-profile > twpol.txt 

然后編輯該文件,完畢后存盤。最后使用Tripwire命令進(jìn)行策略更新:

#tripwire --update-policy twpol.txt 

在此步驟中,Tripwire軟件會(huì)要求輸入site key。

9.改變site key和local key

sitekey和localkey是在安裝時(shí)生成的,但是也可以隨時(shí)修改。注意,如果已經(jīng)用來加密的密鑰文件被刪除了或是被覆蓋了,那么Tripwire加密過的文件都不能訪問了。因此,我們要對(duì)這兩個(gè)文件做備份。 很多時(shí)候會(huì)發(fā)現(xiàn)我們的口令可能不太安全,因此要改變口令。需執(zhí)行以下命令即可:

#twadmin --generate-keys --local-keyfile /etc/tripwire/site.key
#twadmin --generate-keys --local-keyfile /etc/tripwire/local.key 

但是這么做的話,會(huì)造成使用以前密鑰進(jìn)行加密的文件無法打開的情況。我們要使用以前的策略文件、配置文件、數(shù)據(jù)庫文件、報(bào)告文件的話,因此在改變口令之前,我們必須使用以下的命令把這些已加密的文件進(jìn)行解密。

#twadmin --remove-encryption file1 file2 ... 

在生成新的密鑰文件之后,我們還應(yīng)該用新密鑰對(duì)這些文件進(jìn)行加密。配置文件和策略文件只能用site key加密,而數(shù)據(jù)庫文件和報(bào)告文件只能用local key加密。

#twadmin --encrypt --site-keyfile /etc/tripwire/site.key file1 file2 file3 ...
#twadmin --encrypt --local-keyfile /etc/tripwire/local.key file1 file2 file3 ... 

以上就是Linux文件系統(tǒng)保護(hù)的實(shí)現(xiàn)步驟參考。Tripwire是一個(gè)非常不錯(cuò)的開源工具,可以說是系統(tǒng)運(yùn)維們不可替代的工具,值得仔細(xì)研究學(xué)習(xí)。除了Linux文件系統(tǒng)保護(hù)之外,Linux系統(tǒng)的安全管理還包括用戶管理、進(jìn)程保護(hù)、日志管理等三個(gè)方面,這些將在之后的文章中進(jìn)行講解。



上一篇:關(guān)注幾起網(wǎng)站運(yùn)維事故
下一篇:運(yùn)維人員的八十五條軍規(guī)

相關(guān)熱詞搜索:linux 文件系統(tǒng) Tripwire