Lotus Domino サーバーを社外向け インターネットサーバーとして利用する際の考慮点 日本アイ・ビー・エム株式会社 ソフトウェア事業
by user
Comments
Transcript
Lotus Domino サーバーを社外向け インターネットサーバーとして利用する際の考慮点 日本アイ・ビー・エム株式会社 ソフトウェア事業
® IBM Software Group Lotus Domino サーバーを社外向け インターネットサーバーとして利用する際の考慮点 日本アイ・ビー・エム株式会社 ソフトウェア事業 Lotusテクニカル・セールス IBM Software Group | Lotus software 特記事項 本資料の記載内容は、正式な IBM のテストやレビューを受けておりません。内容に ついて、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の 保証も責任も負いかねます。本資料の情報は、使用先の責任において使用される べきものであること、あらかじめご了承ください。 当資料は、日本アイ・ビー・エム株式会社で実施したテスト結果に基づいて作成し ておりますが、パフォーマンスを含め一切の保証をするものではありませんので、予め ご了承下さい。 掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する 事はご遠慮ください。 本資料の著作権は日本アイ・ビー・エムにあります。非営利目的の個人利用の場 合において、自由に使用してもかまいませんが、営利目的の使用は禁止させていた だきます。 IBMはIBM Corporationの商標。Lotus、Lotus Notes/Domino、iNotes Web Access、Domino Web Access、Instant MessagingはIBM-Lotusの商標。その他 記載された社名および製品名は、それぞれ各社の商標または登録商標です。 2 IBM Software Group | Lotus software アジェンダ セキュリティーを考慮したサーバー配置構成 ・・・・・・・・・・・・・・・・・・・・・・・・・ P.4 Lotus DominoをWebサーバーとして利用する際のセキュリティー考慮点 ・・・・ P.7 Webサービスとドミノアプリケーション ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ P.19 Javaアプリケーション連携 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ P.23 3 ® IBM Software Group セキュリティを考慮したサーバー配置構成 IBM Software Group | Lotus software Lotus DominoをExtranetに公開する場合の一般的な構成 DMZ Internet Internet イントラネット HTTP 80 NRPC 1352 複製 HTTPS 443 Notes 公開用 Dominoサーバー コンテンツ登録用 Dominoサーバー HTTPタスク起動 F/W 5 F/W IBM Software Group | Lotus software より高度セキュリティを実現する構成(3階層) 非セキュアDMZ セキュアDMZ HTTP 80 HTTP 80 HTTPS 443 HTTPS 443 Internet Internet 6 NRPC 1352 複製 Notes 公開用 Domino 6 サーバー IHS / IIS with WebSphere Plug-in F/W イントラネット コンテンツ登録用 Dominoサー バー HTTPタスク起動 F/W F/W ® IBM Software Group Lotus Domino を Web サーバーとして利用する際の セキュリティー考慮点 IBM Software Group | Lotus software 不要なデータベースの削除 不要なDBを削除することによって、運用レベルでの設定ミス、操作ミスがセキュリティーホールにつな がらないようにする ACL管理 データベース監視 ファイルディレクトリ管理 etc.…. 絶対に削除してはいけないDB log.nsf names.nsf catalog.nsf admin4.nsf 管理者のメールファイル 8 IBM Software Group | Lotus software サーバーアクセス設定上の考慮点(1) サーバー文書の「セキュリティ」タブ→「サーバーアクセス」項目→「サーバーへのアクセス不可」のフィール ドではインターネットユーザーのアクセス制限を設定できないので注意 Webクライアントからの匿名アクセスはデフォルト設定では「はい」 サーバー文書の「ポート」→「インターネットポート」→「Web」で設定 インターネット経由でNotesクライアントがアクセスしてくる可能性もありえます Firewallでポート1352Inboundを閉じる 管理目的でNotesクライアントを利用する必要がある場合は、クライアント側のIPアドレスを限定する サーバー文書の「セキュリティ」→「セキュリティ設定」での設定 「ドミノディレクトリにあるパブリックキーと比較」の設定を有効にする 「匿名でのノーツ接続を許可」の設定を「はい」にしない 「パスワードチェック」を「はい」にする サーバー文書の「セキュリティ」→「サーバーアクセス」での設定 「このディレクトリに登録されているユーザーのみにサーバーアクセスを許可」を「はい」に設定 • • • • 9 相互認証をしていてもアクセス拒否されるので注意 ローカルドメインサーバーもアクセスできなくなるので注意→「サーバーへのアクセス可」で設定 匿名でのノーツ接続が拒否されるので注意 「いいえ」に設定する場合は退職者などを「アクセス禁止」グループに登録する IBM Software Group | Lotus software サーバーアクセス設定上の考慮点(2) 「ブラウザからのサーバー管理」 インターネット向けサーバーでは極力利用しないこと • • • • ユーザーIDとパスワードが盗まれたらアウト! どうしてもブラウザからサーバー管理を行なう必要がある場合はx509証明書を使用してクラ イアント認証とSSLを併用すること webadmin.nsfファイルは削除してもHTTPタスクが起動すると自動生成されるため、DBの 削除はセキュリティ対策にならない Webブラウザからのアクセスを完全に拒否するためには、ACLで「Webユーザーによるアクセ スの上限」を「なし」に設定 「Webサーバー認証」 ユーザー認証を行なうサイトでは「強いセキュリティーで少ない名前のバリエーション」が推奨 「弱いセキュリティと複数の名前のバリエーション」が設定されている場合、同姓のユーザーが容 易に不正認証されてしまう可能性があります 10 IBM Software Group | Lotus software ACL設定上の考慮点 制限をかけてから解除していく、という方針で考える システム系のDBは基本的にWebユーザーがアクセスする必要はない すべてのDBに対してAnonymousのエントリをACLに追加 Anonymousが登録されていない場合は-Default-扱い Anonymous > -Default 匿名アクセスを制限するためにはアクセス権限を「なし」に設定 -Default-の設定も忘れずに Anonymousの設定ばかりに気をとられ、見落としがちな項目 ユーザー認証後はAnonymousではなく-Default-が適用されます Webユーザーによるアクセスの上限 データベースごとにACLの上限を設定して(例えば通常は管理者までのところを作成者を最上位権限に設 定することが可能)、ACL設定変更時のミスなどに対応できます ACLでのユーザーの種類の設定 同じ名前のユーザー文書とグループ文書が存在した場合、ユーザーの種類を指定してないと、上位のアクセ ス権限が与えられてしまう可能性があります。 Anonymousは種類の設定不要(Anonymousというグループ文書が存在しないことが前提) 11 IBM Software Group | Lotus software システム系データベースでの注意点 システム系のDBは基本的にWebブラウザからアクセスする必要はないため、Webユーザーがアクセスで きないようにACLを設定します -Default- の権限は「なし」 Anonymousの権限は「なし」 ACL設定基本パネル右側にあるチェックボックスの項目もすべてはずす ACL設定項目「Webユーザーによるアクセスの上限」を「なし」に設定 ドミノディレクトリ(names.nsf) Webユーザーが直接参照できないようにする ユーザー文書にIDを貼り付けない カタログ(catalog.nsf) サーバー上のファイルシステム情報があるため、参照されないようにする ドメイン検索を有効にしている場合は、検索するユーザーに対して「投稿者」の権限を与える ログ(log.nsf)/ドミノWebサーバーログ(domlog.nsf) サーバーの様々な情報が記録されるため参照されないようにする ルーターのメールボックス(mail.box) メールを使わなければ削除可能 -Default-=「投稿者」、Anonymous=「なし」が推奨 12 IBM Software Group | Lotus software インターネットパスワードについて WebユーザーがLotus Dominoサーバーにアクセスする際には、基本認証の仕組みを使っ て、ドミノディレクトリ上のユーザー文書内ある「インターネットパスワード」フィールドの値をも とにユーザー認証が行なわれます 「インターネットパスワード」の値は32バイトのハッシュ文字列として保管されます このハッシュ値はある文字列に対して常に同一であるという弱点があるため、以下の点を 考慮する必要があります 基本的にエンドユーザーがドミノディレクトリにアクセスできないようにする • Webユーザーが自分以外のユーザー文書のハッシュ値を得るためには、「編集者」以上の 権限が必要 • 不特定多数のNotesクライアントからのアクセスに対しては匿名アクセスの拒否で対応可 能 社内Notesクライアントユーザーが不当に他ユーザーのインターネットパスワードハッシュ値を取 得しようとした場合 • • 13 編集者権限があれば取得できてしまう ディレクトリプロフィール文書で「強固なパスワード形式」を有効にしてインターネットパス ワードフィールドを暗号化する IBM Software Group | Lotus software エージェントについて WebエージェントはACLの権限「なし」であっても「パブリック文書」のアクセス権限があれば 実行可能なので注意 不要な共有エージェントは削除する Webから実行する必要のないエージェントはエージェントのプロパティで非表示にする 14 IBM Software Group | Lotus software その他の設定について 認証体系と相互認証 インターネット向けのサーバーでは社内の認証体系と別の認証を利用することが推奨 • • 社内で使用しているIDでインターネット向けサーバーにアクセスできないようにする 組織やシステムの変更に柔軟に対応可能 認証を分けると相互認証をする必要があるが、ACL管理が複雑になるため注意 データベースの暗号化/サーバーIDへのパスワード設定 OSレベルで侵入されてファイルレベルで盗まれた場合の対策として DBの暗号化はパフォーマンスとのトレードオフ 15 IBM Software Group | Lotus software アプリケーションレベルでのセキュリティ対策(1) Webアプリケーションの場合、URLレベルでビューや文書にアクセス可能なため、Notesクライア ント向けのアプリケーションレベルでのアクセス制御手法が適用されない点に注意 データベースプロパティの起動オプション Webの場合URLを直接入力することによって、通常Notesクライアントからはアクセスできないような 文書や非表示ビューにアクセスできるため、DBプロパティの起動オプションやナビゲーターの表示で のアクセス制御はできない 非表示ビュー URLコマンドからビューの一覧や非表示ビューにアクセス可能 • • • • 16 読者フィールドや作成者フィールドを使用してアクセス制御を設定 必要のないビューは削除 ビューは極力非表示に設定(ブラウザのみで非表示にする設定も可能) 必要に応じてフィールドレベルの暗号化を実施 IBM Software Group | Lotus software アプリケーションレベルでのセキュリティ対策(2) エージェント サーバーCPUへの負荷が比較的高いため、DoSの対象となりやすい エージェント名がわかってしまうと、?OpenAgentコマンドでURLから実行可能なため注意 アプリケーションレベルでエージェントを実行する前に正当な前段階を踏んでいるかどうかを判断す るロジックを組み込むことによって、URLで直接エージェントを実行できないようにする @Password関数を使用したカスタム認証機能 アプリケーションレベルで認証機能を実装している場合も、パスワードフィールドがハッシュ値であるこ とに注意 フィールドを暗号化するなどして対応する JavaScriptを使ってパスワード認証をクライアント側で実施するようにしてしまうと、クライアント側で 細工される可能性があるため、認証は必ずサーバー側で行なうようにする 17 IBM Software Group | Lotus software アプリケーションレベルでのセキュリティ対策(3) CORBA/IIOP ACLの設定範囲内でオブジェクトレベルで自由にデータアクセスが可能 • • 計算式による非表示機能が無効になる 「HTTPクライアントからのデータベース参照を許可」の設定を必ず「いいえ」にする CORBA/IIOPを利用しない場合はDIIOPタスクを起動しない 利用する場合は可能な限りフィールドレベルでACLを設定する ユーザー名やパスワードはハードコーディングしない 18 ® IBM Software Group Webサービスとドミノアプリケーション IBM Software Group | Lotus software Webサービスでの Lotus Domino サーバーの役割 Webサービス利用者として Lotus DominoアプリケーションはWebサービスを利用可能 • • Javaエージェントから Javaサーブレットから Webサービス提供者として Webサービスインターフェースを作成することによって、リモートユーザーやWebサーバーが WebサービスクライアントとしてLotus Dominoサーバーにアクセスすることが可能です 20 IBM Software Group | Lotus software Webサービスを利用する場合 Notes or Domino Agent Web Service SOAP4J HTTP SOAP Java API SOAP Connect for LotusScript LS2J を利用してSOAP4Jをコール 21 IBM Software Group | Lotus software Webサービスを提供する場合 Domino Backend classes SOAP Web Agent •Webエージェント LotusScript Library NSF 22 WS Client −SOAPリクエストのパース −スクリプトライブラリから処理に 必要な関数を呼ぶ −SOAPレスポンスを返す •スクリプトライブラリ −SOAP要求で指定される名前 でスクリプトライブラリを作成 −任意の標準ロータススクリプト 関数をカプセル化する目的 ® IBM Software Group Javaアプリケーション連携 (WASを利用した場合) IBM Software Group | Lotus software 構成パターン 同じサーバー上でのWebSphereのJavaコードからローカルのドミノJavaメソッドの コール(NRPC) ローカルのLotus Dominoサーバーに接続 リモートのLotus Dominoサーバーに接続 リモートサーバー上でのWebSphereのJavaコードからリモートのドミノJavaメソッ ドのコール(DIIOP) 24 IBM Software Group | Lotus software NRPC(ローカルアクセス) WASと同一筐体上にNotesクライアント(またはLotus Dominoサーバー)を導入 し、Notes.jarを通してNRPCで接続を行う Notesクライアントがアクセスする場合と基本的に同じ仕組み 接続先サーバーをローカルに置くかリモートに置くかの選択が可能 HTTPリクエスト Domino WAS HTML Notes Domino .nsf Notes.jar 25 NRPC NRPC .nsf IBM Software Group | Lotus software NRPC接続の設定方法 実行環境 WASの筐体にLotus Notesクライアント/Lotus Dominoサーバーを導入 環境変数の設定 • PATH= に …¥Lotus¥Notes を追加 WASがアプリケーション実行時にNotes.jarを参照するよう設定 • • …¥WebSphere¥AppServer¥bin 以下にNSCO.jarを配置 WAS環境設定ファイル(admin.conf)の設定(WAS V5より前の場合) − com.ibm.ejs.sm.adminserver.classpath= に …¥Lotus¥Notes¥Notes.jar を追加 開発(コンパイル)環境 環境変数の設定 • 26 CLASSPATH= にNotes.jarを追加 IBM Software Group | Lotus software NRPCでローカルの Lotus Dominoサーバーに接続 特徴 現行の環境への影響が少ない ローカルのドミノディレクトリで認証する方式と、ローカルのノーツクライアントのユー ザーIDで認証する2つの方法が可能 ドミノディレクトリで認証する方式にすれば、ユーザーの特定も可能 注意すべき点 1DBへの書き込みは一度に一件のみ(読み込みは複数可能) WASとLotus Domino を同一筐体上に置くため、キャパシティプランニングが複雑 になる データベースの複製 • • 27 ローカルの Lotus Dominoサーバー上のデータベースにアクセスするため、アプ リケーションで使用するデータベースは全てローカル Lotus Dominoサーバー上 に複製しておく必要がある 更新があるデータベースの場合、複製間隔や文書の競合などを考慮する必 要がある IBM Software Group | Lotus software NRPCでリモートの Lotus Dominoサーバーに接続 特徴 現行環境への影響が少ないが、現行サーバーにアクセス数が増加する分の考慮 が必要 パフォーマンスが良い 注意すべき点 Notesクライアントを使用して接続するためユーザーIDが固定される • NotesDBへの書込み時の履歴など、ユーザー名が必要な場合、アプリケー ション側でユーザー名を解決する必要がある ユーザーIDの解決方法 • 28 IBMSessionの使用 − WASで提供されている、 com.ibm.websphere.servlet.session.IBMSessionインターフェースの getUserNameメソッドを使用することによりユーザー名の解決が可能 IBM Software Group | Lotus software NRPCでリモートのLotus Dominoサーバーに接続(続き) 注意すべき点(続き) アクセス権のチェック • • ユーザー名が解決されても、NotesDBのACLや文書のリーダーフィールドでは Notesクライアントから接続している固定ユーザーとして認識 アプリケーション側で取得したユーザー名を基にチェックを行う必要がある 1DBへの書き込みは一度に一件のみ(読み込みは複数可能) クライアントのアクセス数が増える分のキャパシティプランニングは必要 29 IBM Software Group | Lotus software DIIOP(リモートアクセス) ユーザーはWASにアクセス WAS上にIIOPクライアントスタブ(NCSO.jar)を設定し、IIOPを利用して接続す る Lotus Domino 6からはNCSOW.jarは使用できないので注意が必要 まずHTTPでLotus Domino サーバー上のdiiop_ior.txtファイルにアクセスし、その 後、DIIOP接続を行う diiop_ior.txt…サーバーのIOR (Interoperable Object Reference) ¥Domino¥data¥domino¥html 以下に配置 HTTPリクエスト Domino WAS ① HTML ② NCSO.jar ③ 30 HTTP DIIOP diiop_ior.txt .nsf IBM Software Group | Lotus software DIIOP接続の設定方法 実行環境(WAS) OS環境変数の設定 • CLASSPATH= に ¥<NCSO.jarの配置ディレクトリ>¥NCSO.jar を追加 WASがアプリケーション実行時にNCSO.jarを参照するよう設定 • • …¥WebSphere¥AppServer¥bin 以下にNSCO.jarを配置 WAS環境設定ファイル(admin.conf)の設定(WAS V5より前の場合) − com.ibm.ejs.sm.adminserver.classpath= に ¥<NCSO.jarの配置 ディレクトリ>¥NCSO.jar を追加 実行環境(Domino) HTTP/DIIOPタスクの稼動 サーバー文書[セキュリティー]タブでの適切なユーザー権限の付与 開発(コンパイル)環境 環境変数の設定 • 31 CLASSPATH= に ...¥Lotus¥Notes¥Data¥domino¥java¥NCSO.jar を 追加 IBM Software Group | Lotus software DIIOP 特徴 WAS上にクライアントモジュールが不要 アクセスするユーザーの特定が可能 1DBに対する書き込み、読み込みとも複数同時に実行可能 32 IBM Software Group | Lotus software DIIOP 注意すべき点 WebサーバーへのAnonymousアクセスが許可されている必要がある • • • 33 まず最初にHTTP接続でAnonymousでdiiop_ior.txtファイルにアクセスしようと する − Anonymousアクセスを許可してないと、401エラーがサーブレットに返さ れる 接続先サーバーのdiiop_ior.txt の中身が取得可能なら、NotesFactory クラ スのcreateSessionWithIORメソッドを使用することでAnonymousアクセスが 不許可の状態でもアクセスすることができる Lotus Domino 6.5ではセッション作成時に createSession( hostname:diiop_portNo , user , password )を使用す ることで、HTTPサーバーが立ち上がっていなくても使用可能 IBM Software Group | Lotus software DIIOP 注意すべき点(続き) 既存サーバーへの影響が大きい • • 新たにDIIOPタスク、HTTPタスクを稼動させるため 充分なシステムテストが必要 サーバー文書[インターネット]-[IIOP]のスレッド数の設定 • • • 3以下に設定した場合(デフォルト値は10)、DIIOPタスクがクラッシュ createSessionメソッド発行時、クラッシュが発生 内部的なスレッドとして少なくとも4つのスレッドが必要なため R5以前での問題点 • 34 WinNT/2000、Solaris − R5.0.9∼R5.0.10ではDIIOPが60セッションでクラッシュ(R5.0.11で修正 済み) − R5.0.7以前ではWASのメモリーリークの問題あり IBM Software Group | Lotus software まとめ(構成パターン一覧) 35 NRPC(ローカル) NRPC(リモート) DIIOP 必要なjarファイル Notes.jar Notes.jar NCSO.jar Notesプログラム クライアントまたは サーバー クライアント なし パフォーマンス 良い 良い 6以降で向上 ユーザーID 指定可能 固定 指定可能 現行サーバーへの影響 小さい 小さい 大きい その他 WASと同一筐体状に IDを特定する場合 SSOの使用が Dominoを導入する 作りこみが必要 可能 必要あり IBM Software Group | Lotus software 適用すべきアプリケーション NRPC(ローカル) アクセス先DBが少ない 接続ユーザーの特定が必要 NRPC(リモート) 複数DBに対する文書の書き込み/読み込みが行われる 厳密な接続ユーザーの特定が必要ではない パフォーマンス重視 DIIOP アクセスするユーザーの特定、制限を行いたい 複数DBに対する文書の書き込み/読み込みが行われる WASとのSSOを実施している 36