WebDAV時代のセキュリティ対策[後編]
包括的な対策テクニック

前編では各メソッドの動作や制限方法について解説した。後編ではより包括的な手段によるセキュリティ対策を検討する。Apacheの設定が中心だが、mod_dav固有の注意点やSquidを使う方法についても紹介する。

宮本 久仁男<kmiya@coe.nttdata.co.jp>
NTTデータ COEシステム本部
システム技術開発部第三技術開発担当
2001/12/22

レイヤの概念とセキュリティ

 以前の特集で、「レイヤ4以下を安全にしておけば」(図1)ということを述べました。

図1 下位レイヤをセキュアにすれば上位も安全だが、あくまで一般論

 しかし、レイヤ4以下が「守られた」ネットワークの「中から」のアタックは回避のしようがありません(図2)。

図2 リクエストがレイヤ3や4レベルで通過してしまった(セキュアなネットワークの内部で何らかの不正アクセスが試行される)場合、WebDAVサーバの認証/アクセス制限のみが頼り

 また、セキュリティ製品の中にはIDS(侵入検知システム:)に代表されるような、レイヤ5以上についても通信内容を監査することが可能なものもあります。しかし、そのような製品は概して高価であり、機能的にも必要以上のものが備わっていることが多く、WebDAVサーバに対する攻撃を保護するだけに導入するのでは割高感は否めません。

:IDSについては、不正侵入対策最前線(後編)で詳細に述べられています。

 単にメソッドの種類だけでフィルタをかけるのであれば、リバースプロキシとして利用可能なプロキシサーバ(例えばSquid)を使って、アクセスコントロールリスト(リスト16)を定義したりURLフィルタ(リスト17)を実施する方法も使えます。

acl davaccess method PROPFIND,PROPPATCH,DELETE,MKCOL,PUT,COPY,MOVE ←ACLを定義
http_access allow davaccess 192.168.0.0/24 ←上記ACLに対して192.168.0.0/24なネットワークからは許可
http_access deny all ←それ以外はすべて禁止
リスト16 ACLの定義

acl davaccess url_regex davauth ←davauthという文字列が含まれるURLに対してACLを定義
http_access allow davaccess 192.168.0.0/24 ←上記ACLに対して192.168.0.0/24なネットワークからは許可
http_access deny all ←それ以外はすべて禁止
リスト17 URLフィルタの設定

 オープンソース/商用製品を問わず、いろいろなプロダクトがあるので、手間とコストを考え合わせてベストなものを選んでください。

mod_dav固有のセキュリティ対策

 WebDAV Resourcesには、mod_davの情報が掲載されています。その中にはセキュリティに関する項目も並んでおり、やはり真っ先に認証の必要性が説かれています。それ以外にもmod_dav固有の対策などについて触れられているので、この場を借りて簡単に紹介しておきます。

 基本的に、WebDAVのプロトコル仕様以外でセキュリティホールになり得る部分はXMLパーサ周辺の処理やDepthヘッダの指定の部分です。XMLについては、巨大なXMLボディを送信されることによる資源の占有(DoS)に関して(図3)、Depthヘッダについては、Depth: Infinityを指定してのPROPFINDリクエストでメモリを大量に消費することがある(図4)という点に触れられています。

図3 リクエストが完了するまでメモリは保持されたまま

図4 コレクションの階層が深ければ深いほどダメージ大

 これらの事象は、基本的には避けるような構造(初期設定)になっています。XMLボディのサイズについてはLimitXMLRequestBodyディレクティブの指定(デフォルト値は1000000bytes)で、Depthリクエストの値についてはDAVDepthInfinityディレクティブの指定で変更可能です。ただし、これらのディレクティブを変更した場合、相応のリスクが発生するので気を付けて運用することをお勧めします(もちろん、変更せずに運用できればそれに越したことはありません)。

 もちろん、HTTPリクエストそのもののサイズもApacheの設定で制限することが可能です。この場合、LimitRequestBodyディレクティブを指定しますが、問答無用ですべてのメソッドが制限されます。PUTで書き込むファイルサイズなども自動的に制限されることになるので設定する場合は注意してください。

