WordPressを完全にSSLへ移行してみた

うちのサイトは証明書の関係でPreload HSTS(HTTP Strict Transport Security)にはしていないけれど、
HSTS設定前でもかなりhttpsからのアクセスがあったのでHSTSの設定をして、常にhttpsへ接続してもらうようにました。

で、2017年1月にリリース予定のChromium 56から、パスワードやカード情報を送信するhttpなサイトは「安全ではない」と表示するようになるようです。
Chromium Blog: Moving Towards a More Secure Web

HTTP/2.0になって完全にhttpは要らないんじゃ?って感じになってきてるみたいですね。

もうそれなら完全にSSLへ移行しちゃって良いんじゃないかー!って事で、httpをhttpsへ301でリダイレクトするようにしました。
方法はいろいろあるけれど、WordPressならrewriteで良いと思う。

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://blog.wolfs.jp$1 [R=301,L]

ちなみに、RewriteRuleのURLで最後にスラッシュを入れるとリダイレクト先でダブルスラッシュになるので注意。
例:
 RewriteRule: RewriteRule ^(.*)$ https://blog.wolfs.jp/$1 [R=301,L]
 アクセスURL: http: //blog.wolfs.jp/page-1/
 リダイレクトURL: https: //blog.wolfs.jp//page-1/

これの何が悪いかと言うと、
ダブルスラッシュになっているとWordPressのリダイレクトが働いてhttps://blog.wolfs.jp/page-1/へリダイレクトされるので合計2回リダイレクトされる事に。
かなり無駄なので注意。
RewriteBase /なんかを使うと良いけど、別にそんなの指定しなくても/を1つ抜くだけで動くから要らないとおもうw

この状態でMozillaが提供しているサイトのセキュリティ診断、Observatory by Mozillaをうけてみると・・・
Observatory 結果
うんA+でかなり良いスコアがでました。
続きを読む

WordPressのインラインJavaScriptをなくして、Content Security Policyを設定

うちのテーマは今のこのデザインになるまでは、サードパーティーのテーマを使っていたんです。
で、そのテーマには脆弱性があってXSSが有効だったんですよー((゜Д゜;))

今は1から作った独自のテーマを使っていて、汎用的な拡張性(テーマに必要な画像等のアップロード機能やAJAX)や外部を参照する不明なコードはありません。
なのでテーマ経由の脆弱性はない感じなのです。

だけれど、XSSを防ぐセキュリティ関連のヘッダーを設定しておいた方が良いって事なのでApacheにヘッダーを追加してみました。
新しく追加したのはX-Content-Type-Options、X-XSS-Protection、Content-Security-Policyの3つで、どれもXSSを防ぐのに効果が高いもの。
X-Frame-Optionsだけはブログをiframeで表示されていたサイトがあったので設定済みでしたw

設定内容はこんな感じ。

Header always set X-Frame-Options SAMEORIGIN
Header always set X-Content-Type-Options nosniff
Header always set X-XSS-Protection "1; mode=block"
Header always set Content-Security-Policy "default-src 'self' *.wolfs.jp; script-src 'self' *.wolfs.jp; child-src 'self' data: www.youtube.com; style-src 'self' 'unsafe-inline' *.wolfs.jp; img-src 'self' data: *.wolfs.jp *.gravatar.com;"

 
で、今回躓いたのはContent Security Policy(CSP)の設定。

JavaScriptやCSSは以前から1つにまとめているので大した問題ではなかったのですが、CSPで「script-src 'self' *.wolfs.jp」のようにインラインスクリプトを許可しない設定だとWordPressが出力するコメント関連のスクリプトが動かなくなっちゃう。
かと言って許可するとXSSに対して弱くなり、CSPを設定しないのとあまり変わらないような結果になります。

うちの環境で見た感じ、主にWordPressが出力するインラインJavaScriptは、
 ・コメントフォームの隠しフィールド「_wp_unfiltered_html_comment_」
 ・コメントのある「返信」ボタンのonclick
のようです。

とりあえず、その辺を無効化して無効化した物を再度使用可能にするように作っていきます。
続きを読む

