分かりやす〜い
コンピュータ技術情報

TOPに戻る
▼Network
ポートスキャン
┣ 通信開始
┣ スリーウェイ・
┃ ハンドシェイク

┣ ポートNo.
┣ RST
┣ 実際に行ってみる
┣ SYNスキャン
┣ FINスキャン
┣ Nortonのログ
┗ 危険性

Copyright(C) 2001-2003.ugpop. All rights reserved.




■デジタル用語辞典:
■ 実際に行ってみる ■

前回はスリーウェイ・ハンドシェイクが行われる時に、稼動し
ていないサービスにSYNデータが届いた場合について説明し
ました。

稼動していないサービスに対してSYNデータが届いた場合、
OSはRST(リセット)というデータをクライアントに送信
し、「そんなサービス動いてませんよ。」と教えてあげるので
した。

今回はスリーウェイ・ハンドシェイクが正常に完了する場合と
完了しない場合とを実際に行ってみましょう。


それでは早速ですが、Windowsを御使用の方はコマンドプロン
プトを起動させてください。

Linux等UNIX系OSを御使用の方はシェルを起動させてください。

まずスリーウェイ・ハンドシェイクに失敗する例を行ってみま
しょう。
以下の様にコマンドを入力してみて下さい。

telnet www.yahoo.co.jp 123


このコマンドを投入するとtelnetというプログラムが起動しま
す。

telnetとはホストにリモートログインし、遠隔操作ができる仮
想端末機能を提供するプログラムですが、ポートNo.を指定
する事により任意のポートに対して接続を試みる事も出来ます。

コマンドの説明は以下の通りです。

telnet www.yahoo.co.jp 123
    ~~~~~~~~~~~~~~~ ~~~
     ↑      ↑
   サーバー名  ポートNo.


サーバー名の所はIPアドレスを指定しても構いません。
telnetというプログラムは起動後すぐに指定されたポートに対
してスリーウェイ・ハンドシェイクを試みます。

上記の様にポートNo.123を指定した場合、NTP(Network
Time Protocol)というネットワーク上で時刻情報を取得するサ
ービスにスリーウェイ・ハンドシェイクを試みます。

Yahoo!はNTPサービスは提供していませんので、スリーウェイ・
ハンドシェイクに失敗します。

スリーウェイ・ハンドシェイクに失敗した場合、「接続できま
せんでした。」という意味のメッセージが表示されると思いま
す。

環境によっては上記コマンド入力後、しばらく時間がかかる方
もいらっしゃるかと思いますが、我慢して待ってみましょう。

以下に失敗した場合の例を示します。

Trying www.yahoo.co.jp
telnet: Unable to connect to remote host: Connection refused


上の例はあくまでも1つの例です。
必ず上記の様に表示されるわけではなく、環境によりさまざま
だと思いますが、とにかく「接続できませんでした。」という
意味のメッセージが表示されると思います。


それでは次にスリーウェイ・ハンドシェイクに成功する例を行
ってみましょう。

以下の様に入力してください。

telnet www.yahoo.co.jp 80
    ~~~~~~~~~~~~~~~ ~~
     ↑      ↑
   サーバー名  ポートNo.

ポートNo.の所に80を指定しました。
ポートNo.80はHTTP(HyperText Transfer Protocol)のサービス
を行うポートです。

皆さんご存知の様にYahoo!はWEBページを閲覧するサービスで
あるHTTPを提供しています。

上記の様にコマンドを入力するとスリーウェイ・ハンドシェイ
クに成功し、先程の失敗例の様に「接続できませんでした。」
等というメッセージも表示されないと思います。
(上記のコマンドでも接続に失敗するという方は、上位のサー
バーにより接続が禁止されている可能性がありますので、ネッ
トワーク管理者に聞いてみてください。)


「接続できませんでした。」という意味のメッセージが表示さ
れなくなったという方は、スリーウェイ・ハンドシェイクに成
功した事になります。

