ドリンクバーゲン会場

サーバーのセキュリティ設定2009年11月26日 10時35分15秒

アップグレードしたサーバーでテストを行うのですが、Webアプリなので、なにもしていないとどこからでも参照できる状態になっていてあまりよくないため、接続に関する設定をいれていきたいと思います。

必要な機能は2つです。
このふたつの機能は本番環境でも利用していくものです。
まず1つ目は、SSLの設定です。
現在の教務システムでもネットワーク越しにデータのやり取りが行われているのですが、実際には暗号化されておらず、情報がすべて丸見えなのですが、古いパッケージソフトなのでそういったことが考慮されていません。

やはり作る以上最低限のセキュリティは必須と考えますので、通信はSSLに統一する方向で考えています。

IIS7のIISマネージャーでは、「サーバー証明書」という項目があり、証明書を管理できるようになっています。
サーバー証明書は外部の機関から購入するのが基本ですが、ここでは自己署名入り証明書を作成します。

自己署名入り証明書はIISマネージャーで簡単に作成できるようになっています。
証明書ができたら、「バインドの編集」でSSLの設定を行います。
「バインドの編集」画面は、「Default Web Site」でマウスの右クリックをすると、メニューの中にあります。

「追加」ボタンを押して、種類を「https」に変更すると、「SSL証明書」の項目が出てくるので、作成した証明書を選択し、「OK」ボタンで登録完了です。

これでSSLでの接続ができるのですが、一覧の中には通常の「http」の設定もあるため、削除します。
これでテスト環境では、暗号化されたデータしかやり取りできなくなりました。

2つ目の設定は接続先を制限することです。
職場ではPCのアドレスは固定されており、部署ごとに決められています。
そこでIPアドレスで接続を制限するように設定を入れていきます。

この設定は「IPおよびドメインの制限」で行うのですが、項目が表示されていない場合は、追加する必要があります。

サーバーマネージャーの「役割」から、「役割サービスの追加」を選択し、一覧の中から「IPおよびドメインの制限」にチェックを入れてインストールを行います。

これでIPアドレス単位に制限をかけることができるようになります。
「IPおよびドメインの制限」を開き、まず「機能設定の編集」をクリックします。
「特定できないクライアントのアクセス」が通常「許可」担っているので、「拒否」に変更します。
これでだれでも接続できる状態から、接続できない状態に変えました。

次に「許可エントリの追加」で接続できるIPアドレスを登録していきます。特定のIPアドレスを入れることもできますし、範囲で指定することもできます。

この制限は、サイト全体ではなく、アプリケーション単位に行えるので、部署単位にアプリケーションを作成してその部署でしか使えないように設定できます。
今後本番環境でも部署単位の制限をかける予定にしているので、この設定を使って対応していきたいと思います。

IPアドレスによるIISの接続制限2008年03月08日 09時21分22秒

通信の暗号化は出来ましたが、Webアプリの場合ブラウザがあれば、通常はだれでもサイトにアクセスできる状態になっています。

しかし、誰でもアクセスできる状況というのは好ましいことではありません。
ソフトの場合は使うパソコンのみにインストールすればよいのですが、Webアプリの場合は、クライアントPCにソフトをインストールするわけではないので、サーバー側で制限することになります。

学校で使われているコンピューターはDHCPは使われておらず、IPアドレスが固定されていますので、IPアドレスによる制限をかけて、使えるパソコンを制限します。

IISマネージャーを起動し、サイトのプロパティを開きます。
「ディレクトリセキュリティ」のタブを開き「IPアドレスとドメイン名の制限」の編集ボタンを押します。

初期設定は、すべてのコンピュータからのアクセスを「許可する」に設定されていますが、「拒否する」に変更し、アクセスできるパソコンのIPアドレスを、
「追加」ボタンで追加していきます。

画像では、3台のパソコンを許可しています。
ホストOSのアドレス、仮想マシンのサーバー、仮想マシンの開発用OSに接続許可を与えました。
それ以外のパソコンからはアクセスできなくなります。

IISで使うサーバー証明書の作成2008年03月07日 14時18分14秒

Webアプリでセキュリティを考えると、SSLによる暗号化は外せないとおもいます。


SSLによる暗号化を行うには、サーバー証明書が必要になります。
正式な証明書の発行は、証明書の発行機関で発行してもらうのですが、
テスト用の環境で正式な証明書を発行してもらうのはお金もかかるので、
自分で作成していきます。

IISでは、サーバー証明書を発行するためのツールがあります。
以下のサイトから、ダウンロードが可能です。

http://www.microsoft.com/downloads/details.aspx?FamilyID=56FC92EE-A71A-4C73-B628-ADE629C89499&displaylang=en

インストールすると、スタートメニューに「IIS Resources」が追加されます。
その中に、「Self SSL」がありますので、起動してください。

コマンドプロンプトが表示されると思います。
画面の最後にサンプルが表示されていると思います。
selfssl.exe /N:CN=VM-WS2003 /K:1024 /V:7 /S:1 /P:443

このコマンドを実行すると、サーバー証明書が発行されます。
オプションは /N:CN=サーバー名 /K:サイズ /V:有効期間 /S:サイト番号
/P:ポート番号
となっています。

このまま実行しても問題ないのですが、有効期間が7日では短いので、
1年に変更します。
この場合は、/V:365にすればOKです。
selfssl.exe /N:CN=VM-WS2003 /K:1024 /V:365 /S:1 /P:443
で実行しました。

IISマネージャでSSLポートに443と表示されていれば、登録完了です。
「プロパティ」の「ディレクトリセキュリティ」を開いて、「証明書の表示」を開くと、証明書の内容を確認することができます。

SSLでの接続を確認するために、httpsで接続します。
ただし、この証明書は正規の証明書ではないため、警告がでますが、
気にせず続けてください。
表示がでれば完了です。

今度は逆にhttpで接続を試みます。
保護されている場合は、httpsで接続するように警告がでます。

これで暗号化での通信ができるようになりました。
外部のネットワークにつなくわけではありませんが、
個人情報を扱う場合は、暗号化は必須になると思います。