オープンソースを活用したWebセキュリティ対策
Webサーバーの運用管理も大事な対策
Webのセキュリティを考える際に、もう1つ考えておかなければならないことがあります。それは、Webでの情報漏えいは瞬時に広まっていくという点です。一度広まってしまった機密情報は、完全な回収がほぼ不可能であり、また損害規模も莫大(ばくだい)なものになります。
例えば、Webサーバーの公開ディレクトリに、どこからもリンクされていないからといってアクセス制御をせずに機密情報を置いておくことは大変危険です。ファイル名がばれてしまったら、その情報にだれでもアクセスできるからです。いまだにこのようなことで情報漏えい事故が発生しています。
まずは、Webサーバーを安全に運用するために、一度下記の項目を確認してみましょう。
- ログインできる人を把握しているか?
- 管理者権限になれる人は限られているか?
- セキュリティ・パッチを適用して最新の状態に保っているか?
- 公開ディレクトリにデータや設定ファイルを置いていないか?
- 不要なデーモン/サービス・プロセスが動作していないか?
- (Linuxのiptablesなどで)不要なパケットを遮断しているか?
Webサーバーは、インターネットに公開すると世界中からアクセス可能な状態になります。手軽に公開できるため、そのぶん、慎重に対応しなければなりません。インターネットからのアクセスを許可するポートを制限する(HTTPの標準ポートは80/TCP、HTTPSの標準ポートは443/TCP)ことで、外部からのアクセス経路を最小限にしてください。
自社で安全にサーバーを運用するのが難しい場合は、サービス事業者が提供しているレンタル・サーバーを使うのも選択肢の1つです。
未知の脆弱(ぜいじゃく)性にどう対処する?
たとえサーバーの運用管理をしっかりと行っていても、未知の脆弱(ぜいじゃく)性など攻撃者の方が先に発見してしまうセキュリティ・ホールへの迅速な対応は、大変難しい問題です。最近では、このような事態にも対処できるように、WAFの導入が少しずつ進んでいます。
WAFとは、通常のファイア・ウォールとは異なり、アプリケーション層での攻撃パターンを解析して、Webサーバー/アプリケーションを守るものです。商用製品のWAFもここ数年増えています。また、大手クレジット・カード業界が規格化したセキュリティ実装のガイドライン「PCI DSS(Payment Card Industry Data Security Standard)」にWAFの実装が明記されているため、需要が伸びています。
商用のWAFは高価ですが、オープンソースにも、よく知られた攻撃パターンを防ぐものがあります。米Breach Security社が開発している「ModSecurity」です。ライセンスはGPLv2と商用ライセンスのデュアル・ライセンスです。
通常、WAFはインターネットとWebサーバーの間にゲートウエイ型で設置しますが、このソフトウエアはWebサーバー上で動作するホスト型です。Apacheのモジュールとして機能し、インターネットからの入力とWebアプリケーションの間で動作します(図2)。
CentOS 5へ導入するには、上記のサイトからソース「modsecurity-apache_2.5.10.tar.gz」(2009.11現在)を取得してコンパイル、インストールを行います。また、検査ルール・ファイルもコピーしておきます。
また、導入するためにはhttpd(Apache HTTP Server)の設定ファイル「/etc/httpd/conf/httpd.conf」に下記の記述を追記する必要があります。同時に、mod_unique_idも有効にする必要があります。追記したら、httpdを再起動します。
下記のコマンドを実行して、「security2_module」が表示されていれば導入完了です。
ModSecurity2は、SQLインジェクションやXSS(Cross Site Scripting)、OSコマンド実行などの悪意のあるリクエストからWebサーバーを守ります。
しかしながら、これらの対策は脆弱(ぜいじゃく)性を修正するまでの時間稼ぎの意味合いが強いので、Webアプリケーションへの根本的なセキュリティ対策がもっとも有効な手段であることを忘れてはいけません。
次ページでは、プロキシ(Proxy、代理アクセス)・サーバーなどを用いてアクセス制御やログ記録を実現する方法を解説します。