しかし画面には何も表示されないと思います。

これはHTTPの仕様なのですが、接続しただけではサーバーは何
も言ってきてはくれません。

せっかくスリーウェイ・ハンドシェイクが成功したので、HTTP
を少しだけ行ってみましょう。

以下の様に大文字で入力してください。

HEAD / HTTP/1.0


ただし1文字でも間違うとtelnetを起動する所からやり直しに
なるのでご注意ください。(バックスペースキーや、デリート
キーも使用する事は出来ません。)

また環境によってはキーボードを押しても画面に何も表示され
ない方もいらっしゃると思います。
そういう方も、サーバーにデータは送られていますので、構わ
ず1文字ずつ正確に入力してみてください。

リターンキーを押すとYahoo!のHTTPサーバーから応答が返って
くるはずです。

以下にその一部分を示します。


─↓ここから──────────────────────

HTTP/1.1 200 OK
Date: Sun, 18 May 2003 13:04:02 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO
DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi
STA POL HEA PRE GOV"
Cache-Control: private
Pragma: no-cache
Connection: close
Content-Type: text/html;charset=euc-jp

<html>
<head>
<title>Yahoo! JAPAN</title>
<!--居・>
<STYLE TYPE="text/css">
.spacer { line-height: 115%; }
</STYLE>
    ・
    ・
    ・
    ・

─↑ここまで──────────────────────


ご存知の方もいらっしゃるかと思いますが、これはHTML(Hyper
Text Markup Language)です。

インターネットエクスプローラやネットスケープ等のソフトウ
ェアはHTMLを成型してWEBページを綺麗に表示してくれますが、
telnetは成型して表示する処理は行ってくれません。

テキストだけでのやり取りですが、今行った文字列のやり取り
はインターネットエクスプローラ等のWEBブラウザでも全く同
じ事が行われているという事を覚えておきましょう。


また、先ほどの「HEAD / HTTP/1.0」という文字列を入力する
時に、キーを押し間違えた方の場合、上記の様な文字列とは異
なる文字列がサーバーから返ってきます。

その文字列を良く見ると、

HTTP/1.1 400 Bad Request


と書かれてあると思います。

これは、文字列はサーバーまで届いてはいるのですが、キー入
力を間違えた為にサーバーが要求を認識する事が出来ず、エラ
ーを返してきているという事になります。

インターネットエクスプローラ等でも存在しないページを表示
しようとすると、よく「Bad Request」等と表示される事があ
りますが、ご覧になった方もいらっしゃるのではないでしょう
か。

HTTPのエラーについてはこちらが詳しいです。

ダイヤモンド・アプリコット電話研究所
RFC2068・HTTPエラーコード表・一覧
>>> http://www.nda.co.jp/memo/RFC2068.html


これでとりあえずスリーウェイ・ハンドシェイクが正常に行わ
れ、サーバーとの通信が行える事がお分かり頂けたかと思いま
す。


ところで、今まで説明してきたスリーウェイ・ハンドシェイク
ですが、これをサーバーに対して行なうと、サーバーにはログ
が残ります。

つまりサーバー管理者はログを調べる事により、何時何分何秒
にIPアドレスこれこれの人からアクセスを受けた、という事
を知る事が出来るのです。

スリーウェイ・ハンドシェイクを短時間に複数のポートに対し
て行うと、サーバー管理者は「これはポートスキャンを受けて
いるな。」と気付く事が出来ます。

これによりサーバー管理者は、特定のIPアドレスからのアク
セスを警戒したり、アクセス自体を拒否する設定にする事も出
来ます。

しかし、サーバー管理者に気付かれる事無くポートスキャンを
行なう方法もあります。

どんな方法なのでしょうか?

続きは次回に。



▲このページの上へ

▲このページの上へ

←前に戻る    ▲このページの上へ    続きを読む→

▲このページの上へ