包括的なメソッド制限の設定

 前編で紹介したメソッド別の対策において、<Limit>ディレクティブを使用した個々のメソッドの制限方法について述べました。

 しかし、今後WebDAVの規格が新たに制定されるにつれてメソッドも増えることは十分考えられます(というか増えます)。その都度新しいメソッドに対する設定を追加してもよいのですが、たいていのメソッドは不特定多数に実行させる性質のものではありません。そこで、<LimitExcept>ディレクティブを利用して特定のメソッド「以外」に制限をかける方法を紹介します。この方法は、mod_dav installation(http://www.webdav.org/mod_dav/install.html)にも紹介されています。そのドキュメントには「指定しないものについては暗に制限をかけたことになる」といった記述があり、メンテナンスの手間を減らす意味でも使用する価値があります。

 例えば、リスト18のように設定するとGET、HEAD、OPTIONS「以外」のメソッドを使う際は認証が必要になります。

<Location /davauth>
       DAV     on
       AuthUserFile     /home/kmiya/htpwd/user.pwd
       AuthGroupFile    /dev/null
       AuthName         DAVhome
       AuthType         Basic
       <LimitExcept GET HEAD OPTIONS> ←GET、HEAD、OPTIONS以外を制限
           Require user wakatono
       </Limit>
</Location>
リスト18 LimitExceptディレクティブによる制限

 この例ではベーシック認証による制限をかけていますが、後述するダイジェスト認証も利用可能です。

 ちなみに、ここまでは各メソッドに制限をかける方向によるブロック方法を説明しましたが、Webサーバのユーザー権限ではリソースを操作できないようにする(例:オーナーを変更する)ことでも防御は可能です。ただし、この場合はWebDAV経由でのリソース操作ができなくなることにもつながるので、絶対に操作しないと確信できるもの以外は権限を変更しないでください。

前編へ
1/3

Index
WebDAV時代のセキュリティ対策[後編]
 包括的な対策テクニック
Page 1
レイヤの概念とセキュリティ
mod_dav固有のセキュリティ対策
包括的なメソッド制限の設定
  Page 2
ベーシック認証の危険性 ダイジェスト認証の勧め
 盗聴に弱いベーシック認証
 Apache 1.3.22のダイジェスト認証対応化
まとめ
 WebDAV日本語情報について
  Page 3
Appendix
 今回利用したツール 〜Network Grep〜
 ngrepのインストール
 まずは使ってみよう
 実際に文字列パターンなどを指定したキャプチャの仕方

Linux Square全記事インデックス


 Linux Squareフォーラム WebDAV関連記事
特集:次世代プロトコルWebDAVの可能性[前編]
技術仕様徹底解説

将来、SambaやCVSを不要にする可能性を秘めた「WebDAV」。このプロトコルの仕様から実用化までを徹底解説。今回は、技術仕様を明らかにする
特集:次世代プロトコルWebDAVの可能性[中編]
WebDAVクライアント/サーバ環境の構築
WebDAVの実装はすでに存在する。LinuxによるWebDAVサーバの構築とクライアントの整備を行い、実際に使ってみよう
特集:次世代プロトコルWebDAVの可能性[後編]
日本語ファイル名の利用とバージョン管理
日本語ファイル名を扱えるようにするほか、WebDAVの「V」を司るバージョン管理機能を実現。WebDAV解説完結編!
特集:WebDAV時代のセキュリティ対策[前編]
WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる
特集:WebDAV時代のセキュリティ対策[後編]
WebDAVの使用に際し、包括的な対策を行っておくのも重要である。何をどのように設定すればよいのかをここで明らかにする
特集:Apache 2.0でWebDAV
Apache 2.0の正式リリースでWebDAVも新たな段階に入った。一方で、1.3時代のmod_encodingがうまく機能しないという問題も浮上した
特集:Subversionによるバージョン管理
DeltaVがRFCとしてリリースされ、WebDAVのバージョン管理機能も足元か固まった。DeltaVの実装である「Subversion」を導入しよう
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間