最近召會的網站被入侵,雖然是使用 Joomla 這套 Open source 的 CMS,理論上應該挺安全的。但是可能是管理或是設定造成連續幾次被入侵,還被偷放了不少東西,花很多時間才找到 (而且不確定有沒有清乾淨!)。
有一次幫忙查大概猜到帳號是如何被建立的。雖然如何被提權的原因還是不明,不過亡羊總是要補牢。
所以就花了一點力氣作了一個 FileChecker,雖然沒辦法找到真正的原因,不過至少當檔案被修改,或是偷偷被放了程式時都可以盡早知道,並且根據檔案清單找到問題!!
* 若要引用請註明出處,程式基本上是 Open 的!!
下載並解開檔案
先到 GitHub 下載 (在右下方有 Download Zip),解開到您想要存放的目錄 ex: /var/www/FileChecker
基本上這個程式無需 Apache 或其他的 Web Server,直接用 command line 執行即可
設定 config.ini
[CONFIG] WEB_ROOT = /var/www FILE_PATTERN = /^.*\.(php|htm|html|inc|js|css|ini|htaccess)$/i IGNORE_PATTERN = /^.*(-cache-.*\.php).*/i SENDMAIL = 1 FROM = your-mail@example.com TO = your-mail@example.com SUBJECT = 警告 - 您的網站檔案可能遭到竄改! BODY = 以下檔案列表檔案狀態變更: (- 表示被 刪除 或 修改 的檔案, + 表示 新增 的檔案) [MAIL] USE_SMTP = 0 SMTP_HOST = SMTP_PORT = SMTP_USER = SMTP_PWD = SMTP_SECURE =
我想這個設定應該不困難,簡單解說如下:
---- 基本設定 WEB_ROOT: 就是你要檢查的資料根目錄 FILE_PATTERN: 由於檔案太多,所以可以設定 regular rexpression 來決定要掃描那些檔案 /^.*\.(php|htm|html|inc|js|css|ini|htaccess)$/i 這個設定是針對 php, html 等等常用的網頁檔案副檔名做檢查而已。不然全部的檔案都掃也不一定有太大意義 IGNORE_PATTERN: 既然有正向列表,那就需要有例外清單囉 /^.*(-cache-.*\.php).*/i 目前的設定是因為 joomla 會固定產生 cache 檔案,所以如果沒有濾掉,那就不斷的會收到出檔案被修改的信了!! ---- 郵件設定 SENDMAIL = 1 (如果你要收到告警信件的話,那就設成 1 吧!) FROM: 寄件者 (填自己的 mail 即可) TO: 收件者 (填自己的 mail 即可) SUBJECT: 信件主題;幫自己取一個驚悚一點的主題吧! BODY: 信件開頭的文字 ---- 寄送郵件設定 USE_SMTP = 是否使用 SMTP (0: 表示使用 sendmail) 以下是 SMTP 相關的設定 SMTP_HOST = SMTP_PORT = SMTP_USER = SMTP_PWD = SMTP_SECURE =
執行程式
其實只要在 console 打 php check.php 就會跑了。這個程式會自動把運算結果存在 log 中
第一次跑只是作紀錄,第二次跑才會真的比對資料
每次執行都會把現在的檔名加上日期,然後跑完的結果作為最新的 Log
大功告成!
剩下的就是設定排程,看你打算多久檢查一次囉。當然,檢查的越頻繁就越可以在有檔案被竄改時提早知道。不過設太頻繁只是增加伺服器負擔而已,所以我建議 30 分鐘或一個小時執行一次即可
範例信件
下圖是一個參考範例,檔案列表的說明為:
- 表示被 刪除 或 修改 的檔案
+ 表示 新增 的檔案)
PHPMailer: http://phpmailer.worxware.com/