WordPress> adminログインで2段階認証


TechCrunchのこの記事「全世界のWordPressサイトに大規模攻撃; デフォルトのアドミンユーザ名’admin’がねらわれている」にドキッとした方も多いのではないだろうか。

弊社で管理しているサイトの90%はWordPressでできているといっても過言ではないので、正直他人事ではないです。
対策としてとれる方法は次の通り。(簡単順)

  1. 新しく管理権限ユーザーを作って、adminユーザーを削除する。adminユーザーの持っていた投稿は新しいユーザーに移す
  2. WPのDBを直接書換え。adminのIDと名前を書き換えるだけなので影響が少ないが、phpMyadminなどでの操作が必要。
    UPDATE wp_users SET user_login=’newuser’, user_nicename=’newusername’ WHERE ID=xxx;
  3. 追記:WPをマルチサイト対応にしている場合は、wp_sitemetaのsite_adminsも変更すること。
    そうしないと、ネットワーク管理者になれなくなる。
  4. adminのログインに二段階認証を入れる

 
 
2番目の対策でやれば楽ちんなんだけど、今後adminだけの話ではなくなる可能性は十分あるので、今回は3番目の二段階認証でやってみることにします。まず、スマホ(Android)に AUTHYをインストール。iPhoneでもたぶん同じ。

  1. PCから、AUTHYにSign Inする。CLOUDFLAREなどの大手も使っているみたいだから大丈夫だと思う。
  2. Email、Country、Cellphone、Passwordを入れる。Countryは「Japan(+81)」、Cellphoneは頭のゼロを取る「9012341234」
  3. そうすると、携帯にメッセージ(SMS)が来る。https://www.authy.com/install からアプリをインストールしてねというメッセージなので、Playストアで AUTHYをインストールする。(無料)
  4. Android版 AUTHYをインストールする際も、Country、Cellphone、Passwordを聞かれるので再度入力。6桁のPINコードがメッセージ(SMS)で送られてくるので、それを入力すればインストール完了。
  5. Android版 AUTHYを起動すると、20秒ごとに TOKENが表示される。

 
 
スマホ(Android)で AUTHYが動くようになったら、PCでログイン。

  1. AUTHYでログイン。EmailとPasswordは先ほど入力したもの。
  2. Authy Token画面になるので、携帯に表示された TOKENを入力する。
  3. ダッシュボードが表示されたら「Create new application…」をクリック。Application Nameは適当に決める。
  4. Api Tutorial画面になったら、「or go to your dashboard」をクリック。
  5. 左サイドバーにいま決めた「Application Name」が表示されるので、これをクリック。
  6. このページの「Api Key」をコピーしておく。

 
 
AUTHYの「Api Key」が無事入手できたら、WordPressにプラグインを入れる。

  1. プラグインの新規追加で「Authy Two Factor Authentication」を検索、追加。
  2. 有効化したら、Settings画面で「Api Key」を設定。誰(権限)に対して二段階認証を行うかも設定できる。
  3. 「Disable external apps that don’t support Two-factor Authentication」にチェックを入れると、外部アプリが二段階認証をパスすることになるので、よく考えて設定すること。しない方がいいと思う。
  4. これが済んだら、ユーザープロフィールに移って、個人ごとの設定を行う。
  5. Two-Factor Authentication を Enableに。Country、Cellphoneを入力したら、携帯にメッセージが送られてきて完了。

※ 山本一郎氏がYahoo!に書くくらいだから、相当底辺まで広まったとみて、adminを変更する2番目の方法をとりました。

hotmailから拒絶を食らった場合の解決法

@live.jpあてに転送したメールが届かないという相談がありました。
ログを調べてみると確かにブロックされてエラーになっています。

