WordPressのリスク管理
2015年6月13日 第42回 WordBench大阪
木谷 公哉(KITANI Kimiya) @kimipooh
京都大学東南アジア研究所
@kimipooh
 ITよろず屋(大学教員)
 ヘルプディスク、コンサルティング、コーディネーター
 コンテンツマネージャー、ネットワーク管理、サーバー管理
 データベース開発
 リアル出没先
 WordBench京都
 WordBench大阪
 オンライン上
 Gmail ヘルプフォーラム
 Google Apps for Work ヘルプフォーラム
WordPress との関わりあい
 出会い
 2010年7月9日 オープンソースカンファレンス2010 Kansai@Kyoto
 WordPressでのサイト構築
 2012年4月 5つ同時立ち上げ
 WordPressコミュニティ
 2012年5月 第5回 WordBench京都
 2012年7月 第7回 WordBench京都でスピーカー(プラグインの公式リポジトリ登録)
 2013年1月 第13回 WordBench大阪
 2013年5月 第17回 WordBench大阪でスピーカー(昔のWordPressをインストールした
よ!)
プラグインと本体のアップデートが管
理パネルから容易に出来る
16サイト(公開13)
まず最初に
100% 安全!!
そんなシステムありません
リスクとは
 改ざん(加害者は誰だ!)
 ログインされて・・・
 脆弱性を攻撃されて・・・
 内部攻撃されて・・・
 初期化されて・・・(wp-
admin/install.php 消し忘れ・・・)
 動作不安定
 システムをアップデートしたら真っ白
に・・・
 テーマ変更したら真っ白に・・・
 データ破損
 文字化け・・
 複数人が打ち合わせなく作業して・・・
 情報漏洩
 うっかり公開
 /◯◯/ のアクセスでフォルダ丸見え
(Directory Index)
 利用メーリングリストが公開されちゃって
た・・
 盗聴
 パスワード盗聴(ログインが非暗号)
 管理データ・パスワードロックデータ(非
暗号)
 端末感染
 添付ファイル(ウィルス)付きメールを開
いた・・
 ウェブサイトを開いたら・・・
本当に攻撃はしてくるのか
4月の エラーログ(7,738) 件数
Directory index forbidden 20
/trackback/ 92
File name too long 24
PHP Fatal error
(Cannot redeclare class PHPMailer)
30
File does not exist 28
PHP Warning 71
PHP Notice (Use of undefined constant)
if ($lang == ja) …. ×
if ($lang === ‘ja’) … ◯
114
Client denied 7,574 (97.9%)
┣ xmlrpc.php 74
┣ wp-login.php 3,077 (39.8%)
┣ /wp-admin/ 57
┣ themes/**/images/…jpg 4,255
┗ /…/ or /wp-content/…/等 111
本当に攻撃はしてくるのか
4月のログ(wp-login.php) ブロック件数
総計(クライアント数: 90) 3,077
ウクライナ (5) 648
中国 (3) 183
韓国 (2) 120
香港 (1) 60
本当に攻撃はしてくるのか
 Crazy Boneプラグイン
全く攻撃を受けないこと
は珍しい
過去のWordPressを振り返ると
 テーマでみる WordPress の歴史
 昔を懐かしむ
– セキュリティ関連フィックス -
テーマでみる
WordPressの歴史
 テーマ履歴
 2003.05.27 初期(0.71-gold 〜 1.0-platium)
 2004.05.22 WordPress Classic(1.2-delta 〜 )
 2005.02.17 KUBRCK(1.5-strayhorn)
 2010.06.17 Twenty Ten (3.0〜)
 WordPress と WordPess MU統合
 2011.07.05 Twenty Eleven(3.2〜)
 2012.12.12 Twenty Twelve(3.5〜)
 2013.08.02 Twenty Thirteen(3.6〜)
 2013.12.14 Twenty Fourteen(3.8〜)
 2014.12.19 Twenty Fifteen(4.1〜)
テーマも刷新されていく
昔を懐かしむ
- セキュリティ関連フィックス -
 0.71-gold
 PHP5.3以降では動作しない($HTTP_GET_VARS利用)
 DB作成時に「utf8_unicode_ci」を明示設定必要
 1.0-platinum
 ログインパスワードの非暗号
 1.2-delta
 PHP5.4以降対応($HTTP_GET_VARS → $_GET)
 ログインパスワードの暗号(MD5ハッシュ)
 2.2
 DB_CHARSET, DB_COLLATE(DB照合順序)追加 wp-config.php
 完全なATOMフィードが追加
 2.3
 プラグインを含むアップデート通知機能(ダッシュボード)
 2.6
 初期パスワードの強固化(7文字、英数字(大文字小文字含む))
