傘地蔵さん、
「公開しているサーバに LAN 内からアクセスできるようになっている」というのはちょっとわかりにくい表現でしたが、公開サーバと同じネットワークに他のPCがあることを想定しました。
各PCが Nimda アタックにやられてしまうものであった場合、公開サーバがやられて即他のPCもやられてしまうわけです。もちろん Nimda というのは一例で、同様の攻撃があった場合、というつもりです。
公開サーバには外から「侵入」される可能性がありますが、公開サーバに直接内部からのアクセスがあれば、サーバのログやコネクションの監視によって内部PCのIPアドレスが判明する、ということもあります。
もちろんルータが2段でおっしゃるようにサーバを設置するのであれば危険性は減少すると思います。
公開しているサーバに LAN 内からアクセスできるようになっていることの
危険性について考えていませんでしたので、どのような危険性が考えられるか
御教授願えないでしょうか。
ちょうどルータを二段にしようかどうかと考えていたのですが、二段にすると
危険性は減少するでしょうか。
最初のルータは外部に直接繋ぎ、この下にサーバを設置します。さらに、
そのルータの下にルータを設置し、このルータには外部に接続されている
サーバが割り当てるローカル IP をグローバル IP のように認識させようと考えて
います。
外部からアクセスしようとすると、ルータを二つ通ったアドレスを見つけ出す
必要があるので、ハッキングされる可能性は減少すると思っているのですが。
鷹の巣さん、
名前解決とセキュリティの話ですが、
つまり、「自宅サーバのLAN 内の名前解決を行っていない」というのは自宅サーバ上でクライアントの名前解決をおこなっていない、という意味ですね。
確かにそのようなことをするメリットはないので、対策の1はセキュリティ上の問題があるとはっきり書いた方がよいのだろうと思います。
ただ、hostsファイルでは使っている(と思われる)IPアドレスとそのホスト名がわかるだけですね。
「侵入」された場合には hostsなどがなくても使っているIPアドレスを知る方法はあるわけですから、必ずしも名前解決の問題ではないような気もします。
むしろ、外部公開しているサーバにLAN内から直接アクセスできるようにしていることの方がセキュリティ上は問題なのではないかと思いました。
中田さん、いつもお世話になっております。
> LAN 内で名前解決をしないのはセキュリティ上好ましいのでしょうか?
便利が良いということと、セキュリティとの関係は、反比例すると考えています。
クラッカーに侵入されないようにすることは勿論ですが、侵入された後のことも考えねばなりません。
LAN 内に侵入されましたら、侵入したマシンのプライペートアドレスを調べますと、
侵入機のIPアドレスから、LAN 内の第3オクテッド迄の数値(例 192.168.0.*)が直ぐにわかります。
LAN 内でDHCPを使用せずに、固定IPアドレスとして、飛び飛びのIPアドレスにしていても
hostsファイルなどに名前とIPアドレスの一覧が書かれていると直ぐにLAN 内のマシン配置が
直ぐにわかってしまいます。
ルータのパケットフィルタリングやfirewallが何層あっても無意味であるという議論もありますが、
時間稼ぎも非常に重要だと考えております。
セキュリティについては、これから勉強していこうと考えていますので、
皆様のご指導を仰ぎます。宜しくお願いします。
鷹の巣さん、
無条件で gethostbyaddr を実行してしまう CGI は考えものだとは思いますが、
一方で、LAN 内で名前解決をしないのはセキュリティ上好ましいのでしょうか?
自宅サーバを立てておられる方で、LAN 内から、掲示板等にアクセスすると
異常に時間がかかる方は、おられませんか。
以下の不具合を解決致しましたので、報告させて頂きます。
結果において、AN HTTPD とは、無関係ですが、AN HTTPD が原因と疑う方が
おられましたので、失礼ですが、投稿させて頂きます。
●不具合の現象
kent web さんのところで配布されている掲示板等を、LAN 内から、
http://127.0.0.1/x.cgi や http://サーバ機のプライベートアドレス/x.cgi
でアクセスすると、表示が開始されるまでに15秒程かかる。
(LAN 内固有の現象でインターネット側からのアクセスには問題なし)
自宅サーバの環境は、
OS:windows2000 Professional build 2195 SP2
Webサーバ:AN HTTPD (バージョンには無関係)
CGI:ActivePerl-5.6.1.631-MSWin32-x86
にて確認。
●不具合の原因
セキュリティ上、自宅サーバのLAN 内の名前解決を行っていないため、
Perlのgethostbyaddr関数の名前の逆引きでtimeoutになります。
LAN内で逆引き名前解決(サーバ機のhostsファイルにLAN 内のアドレスとホスト名を設定する等)
を行っていれば、不具合は発生しません。
●不具合の対策
1.LAN内で逆引き名前解決(サーバ機のhostsファイルにLAN 内のアドレスとホスト名を設定する等)を行う。
2.ブラウザにインターネット上のプロキシサーバの設定を行う。
3.下記の改造を実施する。(改造は、自己責任にて実施し、kent web さんへの質問は行わないで下さい。)
#----------------#
# ホスト名取得 #
#----------------#
sub get_host {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
# ------- 追加改造開始 ------
# LAN 内のプライベートセグメントアドレス(192.168.1.0)を設定して、
# LAN 内からのアクセス(192.168.1.*)に対して、gethostbyaddr関数が実行されないようにします。
if (pack("C3", split(/\./, $addr)) eq pack("C3", split(/\./, '192.168.1.0'))) {
$host = $addr;
} elsif ($host eq "" || $host eq $addr) {
# ------- 追加改造終了 ------
# 変更 if ($host eq "" || $host eq $addr) {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
}
}