カレンダーやアドレス帳サーバーへの総当たり攻撃への対処である。現状は、ログイン失敗を無制限に許しているので、総当たり攻撃に無防備だ。それをiptablesコマンドのhashlimitで防ごうとしたが、ログインに失敗してもHTTPコネクションが切れないため、うまく行かなかった。それから、同時に多くの接続をするブラウザもあって、hashlimitはHTTPには使えないことが分かった。

総当たり攻撃への対応の有無が商用サービスとの違いなのかも知れない。が、商用サービスといえども、総当たり攻撃を受けて負けているフシがあるので、同じなのかも知れない。

さて、同時に多くの接続をするブラウザ対策については別途考えることにして、ログインに失敗したらHTTPコネクションを切って、何とかiptablesコマンドのhashlimitを使えないかをちょっと調べたのだが、難しいようだ。カレンダーやアドレス帳サーバーのソフトはPHPで書かれているのだが、PHPにはHTTPのコネクションを切る機能がない。また、HTTPサーバーで切断するというのも考えられるが、今使っているサーバーには基本的にその機能がない。なので、HTTPのコネクションは、クライアント側が主体的に切るしかないようだ。という訳で、やっぱりiptablesコマンドのhashlimitは使えなさそうだ。

となると、カレンダーやアドレス帳サーバーの認証部で、同じコネクションあるいはIPアドレスで何度もログインに失敗したら、しばらく受け付けなくすればいいのだ。しかし、基本的にはそうなのだが、実際のコードを見ても、どこをいじればいいのか分からなかった。という訳で、これは夏休みの宿題になっている。

アドレス帳サーバーのソースを見直してみたら、認証している場所が分かって、フックを追加すれば出来そうな気がしたので、やってみたらうまく行った! (8/17 2時)

カレンダーサーバーにはフックの仕組みはなかったが、何とかなった。(8/17 8時)

宿題終わり!

  •   0
  •   0

コメントを書く

名前    

メール 

URL