最近召會的網站被入侵,雖然是使用 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 分鐘或一個小時執行一次即可
  • 範例信件
     
    下圖是一個參考範例,檔案列表的說明為:
    - 表示被 刪除 或 修改 的檔案
    + 表示 新增 的檔案)
Facebook 討論區載入中...