Archive for the ‘WordPress 隠ぺい方法’ Category

WordPress ログイン画面の暗号化(https)

2014-11-03

社内からのアクセスのみ管理画面へ通すため、確率的にはとても低いもののそれでもリスクは残ります。例えば社内のパソコンにウイルスが入り、パスワード漏えい及びリモートコントロールされるなど。そして通信を暗号化することはパスワードを秘密にし、不正なログインを防ぐ補強という趣旨です。

なお、よくある不正ログインによる改ざん事故は「 admin と簡単なパスワードの組み合わせ」と「 ID とパスワードの使い回し」です。暗号化をしないためにパスワードが漏えいすることは可能性としてあるものの確率的にはとても低いと言えます。

そこでレンタルサーバのプランによっては暗号化がサポートされていない( sftp も含め)なんてこともあり、できればプラン変更したほうが良いものの、もしプラン変更をしない場合は保有リスクとします。万が一、改ざん事故が起きた場合はパスワード漏えいを疑います。

概要

暗号化(https)を行うためのサーバの設定と WordPress の設定を行います。まずサーバの設定はお使いのレンタルサーバのマニュアルを読んでください。また WordPress 側の設定はどのレンタルサーバでも共通です。 wp-config.php を編集します。

ちなみにこのサイトではさくらインターネットさんのレンタルサーバ(共用プラン)を借りています。さくらインターネットさんでは https でアクセスするための SSL が無料で使えます(共有 SSL)。そして共有 SSL で利用可能な URL は「 https://初期ドメイン/ 」となります。初期ドメイン名が「 example.sakura.ne.jp 」である場合、共有 SSL を有効にすると「 https://example.sakura.ne.jp/ 」でアクセスできるようになります。このような暗号化(https)でアクセスするための設定をサーバに行います。

なお、WordPress の設定は wp-config.php の FORCE_SSL_LOGIN 定数を true にし、WordPress のログイン画面を https で受け付けるようにします。

これまでの記事で変更した WordPress をアップロードしていません(まだローカルで作業中です)。そのため、この作業の確認はアップロード後に行います。

手順

まずは https でアクセスできるよう、使っているレンタルサーバの共有 SSL を有効にします。 Google で「レンタルサーバ名 共有ssl」と検索すると簡単に調べられます。ちなみにですがレンタルサーバのプランによってはサポートされていないこともあります。よくわからない場合はレンタルサーバのサポートにお問い合わせください。
さくらインターネットさん
ロリポップさん
ヘテムルさん
エックスサーバさん
WebARENAさん

wp-config.php に以下の記述を追記します。なお、隠ぺいしているため「 /bi400/wp-config.php 」になります。

define('FORCE_SSL_LOGIN', true);

ちなみにログインするときですが、当サイト(さくらインターネットさん)であれば「 https://初期ドメイン.sakura.ne.jp/mission500/bi400/si300/wp-login.php 」にアクセスします。独自ドメインの URL は使いません。またまだローカルで作業中です。そのため、この作業の確認はアップロード後に行います。

