Skip to main content

Googleウェブマスターツールでハマった

まさかこんなことでハマるとは。。。
昨日のサーバ強化したので、今日アクセス解析などの情報を見なおしていると
Googleウェブマスターツールで今年の10月20日辺りからサイトにエラーが発生していて、
robots.txtやsitemap.xmlが読み込まれていませんでした。

20141215_01

その辺りといえば、SSL3.0の脆弱性「POODLE」があった時期なのでSSL関連だろうと思いサーバへ。
もともとこのサーバは構築当初からSSL3.0は無効で構築してあって、許可してあるプロトコルはTLSv1、TLSv1.1、TLSv1.2のみでした。
「POODLE」が起きた際に、今後別の脆弱性が起きた時に面倒なので、TLSv1.2のみ変更していました。

プロトコルを1つずつ許可していって、「Fetch as Google」でしらべて行きましたが、どうやってもつながらない!!
試しにSSL3.0も許可してみたところ、これでも接続できない。
これは、どうもおかしいということで、コマンド実行。

# TLSv1.2
openssl s_client -connect www.lalcs.com:443 -tls1_2
# TLSv1.1
openssl s_client -connect www.lalcs.com:443 -tls1_1
# TLSv1
openssl s_client -connect www.lalcs.com:443 -tls1

TLSv1.2つながる。
TLSv1.1、TLSv1がつながらない。

ここで、変更時に「ciphers」を書き換えたのを思い出して、制限を緩和したところ無事に接続出来ました。

20141215_02

その後またプロトコルを1つずつ許可していったところ、
どうやらGoogleBotはTLSv1以下で通信処理をしているらしくそれ以降のプロトコルではサイトを読み取ることができませんでした。

フルSSLを推奨しているGoogleなのでそれぐらいは対応していて欲しかったです。。

2段階認証、MFAつくってみた

最近、iCloudのハッキングがあったせいか、いろんなサービスがやたらと2段階認証をすすめてくるので
自分の管理するウェブサイトにも実装すべく、2段階認証のプログラムを作ってみました。

まずは、今あるサービスを調べたところGoogleやAWSなどで採用している2段階認証は「RFC 6238 Time-Based One-Time Password」という規格?で作られているようです。
この規格で作るとOTP発行用のアプリケーションを作らなくても、既にGoogleが開発したものがあり手間が省けます。

Android: AWS Virtual MFA、Google Authenticator
iPhone: Google Authenticator
Windows: Phonn Authenticator
Blackberry: Google Authenticator

Source: アマゾン ウェブ サービス(AWS 日本語)

使用方法

$mfa = new MFA();

// 認証処理、成功すればTRUE、失敗すればFALSE
$mfa->verify({ワンタイムパスワード}, {シークレットキー});

// ワンタイムパスワード返り値に出力
$mfa->getOneTimePass({シークレットキー});

// シークレットキーを作成します。
$mfa->getKeygen();

使用方法はこのような感じで、基本的には上記のメソッドで認証ができます。
ただ、注意点が1つ、シークレットキーに使用できるのはbase32で16文字のものしか使用できません。

続きを読む