上篇講述一些利用 Amazon EC2 架設WordPress blog的保安技巧,主要都是一些Infrastructure level的保安措施。

接下來就會講述一些Application level 的保安措施。

1. WorkPress Firewall

WorkPress Firewall 是由SEO EggHead Inc. 開發的WordPress Plugin,大家可以從這裡下載
下載後,把wordpress-firewall.php於置於伺服器 ${WordPress Home}/wp-content/plugins/ 目錄之下。
**請永遠記緊把新增的任何php檔都利用chmod和chown把權限設定好**

完成以上的步驟後,回到WordPress administration page,在Menu > Plugins 下,您應該留意到WordPress Firewall Plugin 的存在。


按下Activate啟動後,您會發現多了Menu > Settings > Firewall這個選項,現在您就可以詳細設定這個針對WordPress而設的防火牆。

當防火牆啟動後,如果網站懷疑遭受到攻擊,就會發一封電郵到指定email address來警告自己了。

根據SEO EggHead Inc. 官方的描述,WordPress Firewall 能有效阻撓SQL Injection、Directory Trasveral 攻擊,以及防止他人上載執行檔或程式碼。

2. Akismet Anti-spam Plugin

接下來要介紹就是WordPress原生提供的Akismet Plugin。這是一個由Automattic 所提供的Comment anti-spam webservices 的WordPress plugin,要啟動它需要給予開發人員
一些費用來取得API Key,個人會員是以年費(yearly subscription)來收取的,而企業會員就是以月費(monthly subscription)來收取的。如果是個人博客網站,大家可以隨心給予至少 $6USD 的年費以取得服務。

試想想,如果網站被人胡亂post上comments,都是挺煩人的,而且開發人員都要食飯,大家不妨供獻一些銀兩,都是值得的。

取得API Key 後,大家可到WordPress administration page於Menu > Plugins 啟動Akismet Plugin後,就會在Menu > Settings 中出現Akismet的設置:

如上圖鍵入API Key,就可以得到Comment Anti-spam 的保障了。

3. WorkPress Backup

正所謂「道高一尺,魔高一丈」,最強的防禦都有被攻破的一日。網站是需要定時進行備份(backup),以備一旦網站被入侵,我們還有一個網站備份捲土重來,
更何況網絡上一直有流言說Amazon EBS也不甚稳定,為了不止於令自己的心血全失,備份是必須做的。

對於WordPress而言,資料(data)主要於置於MySQL數據庫中及於座落於${WordPress Home}/wp-content/uploads目錄下的檔案。

要備份數據庫,可以利用mysqldump 命令,把wordpress database 的內容全數dump出成一個text file並一併與${WordPress Home}/wp-content/uploads
目錄下的檔案tarball起來。要寫這樣的一個腳本(shell script)並加進crontab,原本是a piece of cake,但問題是tarball出來的備份也只是放回於同一個
Amazon EBS中,EBS Storage 如果有任何閃失,備份也是徒然的。所以備份必須放置另一個Storage。

網上有一些tutorial教授大家把備份放置於Amazon S3 bucket或用snapshot,但我覺得這些方法比較複雜,而且Amazon S3和snapshot的儲存空間是收費的。
對於小小的網站備份,我會選擇一個較簡單和免費的備份儲存方案。

Dropbox提供用戶免費2GB的雲端儲存空間,大家首先申請一個Dropbox賬戶,然後到以下的連結download一個命為DropboxUploader的php腳本。

https://github.com/jakajancar/DropboxUploader/

然後到以下的連結download一個由Eric Silva開發php腳本,這個腳本是利用DropboxUploader來把從mysqldump的數據庫備份傳送到指定的dropbox賬戶內。

http://ericsilva.org/2012/07/05/backup-mysql-database-to-dropbox/

大家把這兩個PHP腳本於置於自己的Amazon VPC上,並修改Eric Sliva的腳本,提供MySQL數據庫及Dropbox賬戶的Credentials(見如下):

// location of your temp directory
$tmpDir = "/tmp/";
// username for MySQL
$user = "username";
// password for MySQL
$password = "password";
// database name to backup
$dbName = "my_database";
// hostname or IP where database resides
$dbHost = "localhost";
// the zip file emailed to you will have this prefixed
$prefix = "db_";

大家還可以對這個腳本略作修改,連同${WordPress Home}/wp-content/uploads也一併備份到Dropbox裡。

設置成功後,用/usr/bin/php 去執行腳本測試無誤,就可以放置於crontab中定時備份,那就萬無一失了。

Amazon EC2 架站 – Security 篇 Part 2
Tagged on:                             

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

zh_HKChinese (Hong Kong)