您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何監控Linux文件變化,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
概述
在*nix體系一切皆文件,系統文件的變化往往反應著系統的變化,比如系統應用的更新、系統的操作活動(可以用安全審計來確定)或系統被黑。根據蟲蟲多年來維護經驗系統被黑最明顯之一的特征就是系統文件變化,包括不限于:
/bin (替換基本工具為惡意木馬等,比如netstat,ps等)
/sbin (替換基本工具為惡意木馬等,比如sshd,lsof,ss等)
/usr/bin(替換基本工具為惡意木馬等,比如sshd,lsof,ss等)
/usr/sbin (替換基本工具為惡意木馬等,比如sshd,lsof,ss等)
/etc/init.d (修改開機啟動任務,添加惡意腳本開機啟動)
/etc/
/etc/cront.d (修改計劃任務,添加惡意腳本定時執行)
/etc/crontab (修改計劃任務,添加惡意腳本定時執行)
~/.ssh/目錄 (注入公鑰)
/etc/sysconfig (修改iptables配置等,開放網絡限制)
/etc/ssh/ (修改ssh配置)
web目錄 (修改網站)
等目錄下文件被替換或者添加非法文件。
加強對這些目錄和文件的監控,就可以在一定程度上防止系統被黑,以及系統被黑,而無法發現的問題。
find –mtime目錄文件變化
監控系統變化的最簡單,最常用的方法是使用find命令,其-mtime表示最近有過變動的文件。
比如要查看一天內/usr/bin目錄下變化過的文件可以使用
find /usr/bin -m -1
要看詳細這些文件詳細信息,可以用xargs或者-exec把這些變化文件在用ls -al顯示出來,比如:
find /var -type f -mtime -1 -exec ls -al {} \;
RPM監控系統文件的變化
RPM是Linux一種應用包,利用RPM安裝應用大家可能都熟悉。實際上RPM還是一個系統包數據庫,并提供包驗證功能,可以用來發現原始安裝包變化情況。RPM應用包文件驗證的基本命令是rpm -V。比如查詢驗證nginx包可以用rpm -V nginx:
該命令結果的前幾位屬性驗證,.表示屬性正常,其他標志表示屬性有變化,如果文件被刪除,則會提示"missing …"。具體屬性的含義如下:
結果表示: nginx包中default.conf文件的大小,md5哈希值,文件修改時間都改變了。
注意:上圖中中間位還有個字母c標志,該標表示文件的屬性,c表示文件為配置文件。其他標志有: d %doc 說明文檔;g %ghost 不應包含的文檔,有可能有問題;l %license 授權文件;r %readme readme說明文件。
-V選項增加-a就可以列出當前系統中安裝后,所有變化過的包文件,可以以此來檢查文件包的完整性,安全性等。我們對結果使用grep進一步檢查就得到具體的文件,比如要獲取bin目錄系統文件變化過的文件:
Inotify監控文件變化
另一個比較常用的方法是用Inotify來監控文件變化。Inotify是Linux內核自帶(2.6.13)的系統事件監控機制。Inotify優點之一是基于內核事件通知機制,無需定時主動探測文件狀態,簡單可靠。另一個好處是有文件變化時通知時候,可以記錄當時的用戶和事件進程。基于Inotify的工具有inotify-tools、sersync和lsyncd等,我們此處簡單介紹inotify-tools使用。
inotify-tools安裝
安裝比較簡單,以centos為例,先添加epel源,然后
yum install inotify-tools
inotify-tools使用
inotify-tools安裝后會附帶兩個工具即inotifywait和inotifywatch。inotifywait工具用來添加文件或目錄監控,支持對文件的一些操作事件,比如open、close、delete等,運行后系統處于阻塞狀態。inotifywait的參數和對應事件列表如下圖所示:
做為安全方面考慮,重點關注文件文件變化和創建時間,即modify和create事件。
inotifywatch工具用來查看所監視的文件發生事件的數據統計。
下面舉一個實例來說明,我們用inotifywait來監控/var目錄下文件的變化:
inotifywait -mre modify /var
為了便于閱讀,我們添加一些日志和時間格式參數:
inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f' -e modify -e create /var
要統計系統內30秒內的變化數據,可以用inotifywatch:
inotifywatch -v -t 30 -r /proc
inotifywatch 的使用此處不在詳細介紹。
自建編寫腳本進行文件Md5監控
還有一個方法就是對特定目錄(比如Web目錄)開始時候對其計算md5 哈希,以后定時計算md5然后比對,發現md5 哈希不一致了,說明文件已經被篡改了。對此,蟲蟲之前基于這個原理用Perl寫了一個腳本MD5Check(github: /bollwarm/MD5Check),可以直接用來使用或者做參考。
MD5Check安裝很簡單,有Perl的環境下(依賴Digest::MD5)直接下直接clone文件就可以使用,或者使用cpanm安裝
cpanm MD5Check
使用:
使用方法,執行 perl bin/init.pl web目錄(自定義),初始化MD5值。
然后使用perl bin/check.pl前一部保存的md5哈希的文件檢查。
詳細實例,見bin目錄下的 init.pl 和 check.pl
cpanm安裝后,可以直接用perl單行程序檢查使用
初始化:
perl -MMD5Check -e 'init("/web")' >file
檢查:
perl -MMD5Check -e 'print md5check(file)'
實例:我們舉一個wordexpree網站為例子:
perl init.pl /web >webmd5.20161027
檢查:
perl check.pl webmd5.20161027
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何監控Linux文件變化”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。