web-dev-qa-db-ja.com

WordPressバックアップを自動化するための最も安全な方法

私はLinux共有クラウド環境で20以上のサイトを運営しています。現在、私のホスティング会社は毎日、オフサイトバックアップを行っています。しかし、これらは30日間しか保管されません。

これはうまく機能しますが、自分のサイトの1つが感染して60日間気付かなかった場合はどうなりますか?私はすべて感染した一連のバックアップを残されることになります。

これにより私は自動バックアップとバックアッププラグインの調査を行うことになりました。

2つの優れたプレミアムソリューション( Updraft PlusBackUpWordPress )が見つかりました。各サイトをバックアップし、Googleドライブにコピーを送信します。

私の質問

1)サイトにいずれかのプラグインがインストールされた状態でハッキングされた場合、ハッカーが私が提供したCloud API情報(Googleドライブなど)に対して何をすることができますか?攻撃者はバックアップにアクセスしたり、バックアップにファイルを追加したりすることができますか?

2) Updraft Plus を使用すると、データベースは暗号化されますが、データベースをGoogleドライブのようなクラウドプラットフォームに配置することをお勧めしますか。

3)WordPressサイトをバックアップするためのより安全な解決策はありますか。 cronジョブをセットアップして代わりにローカルバックアップを保持しますか?

1
Sam

(Googleドライブではなく、AWSに精通しているので部分的な回答)

WordPress DBをクラウドサービスのどこかに保存しておくことは、私の意見では、サイトを仮想サーバーまたはクラウドサーバーでホストすること(仮想化プラットフォームであればどれでもサーバーのルートパスワードをリセットできます)。誰かがあなたのコントロールパネルのログオンを発見すると、マシン全体が危険にさらされます。)

お使いのサーバーの 基本的なセキュリティの注意事項 に従っていることを確認し、 two-factor-auth プラグインについても検討してください。セキュリティが最低でも、ログイン時にユーザーの電子メールアドレスにワンタイムパスワードを送信します(ハッカーがWordPressダッシュボードにアクセスするには、ユーザーの電子メールもハッキングされる必要があります)。

個人的に、私のサイトの多くはLinodeを使っています。予防策として 彼らのバックアップサービス を使うことができます、しかしあなたは完全にドライブ全体を復元することができるだけです。バックアップがそのまま行われてからマシン上で変更された他のすべてのもの。

backup2l は、ファイルを個別に回復することを可能にする、無料/シンプル/信頼性の高いコマンドラインバックアップユーティリティです。 targzipのようなよく知られたLinuxコマンドを使います。 (ほとんどのディストリビューションにはそれ用のパッケージがあります。手動でインストールする必要はありません。)

デフォルトでは毎日実行されますが、増分バックアップを実行するので、好きなだけ設定できます。

バックアップが実行される前に、SQLデータベースを自動的にダンプするために/etc/backup2l.confで次のコードを使用します。

# 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_BACKUPで、 s3cmd を使用してバックアップファイルをAmazon S3バケットにアップロードします。

# 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認証情報を使ってあなたのバケットからバックアップファイルを削除した場合でも可能です。それらを取り戻しなさい。

1
William Turrell