Kusanagi managerでサブドメイン「www」指定でSSLが有効化できない時

新しくConoha VPSにwordpressを移行した時のメモ

なぜ、ConohaVPSを選んだか_φ(・_・

  • SSDでメモリ1G 980円は安い!
  • wordpressで最速なkusanagiを簡単に導入できる。
  • 面倒なSSLの設定がワンクリックでできる ← まじやばいす
  • 単純にいままで使っていたサーバーが激重になってきて、こんなにスペックいいのに新しいVPSと値段一緒😂

ざっくり移行時の流れ

Conoha管理画面

↑のConoha管理画面で > サーバー追加 > アプリケーションを選んで、
「かんたんKUSANAGI」を選択。

サーバー

↑契約したサーバーにKUSANAGI管理という画面ボタンがあるので、それを起動すると、

kusanagi manager画面

このようなサイト管理画面がでる。

本題のwwwサブドメのSSL化について

ようは下記のようにしたい

が、下記のようなエラーでならない。

ケース1 エラー「DNSやIPの設定を確認してください」

DNS設定が浸透してしきっていない。

DNS設定画面参考



サーバーを変更したてで、DNSの浸透しきっていない場合に表示されます。
移行先サーバーからnslookup www.hogehogehogehogehoge.com で移行先サーバーのIPに変更されているか確認し、まだ浸透しておらず、
急いでいる場合は、/etc/hostsファイルに変更先IPとドメインを紐付けて試す事もできます。※浸透が終わったらちゃんと戻す事

/ets/hostsファイルの参考

ケース2 エラー「サイトの設定変更:証明書の取得に失敗しました。リクエスト超過で制限されています。」

SSL化 ONを短時間でクリックしすぎ。

サイトの設定変更:証明書の取得に失敗しました。リクエスト超過で制限されています。

裏側で、** Let’s Encrypt ** という無料でSSLが利用できるサービスを利用しており、その取得処理を何度もリクエストしてしまっている事が原因のようです。

「letsencryptとは」の画像検索結果

しばらく時間をおいてから試すとエラーはなくなります。

ケース3 エラー「DNSやIPの設定を確認してください」

www.○○.comのように、wwwサブドメイン指定でSSL化すると、○○.comを参照してSSLを取得しようとしてしまう。

僕はこれにハマりました。
古い方サーバーの方のSSLを失効させて、再度取得を試したりしましたが関係なく、色々ググってみました。

試行錯誤時に参考にさせて頂いたサイト
https://miyatore.com/archives/3136

結局ターミナルコマンドでチェックしてみたところ、

# kusanagi ssl --email メアド プロファイル名

※プロファイル名は、下記で確認できます。

# vim /etc/kusanagi.d/profile.conf

それで、結局移行先サーバー内のコマンドでチェック。

# kusanagi ssl --email aaaaaaaaaaa@gmail.com f69XXXXXXXXXXXX
# kusanagi ssl --email aaaaaaaaaaa@gmail.com f69XXXXXXXXXXXX
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for doya.link
Using the webroot path /home/kusanagi/f69XXXXXXXXXXXX/DocumentRoot for all unmatched domains.
Waiting for verification...
Challenge failed for domain doya.link
http-01 challenge for doya.link
Cleaning up challenges
Some challenges have failed.


IMPORTANT NOTES:
 - The following errors were reported by the server:


   Domain: XXXX.com  ← これ!!!!!!
   Type:   unauthorized
   Detail: Invalid response from
   http://XXXX.com/.well-known/acme-challenge/JesgB_EoCALuMGBbQVZ-XXXXXXXXX
   [157.7.237.223]: "<html>\r\n<head><title>404 Not
   Found</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>404
   Not Found</h1></center>\r\n<hr><center>"


   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.
Cannot get Let\'s Encrypt SSL Certificate files.
失敗しました。

Domain: XXXX.com ← これ!!!!!!

www.XXXX.comをSSL化したいのに、XXXX.comを見てる。。

kusanagiサーバーの挙動を見ているとwww.XXXX.comでアクセスすると、
自動でXXXX.comにリダイレクトしているようです。。😂

なので、www.XXXX.comとXXXX.comをセットで考える必要があるようですw

なので、僕は、wwwありとなし両方を移行すると解決しましたw

過去に手動でLet’s EncryptでSSL化した方法

まずはじめるなら、はてなブログがSEO効果いいみたい

まずはじめるなら、はてなブログがSEO効果いいかも。。

こういう方
http://k-ya.hatenablog.com/entry/2016/04/27/230308

僕のとなじエンジニアさんも ↓
http://seminimalist.info/can_hatenablog_strong_seo/

hatenablogというのがそもそもサービスのドメインなので、強いってのもありますが、
そちらを使わせてもらうってだけでも本当にありがたい!

hatenaのサービス内でトピックとしてあげられる可能性も考えると美味しいw

とてつもなくいまさらですが、、

はてブやってみようかなw

リファラスパムに遭遇しちゃいました。。。

久々古いサイトのGoogleAnalyticsを除いてみたら、
5年ぐらい、いやもっと前かな?相当昔に作ったサイトに急にアクセスが増え始めたなんだろうと思ったら、
リファラ(検索でない、参照元)つきでアクセスが増えている。
1日1アクセスもないようなサイトなのに、、!?

参照元のURLはこういうやつ、「slow-website.xyz」。※アクセスしないように。

スクリーンショット 2016-07-03 22.25.18

どっかで目にしたようなリファラスパムってやつかなとおもってアクセスはせず、
そのリファラでググッてみました。
危なくないように、URLはそのままコピペではなく、
“http://〜〜〜” と「”」でくくってください。アクセスしちゃうので。

そうすると同じようなドメインからのアクセスでリファラスパムに遭遇したって記事がちらほら。

http://tk-analytics.hatenablog.com/entry/2016/06/21/221300

新手のスパムらしいです②「free-share-buttons.com」を調べてみた


参考にさせていただきました。m(_ _)m

対処方法

http://www.yatani-pr.com/marketingblogs/1402/

wordpressでrobots.txtがnginxで表示されない場合の対処

nginxで、wordpressのプラグイン「XML-Sitemap」でrobots.txtが表示されない

http://hoge.com/robots.txt にアクセスしてrobots.txtが「404 Not Found」になってしまう

wordpressをnginxの環境でセットアップしていると、
XML-Sitemapで自動生成されるrobots.txtがで表示されないようです。
apacheの場合は特に意識しなくても大丈夫かと思いますが。

色々とググってみましたが、日本の記事がなかったので、
メモとして残します。

実は、「http://hoge.com/index.php?robots=1」にアクセスすると
robots.txtの内容が表示されます。
なのでrewriteしちゃいます。

nginxで動的にrobots.txtを表示する設定

/etc/nginx/conf.d/hoge.conf

server {
  listen 80; 

 〜省略〜

  # nginxとwordpressだと自動生成されるrobotsが404になるのを防ぐ
  location = /robots.txt {
    rewrite ^/robots\.txt$ /index.php?robots=1 last;
    allow all;
    log_not_found off;
    access_log off;
  }

   〜省略〜

あとはnginxを再起動

$sudo service nginx configtest
$sudo service nginx restart

実際に「http://hoge.com/robots.txt」の設定確認

User-agent: *
Disallow: /wp-admin/

Sitemap: http://blog.4star.link/index.php?xml_sitemap=params=

上記のように反映されていればOK
シンプル!

謎の「GHOSTSEC-TEAM」に、wordpressをハッキングされてしまった。。

wordpressをセットアップ途中で、半日放置したら、、

自分のサイトがこんなサイトに。。!

hacked_theme

まじびびりました(笑)

しかも最初はマトリックスのコンソール画面みたいな画面でるなど、
とても動きがありHTML5をバリバリつかったとても凝ったサイトになっていたのでまさか自分のサイトとは
思わず見てしまいました。

あまりにもびびりすぎて、速攻で、wordpressをディレクトリごと削除してしまいました。。

いま考えれば、とっておいてどうやってハッキングされかを解析できるようにしておくべきでした。

wordpressのディレクトリ以外は、削除する前に気づけたので一旦、DBとアクセスログともに保存し、
いろいろを覗いてみました。

まずnginxのアクセスログをみたところ、ハッキングした方は、当たり前っちゃあたりまえですが、
多段のプロキシサーバーを介しているようで、

アクセスログをみるとこんな感じ

66.85.148.52 - - [08/May/2015:17:04:42 +0900] "POST /wp-admin/install.php?step=2 HTTP/1.1" 200 3009 "http://攻撃対象サーバーIP/wp-admin/install.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:45 +0900] "GET /wp-login.php HTTP/1.1" 200 2723 "http://攻撃対象サーバーIP/wp-admin/install.php?step=2" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:50 +0900] "POST /wp-login.php HTTP/1.1" 200 3745 "http://攻撃対象サーバーIP/wp-login.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:54 +0900] "POST /wp-login.php HTTP/1.1" 302 5 "http://攻撃対象サーバーIP/wp-login.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:55 +0900] "GET /wp-admin/ HTTP/1.1" 302 5 "http://攻撃対象サーバーIP/wp-login.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:55 +0900] "GET /wp-admin/upgrade.php?_wp_http_referer=%2Fwp-admin%2F HTTP/1.1" 200 1278 "http://攻撃対象サーバーIP/wp-login.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:58 +0900] "GET / HTTP/1.1" 200 16656 "http://攻撃対象サーバーIP/wp-admin/upgrade.php?_wp_http_referer=%2Fwp-admin%2F" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:04:58 +0900] "GET / HTTP/1.1" 200 17546 "http://攻撃対象サーバーIP/wp-admin/upgrade.php?_wp_http_referer=%2Fwp-admin%2F" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:05:05 +0900] "GET / HTTP/1.1" 200 17546 "http://攻撃対象サーバーIP/wp-admin/upgrade.php?_wp_http_referer=%2Fwp-admin%2F" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:05:11 +0900] "GET /wp-admin/about.php HTTP/1.1" 200 32252 "http://攻撃対象サーバーIP/" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:05:12 +0900] "GET /wp-admin/load-scripts.php?c=0&load%5B%5D=jquery-core,jquery-migrate,utils&ver=4.2.2 HTTP/1.1" 200 105061 "http://攻撃対象サーバーIP/wp-admin/about.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"
66.85.148.52 - - [08/May/2015:17:05:12 +0900] "GET /wp-admin/load-styles.php?c=0&dir=ltr&load=dashicons,admin-bar,wp-admin,buttons,wp-auth-check&ver=4.2.2 HTTP/1.1" 200 292720 "http://攻撃対象サーバーIP/wp-admin/about.php" "Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.5.0"

※攻撃対象のサーバーIPは隠しております。

今回究極にダメダメだったのが、
セットアップの途中で放置してしまったことが、
よくなかったと反省しております。
攻撃者もinstall.phpや、wp-admin〜のファイルへアクセスしている事がわかりました。

さらに攻撃対象のwordpressのデータベースも、
書き換わっており、wordpressへのログイン情報までもが書き換わっている状況でした。

*************************** 3. row ***************************
   option_id: 3
 option_name: blogname
option_value: hacked
    autoload: yes
*************************** 4. row ***************************
   option_id: 4
 option_name: blogdescription
option_value: Just another WordPress site
    autoload: yes
*************************** 5. row ***************************
   option_id: 5
 option_name: users_can_register
option_value: 0
    autoload: yes
*************************** 6. row ***************************
   option_id: 6
 option_name: admin_email
option_value: cyberlol*@**.com
    autoload: yes
*************************** 7. row ***************************

ブログ名もhackedと。。。完全にやられた感じです。

FireWallは80と443ポートしかあけていないので、web以外は問題なさそう。
wordpress用のDBユーザー等は、対象のDBのパスワード変更などを実施し、
また管理画面へのIPアクセス制限をかけました。。
これで一旦は大丈夫かな?。。

**追記**
GHOSTSEC-TEAMで色々ググってみると、
被害をうけたまま放置されているサイトがちらほら。。
若干異なったパターンのデザインやギミックのものが、他にも。。

wordpressのinstall中はもっとも脆弱になっている可能性が高いので、
是非お気をつけを!!

wordpressでSQLを利用する

wordpressには色々と便利な機能が用意されていてびっくりなのですが、
まさかPDO的なものがもうすでに用意されてました。

$wpdb

というもの。

下記のようなのりで使えます。

[php]
$obj = $wpdb->get_results(“SELECT * FROM $wpdb->posts where post_title = ‘Hello world!'”);
print_r($obj[0]->post_title);
[/php]

下記記事がわかりやすくまとめておりました。

http://blog.syuhari.jp/archives/410