...

Lotus Domino サーバーを社外向け インターネットサーバーとして利用する際の考慮点 日本アイ・ビー・エム株式会社 ソフトウェア事業

by user

on
Category: Documents
118

views

Report

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
Fly UP