自动执行WordPress备份的最安全方法

时间:2015-04-07 作者:Sam

我在Linux共享云环境中运行了20多个站点。目前,我的托管公司每天执行异地备份。然而,这些只能保存30天。

这很好,但如果我的一个网站被感染了,而我在60天内没有注意到会怎样?我只剩下一系列被感染的备份。

这使我对自动备份和备份插件进行了一些研究。

我找到了2个优秀的高级解决方案(Updraft Plus &;BackUpWordPress) 这将备份每个站点并将副本发送到Google Drive。

My questions

1) 如果一个网站被安装了任何一个插件的黑客攻击,那么黑客会如何处理我提供的云API信息(例如Google Drive)?攻击者是否可以访问备份或向备份中添加文件?

2) 使用Updraft Plus, 我的数据库将被加密,但将我的数据库放在像Google Drive这样的云平台上真的是个好主意吗?

3) 备份WordPress站点是否有更安全的解决方案,例如设置cron作业并保留本地备份?

1 个回复
最合适的回答,由SO网友:William Turrell 整理而成

(部分回答,因为我熟悉AWS,而不是Google Drive。)

在我看来,将WordPress DB存储在云服务的某个位置与将站点托管在虚拟服务器或云服务器上一样糟糕(给定的虚拟化平台都允许您重置服务器的根密码-尽管通常需要重新启动-因此,如果有人发现您的控制面板登录,您的整个机器都会面临风险。)

确保您已跟踪basic security precautions 并考虑two-factor-auth 该插件即使安全性最低,也会在用户登录时向其电子邮件地址发送一次性密码(用户的电子邮件也需要被黑客入侵,黑客才能访问WordPress仪表板)

就个人而言,我的许多网站都使用Linode。我使用their backup service 作为预防措施,但您只能完全还原整个驱动器,因此,如果您意外地删除了单个文件或目录,并且希望保留自备份完成以来计算机上已更改的所有其他内容,则没有任何帮助。

backup2l 是一个免费/简单/可靠的命令行备份实用程序,允许您单独恢复文件。它使用众所周知的Linux命令,如targzip. (大多数发行版中都有相应的软件包,无需手动安装。)

默认情况下,它每天运行,但它会执行增量备份,因此您可以随时进行配置。

在我的/etc/backup2l.conf 要在备份运行之前自动转储SQL数据库,请执行以下操作:

# This user-defined bash function is executed before a backup is made
PRE_BACKUP ()
{
    # e. g., shut down some mail/db servers if their files are to be backup\'ed

    # On a Debian system, the following statements dump a machine-readable list of
    # all installed packages to a file.

    echo "  writing dpkg selections to /root/.dpkg-selections.log..."
    dpkg --get-selections | diff - /root/.dpkg-selections.log > /dev/null || dpkg --get-selections > /root/.dpkg-selections.log

    echo " dumping databases"
    for i in /var/lib/mysql/*/; do
        name=`basename $i`

        # get username + password
        user=$(grep user /etc/mysql/debian.cnf | awk \'{print $3}\' | head -n 1)
        pass=$(grep pass /etc/mysql/debian.cnf | awk \'{print $3}\' | head -n 1)

        # do the dump
        mysqldump --user="$user" --password="$pass" --ignore-table=mysql.event $name | gzip > /var/backups/mysql/$name.gz
    done

}
然后在POST\\u备份中,我使用s3cmd:

# This user-defined bash function is executed after a backup is made
POST_BACKUP ()
{
    # e. g., restart some mail/db server if its files are to be backup\'ed/
    /usr/bin/s3cmd sync -c /home/myhomedir/.s3cfg --delete-removed /var/backups/localhost/ s3://my-bucket-name/
}
AWS有“Versioning“这意味着,如果有人访问了您的服务器,并使用IAM凭据从您的bucket中删除了备份文件,您仍然可以将其取回。

结束