質問: 下記のような3層構造のWEBサービスがあった場合 ・WEBサーバ(ホストA ip:133.XXX.XXX.XX1) ・APサーバ(ホストB ip:133.XXX.XXX.XX2) ・DBサーバ(ホストC ip:133.XXX.XXX.XX3) クライアントからWEBサーバに対して要求が起こり WEBサーバからAP、DBサーバに対して通信が起こり 結果をWEBサーバからクライアントに返すと思うのですが この場合に、ユーザがAPサーバやDBサーバのIPアドレスを 特定する方法はあるのでしょうか? 今まで私はWEBアプリケーションを作るとき 上記のWEB,AP,DBサーバをすべて1つのサーバで行っていました。 セキリティを強固にするために、サーバのIPアドレスが分からない方がいいのかと 思って上記の疑問がわきました。 1つのサーバですべて管理した場合、IPアドレスは既知です。 SSH接続をパスワード認証方式でポートを22にして全体に公開していた場合 パスワードさえわかれば、誰でもサーバにログインして色々できてしまうと思います。 (普通、鍵認証にするし、ポートも変えるかもしれませんが) 3層構造にしたとき、AP、DBサーバのIPアドレスを隠蔽?できるのかなと思い質問しました。 よろしくおねがいします。
回答: IPアドレスが特定されるか?という観点では、使用しているアドレスが連番であるということからそれほど低い可能性ではないと思います。 また、ポートスキャンの結果から、ある程度の役割がバレてしまう可能性もゼロではないかと。まぁ、このへんは、ネットワーク/サーバのセキュリティ設計次第なので、可能性があるってだけですけど。 対策はすでに ockeghem さんが記述してますが、グローバルにある必要のないサーバはプライベートに隠してしまうことです。 ファイアウォール/ロードバランサ等を組み合わせたセキュアな構成は、ワリと検索もしやすいので、探してみるとイイです。 AWS 等のクラウド上では、非常にお手軽に試すことが可能なので、実践してみても面白いと思います。