新城で@筑波大学情報です。こんにちは。

In article <m3zni4bncs.fsf@maedapc.cc.tsukuba.ac.jp>
        MAEDA Atusi <maeda@cc.tsukuba.ac.jp> writes:
> 皆がログインできるNFSサーバで,(例えば)ポート番号2049のnfsdが
> portmapperに登録された後,nfsdが死んでしまうと,一般ユーザが2049ポート
> をbindする偽のNFSサーバを立ち上げて,クライアントからの要求を受けとる
> ことが出来る,と.

実は、殺さなくてもいいという話もありまして、、、、

> (問題はどうやって本物のnfsdを殺すか,かな…
> 詳しい人に聞いたところ,「別のポートをnfsdをportmapperに登録し直す」こ
> とはスーパーユーザでないとできないそうです.)

一応、それはそうなんだけど、・・・(以下省略。)

> いや,そうではなくて,
> 「portmapperから返されたポートが特権ポートかどうかチェックする」ように
> NFSクライアントを改造するよりは,
> 「portmapperに聞かずに,あらかじめ決めておいた特権ポートに直接つなぎに
> いく」ようにNFSクライアントにオプションを与えるほうが簡単だろうと思っ
> たのです.

NFSサーバが利用するポートを、特定の特権ポートに固定できれば
ね。Solaris だと、これができなさそう。

NFS に限らず、RPC でもポート番号を固定した方が、パケット・フィ
ルタで防御するのが簡単になるんだけどなあ。それでもなんとかし
たいという場合には、RPC 対応の SysGuard とか。

    新城 靖, 中田 吉法, 板野 肯三: "システム・コール・レベルでの
    RPCに対するアクセス制御の強化",情報処理学会研究会報告
    2001-OS-90-13, pp.95-102 (2002年6月27日).
    http://www.ipsj.or.jp/members/SIGNotes/Jpn/07/2002/090/article013.html

なんか、学会のページのタイトルがおかしいなあ。RPCが飛んじゃってる。

> 元の質問者の方もSunのサーバ側の「オプション」をお尋ねでしたし,プログ
> ラムの改造までは考えてらっしゃらないんじゃないかと.

Sun の nfsd は、ソースが公開されていないので、一般には改造は
無理です。Linux のものを持ってきても残念ながら動かないでしょ
う。nfsd は、ps で見えるのですが、ほとんどの活動はカーネルの
中です。

> > はい。ファイルが存在しない時に、これはどうも NFS サーバが乗っ
> > 取られているらしいとにらんで、追跡調査する能力があれば、気が
> > 付きます。自分でファイルを消したと思って、もう一度最初から設
> > 定し直して、電子メールを読みに行くようだと気が付かないでしょう。
> 
> このいたずらがすぐにバレないようにするのはなかなか難しいですね.
> 「目的のファイルが書かれるまでじっと本物のふりをする」とかできれば良い
> ですけど,「本物のふり」が全然できないから.

私は、NFS サーバを作ったことがありますが、C言語で 2789 行で
できました。ちゃんと本物のクライアントからマウントできました。
偽装するには、これに次のような機能を付けるといいですかね。

・何か lookup されたら、あることにして返す。
・ファイルに write された、受け取る。
・ファイルに read されたら、write された内容があればそれを返す。
・ディレクトリに readdir されたら、今まで知っている名前を並べて返す。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\