IISを用いたWebDAV環境の構築手順です。在宅から容易に会社のファイルサーバーにアクセスができるようになります。
インターネット越しにWindowsファイル共有が利用できるのは非常に便利です。
- インターネットでファイル共有を行いたい
- Windows Server のIISを利用したい
- エクスプローラーでファイルを触りたい
実用的なWebDAV環境について解説されたサイトが全く見つかりませんでした。苦労して構築した手順を惜しげもなく公開します。
WebDAVとは?
HTTP プロトコルを利用した Windows ファイル共有
ざっくり説明すると、WebDAV(ウェブダブ)とはサーバー上のファイルを HTTP プロトコルを拡張して簡単に編集したり削除したりすることができる技術のことです。
社内ネットワークなど閉じられた環境では利用する機会はありません。標準のSMB プロトコルを使えばいいだけです。
昨今は在宅勤務を当たり前になってきたので、インターネット越しにWindowsファイル共有の要望が高くなってきました。
VPNを利用すれば標準設定で何も気にせず利用可能なのですが、VPNがボトルネックになってしまい対応におわれました。
インターネット越しに「エクスプローラ」を用いて Windowsファイル共有 ができると非常に便利です。
インターネット経由で WebDAV を利用するためには
Windows の IIS に WebDAV 機能を追加するだけでは利用できません。Windows の IIS で構築した WebDAV をインターネット経由で利用するには、複数の技術を利用する必要があります。
この条件を見つけ出すまでに非常に苦労しました。
- IIS に WebDAV をインストールする
- HTTPS が使えるようにする
- Windows認証を利用する
- クライアントPCのレジストリを変更する
Windows ファイル共有なのでユーザー認証は必須です。各フォルダ毎にユーザーアカウントによるアクセス権を制御させます。
私の場合は、ユーザー認証とクライアント証明書を利用して2要素認証で運用しています。
リバースプロキシ経由では利用できない
Windowsサーバーをインターネット上に公開するのは気が引けます。IISが原因で過去にハッキングで問題を何度も起こしたことがあります。はっきり言ってサーバー管理者はインターネット上にWindowsを公開したくないです。
WebDAVを利用する場合、Windows認証を利用することになります。このWindows認証がリバースプロキシ経由では正常に動作しません。
ApacheやNginxを使って色々と試しましたがダメでした。有償版だとモジュール提供があるようですがライセンスを持っていないので諦めました。
Microsoft社が大規模にMicrosoft365を展開しているので、更新プログラムを適応することでIISでも安心して利用できると思うことにしました。
この壁を越えられない方は、インターネット経由のWebDAVは諦めてください。
IIS : WebDAV 機能をインストール
IISに WebDAV 機能をインストール
IISにWebDAV 機能をインストールする必要があります。デフォルトではインストールされていないので追加してください。
- 役割:Webサーバー(IIS)
- 機能:WebDAV リダイレクター(要らないかもしれない)
- 役割サービス:WebDAV 発行
- 役割サービス:Windows 認証
1.サーバーマネージャーの「役割と機能の追加」からIISにWebDAV機能を追加します。ついでに必要になる機能も合わせてインストールを行います。
2.サーバーの役割から「Webサーバー(IIS)」にチェックをいれます。
3.機能から「WebDAV リダイレクター」にチェックをいれます。
正直、この機能は不要かもしれません。色々と調べたり、動作チェックを行ったりしましたが明確に可否がわかりませんでした。
ただ、名称から判断すると入れても損はないと思います。
4.役割サービスから「WebDav 発行」「Windows 認証」にチェックをいれます。
「WebDav 発行」が本命のサービス機能です。「WebDav 発行」をインストールすることでWebDAVを使うことができます。
「Windows 認証」はActiveDirectoryと連携してユーザー認証を行います。ユーザー毎のアクセス権に利用します。
5.IISの動作確認を行います。ブラウザでアクセスしてください。サイトが表示されればOKです。
http://localhost
ファイアウォールの設定(表示されない場合)
ブラウザでアクセスするとIISのデフォルトサイトが表示されます。運悪く表示されない場合はファイアウォールの設定を確認します。
コントロールパネルから「World Wide Web サービス(HTTP)」に許可設定を変更します。
IISの WebDAV 機能を有効化
初期状態では、IISのWebDAVは有効化されていません。初めに必ずWebDAVを有効化させてください。慣れてくると、この作業を忘れてハマります。灯台もと暗しです。
仮想ディレクトリの追加
WebDAVで表示したいフォルダは「仮想ディレクトリ」を利用して追加します。仮想ディレクトを利用することでDocumentRootの位置を気にすること無く設定を行うことが可能です。
WebDAV オーサリング規則(アクセス権)
WebDAV オーサリング規則を利用することで、アクセス権を制御することができます。コンテンツとユーザーやグループに対して制御を行うことができます。
今回はトップディレクトリに対して「WebDAV オーサリング規則」設定を行います。仮想ディレクトリ毎に設定を行うことも可能です。
動作確認が目的なのでフルアクセスを設定します。
- すべてのコンテンツ
- すべてのユーザー
- 読み取り・書き込み
ここまでの設定で最低限の設定が完了です。
とりあえず WebDAV の動作テスト
WebDAV 現状の説明
この段階では最低限の設定であり、WebDAVは動作しますが運用するには程遠い状況です。
- HTTPで稼働(HTTPSじゃないのでセキュリティリスク大)
- Windowsドメイン内での動作(インターネット経由では動作しない)
今の段階では、動作することが大切です。
WebDAVを利用してファイルサーバーにアクセスするには2通りの方法があります
- ネットワークの場所の追加
- ネットワーク ドライブの割り当て
どちらの方法を利用しても構いません。好きな方を選んでください。
ネットワークの場所の追加
「ネットワークの場所の追加」からWebDAVで公開されたサーバーを登録します。
動作確認のための設定です。必ずローカルネット環境でテストしてください。FQDNで登録しても認証で失敗します。認証をパスすることができません。
登録が完了するとエクスプローラーがWebDAVを利用してフォルダーを表示してくれます。
ネットワーク ドライブの割り当て
「ネットワーク ドライブの割り当て」からWebDAVで公開されたサーバーを登録します。
動作確認のための設定です。必ずローカルネット環境でテストしてください。FQDNで登録しても認証で失敗します。認証をパスすることができません。
登録が完了するとエクスプローラーがWebDAVを利用してフォルダーを表示してくれます。
インターネット経由で WebDAV を利用する技術
IIS : HTTPSを有効化する
ブラウザでサイトにアクセスする場合は、自己署名の証明書(オレオレ証明書)でも表示することは可能です。
オレオレ証明書の場合、ブラウザでサイトにアクセスすると強制的にアクセスをブロックしてしまいます。ユーザーが操作して証明書エラーを許諾すればサイトにアクセスできます。
しかし、WebDAVの場合は証明書エラーを回避することができません。
WebDAVのアクセスは、エクスプローラーが強制的にブロックしてしまい、解除することができません。必ず公的な証明機関から発行されたサーバー証明書を利用する必要があります。
無料で証明書を発行したい場合は、Let’s Encrypt の証明書を利用してください。
関連記事 IISのHTTPS設定手順:Let’s Encryptを利用したSSL化(win-acme)
Let’s Encrypt 証明書を発行させるための条件を整えてあげる必要がありますが、環境さえできればすごく簡単に導入することができます。
- Windows(IIS) にグローバルIPを持たせること
- DNSにサーバー名が登録できること
- HTTPプロトコルを直接うけられること
また、証明書の更新も自動的におこなってくれるので放置ができるのが一番ありがたいです。
サーバー証明書の登録が確認できたら、SSL通信を必須に設定してください。
TLS 1.3 over TCP の無効化
私の環境(Windows Server 2022 + Windows10)ではTLS1.3を有効化しているとSSLでアクセスするとエラーになってしまいます。ということで無効化させます。
IIS:Windows 認証を有効化
WebDAVを利用する場合はユーザー認証は必須です。WindowsのActiveDirectoryで利用するセキュリティーグループでアクセス制御を行うのが一般的です。
そのために、IISではWindows認証を有効化させる必要があります。
認証の初期値は「匿名認証(認証なし)」になっているので「無効化」させて「Windows 認証」を「有効化」させます。
「匿名認証」を「有効 ⇒ 無効」。「Windows 認証」を「無効 ⇒ 有効」に変更します。
ブラウザでサイトにアクセスしWindows認証が動作することを確認します。
WebDAV FQDN サイトで資格情報の入力を表示
WebDav を使用して FQDN サイトにアクセスした際、使用しているユーザー アカウントがサイトにアクセスするための十分なアクセス許可がある場合でも、資格情報の入力を求めるメッセージが表示されるか、アクセスが拒否されます。
この不具合を回避するためにはクライアントPCのレジストリに書き込みが必要となります。
原因の解説が記載されていますが難しいですね。
Windows Vista 以降の Windows バージョンでは、WebClient サービスを使用して、Windows エクスプローラーが WebDAV リソースと対話できるようにします。 WebClient サービスでは、Windows HTTP サービス (WinHTTP) を使用して、リモート ホストへのネットワーク I/O 操作を実行します。
WinHTTP は、ローカル イントラネット サイトで発生した要求に対してのみ、ユーザー資格情報を送信します。 ただし、WinHTTP は Internet Explorer のセキュリティ ゾーン設定をチェックして、資格情報を自動的に送信できるゾーンに Web サイトがあるかどうかを判断しません。
ようするに「WebDAVでFQDNサイトにアクセスしても資格情報を送信しないから認証に失敗する」とのことです。
WebDAVでアクセスするクライアントPCのレジストリを変更し、資格情報を送信するように設定してください。
- [ スタート] ボタンをクリックし「 regedit」と入力して Enter キーを押します
- レジストリ サブキーを見つけてクリックします
- [ 編集] メニューの [ 新規] をポイントし、[ 複数文字列値] をクリックします
- 「AuthForwardServerList」と入力し、Enter キーを押します
- [編集] メニューの [変更] をクリックします
- [ 値のデータ ] ボックスに、Web 共有をホストするサーバーの URL を入力し、[OK] をクリック します
[値データ ] ボックスには、次の例のような URL の一覧が入力できます。
- https://*.Contoso.com
- http://*.dns.live.com
- *.microsoft.com
レジストリ値はWebClient サービスが利用します。サービスを再起動するか、OSを再起動させないとデータが反映しませんのでご注意ください。
インターネット経由 WebDAV の動作テスト
これで完了です。
インターネット経由でもエクスプローラーを利用してWindowsファイル共有へアクセスができるようになりました。
WebDAV環境は整ったので「WebDAV オーサリング規則」を利用して本来のアクセス権限を設定してください。
あとがき
WebDAVを利用すると、在宅からでも閉域ネットワーク内に構築された会社のファイルサーバーにアクセスができるようになります。
WindowsではWebDAV機能を有効にするだけでは利用できません。色々な技術を利用しながら環境を整える必要があります。
- WebDAVサーバーはグローバルIPを割り当てる
- IISにWebDAV機能とWindows認証機能をインストールする
- SSLを利用する
- WebDAV オーサリング規則を設定する
- Windows認証を有効化する
- WebClient サービス用のレジストリを設定する
理屈がわかれば簡単なんですけど最初からは難しいです。
次は、「ユーザー認証」に追加して「クライアント証明書」を利用した多要素認証を行うWebDAV環境を説明します。