→ 12文字、英数字(大文字小文字含む)、記号
 secret-keyが導入(wp-config.php)
 2.7
 secret-keyが強化(SALTが追加)
 2.8
 テーマのインストールが可能に
 3.0
 WordPressとWordPress MUの統合
 インストール時に、管理者ユーザーとパスワード
を変更できるように
 3.2
 動作環境:PHP5.2.4 /MySQL 5.0以降
 IE6のサポート終了
 3.5
 XML-RPCが既定で有効化(無効設定が消えた)
 3.6
 自動保存機能の追加
 投稿ロック機能
 3.7
 本体、翻訳ファイルの自動アップデート機能
 4.0
 多言語切り替えが容易に
 FORCE_SSL_LOGINの廃止(FORCE_SSL_ADMINとし
て動作)
 オレオレ証明書(SSL自己証明書)の場合、JetPack
連携できないように・・・
 4.2
 絵文字対応
気づかないからこそ対策が必要
③リスク予防
②証跡管理
①サイト復元
WP管理者が出来る範囲で・・・
①サイト復元
とりあえずは・・・
自動バックアップシステムを構築しよう!
ちゃんと復元できますよね!?
WordPressの基本構成
WordPress
データベース(MySQL)
システム
テーマ
プラグイン 表示
バックアップ対象は上記2つ
データ(設定)
設定
wp-config.php
バックアップの自動化
- WP-DBManager編 -
 データベースのバックアップのみ可能
 復元も簡単
バックアップの自動化
- BackWPUP編 -
 データベースとファイル/フォルダのバックアップ
 デフォルト:wp-content/uploads/backwpup-◯◯-backups/
 復元は手動
 データベースを復元
 ファイル/フォルダの復元
バックアップ先の選択
1. 異なるデバイスに保存
2. 二箇所以上に・・・
1. 別ハードディスク
2. 外部ハードディスク
3. クラウド
4. サーバー自体の
バックアップ
②証跡管理
ログイン履歴を残す
 Crazy Bone
管理者のみ
③リスク予防
基本セキュリティのおさらい
 WordPress(動的にHTMLコードを生成し表示)
 システム(ログイン、管理データ)
 プラグイン
 テーマ
 データ(データベース)
 サーバー
 OS
 ウェブシステム(+PHP)
 データベーシステム(MySQL)
 リモートアクセス
 クライアント(ウェブ編集者・管理者)
③リスク予防
1. システムアップデート
2. ログイン制限
3. 外部認証システムの活用
4. サイト管理画面の暗号化
1. アーカイブサイトの静的HTML化
1. その他プラグインの活用
1. システムアップデート
 システム
 自動アップデート
 プラグイン
 自動アップデート
 公式プラグイン
 テーマ
 自動アップデート
 公式テーマ
 公式テーマをベースに子テーマ構成
サイトへのアクセ
スで発動
発動しない
ことがある
ローカルページ
バックアップ…
2. ログイン制限
①初期ユーザーの変更
 「admin」 を使っていたら変更するか削除しましょう
 「root」などいかにも管理者ユーザーっぽいのは避けましょう
3.0以降は初期セットアップ時に初
期管理者ユーザー名を変更可
2. ログイン制限
②IP / ホスト制限
 wp-config.php(システム環境ファイル)
 wp-login.php(ログイン)
 /wp-admin/(管理画面)
 xmlrc.php(XML-RPCを利用した投稿)