postfix/smtp[]: : to=<xxx@live.jp>, orig_to=<info@kdp-satooya.com>, relay=mx2.hotmail.com[65.55.37.120]:25, delay=1.1, delays=0.01/0/0.47/0.67, dsn=5.0.0, status=bounced (host mx2.hotmail.com[65.55.37.120] said: 550 SC-001 (COL0-MC4-F17) Unfortunately, messages from 49.212.132.42 weren't sent. Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. (in reply to end of DATA command))

550 SC-001:
ポリシーを理由にメールが Outlook によって拒否されました。拒否された理由は、メールの内容が迷惑メールの特徴に似ていることか、IP/ドメインの評価に関連している可能性があります。電子メールまたはネットワーク管理者のどちらでもない場合は、電子メールまたはインターネット サービス プロバイダーに連絡して支援を依頼してください。

うちのサーバーIP(49.212.132.42)が丸ごとブロックされているみたいです。
どうやら、なんらかのアルゴリズムでスパム発信元認定されたみたいです。
同様の現象は OCNでもSO-NETでも起きているので、うちも大手並み扱いされるようになったかと放置しておいてもいいのですが、いやそれはよくないので、解決策を探しました。

https://support.msn.com/eform.aspx?productKey=edfsmsbl2&ct=eformts
このURLからIPアドレスを送ったら、ものの30分ほどで解除してくれました。表現的には『軽減済み』ですけどね。

同じくこの問題で困っている方、参考になさってください。

サイト紹介> ロングクライムケンネル

ロングクライムケンネル』という湘南佐島なぎさの丘入口にあるペットショップのサイトのお手伝いをしています。

オーナーのHさんは意欲的な方で、ペットショップやペットホテルの経営という枠を飛び越えて、自分と同じスキルを持つ『ペットシッター』を全国で育てたいという夢を実現すべく、日夜がんばっていらっしゃいます。
サイトの文章を読んでいただけるとその雰囲気がおわかりになるかと思うのですが、一種独特な、でも犬に対する愛情にあふれた気持ちが伝わってくるのではないでしょうか。

サイトでは『ペットシッターさんの募集』や『ペットシッターさんの開業支援』に向けてのコンテンツを充実させていく予定です。ご期待ください。

また、現在はサイト・リニューアルオープン記念として、『AZドッグフード(アゼットドッグフード)』の10%OFFセールを開催中です。高品質で安全なドッグフードはこちらからお買い求めください。

サイト紹介> エコリフォームの無料相談サイト

安全・安心素材「エコリフォーム」の無料相談|鎌倉,湘南,茅ケ崎,藤沢,逗子,葉山,横浜,神奈川

安全・安心素材「エコリフォーム」の無料相談』という、エコリフォームの無料相談ができるサイトの構築をお手伝いしています。

NPO法人 環境勘察グループ あおい。くじら』さんという、環境的リスクを判断し環境を確保する活動(身近な例でいうと、新建材等による化学物質アレルギーをなくすための活動など)をされているNPO法人のサイトのお手伝いをしていた関係で、エコリフォームの方もお手伝いしています。

環境に関心があっても、無垢材やエコ塗料、柿渋、弁柄、漆喰など、自然素材を使用してリフォームしてくれる工務店を探すのは結構大変で、そういうエコをうたっていても本当にエコ素材を使って工事してくれたのかを判断したり評価するのは素人には本当に難しいことなので、そういう相談にのってくれるきちんとしたところがあったらなぁという話からエコリフォームのサイトが立ち上がりました。

NPO法人では、きちんとしたエコなリフォームを施工してくれる工務店を紹介したり、工事の監督をしたり、見積りの相談に乗ったりというようなことをしっかりとした体制(採算度外視)でやってくれます。

サイトの方はまだまだ不十分ですが、実績を重ねるたびにいいサイトになっていくと思いますので、興味のある方はウォッチしてみてください。よろしくお願いします。

Google XML Sitemapsプラグインはいいよ!

マルチサイト対応ができていなかったので使っていなかったのですが、β版でサポートを開始したので使ってみることに。
β版はこちらからダウンロードできます。
http://www.arnebrachhold.de/redir/sitemap-dl-beta/

Google ウェブマスターツールにサイトマップを追加します。

bingウェブマスターにもサイトマップを追加します。

しばらく使ってみて、またレポートします。

WordPressのthe_post_thumbnail()、すごくない?!

the_post_thumbnail()って、アイキャッチ画像を表示させたりするのに超絶便利な関数なんだけど、altや titleに余計なものをセットして面倒くさいなぁと思ってました。
で、get_the_post_thumbnail()で変数に受けてから、それを preg_replaceとかしてたわけなんですけど、なんとなんと、そんなことしなくてもいいんです。

<?php the_post_thumbnail( array(150,150), array('class' => 'imgLeft') ); ?>

この用例をみてわかるように、なんでもセットできるんです。
array(‘title’ => get_the_title(), ‘alt’ => get_the_title()) みたいなことでOKなんです。
よくできてますね!

WordPressに関連投稿を追加する「WordPress Related Posts」プラグインを導入する

投稿した記事に関連した記事を自動的に追加してくれるプラグインを入れておきましょう。

 

設置は通常のプラグインのインストールと同様に「WordPress Related Posts」で検索してインストールします。
赤丸のところだけ変更しておきましょう。

 

WordPressにSNSボタンを追加する「Sharebar」プラグインを導入する

投稿した記事を Twitterや Facebookで取り上げていただくのは SEO対策の基本ですね。
できるだけ簡単に取り上げていただけるよう、ハードルを下げておきましょう。

WordPressでサイトを作っている場合、一番簡単な対処法は、「Sharebar」というプラグインを入れることです。

設置の方法や、Facebookの幅調整などは、こちら「ソーシャルボタンSharebar(シェアバー)の使い方と設置方法。WordPressプラグイン。」が詳しいです。

 

WordPressで作ったサイトをSEOチェックしたとき、「URLの正規化」ワーニングがでたときにとる対処法

WordPressで作ったサイトをSEOチェックしたとき、「URLの正規化」ワーニングがでることがあります。
ワーニングの原因は、index.php、index.htmlが別ものとして扱われるためです。

対策する理由
index.html(index.php)のあるURLとないURLが混在していると、重複コンテンツとみなされ、SEOの評価を著しく下げる可能性があります。検索エンジンは重複したコンテンツを登録を行うことは基本的にありません。この理由は、同じコンテンツを重複してインデックスしていくと、ある検索クエリに対する検索結果として同一内容を持つ異なるURLを複数表示することになり、検索ユーザーの検索体験の質低下を招くからです。
SEOスカウターβ版より

 

WordPressをインストールすると、インストールディレクトリにこんな感じの .htaccessができます。

# .htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

これだと、index.htmlが入ってきたとき、index.phpとは別扱いされて、404エラーになってしまいます。
これを以下のように書き換えます。

# .htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
RewriteBase /
#RewriteRule ^index\.php$ - [L]
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

これで、example.com/ と example.com/index.php と example.com/index.html がすべて同一になります。

Detectify でサイトの脆弱性をチェックしてもらったら Warningがたくさん

Detectifyというサイトがあって、無料で脆弱性のチェックをしてくれる。

登録の仕方等の使い方は、こちら「あなたのWebサイトの脆弱性を調査してくれるサービス『Detectify』」が詳しい。

Scan Startして3日ほどで結果を返してくれる。
試しにうちで管理しているサイトのひとつを調べて見たら、以下のような結果に。
0 Exploits Found / 24 Warnings Found / 222 Notices Found

危ない(Exploits)はゼロでよかったが、注意(Warnings)が24もあるのは気になる。
今日はこれをつぶしていこう。

  1. PHP Easter Egg
    URLの最後に「?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000」これを付けると、phpinfo()が表示されてしまうという、ちょっとしたTips。設定ファイルとか、なんのLIBが有効かなどがわかると侵入者に手がかりを与えかねないのでこれはふさいでおこう。
    「/etc/php5/apache2/php.ini」に「expose_php = On」があるので、これを Offにして完了。

    ※参考> [PHP]phpinfo()に関する小ネタHack

  2. Operating System Disclosure
    ApacheのレスポンスにOSが出ているよという警告。これも隠しておこう。
    「/etc/apache2/conf.d/security」の「ServerTokens Prod」と「ServerSignature Off」で Serverは「Apache」だけになる。

    ※参考> 【Apache】HTTPヘッダの確認方法とセキュリティ対策(レスポンスヘッダの変更方法)

  3. Directory Listing
    ディレクトリ一覧(ファイル一覧)が見えてるところがあるよという警告。これはつぶしておく。
    「/etc/apache2/conf.d/security」に「Options Includes ExecCGI FollowSymLinks」を追加。
    これ自体は、CGIとシンボリックリンクの許可だが、明示的に Optionsを指定することで「Indexes」(ファイル一覧)を禁止することになる。

    ※参考> 第2回 ディレクトリ非表示の意味をもう一度見つめ直す

  4. Cookie not HttpOnly
    HttpOnlyクッキーにしないと、javascript等から読みだされてしまうよということなんですが、変更したときの影響がよくわからないので、ペンディング。
  5. Input AutoComplete
    オートコンプリートが Onになっていると危ないよという指摘だが、これは使い勝手とのトレードオフになるので、このまま放置。

    ※参考> HTML でオートコンプリートをオフにする方法

  6. Unencrypted Login
    WordPressのログイン画面が httpなので、これをSSL(https)にしなさいという指示。
    wp-config.phpに「define(‘FORCE_SSL_LOGIN’, true);」を追加するだけでできるのだが、SSL証明書を用意したり、他のお客様(マルチドメインで運用しているので)への影響を考えてペンディング。

    ※参考> Administration Over SSL

次ページへ »