社内LANのWEBサーバ(Win2003/IIS6.0/ASP.NET2.0)から社内LANのDBサーバ(Win2003/SQLServer2005/混合認証モード)へ接続してデータを取得するのに、DBのユーザ名+パスワードをWeb.config内に記述していますが、DMZにあるWebサーバから、社内LANにあるDBのデータを取得する場合では、同様の手法でセキュリティ的に弱いでしょうか?
他の手法があれば、
①上記の手法と比べて、より堅牢か?
②上記の手法と比べて、難易度はどうか?(初心者が勉強しながらやったとして、技術的なハードルはどうか)
の2点の観点からお願いします。
勘違いであればご容赦下さい。
よくわからないのですが、一般にDMZにあるサーバは内部サーバにはアクセスできないのではないでしょうか?
それはさておき、ご心配されているセキュリティの問題として、DMZにあるWEBサーバが、パスワードを平文のWeb.configに持っている点があります。
フォーム認証に使用しているのであれば、暗号化対策があります。
http://www.atmarkit.co.jp/fdotnet/dotnettips/141aspencrypt/aspen...
DMZをどのように作っているかは不明ですが、DMZということはファイアウォールなどにより分割されているものと推測します。
通常は、ファイアウォールにDBアクセスの為だけの穴を、開けるようにすれば、特に問題は無いと思います。
アドレスとポートを指定して穴を開ければ良いんじゃないでしょうか。
LANとDMZは、SonicWallという機械(VPNルータ&ファイアウォール?)で切り分けられています。
インフラ担当は、以前ファイアウォールに穴をあけていて、ユーザsa+パスワードとしていたSQLServerがウィルスに感染して動かなくなったので、穴は開けたくない、といっています。
この時、パスワードは簡単なものだったらしいのですが、パスワードを難しくすれば、単純に感染しにくくなるものなのでしょうか?
そもそも一切の穴が開いていない状態で、ファイアウォール越えの通信は不可能ですから、最低限DBサーバーへの接続ポートは空けなくてはならなくなります。
インフラ担当者の懸念はどちらかというと、通信の信頼性よりもDMZのWebサーバーがセキュリティ的に問題ないのか(セキュリティホールにならないか?)という点なのではないでしょうか。
だとしたら、接続に関して色々考えても、解決にはならないと思います。
実は、Webサーバはftpサーバとしても動作していて、社内LANで開発したASP.NETの発行ファイルをftpでWebサーバにコピーする事でアップしているのですが、
インフラ担当は、社内LANの外部公開用のDBデータも、XMLファイルとしてftpでサーバにバッチかなにかでコピーし、それを見るように開発したらどうか?という内容を提案してきています。
技術的にはできるのでしょうが、素人ながらにあまり一般的な方法ではないのではないか?と危惧しているのですが、この手法もあり、でしょうか?
もし一般的ではなければ、このインフラ担当者に穴を開けるように説得するにはどのような説明をしたらいいのでしょうか。
釈迦に説法かもしれませんが話が見えないので確認の意味で記載します。
WEBサーバが攻撃者の手中に落ちた場合はどのような対策を打ってもWEBサーバに許された権限は行使されます。
つまり、正規ユーザがWEBサーバを通して実行できることは、不正に実行できると言うことです。
DMZエリアにWEBサーバを置く意味は、WEBサーバからアクセスできるルートを限定することで、内部LANへの直接侵入を防ぐことが目的のはずです。
正規利用者が利用できるアクセス以外のアタックを封じることで進入された場合の対策を打ちやすくなります。
ご質問のように、DBサーバにアクセスするためのパスワードを秘匿することは時間的な余裕は稼げますが、有効な手段になり得ないと思います。前回使用されたパスワードがDBマスタのものであったとすると管理上の問題で構成の問題ではありません。
また、インフラ担当の方が提案している方法はDBサーバの必要性を否定しているものではないでしょうか。
公開できるデータだけでWEBサーバの役割が果たせるのであればDBサーバとの接点は必要ありません。
WEBサーバからDBサーバへのアクセスが不要なシステムであれば、FWで穴を塞ぐべきでしょう。
通常、顧客データ等を保護するためにWEBサーバと物理的に切離したDBサーバに保存して漏えい等を防ぎます。
このため、WEBサーバのアカウントには制限を掛けてアクセスさせるのが一般的な方法です。
ご質問ではシステムの役割が見えないので的外れな答えになっているかも知れません。
>前回使用されたパスワードがDBマスタのものであったとすると管理上の問題で構成の問題ではありません。
構成がそのままで良ければ一番いいのですが。結局、知りたいことを集約しますと、sa+パスワードでハックされたのが、構成の問題なのか、パスワードが弱かったのが問題なのか、ということです。質問が分り辛くてすみません。
>ご質問ではシステムの役割が見えない
説明が足りずすみません、WebサーバはDMZにあって、DBサーバは社内LANです。このDBサーバには、社内のあらゆる情報が保存されています。もちろん、外部漏洩したらまずいものも多いです。DBサーバは物理的に他のDBサーバ(社内LAN?DMZ?)を立てて、そちらに公開用のデータだけをコピーするようにして、そっちをWebサーバから参照させるべきでしょうか?
ドメインを構築しているなら(アクティブディレクトリ)ならIIS6.0の認証方式をwindows統合認証に、SQLSERVERへのログオンも固定ユーザではなくwindows認証を利用するに設定したほうが宜しいかと思いますweb.configに記述の接続文字列も記述変更する必要があります。
固定ユーザでDBにログオンするのはドメインコントローラと連動する機能がないDBを使うときのみにしたほうが宜しいかと(MySQLとかね!)
DMZからだとドメイン外なのでWindows認証でDBアクセスできなくないですか?
間違ってたらすいません・・・
URL書き忘れました。ポイント不要ですよw
http://msdn2.microsoft.com/ja-jp/library/bsz5788z(VS.80).aspx
後半に設定方法が載ってますよ
>セキュリティ的に弱いかどうか。
WEBサーバもWin、DBもWinなら同じウィルスが活動できますし、クラックしたい人も楽です。それに、どんな方法で穴を小さくしても、WEBサーバを乗っ取られればいろんな攻撃ができます。社内LANからのアクセスに比べれば弱いと言えます。
でも、被害を最小化する工夫はできます。VPNの穴と同程度以上のセキュリティがあればインフラ担当さんも納得するはずですよね。
偏ってると思うので参考までに。
・・・インフラ担当さんの提案とコスト的に変わらないかも。
とりあえず社内で使いつつ、構成を変えずにそのままWEBに流用するのはパフォーマンス的にありえない気がするんですが。。
1、2、5番は、簡単にできるものなのでしょうか。
3番のように、DBをレプリケーションしようか、という話も出たんですが、それはそれでハードル高そうで(インフラ担当は、実績あるらしいが苦労したらしい)、話がそこで止まっちゃいました。でも最低限、これくらいはやった方がよさそうですね・・・。
4番は、社長がMicrosoft党なんで、他の選択枝はないかと・・・w
>sa+パスワードでハックされたのが、構成の問題なのか、パスワードが弱かったのが問題なのか、ということです。
パスワードが弱い事を含めて管理の問題だと思います。
ここにセキュリティについての提言があります。
http://www.microsoft.com/japan/sql/prodinfo/previousversions/tec...
#まさかWEBサーバからマスタパスでアクセスするようなことは考えてませんよね?
ほとんどはこれらの対策が打たれていないことが原因のはずです。
5の項目も原因と思いますが、7と10の項目が甘いとどんな公正にしてもハックされちゃいますよ。
>DBサーバは物理的に他のDBサーバ(社内LAN?DMZ?)を立てて、そちらに公開用のデータだけをコピーするようにして・・・
これはWEBサーバとDBサーバを分ける意味がないです。(DBサーバが直接狙われますよ?)
公開用のDBサーバを立てるのであれば外部と社内LANとは完全に切り離して、今まで社内LANに繋いでいた部分に公開用のDBサーバをつなげてください。
混乱しているようなので、以下を整理してみてはいかがですか?
1 WEBで使用するデータとしないデータ
お返事を見る限り分けたほうが無難ですね。
2 WEBで使用するデータの中で公開データと照合用の非公開データ(必要な人にのみ参照させるデータ)
全て公開データであればDBサーバは不要ですよね?
どうですか? 何のためにDBサーバを使用するのか見えてくると思います。(役割が見えないと言ったのはこの意味です)
さらに具体的にWEBで使用する非公開のデータの扱いを考えることで、DBサーバとFWの役割が見えてくると思います。
問題は、「非公開データを正規ユーザが使用できる=ハッキングすれば少なくとも同じことができる」と言うことです。
そんなことされないための対策の例が上記URLです。
なお、DMZ内部では盗聴の危険性が無いと思われますのでSSLなどの暗号化は「できればやる」程度で良いと思います。
セキュリティについての提言をよく読んでみます。
>非公開データを正規ユーザが使用できる=ハッキングすれば少なくとも同じことができる
これは肝に銘じておきます。
何のためにDBサーバを立てるのか?負荷分散+セキュリティと考えていましたが・・・、おっしゃる事がまだよく理解できていないようです。
あと、ハッキングする側から見た手段やその難易度を全く知らないので、どういう対策が効果的か、が分からないんですね。そっちからも調べてみます。
詳しくないので、サイトで検索。。
でも、基本的にはルータの設定で社内LANのDBとのアクセスを狭めれば大丈夫だと思うんですけどね。アプリ構築担当ではなくてネットワーク管理者の仕事として。
WEBサーバのIP、MACアドレス以外からのアクセスをルータで禁止、WEBとDBサーバとの通信では利用ポート以外の通信をルータで禁止。
DBはもちろん物理的に別にして、LAN側との接続も一個ルータを挟むとか、できるだけ狭くしておけばいいんちゃうかな~と思うんですけど。
情報に漏れて困るものが含まれず、レコード数やテーブルの関連性もそれほどではなく、特に物理的にDBを分けられないなら、管理者さんの案でもいいと思いますよ。
XMLマスターが一人いればやれるかな?
社内DBサーバとの同期管理方法を考えるのが一番めんどくさそうです。
そうですね、やはりDBサーバは物理的に別建てで提案してみます。
穴はご指摘の通り小さくして、最悪クラックされたとしても被害は公開用DBまで、ということで。
>一般にDMZにあるサーバは内部サーバにはアクセスできないのではないでしょうか?
すみません、DMZからLAN内DBのデータを見る仕組みは初めてでして、出来るかどうかも実はまだ試せていません。
もしよろしければ、一般的にはどのような手法が有効なのか教えて頂ければありがたいのですが。
Webでいろいろ調べたものの、良い情報を見つけられなかったので。
あとちなみに、Web.Configを暗号化するのは実績があります。