上篇讲述一些利用 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
标签:                            

发布留言

发布留言必须填写的电子邮件地址不会公开。 必填栏位标示为 *