WPScan(WordPressの脆弱性診断ツール)の使い方や各種セキュリティの設定方法など、WordPress(ワードプレス)のセキュリティ対策についてまとめています。
この記事の目次です。
1. WordPressの脆弱性診断(セキュリティチェック)
2. WordPressの脆弱性診断ツール(WPScan)
3. セキュリティ対策1(不要プラグイン、テーマの削除)
4. セキュリティ対策2(本体やテーマ・プラグインの更新)
5. セキュリティ対策3(.htaccessで行える対策)
6. セキュリティ対策4(テーマで行える対策)
7. セキュリティ対策5(ダッシュボードで行える対策)
8. セキュリティ対策6(脆弱性情報を収集して確認する)
アプリケーションやシステムのセキュリティ対策のためには、脆弱性診断(セキュリティチェック)が必要です。 WordPressも同様にWordPressのセキュリティ対策を行うには、まずセキュリティチェックを行う必要があります。 ここでは、簡単にセキュリティ用語を補足しておきます。
脆弱性診断とは、その単語のとおりで、OSやアプリケーション、ネットワークを含めたシステムの脆弱性を検査することをいいます。
プログラムのバグを見つけるのと同様に脆弱性もテストを行って見つけます。 脆弱性検出関連のテストの種類には大きく、設計書やソースコードを基にしたホワイトボックス検査と実際に疑似的な侵入や攻撃手法などを用いて行うブラックボックス検査があります。 通常は脆弱性検査という場合はブラックボックス検査のことをいうことが多いです。
ブラックボックス検査には、「セキュリティホール検査」、「セキュリティスキャン」、「セキュリティ診断」、「脆弱性診断」、「ペネトレーションテスト」、「侵入検査」、「侵入テスト」などの呼称があります。
ペネトレーションテストは、公開Webサーバや組織のネットワークの脆弱性を探索し、 サーバに実際に侵入できるかどうかを確認します。
WordPress専用のWordPressの脆弱性診断ツールです。 本体、プラグインの公開されている脆弱性やPHP、Webサーバの設定確認、ログインなどの設定のチェックが行えます。
以下はローカルPC内のVM上にインストールしたCentOS7へのインストール例です。
minimalでインストールします。
前提パッケージとアップデートを行います。
su - yum -y groupinstall base yum -y groupinstall development yum -y update yum -y install openssl-devel readline-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel patch bzip2 yum remove ruby
Rubyをインストールします。
cd /root git clone https://github.com/wpscanteam/wpscan.git git clone https://github.com/sstephenson/rbenv.git /root/.rbenv echo 'export PATH=$HOME/.rbenv/bin:$PATH' >> /root/.bash_profile echo 'eval "$(rbenv init -)"' >> /root/.bash_profile source /root/.bash_profile git clone git://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build cd /root/.rbenv/plugins/ruby-build ./install.sh cat /root/wpscan/.ruby-version rbenv install <確認したルビーバージョン例:2.6.2> rbenv rehash rbenv global <確認したルビーバージョン例:2.6.2> rbenv local <確認したルビーバージョン例:2.6.2>
WPScanをインストールします。
cd /root/wpscan gem install bundler && bundle install gem install wpscan
データベースのアップデートは以下で行えます。
wpscan --update
標準スキャン+ユーザID抽出する場合は以下で行えます。
wpscan --url <WordPressのURL> --enumerate u
api-token(https://wpvulndb.com/)を使用して、標準スキャン+脆弱なプラグインや脆弱なテーマ、ユーザID抽出、DBエクスポートなど、基本的なスキャンは以下で行えます。
wpscan --api-token <wpvulndb.comのトークン> --url <WordPressのURL> --enumerate vp,vt,tt,cb,dbe,u,m
はじめに消さないと怖くて誰も消さなくなります。 使わないプラグイン、テーマははじめに消したいです。
WPScanを掛ければわかりますが、プラグインの脆弱性情報を調べて脆弱なテーマ、プラグイン使わないようにします。
本体やテーマ・プラグインの更新を行います。 1度きりの更新ではなく、定期的にチェックして運用を通して更新管理が必要です。
場合によってはゼロディ脆弱性(脆弱性の対策がない状態)になっている場合は該当機能を外す対処も必要です。
.htaccessでも行える簡単なセキュリティ対策についてまとめています。
HTTPレスポンスヘッダの設定は.htaccessでも簡単に記述出来ますので設定しておきましょう。
<ifModule mod_headers.c> Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options sameorigin Header always set X-Download-Options: noopen Header always set X-Powered-By: "" Header add Strict-Transport-Security "max-age=15768000" </ifModule> <IfModule mod_php5.c> php_flag session.cookie_httponly on php_flag session.cookie_secure On </IfModule> <IfModule mod_php7.c> php_flag session.cookie_httponly on php_flag session.cookie_secure On </IfModule>
※「X-Frame-Options」の設定はdenyにするとElementor(ロード中で止まる)などのプラグインが動作しなくなりますので、sameoriginを設定します。
.htaccessに記述します。
<Files wp-config.php> order allow,deny deny from all </Files>
.htaccessに記述します。
<Files xmlrpc.php> Order Deny,Allow Deny from all </Files>
サーバ―内の別のアカウントのユーザにDBの接続先が見られないようにしておきたいです。
その他、ログイン画面のパス変更、ログイン試行回数の設定を行っておきたいです。
出来れば、サイト構築中は全体にBASIC認証を設定とIP制限を設定しておきたいです。 そして、運用時はwp-login.phpに制限しておきたいです。
パスワードファイル作成は以下で行えます。
htpasswd -c .htpassword <ユーザ名>
.htaccessに以下の設定を追加します。
テスト時は、.htaccessに以下を記述。
order deny,allow deny from all allow from <許可するIPアドレス>
Require all denied Require ip <許可するIPアドレス>
<Files wp-login.php> AuthUserFile <パス>/.htpassword AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user </Files>
運用時はwp-login.php、.htaccessに以下を記述。
<Files wp-login.php> order deny,allow deny from all allow from <許可するIPアドレス> </Files>
<Files wp-login.php> Require all denied Require ip <許可するIPアドレス> </Files>
<Files wp-login.php> AuthUserFile <パス>/.htpassword AuthGroupFile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user </Files>
.htaccessについて以下のサイトを参考にしました。
テーマで行える対策についてまとめています。
// バージョン情報を極力開示しないようにする remove_action('wp_head', 'wp_generator'); foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) { remove_action( $action, 'the_generator' ); } function remove_cssjs_ver( $src ) { if( !is_user_logged_in() && strpos( $src, '?ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; } add_filter( 'style_loader_src', 'remove_cssjs_ver', 10, 2 ); add_filter( 'script_loader_src', 'remove_cssjs_ver', 10, 2 ); // ユーザID情報を開示しないようにする1(?author=) function knockout_author_query() { // disable author rewrite rule global $wp_rewrite; $wp_rewrite->flush_rules(); $wp_rewrite->author_base = ''; $wp_rewrite->author_structure = '/'; // for author query request if (isset($_REQUEST['author']) && !empty($_REQUEST['author'])) { $user_info = get_userdata(intval($_REQUEST['author'])); if ($user_info && array_key_exists('administrator', $user_info->caps) && in_array('administrator', $user_info->roles) ) { wp_redirect(home_url()); exit; } } } add_action('init', 'knockout_author_query'); // ユーザID情報を開示しないようにする2(REST API) function my_filter_rest_endpoints( $endpoints ) { if ( isset( $endpoints['/wp/v2/users'] ) ) { unset( $endpoints['/wp/v2/users'] ); } if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) { unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ); } return $endpoints; } add_filter( 'rest_endpoints', 'my_filter_rest_endpoints', 10, 1 );
アップロードした画像を表示するページが自動生成されると、テスト用の画像や未公開の画像が露出したり、中身のないコンテンツで集客に影響を及ぼす恐れがあります。
attachment.phpを作成して以下を記述しておくと安心です。
<?php wp_redirect( home_url(), 302 ); ?>
ダッシュボードで行える対策についてまとめていきます。
管理画面のプロフィールのところで表示名はユーザIDにしないように設定しておきます。
セキュリティ対策を行うには、脆弱性情報の収集と確認が必要です。 脆弱性データベースのサイトを確認する、Twitterでアカウントをフォローすると効率的に情報収集が行えると思います。
グローバルなセキュリティコミュニティのpatchstackが提供する脆弱性データベースです。 WordPressプラグイン、テーマ、およびコアセキュリティの問題が検索できます。
サイト)https://www.exploit-db.com/
Twitter)https://twitter.com/exploitdb
エクスプロイト(攻撃コード)の情報が収集できます。 WordPressというよりは全般的な脆弱性情報になりますが、WordPress関連も検索できます。
サイト)https://patchstack.com/database/
Twitter)https://twitter.com/patchstackapp
アメリカ政府機関公式の脆弱性データベースです。 WordPressというよりは全般的な脆弱性情報になりますが、WordPress関連も検索できます。
サイト)https://nvd.nist.gov/search
Twitter)https://twitter.com/NISTCyber
JPCERT コーディネーションセンターと独立行政法人情報処理推進機構 (IPA)が共同で運営している脆弱性データベースです。 WordPressというよりは全般的な脆弱性情報になりますが、WordPress関連も検索できます。
サイト)https://jvndb.jvn.jp/
Twitter)https://twitter.com/JVNiPedia
WordPress(ワードプレス)をインストールしましたら、管理画面(ダッシュボード)の設定やテーマやプラグイン、PHP、CSSの実装、.htaccessの設定、セキュリティ対策の方法などさまざまなカスタマイズができます。 WordPressのカスタマイズをテーマにWordPressのカスタマイズ方法について解説していきます。
WordPress(ワードプレス)の手動インストール手順やルートディレクトリと表示URLの設定や関連知識についてまとめています。
スポンサーリンク
サイト内のページ
言語
C・C++
/HTML
/Java
/JavaScript
/PHP
/シェルスクリプト
開発環境
Ant
/Burp
/Eclipse
/Fiddler
/gcc
/gdb
/Git
/g++
/JDK
/JMeter
/JUnit
/Teraterm
/ZAP
技術・仕様
Ajax
/CORBA
/Jakarta EE(旧称J2EE、Java EE)
/JNI
ライブラリ/Framework/CMS
bootstrap
/jQuery
/FuelPHP
/Lucene
/MyBatis
/Seasar2
/Spring
/Struts
/WordPress
Web API
Google Maps
ITインフラOSとミドルウェア
Linux
/Windows
/シェル
ActiveMQ
/Tomcat
/MariaDB
/MySQL
/Nagios
/Redis
/Solr
ITインフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
3.23.101.75
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…