<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IPアドレス - BLACKND</title>
	<atom:link href="https://blacknd.com/tag/ip%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9/feed/" rel="self" type="application/rss+xml" />
	<link>https://blacknd.com</link>
	<description>エンジニアがオススメするPCライフハック術</description>
	<lastBuildDate>Wed, 18 May 2022 03:31:48 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://blacknd.com/wp-content/uploads/2021/04/logo-mark-6-100x100.png</url>
	<title>IPアドレス - BLACKND</title>
	<link>https://blacknd.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>IP Geo BlockプラグインでWordPressの防御をさらに強固に</title>
		<link>https://blacknd.com/develop-wordpress/wordpress-security-plugin-ip-geo-block/</link>
					<comments>https://blacknd.com/develop-wordpress/wordpress-security-plugin-ip-geo-block/#comments</comments>
		
		<dc:creator><![CDATA[りゅう]]></dc:creator>
		<pubDate>Tue, 10 Apr 2018 09:23:39 +0000</pubDate>
				<category><![CDATA[開発・WordPress]]></category>
		<category><![CDATA[ブロック]]></category>
		<category><![CDATA[速い]]></category>
		<category><![CDATA[ファイアウォール]]></category>
		<category><![CDATA[国産]]></category>
		<category><![CDATA[ゼロデイ攻撃]]></category>
		<category><![CDATA[高機能]]></category>
		<category><![CDATA[ログイン]]></category>
		<category><![CDATA[国別]]></category>
		<category><![CDATA[多機能]]></category>
		<category><![CDATA[管理画面]]></category>
		<category><![CDATA[国コード]]></category>
		<category><![CDATA[ディレクトリ]]></category>
		<category><![CDATA[対策]]></category>
		<category><![CDATA[強固]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[防御]]></category>
		<category><![CDATA[簡単]]></category>
		<category><![CDATA[日本語]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[ログ]]></category>
		<category><![CDATA[IPアドレス]]></category>
		<category><![CDATA[海外]]></category>
		<category><![CDATA[統計]]></category>
		<category><![CDATA[不正]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[国外]]></category>
		<category><![CDATA[IP Geo Block]]></category>
		<category><![CDATA[遮断]]></category>
		<guid isPermaLink="false">https://blacknd.com/?p=2023</guid>

					<description><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2018/04/wordpress-security-plugin-ip-geo-block-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>前回の記事でWordPressに対する改ざん攻撃への対処を行いましたが、その後さらにプラグイン「IP Geo Block」を導入しました。 不正アクセスとファイル改ざん被害との戦い 筆者のサイトが海外からの不正なアクセス [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2018/04/wordpress-security-plugin-ip-geo-block-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>前回の記事でWordPressに対する改ざん攻撃への対処を行いましたが、その後さらにプラグイン「IP Geo Block」を導入しました。</p>



<h2 class="wp-block-heading">不正アクセスとファイル改ざん被害との戦い</h2>



<p>筆者のサイトが海外からの不正なアクセスにより、ファイルの改ざんや不正ファイルの設置を行われ、SPAM送信の踏み台にされる被害に遭いました。</p>



<p>前回の記事でこれに対する対策を行い、以後被害はなくなりました。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-blacknd wp-block-embed-blacknd"><div class="wp-block-embed__wrapper">
https://blacknd.com/linux-server/wordpress-malware-tampering-guard-block/
</div></figure>



<h3 class="wp-block-heading">前回行った対策</h3>



<p>手動では状況把握が不完全で、いたちごっこになるため処理も追いつかず、セキュリティ系プラグインに頼りました。</p>



<ol class="wp-block-list"><li>被害内容の把握</li><li>ユーザー名を非表示にする</li><li><strong>不正ログイン対策</strong></li><li>改ざんされたファイルのスキャンと修正</li><li>不正に設置されたファイルの削除</li><li><strong>.htaccessによる海外IPアドレスのアクセス拒否</strong>（ここで完全解決）</li><li>SPAM送信をしてしまったPostfixの対策処理</li></ol>



<p>今回の記事ではさらに一歩進め、上記対策で<strong>太字</strong>になっている部分をさらに強化することにします。</p>



<p>また、もやもやしていた.htaccessでのアクセス拒否について問題が見つかりましたので、これも同時に解決します。</p>



<h2 class="wp-block-heading">IP Geo Blockの導入</h2>



<p>非常に高機能かつ日本語化されていて設定も簡単なプラグイン、IP Geo Blockを導入します。</p>



<p>こちらのメイン機能は「国コードによるホワイトリストまたはブラックリスト型のアクセス制限を行う」というものです。</p>



<p>まさに前回.htaccessによって力技でやっていた内容ですが、異なる点がいくつかあります。</p>



<ul class="wp-block-list"><li>海外からのアクセスを遮断できる</li><li>国コードで判別の設定を行うため手動でIPアドレスを制限するよりも間違いがなく高効率</li><li><strong>アクセス制限を行う対象を選択可能</strong></li><li><strong>ゼロデイ攻撃も防御できる</strong></li><li>高速で動作し、かつ機能の重複する他の重いプラグインを無効化できる（例：Akismet）</li></ul>



<p>こちらも、<strong>太字</strong>の部分が重要となっています。各項目の詳細については後述します。</p>



<h3 class="wp-block-heading">インストール</h3>



<p>まずはWordPress管理画面の「プラグイン」→「新規追加」からインストールして有効化します。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://ja.wordpress.org/plugins/ip-geo-block/
</div></figure>



<p>インストール直後は外部からデータベースをバックグラウンドで読み込むため、しばらく待つよう指示されます。<br><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading">設定する</h2>



<p>管理画面の「設定」→「IP Geo Block」で、挙動の設定を行います。</p>



<p>なお以下の設定内容は、すでに改ざん被害に遭った筆者の環境ですので、予防として導入する場合はもう少しライトな設定でも構わないと思います。</p>



<h3 class="wp-block-heading">検証ルールの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="796" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-01-1024x796.png" alt="" class="wp-image-2025" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-01-1024x796.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-01-300x233.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-01-768x597.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-01-1536x1194.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-01.png 1645w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>ここで、基本となるルールを決めておきます。ここで決めたルールを、この後でどこにどう使うか指定するイメージです。</p>



<h4 class="wp-block-heading">マッチング規則</h4>



<p>「ホワイトリスト」とします。ブラックリストとの違いは以下の通りです。</p>



<ul class="wp-block-list"><li>ホワイトリスト：基本すべて<strong>拒否</strong>、指定された国コードのみ<strong>許可</strong></li><li>ブラックリスト：基本すべて<strong>許可</strong>、指定された国コードのみ<strong>拒否</strong></li></ul>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p><a rel="noreferrer noopener" href="https://blacknd.com/linux-server/wordpress-malware-tampering-guard-block/" target="_blank" data-wpel-link="internal">前回の記事</a>で紹介した.htaccessファイルはホワイトリスト型です。すべて拒否した後で、botと国内IPアドレスを許可しています。それでも4千行を越えてしまいましたが。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h4 class="wp-block-heading">国コードのホワイトリスト</h4>



<p>JP（日本）とします。必要であればカンマ区切りで他の国コードを加えることもできます。</p>



<h4 class="wp-block-heading">悪意のあるシグネチャ</h4>



<p>管理領域、テーマ領域、プラグイン領域に対して悪意があるとみなすシグネチャを指定します。</p>



<p>改行またはカンマ区切りで複数指定することができます1。</p>



<h5 class="wp-block-heading">デフォルトのシグネチャ</h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>../,/wp-config.php,/passwd</code></pre></div>



<h5 class="wp-block-heading">追記後のシグネチャ</h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>../,/wp-config.php,/passwd
curl,wget,eval,base64</code></pre></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>筆者の受けた改ざん被害でも、PHPの<code>eval</code>や<code>base64</code>が用いられていました。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h4 class="wp-block-heading">IPアドレス当たりのログイン試行可能回数</h4>



<p>同一のIPアドレスからのログインを許可する回数で、ここでは5としました。</p>



<h4 class="wp-block-heading">検証のタイミング</h4>



<p>ここは、IP Geo Blockプラグインがどのタイミングで上記のような検証を行うのかを設定します。</p>



<h5 class="wp-block-heading">デフォルトのタイミング</h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&quot;init&quot; アクション・フック</code></pre></div>



<h5 class="wp-block-heading">変更後のタイミング</h5>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&quot;mu-plugins&quot; (ip-geo-block-mu.php)</code></pre></div>



<p>デフォルトでは標準的なプラグインの実行タイミングとなります。その前にWordPressによる様々な前処理が行われることになります。</p>



<p>mu-pluginsに変更すると、他のプラグインより早いタイミングで実行されるため、後にアクセスを拒否することになる接続先に対して、無駄なサーバ資源の消費を避けることができます。高速化も期待できます。</p>



<p>注意点として、以下に記述されているような制限事項が生じます。</p>



<p>http://www.ipgeoblock.com/codex/validation-timing.html</p>



<p>英語ですし、なんだか難しく書いてあります。</p>



<ul class="wp-block-list"><li>テーマ内functions.phpのカスタムフィルターフックが動作しない</li><li>人間に優しいエラーページが無効になる</li></ul>



<p>カスタムフィルターフックについては、テーマ表示より前のタイミングで実行される以上は仕方のないところです。解決策も書かれていますので、問題の発生する環境では試してみると良いでしょう。</p>



<p>次にエラーページの件ですが、上記と同様にテーマ表示の処理を行う前にIP Geo Blockが動作しますので、テーマを処理する前だという理由で<code>404.php</code>のようなユーザーフレンドリーなエラーページを表示できません。こちらも解決策が書かれています。エラーページを静的HTMLファイルとして保存すれば良いようです。</p>



<p>筆者の環境ではどちらも対策していませんが、どのみち拒否するユーザーに見せるものなので気にしないことにしました。</p>



<h3 class="wp-block-heading">バックエンドの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="517" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-02-1024x517.png" alt="" class="wp-image-2035" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-02-1024x517.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-02-300x152.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-02-768x388.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-02-1536x776.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-02.png 1647w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>IP Geo Blockプラグインで「どこを」「どう」防御するのかを決める部分であり、とても重要な設定です。<br><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h4 class="wp-block-heading">コメント投稿</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>国コードで遮断</code></pre></div>



<p>コメントを海外から投稿できないようにしています。思い切った設定ではありますが、実はこれで<strong>SPAMコメントがほとんどなくなります</strong>。</p>



<p>ということは、重いことで有名なSPAM対策プラグイン、Akismetを停止することできますね（後述）。</p>



<h4 class="wp-block-heading">XML-RPC</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>国コードで遮断</code></pre></div>



<p>筆者はXML-RPCを悪用した攻撃をひっきりなしに受けていました。攻撃手段となり得る機能を野放しにしておくのはよろしくないので対策したいのですが、無効にするのも抵抗があります。IP Geo Blockでは海外勢のみ遮断することができます。便利！</p>



<h4 class="wp-block-heading">ログイン・フォーム</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>国コードで遮断</code></pre></div>



<p>ログイン試行の回数を設定する部分がありましたが、ここではそもそもログイン試行を行う対象を国内IPアドレスに絞ることができます。海外からのログイン試行はひっきりなしに行われていますので、こちらも国コードで遮断しておきます。</p>



<h4 class="wp-block-heading">管理領域</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>国コードで遮断
ゼロデイ攻撃を遮断</code></pre></div>



<p>管理領域（<code>/wp-admin</code>ディレクトリ）内に対するアクセスを国コードで遮断します。通常であれば、管理者である自分以外はアクセスしない部分です。</p>



<p>また「ゼロデイ攻撃を遮断」が登場しました。ゼロデイ攻撃とは、脆弱性が発見されてから対策された日（ワンデイ）までの間にあたる脆い期間（ゼロデイ）に行われる攻撃のことです。これは非常に心強い機能で、未対策の攻撃を検知して遮断することができます。</p>



<h4 class="wp-block-heading">管理領域ajax/post</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>国コードで遮断
ゼロデイ攻撃を遮断</code></pre></div>



<p>管理領域内にある<code>admin-ajax.php</code>と<code>admin-post.php</code>に対するアクセスを上記と同様に遮断します。</p>



<h4 class="wp-block-heading">プラグイン領域</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ゼロデイ攻撃を遮断
WPコアの読み込みを強制</code></pre></div>



<p>改ざんや不正ファイル配置は、プラグイン領域に対してよく行われます。ここでは管理領域と同じように、ゼロデイ攻撃を遮断します。国コードで遮断するよりも強固になります。</p>



<h4 class="wp-block-heading">テーマ領域</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ゼロデイ攻撃を遮断
WPコアの読み込みを強制</code></pre></div>



<p>テーマ領域に対しても、改ざんや不正ファイル配置はよく行われます。ここも管理領域と同じように、ゼロデイ攻撃を遮断します。国コードで遮断するよりも強固になります。</p>



<p>なお上記2つで「WPコアの読み込みを強制」をチェックしてありますが、これはWordPressのコア（本体）を読み込まずに実行されるPHPファイルがあった場合への対策となります。</p>



<h3 class="wp-block-heading">フロントエンドの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="392" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-03-1024x392.png" alt="" class="wp-image-2038" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-03-1024x392.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-03-300x115.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-03-768x294.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-03-1536x587.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-03.png 1650w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>通常の投稿やページを表示、つまり制作者が意図しているURLでのアクセスに対する設定です。</p>



<p>ここへの直接攻撃はちょっと考えにくいですし、テーマファイルへの攻撃なら前項の設定で防御できます。そこでここは遮断しないよう設定します。</p>



<p>フロントエンドの遮断を設定すると、外部からの正常なアクセスを検証、遮断しますので、ただ普通にサイトを見に来たユーザーやクローラーが対象になります。筆者は前回の対策ではクローラー関係で苦労することになりました。この項目を設定しなくても攻撃されることはなくなり、かつクローラーのエラーもなくなっています。</p>



<h3 class="wp-block-heading">位置情報APIの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="271" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-04-1024x271.png" alt="" class="wp-image-2039" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-04-1024x271.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-04-300x79.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-04-768x203.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-04-1536x407.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-04.png 1647w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>IP Geo Blockプラグインでは、外部の位置情報データベースをAPI経由で取得して利用しています。そのための設定ですが、このままで問題ありません。</p>



<h3 class="wp-block-heading">ローカル・データベースの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="530" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-05-1024x530.png" alt="" class="wp-image-2040" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-05-1024x530.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-05-300x155.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-05-768x398.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-05-1536x795.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-05.png 1646w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>上記APIでローカルに取得されたデータベースの状態です。</p>



<p>「自動更新（月1回）」をチェックするのみで、他には特にすべきことはありません。プラグイン導入直後にバックグラウンドでデータベースの取得が開始されますが、うまく働いていない、または取得に失敗しているようであれば「今すぐダウンロード」ボタンをクリックしてください。</p>



<h3 class="wp-block-heading">統計とログの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="227" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-06-1024x227.png" alt="" class="wp-image-2041" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-06-1024x227.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-06-300x66.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-06-768x170.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-06-1536x340.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-06.png 1645w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>このようなプラグインでは、「動作しているか」「期待通りに動作しているか」「どのような状況か」「何をいつどうしたか」といったログを見たいものです。</p>



<p>ここで検証とログを有効にしておきましょう。</p>



<h4 class="wp-block-heading">検証のログを記録</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>遮断時または遮断対象国の通過時に記録</code></pre></div>



<p>筆者が既に攻撃を受けて被害も被っているため、見られる情報はなるべく見たいということでこの設定にしてあります。</p>



<p>通常は「遮断時に記録」だけでも良いかも知れません。</p>



<h3 class="wp-block-heading">IPアドレスのキャッシュ設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="118" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-07-1024x118.png" alt="" class="wp-image-2042" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-07-1024x118.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-07-300x34.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-07-768x88.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-07-1536x176.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-07.png 1647w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>キャッシングに関する設定です。特に変更すべき部分はありません。</p>



<h3 class="wp-block-heading">投稿時の設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="98" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-08-1024x98.png" alt="" class="wp-image-2043" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-08-1024x98.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-08-300x29.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-08-768x74.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-08-1536x148.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-08.png 1645w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>コメント欄の上下に一言何かを表示する機能のようです。本プラグインで設定を行う必要はないでしょう。</p>



<h3 class="wp-block-heading">プラグインの設定</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="263" src="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-09-1024x263.png" alt="" class="wp-image-2044" srcset="https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-09-1024x263.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-09-300x77.png 300w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-09-768x197.png 768w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-09-1536x394.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/ip-geo-block-09.png 1646w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>便利な設定のエクスポート、インポートがあります。プラグインのアンインストール時に全設定を削除する設定もありますが、このあたりはお好みで。</p>



<p>その下部に「変更を保存」ボタンがありますので、ここまでの設定が済んだらクリックしておきます。<br><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading">不要となるプラグインや設定</h2>



<p>以下のプラグインが有効である場合、これらは停止もしくは削除することができます。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://wordpress.org/plugins/akismet/
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://ja.wordpress.org/plugins/siteguard/
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://ja.wordpress.org/plugins/wordfence/
</div></figure>



<p>機能が完全に被っているか、または部分的にせよ重要な部分をIP Geo Blockで代替できるためです。</p>



<p>特にありがたいのがSPAM対策プラグインのAkismetで、これは大変重いことで有名です。IP Geo Blockに任せましょう。</p>



<p>Wordfenceについては、筆者は残してあります。理由は、ノートン先生やウィルスバスターなどに似たスキャン機能があり、改ざん被害を発見・通知することができるためです。</p>



<p>改ざん被害に遭っていない方は、今からIP Geo Blockで防御すれば、それも未然に防げる可能性があります。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>前回行った<code>.htaccess</code>による海外からのアクセス制限では、何もかも問答無用で弾いてしまうため、強力ですが困ることもありました。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="red"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon-komari.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>具体的には、Googleなどのようなメジャーどころではないbotの扱いで困りました。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p><br>目的が「日本人以外を弾きたい」のではなく「攻撃は全て海外からなのでそれを弾きたい」なので、IP Geo Blockによるゼロデイ防御の方が適しています。</p>



<p>国コードという概念とゼロデイ防御という手法でセキュリティを向上できるIP Geo Block、個人的に2018年のベストプラグイン賞決定です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blacknd.com/develop-wordpress/wordpress-security-plugin-ip-geo-block/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>WordPressをマルウェア感染や改ざんの被害から守る方法と対策まとめ</title>
		<link>https://blacknd.com/develop-wordpress/wordpress-malware-tampering-guard-block/</link>
					<comments>https://blacknd.com/develop-wordpress/wordpress-malware-tampering-guard-block/#respond</comments>
		
		<dc:creator><![CDATA[りゅう]]></dc:creator>
		<pubDate>Thu, 01 Mar 2018 13:04:08 +0000</pubDate>
				<category><![CDATA[開発・WordPress]]></category>
		<category><![CDATA[改竄]]></category>
		<category><![CDATA[除去]]></category>
		<category><![CDATA[非表示]]></category>
		<category><![CDATA[不正]]></category>
		<category><![CDATA[防御]]></category>
		<category><![CDATA[パスワード]]></category>
		<category><![CDATA[ログイン]]></category>
		<category><![CDATA[拒否]]></category>
		<category><![CDATA[スキャン]]></category>
		<category><![CDATA[管理画面]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[テーマ]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[リスト]]></category>
		<category><![CDATA[自動]]></category>
		<category><![CDATA[スパム]]></category>
		<category><![CDATA[SiteGuard]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[踏み台]]></category>
		<category><![CDATA[Wordfence]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[対策]]></category>
		<category><![CDATA[Edit Author Slug]]></category>
		<category><![CDATA[IPアドレス]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[海外]]></category>
		<category><![CDATA[マルウェア]]></category>
		<category><![CDATA[キュー]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[改ざん]]></category>
		<category><![CDATA[削除]]></category>
		<category><![CDATA[隠す]]></category>
		<guid isPermaLink="false">https://blacknd.com/?p=1967</guid>

					<description><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2018/03/wordpress-malware-tampering-guard-block-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>WordPressがマルウェアに感染したり、ファイル等の改ざん被害を受けた際の対策をまとめました。 WordPressは狙われやすい WordPressは、世界で最も多く利用されているオープンソースのCMSです。 しかし [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2018/03/wordpress-malware-tampering-guard-block-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>WordPressがマルウェアに感染したり、ファイル等の改ざん被害を受けた際の対策をまとめました。</p>



<h2 class="wp-block-heading">WordPressは狙われやすい</h2>



<p>WordPressは、世界で最も多く利用されているオープンソースのCMSです。</p>



<p>しかし利用者が多いということは、ITリテラシーやセキュリティ意識の低いユーザーが多い可能性も高くなります。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="red"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon-komari.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>つまり悪意あるユーザーにとっては格好の標的となります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>ということで今に始まったわけではありませんが、WordPressは悪意あるユーザーに「<strong>常に狙われている</strong>」状態にあるとまず考えましょう。</p>



<p>名の売れたサイトが狙われやすいのは当然ですが、「自分のところはアクセス数が少ないから対策しなくても大丈夫だろう」と高をくくるのは危険です。</p>



<p><strong>悪意あるユーザーが求めているのは、まさにそのようなセキュリティ意識の低いサイトです。</strong></p>



<p>被害に遭ってから対策するのはかなり骨の折れる作業になりますので、事前にできる限りの予防をしておきましょう。</p>



<h2 class="wp-block-heading">乗っ取り被害のチェック</h2>



<p>WordPressの管理画面にログインし、左メニューの「ユーザー」を確認します。</p>



<p>もし自分以外のユーザーが不正に登録されていたら、即座に削除しましょう。</p>



<p>さらに自分自身のパスワードも、長く難解なものに変更します。WordPress側で自動生成することもできます。</p>



<h3 class="wp-block-heading">adminユーザーに注意</h3>



<p>WordPressでは、デフォルトの管理ユーザーが<code>admin</code>になっています。</p>



<p>これをこのまま放置するのはセキュリティ上好ましくありませんので、管理権限を持つ別ユーザーを作成して、<code>admin</code>は削除することをおすすめします。</p>



<h2 class="wp-block-heading">ログインユーザー名が表示されるのを防ぐ</h2>



<p><code>http://******.***/?author=1</code>のように、自サイトのURLに<code>/?author=1</code>を追記してブラウザで表示してみてください。</p>



<p>管理者権限を持つユーザー名が表示される場合、これは危険な状態です。</p>



<p>WordPressの認証は基本的にユーザー名とパスワードの2要素で行いますので、そのうち1つがバレるというのはリスクが高いと考えてください。</p>



<h3 class="wp-block-heading">手動でなんとかする方法</h3>



<p>テーマディレクトリ内の<code>author.php</code>（無ければ作成）の内容を、以下の通りにします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
    wp_redirect(home_url());
    exit();</code></pre></div>



<p>これで、authorのユーザー名を表示することなくトップページに強制転送します。若干無理やり感がありますが。</p>



<h3 class="wp-block-heading">プラグインを使用する方法</h3>



<p>Edit Author Slugというプラグインで対策できます。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://wordpress.org/plugins/edit-author-slug/
</div></figure>



<p>ユーザーアーカイブのスラッグを変更することができますので、<code>/?author=1</code>のようにアクセスしても設定したスラッグのURLに転送され、ユーザー名が露呈することはありません。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>テーマによっては、ユーザー名の表示を無効化する機能を持っている場合もあります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">ログイン保護と不正アクセス対策</h2>



<p>不正アクセスを防ぐためには様々な方法がありますが、まとめて行ってくれるプラグインがあります。</p>



<h3 class="wp-block-heading">SiteGuard WP Plugin</h3>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://ja.wordpress.org/plugins/siteguard/
</div></figure>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>既に改ざんや乗っ取り被害の跡が見られる場合は、WordPressの管理画面ではなくFTPなどでアップロードする方法をおすすめします。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>SiteGuardは国産のセキュリティプラグインで、ログインページの保護と不正アクセス対策に特化しています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="464" src="https://blacknd.com/wp-content/uploads/2018/03/20180228-234458-1024x464.png" alt="" class="wp-image-1976" srcset="https://blacknd.com/wp-content/uploads/2018/03/20180228-234458-1024x464.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234458-300x136.png 300w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234458-768x348.png 768w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234458-1536x696.png 1536w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234458.png 1665w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>上の画像のように、ログイン履歴を見ることもできます。</p>



<p>注目すべきは右端の「タイプ」で、ログインページではなくXMLRPCからのログイン試行（失敗）が並んでいる点です。私がそのような操作を行ったことはありませんので、これは<strong>不正アクセスの試行</strong>を受けていることを意味しています。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>XMLRPCとは外部からWordPressを操作する仕組みと考えてください。外部連携には便利な機能ですが、悪用されやすいというデメリットがあります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>SiteGuardでは、このXMLRPCを無効にする設定も可能です。</p>



<p>いくつかの機能がありますが、私は以下のように設定しました。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="980" height="563" src="https://blacknd.com/wp-content/uploads/2018/03/20180228-234419.png" alt="" class="wp-image-1978" srcset="https://blacknd.com/wp-content/uploads/2018/03/20180228-234419.png 980w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234419-300x172.png 300w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234419-768x441.png 768w" sizes="auto, (max-width: 980px) 100vw, 980px" /></figure>



<p>日本語で項目ごとに説明が記述されているので迷うことは少ないでしょう。</p>



<p>「ログインページ変更」では、<code>/wp-admin/</code>と決まっている管理画面のURLを変更することができます。想像できる通り、ログインページからの不正ログイン試行の多くを防ぐことができます。</p>



<p>「画像認証」は、ひらがなによる画像認証を追加することができます。コメントにも仕掛けられますが、筆者はログインページだけにしておきました。</p>



<p>「XMLRPC防御」では、XMLRPCそのものを無効にしました。具体的には<code>.htaccess</code>に<code>xmlrpc.php</code>へのアクセスを禁止する記述が追加されます。</p>



<p>これでひとまず、不正ログインに関してはかなりセキュリティを強化することができます。</p>



<h2 class="wp-block-heading">改ざんと不正ファイルのチェック</h2>



<p>これらの被害に遭っているかどうかを手動で調査するのは、大変骨の折れる作業となります。</p>



<p>ここでは、セキュリティリスクをスキャンできるプラグインを使用して、被害に遭っているかどうかを確認します。</p>



<h3 class="wp-block-heading">Wordfence Security – Firewall &amp; Malware Scan</h3>



<figure class="wp-block-embed is-type-wp-embed is-provider-plugin-directory wp-block-embed-plugin-directory"><div class="wp-block-embed__wrapper">
https://ja.wordpress.org/plugins/wordfence/
</div></figure>



<p>Wordfenceは、WordPress本体のファイル改ざんや、不正なファイルが作成されていないかをスキャンすることができます。</p>



<p>また、古すぎたり更新が停止しているプラグインはスキャン結果で警告されますので、代替となるプラグインを探すことをおすすめします。</p>



<p>Wordfenceは英語のプラグインですが、使用するのは一部機能のみで設定も特に要らないため問題になることはないでしょう。</p>



<p>何はともあれ、まずは上記プラグインをインストール、有効化します。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>既に改ざんや乗っ取り被害の形跡が見られる場合は、WordPressの管理画面ではなくFTPなどでアップロードする方法をおすすめします。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>管理画面の左メニューに"Wordfence"が追加されますので、そこから"Scan"を選択します。</p>



<p>"START NEW SCAN"ボタンをクリックすれば、WordPressインストールディレクトリ以下の全ファイルを調査してくれます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="781" src="https://blacknd.com/wp-content/uploads/2018/03/20180228-234409-1024x781.png" alt="" class="wp-image-1972" srcset="https://blacknd.com/wp-content/uploads/2018/03/20180228-234409-1024x781.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234409-300x229.png 300w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234409-768x586.png 768w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234409.png 1208w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>この画像では左下部の"Results Found"が空になっていますが、これは改ざんや不正なファイルが見つからなかったことを示しています。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>日本語版WordPressでは<code>wp-config-sample.php</code>と<code>readme.html</code>が「内容がオリジナルと異なる」と表示されますが、多くの場合正常です。<br>前者はPHPスクリプトなので、一応おかしなコードが埋め込まれていないか確認（後述）し、問題がなければどちらもIgnore（無効）にしてしまってOKです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>もし"Results Found"に改ざんされたファイルや不正に作成されたファイルが表示された場合、対策が必要です。</p>



<p>具体的には、以下のように対応します。</p>



<ul class="wp-block-list"><li><strong>改ざんされたファイル</strong>：対象ファイルをエディタで開き、後述のようなコードが埋め込まれていれば該当部分を削除する。</li><li><strong>不正に作成されたファイル</strong>：対象ファイルを削除する。</li></ul>



<p>このスキャン作業は、たまに行って確認するようにしましょう。日々の作業が増えますが、被害に遭ってから対応するよりよほど楽です。</p>



<h3 class="wp-block-heading">Live Trafficが便利</h3>



<p>Wordfenceには、他にも様々な機能がありますが、主に使用するのは上記のスキャンと、"Live Traffic"です。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="831" src="https://blacknd.com/wp-content/uploads/2018/03/20180228-234716-1024x831.png" alt="" class="wp-image-1974" srcset="https://blacknd.com/wp-content/uploads/2018/03/20180228-234716-1024x831.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234716-300x243.png 300w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234716-768x623.png 768w, https://blacknd.com/wp-content/uploads/2018/03/20180228-234716.png 1209w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>アクセスログをほぼリアルタイムに閲覧できる機能ですが、国名を見られたり、怪しいか問題のあったアクセスを色分けして表示してくれたりするので大変便利です。</p>



<p>この機能だけを持つプラグインもありますが、このように1本にまとめられているのは嬉しい限りです。</p>



<p>また、上の画像がまさにそうなのですが、不正なアクセスを行ったIPアドレスをブロックリストに入れることもできます。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>ただし攻撃者は自らのPCではなく様々な国にある複数の踏み台を操って不正アクセスを試みますので、多くの場合IPアドレスは一定ではありません。<br>したがって単一のIPアドレスをブロックすることには（無意味とは言いませんが）あまりメリットはありません。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">改ざんされたファイルの修正</h2>



<p>Wordfenceのスキャンで改ざんされたファイルが見つかったら、エディタで開いてみます。</p>



<p>おそらくファイルの先頭に以下のようなコードが不正に埋め込まれています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php $xxxx = Array(/* 無意味に見える大量の英数字 */);
eval(xxxx_function($base64_data, $xxxx)); ?&gt;</code></pre></div>



<p>「無意味に見える大量の英数字」の部分をbase64でデコードすると、PHPのコードであることがわかります。</p>



<p>私は何度もいたちごっこを繰り返しましたが、改ざんされるファイルは毎回<code>index.php</code>, <code>wp-config.php</code>, <code>wp-settings.php</code>あたりでした。</p>



<p>これらのファイルはWordPressが毎回必ず読み込むファイルであるため、悪意あるコードを埋め込むにはうってつけというわけです。</p>



<p>上記のようなコードを発見したら、エディタで不正コード部分の<code>&lt;?php</code>から<code>?&gt;</code>までを削除してください。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="red"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon-komari.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>完全な原因究明と抜本的な対策が行われない限り、繰り返し改ざんが行われる場合があります。私もそうでした。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<h2 class="wp-block-heading">不正に作成されたファイルの削除</h2>



<p>Wordfenceの"Live Traffic"の部分で紹介した画像のように、いかにもランダムで付けたファイル名である場合が多いですが、たまに意味ありげなファイル名になっていることもあります。拡張子は<code>.php</code>です。</p>



<p>作成されるディレクトリはまちまちで、<code>wp-admin/</code>や<code>wp-includes/</code>の中であったり、<code>wp-content/uploads/</code>の中であったり、プラグインやテーマのディレクトリ内であったりします。深い階層内に作成されることもあります。</p>



<p>該当ファイルをエディタで開くと、コードは概ね以下のように難読化されています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://blacknd.com/wp-content/uploads/2018/03/20180301-185604-1024x768.png" alt="" class="wp-image-1984" srcset="https://blacknd.com/wp-content/uploads/2018/03/20180301-185604-1024x768.png 1024w, https://blacknd.com/wp-content/uploads/2018/03/20180301-185604-300x225.png 300w, https://blacknd.com/wp-content/uploads/2018/03/20180301-185604-768x576.png 768w, https://blacknd.com/wp-content/uploads/2018/03/20180301-185604.png 1379w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>最後の方で<code>eval</code>関数によって文字列がPHPコードとして評価されます。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="red"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon-komari.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>実行されるコードは様々でしょうが、筆者の場合はSPAMを送信するコードになっていました。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>攻撃者はこの不正に作成したPHPファイルにPOSTメソッドでアクセスし、実行してきます。これはアクセスログやWordfenceの"Live Traffic"で確認することができます。</p>



<p>この不正ファイルを放置するのは大変危険ですので、見つけ次第 <strong>問答無用で削除してください</strong>。</p>



<h2 class="wp-block-heading">海外のIPアドレスを拒否する</h2>



<p>いささか乱暴ではありますが、攻撃はほぼすべて海外のIPアドレスから行われますので、サイトの公開対象が国内のみであれば、海外からのアクセスをすべて遮断してしまう方法があります。</p>



<p>これは大変効果的で、攻撃者とのいたちごっこを繰り返していた私が最終的に問題を解決するに至った手法です。</p>



<p>遮断する方法はいくつかありますが、ここでは最も修正が手軽な<code>.htaccess</code>によるアクセス制限を紹介します。</p>



<p>以下は、私が採用している<code>.htaccess</code>です。内容は、以下のような流れになっています。</p>



<ol class="wp-block-list"><li>すべてのアクセスを拒否</li><li>Googleやfacebook, Twitterなどbotからのアクセスを例外として許可</li><li>日本国内で使用されるIPアドレスを例外として許可（4千行以上）</li></ol>



<p>Apacheのバージョンによってアクセス制限の書式が異なる点に注意してください。</p>



<p>▼<strong>Apache 2.2系を使用している場合</strong></p>



<p>https://gist.github.com/ryu-blacknd/3625090cd46b2b60d7ce3700ae7d6b78</p>



<p>▼<strong>Apache 2.4系を使用している場合</strong></p>



<p>https://gist.github.com/ryu-blacknd/59dc7f1dbf5c82a3be507a9acb0146d9</p>



<p>多くの場合、既に何かが書かれた<code>.htaccess</code>ファイルが存在すると思いますので、その部分は残して上記コードを追記してください。</p>



<p>貼り付ける場所に悩んだら、<code># BEGIN WordPress</code>の直前にしておけばOKです。<br><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>



<h2 class="wp-block-heading">SPAM送信の踏み台にされた場合の対処</h2>



<p>私が実際に被害に遭ったサーバの環境は、OSがCentOS 7で、MTA（メールサーバ）はPostfixです。</p>



<p>ここではPostfixであった場合、かつ<code>root</code>による作業が可能な場合の対処方法を紹介します。</p>



<p>まずは現在溜まっているキューを確認します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$ postqueue -p</code></pre></div>



<p>送信した覚えのないメールがズラッと表示された場合、既にSPAM送信が実行されています。</p>



<p>この場合は以下のコマンドでまずキューを削除します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$ postsuper -d ALL</code></pre></div>



<p>上記対応によって問題が解決している場合は、このままPostfixの運用を続けて構いません。</p>



<p>まだ対策が完了していない場合はさらにキューが増加しますので、不本意ながらPostfixを停止しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$ systemctl stop postfix</code></pre></div>



<p>当然ですが、Postfixを停止している間はメールの送受信が機能しません。なるべく早期に対策を終え、再度Postfixを起動します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$ systemctl start postfix</code></pre></div>



<p>一度SPAMの踏み台になってしまった以上、以後しばらくはキューの確認を行うことをおすすめします。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>既に書きましたが、最も効果的な対策は<strong>海外のIPアドレスを排除すること</strong>です。</p>



<p>すべての対策を行っても解決しない場合、最終手段は再セットアップということになります。WordPressのファイル群をすべて削除し、素のWordPressから再度環境を構築をすることで、クリーンな状態に戻せます。</p>



<p>ただし事前にバックアップを取ることはもちろんですが、バックアップしたファイルをそのまま書き戻さないこともまた重要です。<br>プラグインやテーマは改めて新規インストールし、手動で以前の設定を復元するべきです。</p>



<p>この作業は困難かつ時間がかかりますので、できることならここで紹介した方法で解決したいものです。</p>



<p>最後になりましたが、WordPress本体やプラグイン、テーマのアップデートは無視せず実行してください。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>公開されたばかりのバージョンであっても脆弱性が発見されることがしばしばありますので、常に目を光らせておいてください。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>]]></content:encoded>
					
					<wfw:commentRss>https://blacknd.com/develop-wordpress/wordpress-malware-tampering-guard-block/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
