マビでパスワードを再登録しろとか言われる


 正確には、マビを運営しているネクソンのアカウントのパスワード、だけど。
 ネクソンのアカウントを作ってから、そのアカウントに対応したマビノギのアカウントを作る、みたいな仕様なので。確か。

 で、まあ、両方同じパスワードなんですがね。
 もちろん、ネクソンを信用などしていないので、ネクソン系で使ってるパスワードはここ専用の奴で、他所で使うパスワードとは似ても似つかない奴だけど。

 今回の事の経緯は良く分からないのだが、どうもアカウントが大量にクラックされまくったらしい。とは言っても、ネクソンのセキュリティに問題があったかは不明。フレは一人もやられてないしなあ。
 ちなみに、IDと平文パスワードがセットで漏洩する事件は時々ある。水面下ではもっと起きててもおかしくはない。色々な会社でIDとパスワードを使い回してる人なんかは、どこか一社でも漏洩事件が起きていたら、ありとあらゆるサービスで好き放題に侵入されまくるでしょうなあ。
 という訳で、ネクソンでアカウントのクラックが多発している、と聞いても、原因の所在が曖昧なので、ネクソンを疑いもしないが信用もしないのであった。要するに、これだけじゃ何も分からん。被害者の周辺状況を詳細に調べられるならば、どちらが疑わしいかも検討出来るのだけれど。

 で、何かやけに大々的に「パスワード変えてね!」「変えないとサービス使えないような設定にしたからね!」と広報されてるんで、一文字だけ変えた。漏洩対策ならこれで十分だろう。
 あと、マビのパスワードも同じ奴なので、こちらも自主的に変更した。やれやれだぜ。


Nginxで簡単なバーチャルホストを立てた


 やっぱ試したいんで、PHP抜きの単純な奴を立ててみた。Lighttpd+mod_simple_vhostから置き換えやすいように、/srv/www/vhostsの下にホスト名のディレクトリやシンボリックリンクを置くだけの形にして、デフォルトサーバはアクセス禁止で。
 nginx.confのserverブロックはこんなん。

    server {
        deny all;
    }
    server {
        server_name ~\.[a-zA-Z]+\.?$;
        root /srv/www/vhosts/$host;
        index index.php index.html index.htm;
        location ~ /\.ht {
            deny all;
        }
    }

 この程度で普通に動く。一見。定数を逃がしたりディレクトリの存在を判定したりすれば、もっとmod_simple_vhost互換っぽくなりそう。別に要らないけど。
 一つ目のserverブロックでデフォルトサーバを拾って、二つ目のserverブロックでFQDNっぽいホスト名を全部拾っている。server_nameのしょぼいREがその判定。もっとマシなREは無いのか。
 rootのとこは良く見る書き方。$hostは基本的にHostリクエストヘッダを拾ってくるので、

GET /shadow HTTP/1.0
Host: ../../../etc

みたいなかっこいいリクエストを送ったらどうなるか気になったけど、普通に400が返ってきたので安心した。ちなみにLighttpd+mod_simple_vhostでも400。../vhosts/fooみたいに書いても400。
 他にちょっといじったとこの差分をまとめると、

    log_format main '$remote_addr $host - #以下略
    tcp_nopush on;
    server_name_in_redirect off;
    server_tokens off;

こんなもん。
 log_formatは$hostを埋めただけ。
 tcp_nopushは多分TCPパケット送信アルゴリズムの最適化だけど、FreeBSDだとbuggyだとか書いてあった。Linuxだしいいんじゃね。知らんけど。TAFとかふつー0ですしねゲーマー的に。それは微妙に違う話ですね。
 server_name_in_redirectは何となく。UseCanonicalName Onにいい思い出が無いので。多分どうでもいい。むしろ間違った選択かもしれない。
 server_tokensは普通にoffでいいんじゃね。

 で、このまま実験終了でもいいけど、どうせならPHPも走らせてみるかなあ。インストールするもんが急に増えるけど、PHP-FPM立てるまでの手間は大したこと無いし。
 あ、CGIだけLighttpdかApacheに流す手もあるかも。そしたらメインサーバで普通にNginx行けるかも。
 つーかApacheに流すならmod_phpも使えるなあ。有利かどうかは分からんけど。

 ていうかそれLighttpdだけでいいんじゃね?
 ていうか話がループしてね?