Apacheのケースで紹介
ウェブサーバーが、.htaccessの設定を許可している場合に限る
2. ログイン制限
②IP / ホスト制限
<Files ‘wp-config.php’>
deny from all
</Files>
wp-config.phpへの制限 (.htaccess)
このファイルにはDBアクセス情報
が入っている
2. ログイン制限
②IP / ホスト制限
<Files ‘wp-login.php’>
Order Deny, Allow
Deny from all
Allow from 127.0.0.0/8
Allow from uqwimax.jp
</Files>
wp-login.phpへの制限 (.htaccess)
「IPアドレスチェック」で接続端末のインターネットから見え
るグローバルIPアドレスとクライアントホスト名をチェック
プロバイダ全体
でも効果あり
ログイン制限による予防
②IP / ホスト制限
<Limit GET POST>
Order Deny, Allow
Deny from all
Allow from 127.0.0.0/8
Allow from uqwimax.jp
</Limit>
<Files 'admin-ajax.php'>
Order Allow,Deny
Allow from all
Satisfy any
</Files>
/wp-admin/への制限 (wp-admin/.htaccess)
テーマ/プラグインによって、制限
で動作しなくなる可能性の排除
WordPress Codex 日本語版
http://wpdocs.osdn.jp/ブルート
フォース攻撃
2. ログイン制限
②IP / ホスト制限
<Files ‘xmlrpc.php’>
Order Deny, Allow
deny from all
allow from jetpack.wordpress.com
allow from 192.0.0.0/255.255.0.0
</Files>
xmlrpc.phpへの制限 (wp-admin/.htaccess)
JetPack対策
wp-config.php
add_filter('xmlrpc_enabled','__return_false'); Pinbackは防げない
SiteGuard WP Pluginや WP Total Hacksプラグイン等のプラグインに
よるピンバックブロック機能も使えるかも
2. ログイン制限
②IP / ホスト制限
xmlrpc.phpへの制限 (wp-admin/.htaccess)
WordPress上でサイトの
リンクを貼る
リンク元に通知(pingback) リンク元に通知(pingback)
サイトのリンクを記事に貼りまくれ!!
(確保した大量のWordPressサイト)
コメント欄にも通知
コメント欄に記事リンクが掲
載(承認)
攻撃者
コメント欄に記事リンクが掲
載(承認)
過負荷でア
クセスでき
ない
Pingbackチェック:http://labs.sucuri.net/?is-my-wordpress-ddosing
 GoogleからAPI Keyを入手
 https://console.developers.google.com
 Client ID, Secretキーを取得
 Google Apps Loginプラグインを導入
 Client ID, Secretキーを入力
