Tech Notes

Conoha WINGのメーリングリストのセキュリティを(無理やり)強化した話

Conoha WINGというレンタルサーバーサービスがある。コスパが大変よく普通に使う分にはまるで申し分のない性能なのだ…がっ!

実はメーリングリスト(今時使っている人がどの程度いるのか?)の機能を使おうとするとセキュリティ上の壁にぶちあたる。

なんと管理画面が暗号化されていないHTTPなのだ…

これではおちおちパスワードも入力できない。そこでHTTPS化に挑んだ。

自動設定されるDNSの内容からして、現在のConoha WINGのサーバー構成は基本的に2台1組と思われる。普通のWebサーバーとメールサーバだ。

例えばabc.example.comというドメインをConoha WINGで運用しようとすると、以下のDNS設定が自動で適用される。

  • (Aレコード) abc.example.com → Webサーバ
  • (Aレコード) www.abc.example.com → Webサーバ
  • (Aレコード) mail.abc.example.com → メールサーバ
  • (Aレコード) ml-cp.abc.example.com → メールサーバ
  • (MXレコード) abc.example.com → (メールサーバのドメイン)

ここからがミソなのだが、メールサーバの443番ポートにアクセスするとWebメールのログイン画面が出てきて、80番ポートにアクセスするとメーリングリストの管理画面が出てくる。Hostを見て振り分けてるとかそういうのではないようだ。

うーん、リバースプロキシサーバを置きたくなかったのだろうか?Webメールのアプリケーションとメーリスのアプリケーションにそれぞれ別ポートを与える必要があってその入り口をまとめるのが保守管理的に面倒だったとか…いや流石にどうかなあ

何はともあれこの状態でメーリスを利用するのはセキュリティ的にかなりマズイ。そこでどうしたかというと、Webサーバ上にリバースプロキシを置いた。

Webサーバとメールサーバの間の通信は完全にプライベートな接続であり、Conohaの中の人以外に盗聴される心配はない。(疑うならサーバにSSHログインしてtracerouteしてみると良い。)つまりHTTPS設定にしたConoha WINGのWebサーバ経由でメーリス管理画面をいじることが出来れば安全にメーリングリストを利用できるという訳だ。

リバプロの方法はまあ何でも良いが、自分はこの軽量なPHP製リバースプロキシを使った。

https://github.com/michaelfranzl/no.php

ちなみに最初は.htaccessのRewriteRuleでApacheの機能を使ってお手軽にリバースプロキシを組もうとしたのだが、あいにくProxyPass系のディレクティブが許可されておらず、あえなくこういうスクリプトによるリバプロに頼ることにした。仕方ないね。

件のリポジトリをクローンして適当なURL(ml.abc.example.comとか)でアクセスできるようにし、no.phpの$backend_urlhttp://ml-cp.abc.example.com/に書き換えたらセットアップ完了。これでHTTPSで安心してメーリングリストが管理できるようになった。