telnet、FTPなどのpass

telnetなどしてpassを入れると相手先にログインできますが、ここで、passはヘッダのどこに含まれるのでしょうか?あるいはデータにあるのでしょうか?
この認証の仕組みですが自分のポート番号と相手先のポート番号を指定して
ログインできるのですよね?で、passがあってないとログインできないように
するにはどのようにするのでしょうか?仮にデータ部にpassが入ってるとして
このパスというのは1パケットごとに常に含まれているものなんでしょうか?で、相手先はかりにデータ部にあったとしてこのpassをチェックして正しければそのパケットを受け付けるって言う感じなんでしょうか?

名前: 
いず
日時: 
01/12/13 13:59

コメント

>passはヘッダのどこに含まれるのでしょうか?あるいはデータにあるのでしょうか?

telnetは,ホストコンピュータと端末をシリアルケーブルで接続していた部分を,
ネットワークに置き換えたと考えればよいでしょう。
つまり,シリアルケーブルを流れるデータのやりとりを
そのままTCP/IPプロトコルのデータを運ぶ仕組みに乗せ替えたともいえます。
その仕組みだと,パスワードなどを特別扱いすることはありません。
元々,シリアルケーブルを流れていたデータの一つに過ぎない,ということです。
だから,他のデータと特に区別せず,
そのまま,TCP/IPプロトコルのデータとして運ぶだけです。
もちろん,パスワードを受け取ったホスト側は,
それが正しいかどうかで,接続を許可したり,拒否します。
そこは,シリアルケーブルにデータが流れるのと同じです。

『完全理解TCP/IPネットワーク』の第1章には,
ネットワークでデータを運ぶことと,
その運んだデータをプログラムがどう扱うのか,という
ネットワークとプログラムの関係を解説してあります。
それが参考になるでしょう。

なお,パスワードの扱いは,ネットワークアプリケーション毎に異なります。
telnetは上のようになりますが,WebやFTPなどはこれとは違います。
FTPについては,日経NETWORKという雑誌の,2002年1月号,
『サーバ充実計画』という連載記事に解説が載ります。
それを参考にしてください。

>>passはヘッダのどこに含まれるのでしょうか?あるいはデータにあるのでしょうか?
>
>telnetは,ホストコンピュータと端末をシリアルケーブルで接続していた部分を,
>ネットワークに置き換えたと考えればよいでしょう。
>つまり,シリアルケーブルを流れるデータのやりとりを
>そのままTCP/IPプロトコルのデータを運ぶ仕組みに乗せ替えたともいえます。
>その仕組みだと,パスワードなどを特別扱いすることはありません。
>元々,シリアルケーブルを流れていたデータの一つに過ぎない,ということです。
>だから,他のデータと特に区別せず,
>そのまま,TCP/IPプロトコルのデータとして運ぶだけです。
>もちろん,パスワードを受け取ったホスト側は,
>それが正しいかどうかで,接続を許可したり,拒否します。
>そこは,シリアルケーブルにデータが流れるのと同じです。

と、すると、1パケットごとにpassが含まれているわけではない?
ということですか?すると、そのパケットが確かに受信していいものである
とどこで判断することになりますか?送信元のipでしょうか?最初にpass
が送られてきて正しければそのipから送られてくるパケットは受け入れると言う感じになりますかぁ?

>『完全理解TCP/IPネットワーク』の第1章には,
>ネットワークでデータを運ぶことと,
>その運んだデータをプログラムがどう扱うのか,という
>ネットワークとプログラムの関係を解説してあります。
>それが参考になるでしょう。

了解('◇')ゞラジャ

>なお,パスワードの扱いは,ネットワークアプリケーション毎に異なります。
>telnetは上のようになりますが,WebやFTPなどはこれとは違います。
>FTPについては,日経NETWORKという雑誌の,2002年1月号,
>『サーバ充実計画』という連載記事に解説が載ります。
>それを参考にしてください。

φ(。。;)めもめも

>と、すると、1パケットごとにpassが含まれているわけではない?

ビンゴ!

>そのパケットが確かに受信していいものであるとどこで判断することになりますか?

TCPプロトコルは,一度接続動作を行うと,その後,
1本のケーブルで相手と接続したのと同じイメージで,
データをやりとりできます。
実際の動作は,
接続動作を実行するときに,相手のIPアドレスとポート番号を登録して,
以後,その登録した相手から届いたパケットは,
その接続(1本ケーブルのイメージかな)から流れてきたものとして
扱うわけです。
そして,切断動作を実行したら,その登録を消します。
これで,ケーブルを切り離したのと同じことになります。

書き漏らしました。

>その接続(1本ケーブルのイメージかな)から流れてきたものとして
>扱うわけです。

最初に,つまり,接続するときに,パスワードなどで確認しておけば,
後は,同じ接続から流れてくるデータなら大丈夫,
と考えるわけです。

>TCPプロトコルは,一度接続動作を行うと,その後,
>1本のケーブルで相手と接続したのと同じイメージで,
>データをやりとりできます。
>実際の動作は,
>接続動作を実行するときに,相手のIPアドレスとポート番号を登録して,
>以後,その登録した相手から届いたパケットは,
>その接続(1本ケーブルのイメージかな)から流れてきたものとして
>扱うわけです。

と、すると、かりにhostAがhostBにtelnetしてるときに
hostCがhostAのIPとhostA、hostBの間で交わされたポート番号を知ることが
できたら、hostCの送信元IPをhostAのIPに変更して、hostAに成りすましてhostBにtelnetできるということになりますよね?

>と、すると、かりにhostAがhostBにtelnetしてるときに
>hostCがhostAのIPとhostA、hostBの間で交わされたポート番号を知ることが
>できたら、hostCの送信元IPをhostAのIPに変更して、hostAに成りすましてhostBにtelnetできるということになりますよね?

そういう攻撃の手口をセッションハイジャックっていうんですけど,
そんなに簡単にはできませんね。
hostCがhostAに成りすましてパケットを送ると,
その応答はhostAに送られることになり,hostCには届きません。
TCPヘッダに記載する制御情報の中には,一連のパケットのやり取りの
経緯を知らないと,記載できない項目があるので,
応答がhostCのところに届かないと,
hostCはその後を続けることができないからです。

ところが,一歩進めて,ルータのように,
パケットが行きかう途中にある機器で,
セッションハイジャックするなら話は別です。
パスワード確認が終わった後に,ハイジャックすれば,
パスワードだけ暗号化しても,何の役にも立ちません。
現実のシステムは,パスワードだけしか暗号化しないものが多いので,
強力な手口といえます。

よい子の皆さんは,決してそのようなことをしてはいけません。(笑)