トレンドマイクロからメールサーバーへのアクセス。

非常にお行儀の悪いトレンドマイクロのBOTからのアクセスをブロックしてから暫く経ちました。
 
今日も不正BSカード販売のスパムメール君が来ていたので、県警へメールデータとサーバーログを提供しようとメールサーバーのログを見たところ、おかしな物が記録されていました。

[2013/10/31 06:57:04] SMTP:mid=20131031065748410000_: accept: (150-70-97-125.trendmicro.com [150.70.97.125])
[2013/10/31 06:57:04] SMTP:mid=20131031065748410000_: 500 Syntax error, command unrecognized: GET (150-70-97-125.trendmicro.com [150.70.97.125])
[2013/10/31 06:57:04] SMTP:mid=20131031065748410000_: 500 Syntax error, command unrecognized: User-Agent (150-70-97-125.trendmicro.com [150.70.97.125])
[2013/10/31 06:57:04] SMTP:mid=20131031065748410000_: 500 Syntax error, command unrecognized: Host (150-70-97-125.trendmicro.com [150.70.97.125])
[2013/10/31 06:57:04] SMTP:mid=20131031065748410000_: Spam detected!, packet-save is ON. [logs/packet/20131031065748410000_.raw]
[2013/10/31 06:57:04] SMTP:mid=20131031065748410000_: 500 Syntax error, command unrecognized: Accept (150-70-97-125.trendmicro.com [150.70.97.125])
[2013/10/31 06:57:14] SMTP:mid=20131031065748410000_: Time-out, Service closing transmission channel

[2013/10/31 07:01:03] SMTP:mid=20131031070136082000_: accept: (150-70-75-212.trendmicro.com [150.70.75.212])
[2013/10/31 07:01:03] SMTP:mid=20131031070136082000_: 500 Syntax error, command unrecognized: GET (150-70-75-212.trendmicro.com [150.70.75.212])
[2013/10/31 07:01:03] SMTP:mid=20131031070136082000_: 500 Syntax error, command unrecognized: User-Agent (150-70-75-212.trendmicro.com [150.70.75.212])
[2013/10/31 07:01:03] SMTP:mid=20131031070136082000_: 500 Syntax error, command unrecognized: Host (150-70-75-212.trendmicro.com [150.70.75.212])
[2013/10/31 07:01:03] SMTP:mid=20131031070136082000_: Spam detected!, packet-save is ON. [logs/packet/20131031070136082000_.raw]
[2013/10/31 07:01:03] SMTP:mid=20131031070136082000_: 500 Syntax error, command unrecognized: Accept (150-70-75-212.trendmicro.com [150.70.75.212])
[2013/10/31 07:01:13] SMTP:mid=20131031070136082000_: Time-out, Service closing transmission channel

そう、メールサーバーにWebサーバーのコマンドを発行しているのです。
Web用のBOTがなにをどう間違ってメールサーバーにアクセスしているのか謎。
相変わらずの超お馬鹿なBOT・・・w
 
ホスト名のTLDは以前あったような.sjdc等ではなくちゃんとtrendmicro.comとなっている辺り何かあったのでしょうか。
まあそれはどうでもいいんですけどねー

監視が非常に面倒なのでネットワーク層でパケットドロップする事にしました。
トランスポート層まで接続させてやらないんだから!w

月に1回のAPNICデータベース更新。

うちのサーバーはAPNICのデーターベースから中国、韓国、北朝鮮の割り当てIPアドレスを獲得してブロックしています。
で、今日は8月1日なので、月に1回のファイアウォールルールのアップデートを行いました。
APNICデータベース
今まではAPNICデータベースを変換してファイアウォールをアップデートしていたけれど、APIがあったのでそれを利用してリアルタイムでアップデート出来るようになりました。
 
あとは、ブログに来ているコメントスパム君のIPを照会して個別ブロックするだけ・・・だけど
コメントスパム君のIP照会中...
いつもはロシアとかフランスあたりからくるスパムだけれど、今回は日本からのスパムがありました。
とりあえずソフトバンクへhttpdのログをセットでアビューズ行為として報告。
どうもならないと思うけどねw
 