3. 外部認証システムの活用
(Googleアカウント編)
http://kitaney-google.blogspot.jp/ で「WordPress」検索
ユーザー名もパスワードも教えない
よりセキュアな外部認証を使える
4. サイト管理画面の暗号化
 サイトまるごと暗号化(http://  https://)
 設定(WordPressアドレス、サイトアドレスを https://)
 リダイレクト設定
 特定ページのみ暗号化(お問い合わせフォームのみとか)
 サイト管理画面のみ暗号化
(http://◯◯/wp-admin/  https://◯◯/wp-admin/ )
 wp-config.phpに、define(‘FORCE_SSL_ADMIN’, true); を追加
サーバーが対応していて、
https://◯◯/wp-admin/ でもアクセスできるように
なっていることが前提
オレオレ証明書(SSL自己証明書)
jetpack連携できないよ〜
5. アーカイブサイトの静的HTML化
 もう誰もログインしないけれど、アーカイブはしておきたい
 終了したプロジェクトのウェブサイト等
いつまでもやっていられない
WordsPerss の
アップデート
データベースの
脆弱性
5. アーカイブサイトの静的HTML化
StaticPressプラグイン編
 事前テストができる
 パーマネント設定なら、フォルダ構造も引き継がれる
 http://localhost:8888/wordpress/wordpress/static/
6. プラグインによる予防
 自動バックアップ
 BackWPUP(データベース・ファイルすべて)
 WP-DBManager(データベースのみ、復元も可能)
 診断
 AntiVirus(簡易テーマ/テンプレートチェック)
 Theme Check(テーマチェック)
 Exploit Scanner(WordPressシステム改ざんチェック)
(https://github.com/philipjohn/exploit-scanner-hashes)
 Broken Link Checker(コンテンツ内のリンク切れチェック)
 自動更新
 WP-CLI(コマンドラインからWordPressを管理)
 履歴管理
 Crazy Bone(ログイン、ログアウト履歴管理)
 暗号化
 WordPress HTTPS(非推奨)
6. プラグインによる予防
 防衛
 SiteGuard WP Plugin
 /wp-admin/へのアクセス制限、ログイン対策、スパム対策、WAF、ピンバック無効等
 Login Security Solution
 総当たり攻撃防衛、パスワード強度設定
 Acunetix WP Security
 不必要な情報開示を回避
 User Role Editor
 ユーザーごとの細かいアクセス権限設定
 Google Apps Login
 Googleアカウント認証を用いたログイン強化
 Gianism
 Facebook, Twitter等SNSを用いたログイン強化
 Force Email login
 メールアドレスをユーザー名の代わりに強制することでログイン強化
 All In One WP Security & Firewall
 多機能セキュリティ対策
 WP Total Hacks
 ピンバックをブロック(セルフピンバック含む)
付録 – プラグイン利用方法
 AntiVirus
 簡易テーマ/テンプレートチェック
 Exploit Scanner
 WordPressシステム改ざんチェック
 Acunetix WP Security
 不必要な情報開示を回避と問題点
AntiVirus
 データベーステーブルのチェック
 テンプレートファイルのチェック
 Iframeまわりを検出する
 Google Safe Browsingでのチェック
Exploit Scanner
https://github.com/philipjohn/exploit-scanner-hashes
利用しているWordPressバージョン用の
MD5 checksum(hashes-バージョン.php)が必要
1.4.4 = WordPess 3.1.7 - 4.2.1(英語版)
最新:4.2.2
参照:[閉] WordPress 日本語版用 Exploit Scanner ハッシュファイル
https://ja.forums.wordpress.org/topic/2743?replies=20
1. 4.2.2 英語版の利用
2. 自分で作る
Exploit Scanner
https://github.com/philipjohn/exploit-scanner-hashes
hashes-generator.php
$latest = 'https://ja.wordpress.org/wordpress-4.2.2-ja.zip';
$file = 'wordpress-4.2.2-ja.zip';
日本語版ダウンロード:https://ja.wordpress.org/releases/#latest
①ハッシュジェネレータのダウンロード
②ハッシュジェネレータの書き換え
③ハッシュジェネレータの起動&作成ファイルのMD5値をメモ
php hashes-generator.php > hashes-4.2.2.php
③ハッシュをExploit Scannerプラグインフォルダへ移動
hashes-4.2.2.php を移動
④Exploit Scannerの認識を確認
MD5 of hashes-4.2.2.phpの値と、md5 hashes-4.2.2.php の値の一致確認
md5 hashes-4.2.2.php
Exploit Scanner
1. ターミナルアプリ起動
2. cd ~/Desktop && mkdir exploit-scanner-dev
3. cd ~/Desktop/exploit-scanner-dev
4. curl –O https://raw.githubusercontent.com/philipjohn/exploit-
scanner-hashes/master/hashes-generator.php
5. open –a textedit hashes-generator.php
6. php hashes-generator.php > hashes-4.2.2.php
7. md5 hashes-4.2.2.php
8. hashes-4.2.2.phpを、wp-content/plugins/exploit-scanner/ へ
9. 確認
$latest = 'https://ja.wordpress.org/wordpress-4.2.2-ja.zip';
$file = 'wordpress-4.2.2-ja.zip';
日本語版ダウンロード:https://ja.wordpress.org/releases/#latest
MD5 (hashes-4.2.2.php) = 6214151dc39b725871bb7e76355afb40
Acunetix WP Security
 過去の問題
 Secure WordPress からの名称変更した際に、アップデート時に
「プラグインが停止したとエラー」
 再度有効化すればOK
 Secure WordPress 2.0.2利用時に、WordPress 3.2.1へアップグ
レードすると、サイトが止まる
 exist signal Segmentation faultが…
 PHPのJSON拡張仕様変更によって、いくつかのライブラリ
ファイルが削除され、それを必須としたプラグイン側がハ
ングした。
Acunetix WP Security
- Settings-
 Hide WordPress version for all users but administrators
 Remove various meta tags generators from the blog's head tag for
non-administrators
 Try to create the index.php file in the wp-content, wp-
content/plugins, wp-content/themes and wp-content/uploads
directories to prevent directory listing
 Remove the version parameter from urls
 Empty the content of the readme.html file from the root directory
最後に・・・
WordCamp Kansai 2015
coming soon..
 日時:2015年7月25日(土)- 26日(日)
 場所:大阪大学豊中キャンパス 大阪大学会館
 参加費:無料
Get Involved
進化を続ける未来に出会おう

WordPressとリスク管理 at 第42回 WordBench大阪

  • 1.
    WordPressのリスク管理 2015年6月13日 第42回 WordBench大阪 木谷公哉(KITANI Kimiya) @kimipooh 京都大学東南アジア研究所
  • 2.
    @kimipooh  ITよろず屋(大学教員)  ヘルプディスク、コンサルティング、コーディネーター コンテンツマネージャー、ネットワーク管理、サーバー管理  データベース開発  リアル出没先  WordBench京都  WordBench大阪  オンライン上  Gmail ヘルプフォーラム  Google Apps for Work ヘルプフォーラム
  • 3.
    WordPress との関わりあい  出会い 2010年7月9日 オープンソースカンファレンス2010 Kansai@Kyoto  WordPressでのサイト構築  2012年4月 5つ同時立ち上げ  WordPressコミュニティ  2012年5月 第5回 WordBench京都  2012年7月 第7回 WordBench京都でスピーカー(プラグインの公式リポジトリ登録)  2013年1月 第13回 WordBench大阪  2013年5月 第17回 WordBench大阪でスピーカー(昔のWordPressをインストールした よ!) プラグインと本体のアップデートが管 理パネルから容易に出来る 16サイト(公開13)
  • 4.
  • 5.
    リスクとは  改ざん(加害者は誰だ!)  ログインされて・・・ 脆弱性を攻撃されて・・・  内部攻撃されて・・・  初期化されて・・・(wp- admin/install.php 消し忘れ・・・)  動作不安定  システムをアップデートしたら真っ白 に・・・  テーマ変更したら真っ白に・・・  データ破損  文字化け・・  複数人が打ち合わせなく作業して・・・  情報漏洩  うっかり公開  /◯◯/ のアクセスでフォルダ丸見え (Directory Index)  利用メーリングリストが公開されちゃって た・・  盗聴  パスワード盗聴(ログインが非暗号)  管理データ・パスワードロックデータ(非 暗号)  端末感染  添付ファイル(ウィルス)付きメールを開 いた・・  ウェブサイトを開いたら・・・
  • 6.
    本当に攻撃はしてくるのか 4月の エラーログ(7,738) 件数 Directoryindex forbidden 20 /trackback/ 92 File name too long 24 PHP Fatal error (Cannot redeclare class PHPMailer) 30 File does not exist 28 PHP Warning 71 PHP Notice (Use of undefined constant) if ($lang == ja) …. × if ($lang === ‘ja’) … ◯ 114 Client denied 7,574 (97.9%) ┣ xmlrpc.php 74 ┣ wp-login.php 3,077 (39.8%) ┣ /wp-admin/ 57 ┣ themes/**/images/…jpg 4,255 ┗ /…/ or /wp-content/…/等 111
  • 7.
  • 8.
  • 9.
    過去のWordPressを振り返ると  テーマでみる WordPressの歴史  昔を懐かしむ – セキュリティ関連フィックス -
  • 10.
    テーマでみる WordPressの歴史  テーマ履歴  2003.05.27初期(0.71-gold 〜 1.0-platium)  2004.05.22 WordPress Classic(1.2-delta 〜 )  2005.02.17 KUBRCK(1.5-strayhorn)  2010.06.17 Twenty Ten (3.0〜)  WordPress と WordPess MU統合  2011.07.05 Twenty Eleven(3.2〜)  2012.12.12 Twenty Twelve(3.5〜)  2013.08.02 Twenty Thirteen(3.6〜)  2013.12.14 Twenty Fourteen(3.8〜)  2014.12.19 Twenty Fifteen(4.1〜) テーマも刷新されていく
  • 11.
    昔を懐かしむ - セキュリティ関連フィックス - 0.71-gold  PHP5.3以降では動作しない($HTTP_GET_VARS利用)  DB作成時に「utf8_unicode_ci」を明示設定必要  1.0-platinum  ログインパスワードの非暗号  1.2-delta  PHP5.4以降対応($HTTP_GET_VARS → $_GET)  ログインパスワードの暗号(MD5ハッシュ)  2.2  DB_CHARSET, DB_COLLATE(DB照合順序)追加 wp-config.php  完全なATOMフィードが追加  2.3  プラグインを含むアップデート通知機能(ダッシュボード)  2.6  初期パスワードの強固化(7文字、英数字(大文字小文字含む)) → 12文字、英数字(大文字小文字含む)、記号  secret-keyが導入(wp-config.php)  2.7  secret-keyが強化(SALTが追加)  2.8  テーマのインストールが可能に  3.0  WordPressとWordPress MUの統合  インストール時に、管理者ユーザーとパスワード を変更できるように  3.2  動作環境:PHP5.2.4 /MySQL 5.0以降  IE6のサポート終了  3.5  XML-RPCが既定で有効化(無効設定が消えた)  3.6  自動保存機能の追加  投稿ロック機能  3.7  本体、翻訳ファイルの自動アップデート機能  4.0  多言語切り替えが容易に  FORCE_SSL_LOGINの廃止(FORCE_SSL_ADMINとし て動作)  オレオレ証明書(SSL自己証明書)の場合、JetPack 連携できないように・・・  4.2  絵文字対応
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    バックアップの自動化 - WP-DBManager編 - データベースのバックアップのみ可能  復元も簡単
  • 17.
    バックアップの自動化 - BackWPUP編 - データベースとファイル/フォルダのバックアップ  デフォルト:wp-content/uploads/backwpup-◯◯-backups/  復元は手動  データベースを復元  ファイル/フォルダの復元
  • 18.
    バックアップ先の選択 1. 異なるデバイスに保存 2. 二箇所以上に・・・ 1.別ハードディスク 2. 外部ハードディスク 3. クラウド 4. サーバー自体の バックアップ
  • 19.
  • 20.
  • 21.
  • 22.
    基本セキュリティのおさらい  WordPress(動的にHTMLコードを生成し表示)  システム(ログイン、管理データ) プラグイン  テーマ  データ(データベース)  サーバー  OS  ウェブシステム(+PHP)  データベーシステム(MySQL)  リモートアクセス  クライアント(ウェブ編集者・管理者)
  • 23.
    ③リスク予防 1. システムアップデート 2. ログイン制限 3.外部認証システムの活用 4. サイト管理画面の暗号化 1. アーカイブサイトの静的HTML化 1. その他プラグインの活用
  • 24.
    1. システムアップデート  システム 自動アップデート  プラグイン  自動アップデート  公式プラグイン  テーマ  自動アップデート  公式テーマ  公式テーマをベースに子テーマ構成 サイトへのアクセ スで発動 発動しない ことがある ローカルページ バックアップ…
  • 25.
    2. ログイン制限 ①初期ユーザーの変更  「admin」を使っていたら変更するか削除しましょう  「root」などいかにも管理者ユーザーっぽいのは避けましょう 3.0以降は初期セットアップ時に初 期管理者ユーザー名を変更可
  • 26.
    2. ログイン制限 ②IP /ホスト制限  wp-config.php(システム環境ファイル)  wp-login.php(ログイン)  /wp-admin/(管理画面)  xmlrc.php(XML-RPCを利用した投稿) Apacheのケースで紹介 ウェブサーバーが、.htaccessの設定を許可している場合に限る
  • 27.
    2. ログイン制限 ②IP /ホスト制限 <Files ‘wp-config.php’> deny from all </Files> wp-config.phpへの制限 (.htaccess) このファイルにはDBアクセス情報 が入っている
  • 28.
    2. ログイン制限 ②IP /ホスト制限 <Files ‘wp-login.php’> Order Deny, Allow Deny from all Allow from 127.0.0.0/8 Allow from uqwimax.jp </Files> wp-login.phpへの制限 (.htaccess) 「IPアドレスチェック」で接続端末のインターネットから見え るグローバルIPアドレスとクライアントホスト名をチェック プロバイダ全体 でも効果あり
  • 29.
    ログイン制限による予防 ②IP / ホスト制限 <LimitGET POST> Order Deny, Allow Deny from all Allow from 127.0.0.0/8 Allow from uqwimax.jp </Limit> <Files 'admin-ajax.php'> Order Allow,Deny Allow from all Satisfy any </Files> /wp-admin/への制限 (wp-admin/.htaccess) テーマ/プラグインによって、制限 で動作しなくなる可能性の排除 WordPress Codex 日本語版 http://wpdocs.osdn.jp/ブルート フォース攻撃
  • 30.
    2. ログイン制限 ②IP /ホスト制限 <Files ‘xmlrpc.php’> Order Deny, Allow deny from all allow from jetpack.wordpress.com allow from 192.0.0.0/255.255.0.0 </Files> xmlrpc.phpへの制限 (wp-admin/.htaccess) JetPack対策 wp-config.php add_filter('xmlrpc_enabled','__return_false'); Pinbackは防げない SiteGuard WP Pluginや WP Total Hacksプラグイン等のプラグインに よるピンバックブロック機能も使えるかも
  • 31.
    2. ログイン制限 ②IP /ホスト制限 xmlrpc.phpへの制限 (wp-admin/.htaccess) WordPress上でサイトの リンクを貼る リンク元に通知(pingback) リンク元に通知(pingback) サイトのリンクを記事に貼りまくれ!! (確保した大量のWordPressサイト) コメント欄にも通知 コメント欄に記事リンクが掲 載(承認) 攻撃者 コメント欄に記事リンクが掲 載(承認) 過負荷でア クセスでき ない Pingbackチェック:http://labs.sucuri.net/?is-my-wordpress-ddosing
  • 32.
     GoogleからAPI Keyを入手 https://console.developers.google.com  Client ID, Secretキーを取得  Google Apps Loginプラグインを導入  Client ID, Secretキーを入力 3. 外部認証システムの活用 (Googleアカウント編) http://kitaney-google.blogspot.jp/ で「WordPress」検索 ユーザー名もパスワードも教えない よりセキュアな外部認証を使える
  • 33.
    4. サイト管理画面の暗号化  サイトまるごと暗号化(http:// https://)  設定(WordPressアドレス、サイトアドレスを https://)  リダイレクト設定  特定ページのみ暗号化(お問い合わせフォームのみとか)  サイト管理画面のみ暗号化 (http://◯◯/wp-admin/  https://◯◯/wp-admin/ )  wp-config.phpに、define(‘FORCE_SSL_ADMIN’, true); を追加 サーバーが対応していて、 https://◯◯/wp-admin/ でもアクセスできるように なっていることが前提 オレオレ証明書(SSL自己証明書) jetpack連携できないよ〜
  • 34.
    5. アーカイブサイトの静的HTML化  もう誰もログインしないけれど、アーカイブはしておきたい 終了したプロジェクトのウェブサイト等 いつまでもやっていられない WordsPerss の アップデート データベースの 脆弱性
  • 35.
    5. アーカイブサイトの静的HTML化 StaticPressプラグイン編  事前テストができる パーマネント設定なら、フォルダ構造も引き継がれる  http://localhost:8888/wordpress/wordpress/static/
  • 36.
    6. プラグインによる予防  自動バックアップ BackWPUP(データベース・ファイルすべて)  WP-DBManager(データベースのみ、復元も可能)  診断  AntiVirus(簡易テーマ/テンプレートチェック)  Theme Check(テーマチェック)  Exploit Scanner(WordPressシステム改ざんチェック) (https://github.com/philipjohn/exploit-scanner-hashes)  Broken Link Checker(コンテンツ内のリンク切れチェック)  自動更新  WP-CLI(コマンドラインからWordPressを管理)  履歴管理  Crazy Bone(ログイン、ログアウト履歴管理)  暗号化  WordPress HTTPS(非推奨)
  • 37.
    6. プラグインによる予防  防衛 SiteGuard WP Plugin  /wp-admin/へのアクセス制限、ログイン対策、スパム対策、WAF、ピンバック無効等  Login Security Solution  総当たり攻撃防衛、パスワード強度設定  Acunetix WP Security  不必要な情報開示を回避  User Role Editor  ユーザーごとの細かいアクセス権限設定  Google Apps Login  Googleアカウント認証を用いたログイン強化  Gianism  Facebook, Twitter等SNSを用いたログイン強化  Force Email login  メールアドレスをユーザー名の代わりに強制することでログイン強化  All In One WP Security & Firewall  多機能セキュリティ対策  WP Total Hacks  ピンバックをブロック(セルフピンバック含む)
  • 38.
    付録 – プラグイン利用方法 AntiVirus  簡易テーマ/テンプレートチェック  Exploit Scanner  WordPressシステム改ざんチェック  Acunetix WP Security  不必要な情報開示を回避と問題点
  • 39.
  • 40.
    Exploit Scanner https://github.com/philipjohn/exploit-scanner-hashes 利用しているWordPressバージョン用の MD5 checksum(hashes-バージョン.php)が必要 1.4.4= WordPess 3.1.7 - 4.2.1(英語版) 最新:4.2.2 参照:[閉] WordPress 日本語版用 Exploit Scanner ハッシュファイル https://ja.forums.wordpress.org/topic/2743?replies=20 1. 4.2.2 英語版の利用 2. 自分で作る
  • 41.
    Exploit Scanner https://github.com/philipjohn/exploit-scanner-hashes hashes-generator.php $latest ='https://ja.wordpress.org/wordpress-4.2.2-ja.zip'; $file = 'wordpress-4.2.2-ja.zip'; 日本語版ダウンロード:https://ja.wordpress.org/releases/#latest ①ハッシュジェネレータのダウンロード ②ハッシュジェネレータの書き換え ③ハッシュジェネレータの起動&作成ファイルのMD5値をメモ php hashes-generator.php > hashes-4.2.2.php ③ハッシュをExploit Scannerプラグインフォルダへ移動 hashes-4.2.2.php を移動 ④Exploit Scannerの認識を確認 MD5 of hashes-4.2.2.phpの値と、md5 hashes-4.2.2.php の値の一致確認 md5 hashes-4.2.2.php
  • 42.
    Exploit Scanner 1. ターミナルアプリ起動 2.cd ~/Desktop && mkdir exploit-scanner-dev 3. cd ~/Desktop/exploit-scanner-dev 4. curl –O https://raw.githubusercontent.com/philipjohn/exploit- scanner-hashes/master/hashes-generator.php 5. open –a textedit hashes-generator.php 6. php hashes-generator.php > hashes-4.2.2.php 7. md5 hashes-4.2.2.php 8. hashes-4.2.2.phpを、wp-content/plugins/exploit-scanner/ へ 9. 確認 $latest = 'https://ja.wordpress.org/wordpress-4.2.2-ja.zip'; $file = 'wordpress-4.2.2-ja.zip'; 日本語版ダウンロード:https://ja.wordpress.org/releases/#latest MD5 (hashes-4.2.2.php) = 6214151dc39b725871bb7e76355afb40
  • 43.
    Acunetix WP Security 過去の問題  Secure WordPress からの名称変更した際に、アップデート時に 「プラグインが停止したとエラー」  再度有効化すればOK  Secure WordPress 2.0.2利用時に、WordPress 3.2.1へアップグ レードすると、サイトが止まる  exist signal Segmentation faultが…  PHPのJSON拡張仕様変更によって、いくつかのライブラリ ファイルが削除され、それを必須としたプラグイン側がハ ングした。
  • 44.
    Acunetix WP Security -Settings-  Hide WordPress version for all users but administrators  Remove various meta tags generators from the blog's head tag for non-administrators  Try to create the index.php file in the wp-content, wp- content/plugins, wp-content/themes and wp-content/uploads directories to prevent directory listing  Remove the version parameter from urls  Empty the content of the readme.html file from the root directory
  • 45.
  • 46.
    WordCamp Kansai 2015 comingsoon..  日時:2015年7月25日(土)- 26日(日)  場所:大阪大学豊中キャンパス 大阪大学会館  参加費:無料 Get Involved 進化を続ける未来に出会おう

Editor's Notes

  • #3 iPhoneプログラミング勉強会京都 関西オープンフォーラム WordCamp Kansai
  • #4 第5回 WordBench京都 WordPressの高速化、テンプレート階層とインクルードタグ 第13回 WordBench大阪  2002年9月のWordCamp東京で地域コニュニティ WordBenchの熱い活動を目のあたりして京都以外も行きたくなっていた。 function.php, SEO向けプラグイン, バックアッププラグイン等
  • #11 「昔のWordpressをインストールしたよ!」で検索 第17回WordBench大阪(2013/05/18) -- 10周年を記念して
  • #23 それぞれの守るべき最低限の対応方法をふくらませる
  • #30 admin-ajax.php 閲覧ユーザ(ログインしていないユーザ)からのアクセス
  • #34 GianismではGoogle認証は失敗 Google Apps Loginについては、一般のGoogleアカウントでもOK
  • #35 GianismではGoogle認証は失敗 Google Apps Loginについては、一般のGoogleアカウントでもOK
  • #36 GianismではGoogle認証は失敗 Google Apps Loginについては、一般のGoogleアカウントでもOK
  • #37 GianismではGoogle認証は失敗 Google Apps Loginについては、一般のGoogleアカウントでもOK
  • #38 GianismではGoogle認証は失敗 Google Apps Loginについては、一般のGoogleアカウントでもOK
  • #47 ざっと駆け足で説明したけど、もっといろいろ知りたいなら、是非WordPressのお祭りイベントであり 公式イベントである、WordCampに来てみてください!! という流れにする