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

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

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

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

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

為了防止被篡改,Tripwire對其自身的一些重要文件進行了加密和簽名處理。這里涉及到兩個密鑰:site密鑰和local密鑰。其中,前者用于保護策略文件和配置文件,如果多臺機器具有相同的策略和配置的話,那么它們就可以使用相同的site密鑰;后者用于保護數(shù)據(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ī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)備開始對須要監(jiān)控的文件進行掃描,以生成Tripwire數(shù)據(jù)庫,在Tripwire的src目錄下:如下操作:

#./tripwire –init      

(4)測試

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

#./tripwire—check

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

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

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

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

#./twinstall.sh

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

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

2.編輯配置文件

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

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)容不會發(fā)生變化,因此沒有必要去修改它,使用Tripwire默認的就可以了。在此時我們應(yīng)該測試一下Email報告功能是否起作用,以防以后遇到麻煩,輸入以下命令進行測試。

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

3.編輯策略文件

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

由于默認的配置就不能監(jiān)視系統(tǒng)中的SUID和SGID文件,而這對于我們的系統(tǒ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登錄到本帳戶的遠程主機名
5.xinitrc、.Xauthority、Xdefault等X窗口系統(tǒng)的一些重要文件

在創(chuàng)建Tripwire的特征碼數(shù)據(jù)庫之前,還有一件事情要做,就是檢查.netrc和.rhosts文件的權(quán)限是否是600。修改完策略文件后存盤。最后使用twadmin命令根據(jù)已編輯的文本文件生成一個加密的策略文件。最后,策略文件的文本文件要刪除掉,否則該文件的內(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ù)庫生成時,Tripwire會提示輸入local key,對其進行高強度的加密,以防止對文件內(nèi)容的非法改變。

5.運行完整性檢查

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

#tripwire --check 

進行檢查時可以指定檢查報告的存貯位置:

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

進行檢查時也可發(fā)送Email報告結(jié)果:

#tripwire --check --email-report 

進行檢查時指定使用Email進行發(fā)送的報告等級:

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

使用指定嚴重性等級的規(guī)則進行檢查:

#tripwire --check --severity 80 

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

#tripwire --check --rule-name rulename 

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

#tripwire --check object1 object2 object3 … 

進行檢查時忽略某些屬性(因為有些屬性的檢查比較耗費系統(tǒng)資源,比如Hash算法):

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

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

6.查閱報告

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

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

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

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

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

如下命令輸出報告時指定輸出的報告等級:

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

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

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

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

也可以在進行完整性檢查之后立即自動進行更新:

#tripwire --check --interactive 

8.升級策略文件

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

#twadmin --print-profile > twpol.txt 

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

#tripwire --update-policy twpol.txt 

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

9.改變site key和local key

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

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

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

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

在生成新的密鑰文件之后,我們還應(yīng)該用新密鑰對這些文件進行加密。配置文件和策略文件只能用site key加密,而數(shù)據(jù)庫文件和報告文件只能用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)保護的實現(xiàn)步驟參考。Tripwire是一個非常不錯的開源工具,可以說是系統(tǒng)運維們不可替代的工具,值得仔細研究學(xué)習(xí)。除了Linux文件系統(tǒng)保護之外,Linux系統(tǒng)的安全管理還包括用戶管理、進程保護、日志管理等三個方面,這些將在之后的文章中進行講解。



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

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