<?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>Postfix - BLACKND</title>
	<atom:link href="https://blacknd.com/tag/postfix/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>Postfix - 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>AWS EC2で脆弱性診断A+のサーバを構築【Qiita】</title>
		<link>https://blacknd.com/server-management/aws-ec2-server-qiita/</link>
					<comments>https://blacknd.com/server-management/aws-ec2-server-qiita/#respond</comments>
		
		<dc:creator><![CDATA[りゅう]]></dc:creator>
		<pubDate>Mon, 22 Jun 2020 05:56:16 +0000</pubDate>
				<category><![CDATA[サーバ構築・管理]]></category>
		<category><![CDATA[セキュリティグループ]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[脆弱性診断]]></category>
		<category><![CDATA[公開鍵認証]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[SPAM対策]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[対策]]></category>
		<category><![CDATA[Qiita]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Logwatch]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[不正アクセス]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[Let's Ecnrypt]]></category>
		<category><![CDATA[バーチャルホスト]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[自動更新]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[チューニング]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[PHP-FPM]]></category>
		<category><![CDATA[リポジトリ]]></category>
		<category><![CDATA[インストール]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[firewalld]]></category>
		<category><![CDATA[サーバ構築]]></category>
		<category><![CDATA[Nginx]]></category>
		<guid isPermaLink="false">https://blacknd.com/?p=3008</guid>

					<description><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2020/06/aws-ec2-server-qiita-1024x576.png" class="webfeedsFeaturedVisual" /></p>AWSのEC2にAmazon Linux 2のインスタンスを作成し、スタンダードかつセキュリティに配慮したインターネットサーバを構築する手順をまとめました。記事はQiitaに投稿しました。 概要 EC2でAmazon L [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2020/06/aws-ec2-server-qiita-1024x576.png" class="webfeedsFeaturedVisual" /></p>
<p>AWSのEC2にAmazon Linux 2のインスタンスを作成し、スタンダードかつセキュリティに配慮したインターネットサーバを構築する手順をまとめました。記事はQiitaに投稿しました。</p>



<h2 class="wp-block-heading">概要</h2>



<p>EC2でAmazon Linux 2のインスタンスを作成し、以下のようなサーバを構築する手順をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>種別</th><th>アプリケーション</th></tr></thead><tbody><tr><td>ウェブサーバ</td><td>Apache 2.4 または Nginx 1.16</td></tr><tr><td>PHP</td><td>PHP 7.3</td></tr><tr><td>データベースサーバ</td><td>MySQL 5.7</td></tr><tr><td>データベースクライアント</td><td>phpMyAdmin 5.0</td></tr><tr><td>SMTPサーバ</td><td>Postfix</td></tr><tr><td>IMAP/POP3サーバ</td><td>Dovecot</td></tr><tr><td>セキュリティ</td><td>Fail2ban / Logwatch</td></tr><tr><td>その他</td><td>Node.js / Docker</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">記事一覧</h2>



<p>各記事はQiitaに投稿しました。</p>







<p>https://qiita.com/ryu-blacknd/items/23b86d9ad768d58ff161</p>



<p>https://qiita.com/ryu-blacknd/items/36ccfcf96da7b0c981cf</p>



<p>https://qiita.com/ryu-blacknd/items/77eebe43a18a69e7c1e5</p>



<p>https://qiita.com/ryu-blacknd/items/4049f04e445eb1d60e4d</p>



<p>https://qiita.com/ryu-blacknd/items/03030d11eeef65e3cf67</p>



<p>https://qiita.com/ryu-blacknd/items/8e0c28065af3f9b8a06d</p>



<p>https://qiita.com/ryu-blacknd/items/20e5540195501e16e90e</p>



<h2 class="wp-block-heading">ポイント</h2>



<p>ただ単にインストールして初期設定を行うだけでなく、チューにニグやセキュリティ対策にも注力しました。</p>



<h3 class="wp-block-heading">脆弱性診断「A+」</h3>



<p>2020年前半、SSL/TSL絡みで大きな動きがありました。<br>ChromeやFirefox等、主要ブラウザがSSL 1～3、TLSv1.0～1.1を無効化したのです。<br>このためサーバ側で設定を変更しTLSv1.2を有効にする必要がありますが、同時にセキュリティリスクのある上記対象バージョンを無効にするという作業も行わないと、脆弱性診断で危険と診断されるようになりました。</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>


<p>今回の記事ではこの問題にも対処し、かつせっかくなら脆弱性診断で最高の「A+」を取得することを目標に掲げました。</p>



<p>この記事を書きながら構築したサーバは、<a href="https://www.ssllabs.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">SSL Labs</a>の診断で「A+」と診断されました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="568" src="https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-1024x568.png" alt="" class="wp-image-3010" srcset="https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-1024x568.png 1024w, https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-300x167.png 300w, https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-768x426.png 768w, https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949.png 1045w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">常時SSL化対応</h3>



<p>無料のSSL証明書を取得できるLet's Encryptを利用し、ApacheやNginxの設定で常時SSL化を行います。<br>Let's Encryptの証明書は更新期限が3ヶ月と短いため、期限切れになる前に自動で更新するようにも設定します。</p>



<h3 class="wp-block-heading">ApacheのEvent MPM</h3>



<p>MPMとはマルチプロセッシングモジュールの略です。<br>Apacheは、デォルトではシングルスレッドプロセスであるPrefork MPMで動作します。<br>記事ではイベント駆動であるEvent MPMを採用します。これにはPHPも関係します。<br>また環境に合わせてチューニングも行います。</p>



<h3 class="wp-block-heading">PHP-FPMの採用</h3>



<p>Apacheのデフォルトでは、モジュール版のPHPを使用するようになっています。<br>記事ではEvent MPMとFast CGI方式のPHP-FPMと組み合わせて高速化を図っています。<br>こちらもチューニングを行います。</p>



<h3 class="wp-block-heading">MySQLの採用</h3>



<p>現在、多くのディストリビューションで標準のデータベースサーバはmariaDBとなっています。<br>MySQLと互換性があり、PHP等からはMySQLとして操作することができます。<br>しかし記事では本来のMySQLを使用するようにしています。</p>



<h3 class="wp-block-heading">通信路の暗号化とパスワード認証の排除</h3>



<p>ウェブサーバだけでなく、メールサーバもSSL/TLS経由でアクセスするようにしています。<br>SSH接続はパスワード認証を使わず、公開鍵認証のみとしています。</p>



<p>なお記事ではFTPサーバを導入していません。これはCircleCIのようなCI/CDツールからSSHとGitを用いてデプロイすることを前提としているためで、この場合FTPサーバは不要です。<br>平文テキストでパスワードをやり取りするFTPサーバは、起動しているだけでセキュリティリスクにもなります。どうしてもFTPクライアントで操作したい場合はSFTP（SSHを用いたFTP）を採用することをお勧めします。</p>



<h3 class="wp-block-heading">セキュリティと不正アクセス対策</h3>



<p>EC2のセキュリティグループとfirewalldにより、不要なポートを外部に公開しないよう設定します。<br>例えばimaps/pop3sは公開しても、imap/pop3は公開しないようにしています。</p>



<p>他に、Fail2banによる不正アクセス対策（自動Ban / Unban）や、Logwatchの不具合修正も行います。</p>



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



<p>本記事の目玉はSSL/TLS周りです。脆弱性診断で「A+」、少なくとも「A」を狙えるようにしています。<br>今はTLSv1.1までが無効になっていますが、いずれはTLSv1.2も無効になることが考えられます。<br>その際に同じようにレンタルサーバで対応に苦慮するようであれば、今のうちにクラウドへの移行を進めておいたほうが良いと思います。<br>AWSはIaaSとしては圧倒的シェアを誇るサービスで情報も豊富なため、幅広い層にお勧めできます。<br>担当者がわけわからんという場合はもちろん保守を含め委託が良いでしょうが、ある程度VPS等でサーバ構築に触れたことのある方であれば、この記事を参考にして構築してみていただければと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blacknd.com/server-management/aws-ec2-server-qiita/feed/</wfw:commentRss>
			<slash:comments>0</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>