Nginxが理解不能だった理由を理解する


 少し素直じゃないWebサービスをNginxで適当にカンで動かそうとして失敗した、というのがここまでの話。
 日本語だと定番設定のサンプルくらいしか見当たらないので、十倍疲れる英語時空に突入。NginxのWikiのConfigurationのとこが一番まとまってそうだ。そこからNginx Primerという記事に飛んで、ちょっと読んで納得した。適当じゃコケても不思議は無いな。
 つーか設計も面白そうだし、やはりもう一度試してみよう。まずはSaaSesの方で実験かな。

 で、結局NginxのWikiをひたすら読む展開に。入り口には「日本語」とかいうリンクが見えるけど、中身はほぼ翻訳されてないというオチ。
 しばらく読むと飽きてきたので、SaaSesの方にインストールしてみる。現在のstableは0.8.54、EPELは0.8.53、変更点を見ても問題無さそうなので、yumでEPELからインストールして、/etc/nginx/nginx.confを開いて適当に編集開始。
 えーと…。何だろうこれ。Wikiの駄目な設定例にあるような書き方が普通にごろごろしてんだけど。前回はこれをベースに適当に弄ったんだよな。そりゃ動かんだろ。serverブロックだけはスクラッチから書くか。

 と、ここまで楽しく進んでたのだけど、CGIサポートで悩む。NginxはFastCGIしか対応してないのだよな、そういえば。誰かがCGIを使いたがった時に「あー無理ッス」で終了、ってのもな…。つっても、Lighttpdでも今のところPerlにしか対応させてないけど、まあ要望があればバイナリでも何でも対応は簡単だ。多分。しかしNginxだとFcgiWrapを使うのが主流のようで、yumでちょろっと入れたいと思っても見当たらず。今回はyumで全て済ませる所存であるので。portsすら回避してtarball拾ってた頃が懐かしい。
 という訳で、まあ別に現状で困ってはいないし、さくら鯖はLighttpd+PHP-FPMを続行することに。残念ではあるが、焦る必要も無かろう。「理解出来なくて放置」という状態ではなくなったので、気持ちの引っ掛かりも無いし。
 つっても、一応設定してSaaSes鯖でNginxを動かしておいてもいいかもな。


さくらとSaaSesのVPSでNSDを走らせる


 属性JPのNSを移そうとしたら、セカンダリNSの指定が必須になってた。やっぱりか。
 2/28でいきなり使えなくなっても困るので、SaaSesのVPSの試用を開始。OsukiniサーバLTって奴。月額450円は素晴らしい。初期費用3000円は重いけど。
 VPSじゃなくても、セカンダリNSだけ引き取ってくれるサービスとかありそうな気もするけどな。

 最小構成で申し込んで、数分したら利用可能になっていたので、まずはsshdのポート変更を行う。シリアルコンソールとかは無いので、危ないことは最初にやってしまおうと。OSの再インストールはWebから出来るみたいなので、その辺は多少気楽だけど。
 んで、パスワード変えて、Apacheが走ってたので停止して、yumでEPELを使えるようにして、NSDをインストール。簡単ですなあ。
 あとはNSDの設定だが、ログインすることの多いさくらを当然プライマリに。

 プライマリのIPアドレスを192.0.2.1、セカンダリのIPアドレスを192.0.2.99とすると、プライマリのnsd.confは、

zone:
    name: first.example
    zonefile: /etc/nsd/master/first.example.zone
    notify: 192.0.2.99 NOKEY
    provide-xfr: 192.0.2.99 NOKEY

zone:
    name: second.example
    ...

って感じで、セカンダリのnsd.confは、

zone:
    name: first.example
    zonefile: /etc/nsd/slave/first.example.zone
    allow-notify: 192.0.2.1 NOKEY
    request-xfr: AXFR 192.0.2.1 NOKEY

zone:
    name: second.example
    ...

って感じにした。request-xfrにはAXFR指示子が必要っぽい。IXFRに対応していないサーバだとこれが必要で、NSDはIXFRに対応していない。フォールバックしないのもゾーン転送クライアントの設計としては正しいだろう。サーバとして動作する時はフォールバックの動作指定もあるし。実に合理的な罠である。
 んで、プライマリでnsdcを普通にリビルドしてリロードしたらきっちり動いた。手動でゾーン転送させたい時は、プライマリ側でnsdc notifyで一発。allow-notifyを127/8にも通せば、セカンダリ側でnsdc updateでも更新出来るようだけど、別に要らないのでやらない。

 試用開始からここまでの作業時間が15分くらいだったので、何か忘れてないかと激しく疑心暗鬼になるのだが。

 ところで、SaaSesの方はRTTが8msだった。凄い時代ですなあ。ベンチマークとか掛けてないからマシンパワーは分からないけど。HDDも丸々50GB空いてるし、スタティックなWebサーバくらい立ててもいいかも。帯域は厳しそうだけど。2011/2/1現在、サービス全体で1Gbpsとのこと。安さを考えたら全く不満は無いが。
 まあ、何か別の用途で使うにしても、いつ消えてもいいような物だけ入れるようにしよう。


ちょっと前に借りた専用サーバの立場が無いような


 あ〜ごんのデータをさくらの専鯖からVPSに移動してて思い出したのだが、月一万円近く掛かってた専鯖はそういえば10Mbps共有回線だったよなー、って。1.12MB/sで転送されてるのを見て、ああ、額面通りだったのだなー、って。
 同じさくらでも、VPSだと月千円くらいで100Mbps共有回線です。帯域以外のスペックも不満ねーですし。喜んでいいのか悲しんでいいのか。両方か。