作業が完了したら、【 公開前の準備 】編に移りましょう(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
隠ぺいの総仕上げ 完成時のビデオです。
管理画面での SSL 通信 WordPress Codex(公式オンラインマニュアル)

非公式のテーマ及びプラグインの削除

2014-10-27

WordPress のバックアップを行う出力のみのプラグインでも、ファイルをアップロードできてしまう(外部からサーバーへバックドアを保存できてしまう)脆弱性が見つかるなど、WordPress の脆弱性で最も注意したいのがプラグインです。そして昔から非公式のテーマやプラグインに特に問題が多く、改ざん事故の原因だったりもします。つまりリスキーです。熟知し管理できる場合は除きますが、放置している場合は公式のものに代替するなどして削除します。

また公式サイトで入手したものであっても、使いずらい、他に良いものがあったなどの理由で、停止はしているが削除はしていないこともあるかと思います。保存してあっても一利なしで、脆弱性などのリスクだけは残ってしまいます。そこで使っていないものは削除します。

非公式であったり使っていないテーマ及びプラグインの削除は脆弱性対策がその主な趣旨です。ちなみに脆弱性の多くは上記のようにファイルを直接操作するものです。すぐの削除が難しい場合は、隠ぺいやアクセス制限で対策し(レジュメをはじめから読んでください)、準備ができたら削除してください。

なお、非公式のテーマ及びプラグインを使い続ける場合は、保有リスクとして管理し、万が一、改ざん事故が起きた場合は削除します。すぐの変更が難しければ難しいほど、事故のない時に削除の準備を進めたほうがベストでしょう。

概要

初期の導入時に非公式のテーマ及びプラグインを入れている場合は削除します(公式のものに代替する)。また停止中のテーマ及びプラグインを削除します。

なお、アップロード時にないプラグインは自動的に WordPress から登録が外れます。削除するだけで他に作業することはありません。

また公式のものに代替する場合はそのテーマ・プラグインを公式サイトからダウンロードし、保存します。アップロード後の管理画面から有効にすれば登録完了です。

ちなみに使用中プラグインのアップデートは重要ですが、アップロード後の管理画面からバージョンアップできるためここでは最新版にしません。

手順

プラグインを保存しているディレクトリ「 bi400/ti200/ki100 」を開き、非公式のものや停止中のものを削除します。公式のものに代替する場合は、そのプラグインのディレクトリを保存してください。

またテーマを保存しているディレクトリ「 bi400/ti200/themes 」を開き、非公式のものや使用していないテーマを削除します。公式のものに代替する場合は、そのテーマのディレクトリを保存してください。

なお、すべての作業が完了してからアップロードします。その際に管理画面で新規のテーマ・プラグインを有効にします。削除したものは自動的に外れますのでこのままで OK です。

作業が完了したら、ログイン画面の暗号化(https)を行います(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
隠ぺいの総仕上げ 完成時のビデオです。
WordPress の安全性を高める WordPress Codex(公式オンラインマニュアル)

wp-config.php のアクセス制限

2014-10-19

wp-config.php にはデータベースの設定など機密性の高い情報が記述されています。もちろん、このサイトで施している隠ぺい設定もこのファイルに記述されています。そして wp-config.php にアクセス制限を行うのは、機密性が高いのでより秘密にするという補強が趣旨です。

なお、wp-config.php をブラウザで開くことはできません。何の対策をしなくても秘密のままです。ところがサーバ側の設定で「同じサーバ内のユーザーから参照できてしまう」事故も過去にはありました。共用サーバの場合は自分で管理できないため、このアクセス制限を行って補強してください。

概要

wp-config.php へのアクセス制限は、.htaccess ファイルで行います。

手順

「 /bi400/ 」に以下の .htaccess を設置します。

<files wp-config.php>
order allow,deny
deny from all
</files>

作業が完了したら、未使用のテーマ及びプラグインの削除を行います(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
隠ぺいの総仕上げ 完成時のビデオです。
WordPress の安全性を高める WordPress Codex(公式オンラインマニュアル)

wp-includes ディレクトリのアクセス制限

2014-10-10

wp-includes ディレクトリ内のファイルに、改ざん事故を起こすような脆弱性が発見された時のために、wp-includes ディレクトリへのアクセスを制限します。もちろん、脆弱性さえなければ wp-includes ディレクトリへのアクセスを制限する必要はありません。脆弱性対策の補強という趣旨です。

なお、WordPress Ver3.7 から自動でアップデートが入ります。したがって脆弱性対策としては、アップデート、隠ぺい、アクセス制限の 3 本になります。

ちなみに厳密には wp-includes ディレクトリへのアクセスを一部制限することになります。完全に制限してしまうと例えばプラグインが正常に動作しないなど、不具合のオンパレードになります。あくまでも一部制限のため、アップデートが最も重要な対策です。

概要

wp-includes ディレクトリへのアクセス制限は、.htaccess ファイルで行います。一部の .php ファイルへのアクセスを制限します。

ちなみに誤解が生じないよう WordPress Codex(公式オンラインマニュアル)のままの記述にしてあります。他の対策と重複した記述がありますがこの影響はありません。

手順

「 /bi400/si300/ 」に以下の .htaccess を設置します。

<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>

作業が完了したら、wp-config.php のアクセス制限を行います(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
隠ぺいの総仕上げ 完成時のビデオです。
WordPress の安全性を高める WordPress Codex(公式オンラインマニュアル)

ログイン画面のアクセス制限

2014-10-04

外部からのログイン画面へのアクセスをブロックします。ログイン画面にアクセスできなければパスワードクラックを試すことはできません。ログイン画面隠ぺいの補強という趣旨です。

なお、「編集スタッフが大勢いて…」というケースでは、自宅からの接続や退職後の接続はスタッフの良識に任せているというのがよくある話だったりします。隠ぺいを施しても、自宅や退職後の接続はリスクがあります。また過去には、Wordpress の脆弱性から「ログイン画面を通過せずに管理画面が開ける」問題もありました。

厳密には管理画面のアクセス制限になりますが、会社からしか接続できないように制限します。ちなみに wp-login.php に制限をするのではなく wp-admin ディレクトリに制限をかけます。

概要

ログイン画面へのアクセス制限は、.htaccess ファイルで行います。basic 認証(パスワード)による制限もできますが、ここでは IP アドレスによる制限を行います。

ちなみにサーバによっては IP アドレスによる制限が上手く機能しないなんてこともあったりします。もし改善しない場合は basic 認証(パスワード)による制限を行ってください。

手順

「 /bi400/si300/wp-admin/ 」に以下の .htaccess を設置します。

Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx(xは自社の IP アドレスに変更)
<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>

basic 認証(パスワード)による制限を行う場合です。

AuthUserFile /home/orangess/www/.htpasswd(パスワードファイルの場所)
AuthGroupFile /dev/null
AuthName "認証サイト"
AuthType Basic
require valid-user
<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>

作業が完了したら、wp-includes ディレクトリのアクセス制限を行います(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
隠ぺいの総仕上げ 完成時のビデオです。
WordPress の安全性を高める WordPress Codex(公式オンラインマニュアル)

隠ぺい作業の総仕上げ

2014-07-04

隠ぺい方法の未公開分を含めた総仕上げ動画を作成しました。隠ぺいのスタートから手順を載せていますのでぜひ確認ください。

なお、wp-config.php の設定を動画に載せていませんが、現在までの作業では下記のようになっています。

define('WP_DEBUG', false);

define('WP_SITEURL', 'http://www.wordpress-security.jp/bi400/si300');
define('WP_HOME', 'http://www.wordpress-security.jp');

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/ti200' );
define( 'WP_CONTENT_URL', 'http://www.wordpress-security.jp/bi400/ti200');

define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/ti200/ki100' );
define( 'WP_PLUGIN_URL', 'http://www.wordpress-security.jp/bi400/ti200/ki100');

define( 'UPLOADS', '../../wordpress/wp-content/uploads' );

これで隠ぺい作業は完了です。セキュリティ対策を構築しましょう(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
概要 : wp-config.php を大公開! 完成時の設定
wp-config.php の編集

スタイルシート、その他の移動

2014-06-03
スタイルシート、その他の移動

ソースを確認すると「 http://www.wordpress-security.jp/bi400/ti200/themes/ 」ディレクトリの記述がチラホラと入ります。これはサイト全体で使うデザインのファイル(スタイルシートや画像)が「 themes 」ディレクトリにあるためです。そしてオトリの「 wordpress 」ディレクトリを設けているため、それらデザイン関係はこちらへ保管します。趣旨としては「 /bi400/ti200/ 」ディレクトリを秘密にする仕上げ作業といったところです。

概要

「 themes 」ディレクトリを設置し、スタイルシートとロゴやバナーといったデザインの画像を置くディレクトリを設置します。イメージとしては、テーマのプログラムを本丸に置き、デザインをオトリに置きます。なお、テーマのプログラムは本丸にないと使えません。

ここでは使っているテーマのディレクトリ名を「 oss 」としています。なお「 oss 」は自由に命名できますが、すべての設定を変える必要があるため、お使いのテーマのディレクトリ名を使ってください。

これらの設定はテーマのファイルにリンクで貼られています。本丸のファイルをオトリへリンクし修正します。ちなみにスタイルシートは本丸にも置いておきます。これは WordPress 管理画面でエラーになるためです。移動ではなく、コピーしてください。デザインの画像は移動で OK です。

よくわからない場合は、本丸にあるテーマのディレクトリをオトリにコピーしてください。テーマに脆弱性が発見される可能性もあるため、オトリにコピーした「 .php 」ファイルといったプログラムを削除します。以下はこちらの方法で案内します。

手順

オトリの「 /wordpress/wp-content/ 」ディレクトリに「 themes 」ディレクトリを作成します。そしてこの「 themes 」ディレクトリに本丸の「 /bi400/ti200/themes/oss/ 」ディレクトリをコピーします。

次にオトリの「 /wordpress/wp-content/themes/oss/ 」内の「 .php 」と「 .cgi 」ファイルを削除します。その他プログラム系のファイルがある場合も削除します( style.css 及び画像が残ります)。

「 /bi400/ti200/themes/oss/ 」にあるファイルを開いて、スタイルシートとデザインの画像へのリンクを「 http://www.wordpress-security.jp/wordpress/wp-content/themes/oss/ 」と絶対パスで変更します。

スタイルシートはヘッダー部にあります。
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" /> を
<link rel="stylesheet" href="http://www.wordpress-security.jp/wordpress/wp-content/themes/oss/style.css" type="text/css" media="screen" /> に変更します。

css

ロゴやバナーは各「 .php 」ファイルでリンクされています( img から始まるタグです)。
<img src="<?php bloginfo('template_directory');?>/images/mainImage.jpg" alt="メインイメージ" width="960" height="350" /> などを
<img src="http://www.wordpress-security.jp/wordpress/wp-content/themes/oss/images/mainImage.jpg" alt="メインイメージ" width="960" height="350" /> に変更します。

img

最後に「 languages 」、「 plugins 」、「 upgrade 」ディレクトリを設置し、下記「 .htaccess 」を保存してください。

【 .htaccess ファイル】
order allow,deny
deny from all

作業が完了したら隠ぺいの仕上げ作業です(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
概要 : wp-config.php を大公開! 完成時の設定
wp-config.php の編集

uploads の移動

2014-05-10
uploads の移動

「 uploads 」ディレクトリは管理画面からアップした画像の保管場所です。そして標準のままで運用すると「 http://www.wordpress-security.jp/bi400/ti200/uploads/ 」ディレクトリにアップされます。そしてソースにも記述が入ります。オトリの「 wordpress 」ディレクトリを設けているため、オトリへ画像が保管されるように設定します。趣旨としては「 /bi400/ti200/ 」ディレクトリを秘密にする仕上げ作業といったところです。

ちなみに WordPress の管理画面を使わずに FTP で画像をアップすることも方法として考えられます。ただし FTP を使うための管理が増えます。編集スタッフが多い場合は、パスワード管理など管理する工数が増えるため WordPress 管理画面を使うことをオススメします。なお、改ざん復旧の現場では「スタッフが多く細かいところまでは目が届かない」という声も。管理する工数が増えれば必然的にセキュリティホールになりやすく、支障がない限り制限を行ってください。

概要

オトリの「 /wordpress/wp-content/ 」ディレクトリに「 uploads 」ディレクトリを移動します。移動したら「 bi400/wp-config.php 」ファイルを変更し、アップロード時にオトリに保管するよう設定します。

なお、注意点としては、アップロード時に相対パスで表示されてしまうため、記事本文中に貼り付けるときは URL を修正する必要があります。運用する際はこちら注意してください。

手順

「 /wordpress/wp-content/ 」ディレクトリに「 /bi400/ti200/ 」の「 uploads 」ディレクトリを移動します。

「 bi400/wp-config.php 」に以下を「追記」します。

define( 'UPLOADS', '../../wordpress/wp-content/uploads' );

wp-config.php

ちなみに、アップロード時に相対パスで表示されてしまうため、記事本文中に貼り付けるときは URL を修正する必要があります。

管理画面

作業が完了したらスタイルシート、その他を移動します(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
概要 : wp-config.php を大公開! 完成時の設定
wp-config.php の編集

オトリ WordPress ディレクトリを準備する

2014-05-07
オトリ wordpress

スタイルシートやアップした画像は「 wp-content 」ディレクトリに保存されるため、ソースには URL が入ります。そして「 http://www.wordpress-security.jp/bi400/ti200/ 」ディレクトリは公開することになります。ただし「 wp-admin 」や「 plugins 」というセキュリティで重要なディレクトリは「 si300 」、「 ki100 」と秘密にしてあるため、「 ti200 」を公開してもリスクはありません。そしてオトリの「 wordpress 」ディレクトリを設けることは、隠ぺいの多層化や補強という趣旨です。

なお、当社で受託した改ざん被害の復旧後(予防策も含む)にアクセスログを観察すると、ハッカーはちょこっと叩いたり、検索結果から叩いたりし、ボロがなければさっさと撤収します。 3、4 回叩いて検証し、二度と来ません。つまりいろいろと対策してある(改ざんは簡単にできない)とわからせることは重要であり、あえてリアルに再現したオトリを作ることには効果があります。

概要

オトリを本物のように再現し、さらに改ざん不可の状態にします。まずは空のオトリファイルを設置します。またオトリの「 wp-admin 」ディレクトリと「 wp-includes 」ディレクトリを設けてアクセス制限を施します。

なお、隠ぺい前のディレクトリが「 wordpress 」であればオトリは「 wordpress 」と、もし「 blog 」であればオトリは「 blog 」とします。これで画像の URL が同じになるため、過去記事で指定している画像の URL を変更する必要がなくなります。

ちなみにオトリの「 wp-content 」ディレクトリにスタイルシートや画像を保存します。そしてこのディレクトリについては次の記事で加工します。

手順

オトリの「 wordpress 」ディレクトリを作成し、「 license.txt 」、「 readme.html 」、「 readme-ja.html 」を「 si300 」からコピーして設置します。

その他の「 wp-config.php 」といった php ファイルは、下記内容の php ファイルを作成します(ダミーです)。また下記 .htaccess ファイルを設置します。

【 php ファイル】
<?php
?>

【 .htaccess ファイル】
<files wp-login.php>
order allow,deny
deny from all
</files>

オトリの「 wp-admin 」ディレクトリと「 wp-includes 」ディレクトリを設けて、下記 .htaccess ファイルを設置します。こちらは一切のアクセスを無効にするため、オトリの php ファイルは設けません。

order allow,deny
deny from all

オトリの「 wp-content 」ディレクトリを設置したら、次の記事に進みます。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
概要 : wp-config.php を大公開! 完成時の設定
wp-config.php の編集

plugins のリネーム

2014-04-26
plugins のリネーム

「 plugins 」ディレクトリにはインストールしたプラグインのプログラムが保管されています。そしてたとえば問題のプラグインの URL を表示するとサーバにファイルをアップロードできてしまうような脆弱性も過去にはありました。ログインせずにウイルスをアップロードできるのですから恐ろしい限りです。そして WordPress の脆弱性情報を見ていると、そのほとんどがプラグインです。破壊力も確率も高いため、WordPress のセキュリティ対策で最も注意したい部分と言えるでしょう。

脆弱性の多くはプラグインの URL を叩いて悪用してしまうものです。標準の構成であれば「 /wordpress/wp-content/plugins/ 」であり攻撃側は既に把握しています。後は問題のあるプラグインのファイル名を指定するだけです。つまり定型文的なプログラムでどんどんアタックするだけです。そして「 plugins 」ディレクトリ名を使わなければ攻撃は届きません。これが名前を変える趣旨です。

なお、プラグインによっては「 plugins 」ディレクトリをソースに書いてしまうものもあります。もし重要ではない機能であればそのプラグインは削除したほうが得策です。ちなみに Twitter などに出力をするような出力系のプラグインばかりであれば「最新版を使う」対策だけで事足ります。そして問題なのは画像をアップロードするような入力系のプラグインです。脆弱性があれば改ざん事故に直結する可能性も。プラグインの信頼性を追求し、使う使わないを判断することも重要ですが、もし入力系を使う場合はソースに「 plugins 」ディレクトリを表示しないよう秘密に管理してください。

概要

「 ti200 」ディレクトリ内の「 plugins 」ディレクトリの名前を「 ki100 」に変更します。「 ki100 」は自由に命名してください。ランダムな英数字の組み合わせにして、推測不可能なディレクトリ名にします。

なお、入力系のプラグインを使っている場合「 ki100 」を秘密にすることは大変重要です。もしディレクトリをソースに書いてしまうプラグインがあれば削除します。もちろん、使う使わないを検討したり、使う場合は最新版を使ってください。

手順

「 plugins 」ディレクトリの名前を「 ki100 」に変更します。また不要なプラグインがあれば、そのプラグインのディレクトリを削除します(削除しておけばアップロードした際に自動的に外れ、設定は不要です)。

「 bi400/wp-config.php 」に以下を「追記」します。

define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/ti200/ki100' );
define( 'WP_PLUGIN_URL', 'http://www.wordpress-security.jp/bi400/ti200/ki100');

wp-config.php

作業が完了したらオトリの「 WordPress 」ディレクトリを設置します(次の記事に進んでください)。

関連リンク

レジュメ: WordPress 隠ぺい方法 完成図 : 隠ぺい方法はこちらからスタートしています。
概要 : wp-config.php を大公開! 完成時の設定
wp-config.php の編集

« Older Entries
Copyright© 2014 WordPress セキュリティ対策デモサイト - 隠ぺいによるセキュリティ対策 - All Rights Reserved.
オレンジセキュアサービス株式会社
千代田区神田佐久間河岸70 第二田中ビル5F
www.orange-ss.com