しかし・・うちに来ているスパム君は、海外のスパム送信業者がセコセコと送信しているんだと思ってたけれどなんか違いそうな予感。
マルウエア等がインストールされたPCとかを使って送信してそうな感じだなあー・・

だとしたら・・ロシアとかのフィルタルールは結構無駄かもしれない。
幸い今までGeoIPの国判別の結果がミスってた事はないし、httpd側でPOSTメソッドにだけブロックするようにすればいいかなあー。
 
でもスパムを送信してくる奴らにリソース喰われるのがイヤだからパケットドロップの方が・・・
うーん。。

それもこれもeoの回線速度が1Gプランで上がり33Mbpsとかunkになるからいけないんだヽ(`Д´)ノ
NTTのクソフレッツに変えたらマシになるんだろうけれど転送量制限がなあ・・
うーん・・うーん。。

業務用の契約をするしかないのか・・・(´・ω・`)

銀行に不正ログインされた。

夜メールチェックしてみると楽天銀行から1通のメールが届いてました。
 

件名:楽天銀行からのお知らせ[追加認証によるログインがありました]
xx様 (xx@xx.jp)

下記日時に、追加の本人認証によるログインがありました。

■ログイン日時
2013/05/28 xx:xx:xx

**********************************************************************
このメールは送信専用です。
ご不明点等は、当行WEBサイトよりお問い合わせください。

楽天銀行 http://www.rakuten-bank.co.jp/
**********************************************************************

(CC420)

なんの事かわからないし、その時間には家に居なかったしログインすらしていない。
 
これはIDとパスもっていかれたかな?と思いログインしてみると、ログイン履歴に自分以外の物を発見。
で、この「追加の本人認証」ってのはIDとパスを入力してログインしたときに、合言葉と生年月日で追加で本人を確認しログインするもの。

あれ・・?今確認でログインしたときはそんなの出なかったよ・・?
それに今まで「追加の本人認証」って物でログインした事なんてありゃしない。

しかも合言葉に限っては設定した自分ですら忘れているのに、華麗に正解してログインしているのだ。
 
これは・・・情報漏洩でもあったんじゃないかな、最近楽天からメールが沢山きていたしなあー
 ・「【楽天銀行】≪重要なお知らせ≫ワンタイム認証用メールアドレスの登録削除について」
 ・「【楽天銀行】≪重要なお知らせ≫不正ログイン対策のお願い」
 ・「【楽天銀行】≪重要なお知らせ≫携帯電話等のメールアドレス登録のお願いとID・パスワード設定の際のお願い」
 
 
まあメインバンクじゃなく、オンラインゲーに課金したり通販で何か買ったりする用なので、お金も入ってないので問題はないが・・「何勝手にログインしてんだよ・・うぜえ!」って事で・・・
夜間の緊急窓口に電話して不正ログインがあったことを報告すると「今から1時間以内に折り返し電話で連絡する」との事なので待つ。
 
そして20分程で折り返しの電話があり、不正ログインされた時の状況や普段どこからログインしているか、ネットカフェ等でログインしてないか?等々多数の質問をうけました。
該当する項目は皆無でした。
 
そして、ID、パスワード、暗証番号、ワンタイムの設定を変更してくれとの指示。
 
その後は、不正ログインされやすい状況や設定等の講習っぽい物があり、それに相槌をうちつつ冗談を交えて楽しく会話しましたw
相手にとっては冗談はメンドウクサイだろうけれど、ちゃんと乗ってくれたりしたので面白かったなあー・・w
 
最後に、楽天銀行から「不正ログインされた事を証明する文書を発行してくれ」と言った所、そのような物は「一切発行しない」と言われた。。。
一応、上に伝えて対処が必要だと判断した場合のみ警察に連絡をするとのこと。

それ以外でこちらから相手を釣り上げるには、最寄りの警察に届けを出す事だけそう。
 
これ無理じゃね、釣り上げられないじゃんー。
こっちはログインされて個人情報漏れてるのになあー。
 
その後はこちらから