テストドリブンなセキュリティ

|
結城さんのエントリにある「テストドリブンなセキュリティ」と似たことを考えていました。 「セキュリティ」と言ってしまうと範囲が広くてどこまでやるかということになってしまうので,「テストドリブンなサーバ構築・設定」という感じで。 きっかけは同じくはてなでの「ポリシーが徹底されておらず,SSH でパスワード認証が通っちゃってた」件について。これ,要するに開発で言うところのデグレですよね。「SSH 認証は publickey のみ」というテストがあれば,こういう事態は防げたはず,と。 で,そんなテストを継続的・自動的に実行するツールとしては Nagios は丁度良いんじゃないかな,と。「SSH の認証方法をチェックする」なんてプラグインは今のところ無いけど,CPAN を見ると Net::SSH2 の auth_list というメソッドがある。これを使えば受け付けている認証方法の一覧が取れる。 #!/usr/bin/perl use strict; use warnings; use Net::SSH2; my $ssh2 = new Net::SSH2; $ssh2->connect('localhost') or die; print join(':', $ssh2->auth_list),"\n";   後は Nagios::Plugin あたりと組み合わせれば簡単に監視プラグインに出来そうだ。これで「SSH 認証は publickey 認証のみ」というセキュリティポリシーの遵守を監視できる。 こんな風に「どんな設定でも,正しく設定されていることを監視で確認する」とすれば,作業の順番を入れ替えて,「設定・インストール作業の前に監視設定をする」としてしまえば,「テストドリブンサーバ構築・設定」という方法論になるのかな。
  1. セキュリティポリシー・用件を決める
  2. インストール・設定を行う
  3. ポリシー・用件が満たされてることを信じる(テスト無し) or 監視するけど,時々設定に漏れがある(後からテストを作る)
という流れが,
  1. セキュリティポリシー・用件を決める
  2. Nagios を設定する or 監視プラグインを作る
  3. Nagios がアラートを出す
  4. インストール・設定を行う
  5. Nagios で OK になる
  6. ほっといても Nagios が自動的にチェックしてくれる=ポリシーが守られている
となる。Nagios を使っていることでテストの設定がそのまま監視に使えるというのが面白いかと。 SSH 認証の設定のほかにも
  • この URL でこんなコンテンツを返す
  • サービスとして HTTP, SSH を提供する
  • 空いてるポートは HTTP, SSH だけ
  • この IP アドレスで稼動する
ってなあたりも,監視設定→実作業でやってみるとか。最後の例なんて「ネットワークに繋いで電源入れる前にまず監視設定」ってあたり,徹底していて面白い。 設定作業中に監視間隔を待ってられねーとか,本稼動後にそんな細かくチェックしてられねーとか,色々と考えることはあるとは思うけど,Nagios を使ってテストドリブンで設定していくというのは面白そうだ。

Trackback URL for this post:

http://www.typemiss.net/trackback/140