
我們有這個 EC2 執行個體:T2.medium,運行 apache,有 4 個虛擬主機(4 個站點)。有時,CPU 會突然達到非常高的水平,這可能是一次攻擊。
我看到我們的一些 WordPress 檔案已被修改。
我如何檢查誰在這些文件中寫入了內容?我如何檢查 CPU 的日誌以了解哪些進程正在影響它?有沒有我可以使用的 CloudWatch 指標?
我們一直在對伺服器進行一些強化:更新、運行 AWS Inspector、lynis、修改 ssh 設定檔。
有什麼方法可以查看誰以及他們如何設法輸入和修改這些 WordPress 檔案嗎?
您還推薦哪些其他強化做法?
答案1
這裡有幾個問題。
誰一直在寫入文件
作業系統不會記錄此訊息,但有一些線索:
- 修改日期
- 文件權限
使用檔案的修改日期來縮小 Apache 存取日誌的搜尋範圍。至少檢查POST
當時附近的任何請求和登入。例如,這將顯示所有登入嘗試:
zgrep 'POST /wp-login.php' /var/log/apache2/*access*
然後,您可以根據從文件修改時間獲得的時間範圍來過濾輸出。
如果已修改的檔案只能由某些系統使用者寫入,那麼您可以合理地確定它們是由這些系統使用者修改的。
哪些進程正在佔用 CPU
預設情況下不記錄此資訊。如果嘗試「即時」監控伺服器(例如使用 top)不切實際,那麼您可以使用各種日誌記錄工具。這是伺服器故障問題為此目的推薦了各種工具。
確定您是否被駭客入侵
這是一個更大的主題,但既然您提到了對 WordPress 檔案的修改,我首先要確定這些修改是否是惡意的。執行 WordPress 惡意軟體掃描程序,和/或尋找惡意模式,例如eval(base64_decode(
php web shell 等。如果您不確定,請堅持、徹底,並在需要時提出更多問題。
確定攻擊者如何獲得存取權限
如果您相當確定網站或多個網站遭到駭客攻擊,您可以嘗試確定攻擊者如何獲得存取權限。發生這種情況最有可能的兩種方式是透過登入管理員使用者帳戶或透過漏洞。在大多數情況下,很難高度確定地確定。但是,如果您一直在運行具有已知漏洞的軟體,尤其是具有公開漏洞並且允許遠端執行程式碼的軟體,那麼這種可能性就很大。如果 WordPress 管理員使用者的憑證較弱,或他們的憑證被洩漏,那麼這是一種非常有可能的可能性。
進一步硬化
如果您認為伺服器已被入侵,那麼您應該參考關於該主題的規範答案。
答案2
這並不是完整的答案,而是 sceox 答案的補充。
你應該看看強化Wordpress, 和WordPress 檔案權限。
我的設定是這樣的:
- 一個使用者/群組擁有這些文件
- PHP 是一個可以讀取 WordPress 檔案(包括外掛程式/主題/等)的群組的一部分,但不能寫入它們。它可以寫入上傳資料夾,以便可以使用 Wordpress GUI 上傳圖像。這使得網路上的任何內容都很難破壞 WordPress 文件
- 我有一個使用的腳本WordPress 命令列介面凌晨 2 點更新 WordPress 和外掛。
- 任何新外掛都必須使用 Wordpress CLI 安裝。它不是那麼方便,但更安全。
這是我使用的腳本,它在 cron 作業上運行
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
echo
echo Wordpress Update and Permissions Script Starting
echo "$(date) Wordpress update and backup started" >> /var/log/me/my-wordpress-upgrades 2>&1
# Function to upgrade wordpress
function upgrade_wordpress() {
# set up folders in the formats needed
dir=$1
uploads=$1/wp-content/uploads
echo Upgrading Wordpress core, plugins, themes in ${dir}
sudo -H -u www-user bash -c "wp core update --path=$dir"
sudo -H -u www-user bash -c "wp plugin update --all --path=$dir"
sudo -H -u www-user bash -c "wp theme update --all --path=$dir"
echo Setting wordpress permissions to 755 files and 644 folders
find ${dir} -type d -exec chmod 755 {} \;
find ${dir} -type f -exec chmod 644 {} \;
chmod 440 ${dir}/wp-config.php
echo Making uploads folder ${uploads} writable by the web server
chown -R www-data:www-data ${uploads}
echo Wordpress upgrade for $1 complete
echo
echo
}
echo Setting /var/www permissions to www-user:www-data
chown -R www-user:www-data /var/www/
# Run Wordpress update for each wordpress install
upgrade_wordpress /var/www/blog1
upgrade_wordpress /var/www/blog2