本文へジャンプ



第3章 VoIPとネットワーク
3.1 TCP/IP技術

3.1.1 TCP/IPとは
Transmission Control Protocol/Internet Protocol
インターネットやイントラネットで標準的に使われるプロトコル。米国防総省が、核攻撃で部分的に破壊されても全体が停止することのないコンピュータネットワークを開発する過程で生まれた。
 UNIXに標準で実装されたため急速に普及し、現在世界で最も普及している。OSI参照モデルではIPが第3層(ネットワーク層)、TCPが第4層(トランスポート層)にあたり、HTTPやFTPなどの基盤となるプロトコルである。

TCP/IP
TCP:OSIのレイヤー4
IP:OSIのレイヤー3

(1) TCPとは
TCPはTransmission Control Protocolの略であり、上位層に信頼性のある全二重(つまり二本)の仮想通信路(バーチャルサーキット)を提供する通信プロトコル。
TCPでは送信する順番も保証しており、これをストリームと呼ぶ。 ストリームはビット列の流れ。

(2) TCPヘッダー



DST:

Destination Port

宛先

SRC:

Source Port

発信者ポート

SEQ:

Sequence Number

このデータセグメントの始まりの位置(オクテット数)

ACK:

Acknowledgement Number

発信元が次に送る受信済みを含まないシーケンス番号

DO:

Data offset

TCPヘッダーの始めから数えたデータの位置。 オクテット単位

RSV:

Reserved

将来用。 0で無ければならない。

CF:

Control bits

WIN:

Window Size

受信可能なデータオクテット数

CS:

Checksum

TCPヘッダー、データの誤りチェック用

UPT:

Urgent Pointer 

URGビットが立っていたら、シーケンスNo.からのオフセットで緊急用データの位置を示す。





(3) IPとは
 米国防総省のネットワークプロジェクトで開発されたプロトコル。
 OSI基本参照モデルの第3層(ネットワーク層)に位置し、ネットワークに参加している機器の住所付け(アドレッシング)や、相互に接続された複数のネットワーク内での通信経路の選定(ルーティング)をするための方法を定義している。
 コネクションレス型のプロトコルであるため、確実にデータが届くことを保証するためには、上位層のTCPを併用する必要がある。
 UNIXの標準プロトコルとなったことから急速に普及が進み、現在世界でもっとも普及している。IPによって世界規模で相互に接続された巨大なコンピュータネットワークをインターネットと呼ぶ。

IPプロトコルとは、IP網に接続されてIPアドレスが割り振られている機器間でデータ伝送する際に必要なもの。
IPプロトコルの主たる機能:
@ アドレッシング
A データグラムのフラグメンテーションと再組み立て
B 経路選択 (ルーティング)
C 誤り制御

(4) PDUの呼び方
ヘッダーとデータを組み合わせたものがプロトコルデーターユニット(PDU)であり、各レイヤーでの呼び方が異なる。

7|アプリケーション|
6|プレゼンテーション|
5|セッション|
4|トランスポート| セグメント
3|ネットワーク| パケット
2|データーリンク| フレーム
1|物理|

ヘッダーの付加をカプセル化、ヘッダーを外すことを逆カプセル化と呼ぶ


(5) セグメント
TCPの転送単位はセグメントと呼ばれ、単位は536バイトがデフォルト値。 イーサネットを使う場合MTU(Maximum Transfer Unit)が1500バイトなので、IPパケットの大きさが1500バイト以内でなければならない。 よって、この1500バイトからIPパケットの20バイトとTCPヘッダーの20バイトを引いてTCPのセグメントの最大値(MSS: Maximum Segment Size)1460バイトになる。但し、実際はOSの能力などにより、MSSのサイズを小さくする必要がある。

(6) ウィンドウ
 セグメント単位でTCPは通信をするが、セグメント一個ごとにACKを発信したり受けたりしていては不効率である。 よって、まとめてセグメントを送る。 このまとめておくる仕組みをウィンドウと呼ぶ。
 TCPで通信する全体をTCPバッファーとよび、複数のセグメントで出来ている。このセグメントを複数送る際に、送信側がウィンドウサイズを知らせる。
 ウィンドウのサイズは最初小さく設定されており、徐々に大きくしていく。これをスロースタートと呼ぶ。この際にはACK信号は順調(タイムアウトせずに)送信側に到着している状態である。
 そして処理として、受信側で受信処理が間に合わない場合は、ウィンドウサイズ=0を通知して送信停止させる(フロー制御)、ACKにタイムアウトが生じた場合は、ネットワークの輻輳と判断してウィンドウのサイズを半分にすることを輻輳がなくなるまで(ACKのタイムアウトがなくなる)繰り返す。 輻輳が無くなればまたウィンドウのサイズを大きくする。

(7) ソケット(Socket)
TCP/IPの機能を利用するときに使う標準的なAPIでポート番号はそこで使われる識別子。 APIはOSの機能を呼び出す仕組み。 Application Program Interface Windowsの場合はWinsock。 これはOSに追加するモジュールとして扱われる。




3.1.1.2 TCPの働き
(1) TCPセッションの確立と切断

@ 確立 (3ウェイハンドシェ−ク)
 始点ホスト 終点ホスト
--------------SYNパケット----------→
(受信側ホストはこのセッション用の管理領域をメモリ上に作る。)
←--------------------------ACKパケット-----
------- ACKパケット -----------------------→

A 切断
始点ホスト/終点ホスト 終点ホスト/始点ホスト
-------FINパケット-------------------------→
←--------------------------ACKパケット-----

始点、終点ホストのいずれかでもFINパケットは出せる。これはアプリケーションが決めること。


(2) TCPのセッションのフローと詳細
□ コネクションの確立
□ 送達確認(ACKのチェック)
□ 到達順序保証
□ フロー制御
□ ウィンドウ制御(受信側が受け入れ取れる量を予め通知する)
□ 遅延確認応答
□ Silly Windows Syndrome回避(受信側の輻輳制御)
□ 接続タイマー
□ チェックサム(誤り検出、絶対とは言えない)

※ ウィンドウサイズとは一度に受け取れるデーターサイズのこと
※ TCPを利用したサービスプロトコルには、HTTP, FTP, SMTP, POP3, TELNETなどがある。

送達確認
接続された音では、ACKは肯定応答として使われる。

到着順序保証
送信 受信
: スタート :


タイマースタート
デフォルトは三秒程度


ACK応答が無いとデータの再送

フロー制御
ソフトウェアフロー制御
ハードウェアフロー制御

ウィンドウ制御
受信側が受け取れる量を予め通知する。 「ウィンドウサイズ
(TCPヘッダーの中)
ACK(Y,Z) 
Y=ACK番号、Z=ウィンドウサイズ
遅延確認応答

Silly Window回避
受信側の輻輳制御。 受信側のウィンドウが空いた時に、すぐに送信側に通知せずに、少し間を老いてからウィンドウをゼロに通知すること。

持続タイマー
受信側からウィンドウゼロの通知があって → タイマースタート → 1バイトだけ伝送 → ウィンドウが開いた事を通知する確認応答パケット接続を目指す。
※ ウィンドウサイズとは一度に受信できるデーターサイズの事。 よって、「0」ということは、何も受けられないこと。

チェックサム
誤り検出の方法のひとつ。 (但し、絶対とは言えない。)



3.1.1.3 UDP
(1) UDPとは

UDPはUser Datagram Control Protocolの略であり、基本的にはIPデータグラムをそのまま使う。 よって、TCPと比べて信頼性がないために、UDPを使う上位のアプリケーションが信頼性のために再送処理などを受けもつ。 IPデータグラムをそのまま利用と言っても、ポート番号の識別でアプリケーションのサービスの識別を行う。

 UDPには"接続する"という概念が無いために、不特定多数のホストと通信するブロードキャスト通信やマルチキャスト通信が可能である。 (TCPでは不可能)

(2) UDPとTCPの違い

UDP

TCP

接続形態:

1:1及び1:n

1:1

アプリケーションの特定方法:

UDPポート番号

TCPポート番号

送受信の単位:

パケット

ストリーム

宛先までの到着保証:

無し

あり

送信エラー時の動作:

パケット破棄

自動的に再送

事前のアプリケーション同士のコネクションの確立:

不要(コネクションレス型通信)

必要(コネクション型通信)

処理:

軽い

重い





(1) UDPが利用されるプロトコル
RIP, NTP, SNMP, SYSLOG, NFS, DNS

※ ICMP
IPのエラーメッセージや制御メッセージを転送するプロトコル。 TCP/IPで接続されたコンピュータやネットワーク機器間で、互いの状態を確認するために用いられる。ネットワーク診断プログラムpingが使う。

このプロトコルで分かること
―ホストが何時ダウンしたか
―ゲートウェイの混雑や実行不能
―その他のネットワーク上の障害

ICMPのメッセージタイプ
TYPE
0 エコー応答 (Echo Reply)
3 到着不能 (Destination Unreachable)
4 始点抑制 (Source Quench)
5 リダイレクト (Redirect)
8 エコー要求 (Echo Request)
9 ルーター通知 (Route advertisement)
10 ルーター選択 (Router Selection)
11 時間超過 (Time Exceed)
12 パラメーター不良 (Parameter Problem)
13 タイムスタンプ要求 (Timestamp Request)
14 タイムスタンプ応答 (Timestamp Reply)
15 情報要求 (Information Request)
16 情報応答 (Information Reply)
17 アドレスマスク要求 (Address Mask Request)
18 アドレスマスク応答 (Address Mask Reply)
上記Type3の詳細
Code
0 ネットワーク到着不能(Network Unreachable)
1 ホストに到着不能(Host Unreachable)
2 指定されたプロトコルが使用不要 (Protocol Unreachable)
3 ポートに到達不能 (Port Unreachable)
4 フラグメントが必要不可欠であるのに、分割不可のフラグがたっている (Fragmentation Needed and Don't Fragment was Set)
5 ソースルートが実行不能 (Source Route Failed)
6 ネットワーク不明 (Destination Network Unknown)
7 ホスト不明 (Destination Host Unknown)
8 発信元ホストは使用されていない (Source Host Isolated)
9 発信元ネットワークとの通信不許可 (Communication with Destination Network Administratively Prohibited)
10 発信元ホストとの通信不許可 (Communication with Destination Host is Administratively Prohibited)
11 指定されたTOSではネットワークに到達不能 (Destination Network Unreachable for Type of Service)
12 指定されたTOSではホストに到達不能 (Destination Host Unreachable for Type of Service)

※ PING
Aliveかどうか

ECHO_REQUESTデーターグラム送信
(PINGパケット)
 ↓
ECHO_RESPONSEの返信を確認
(PONGパケット)


3.1.1.4 MTU
通信ネットワークにおいて、1回の転送で送信できるデータの最大値を示す値。送信する側が接続ごとに値を設定できる。送信側ホストが受信側ホストより大きいMTUを持っていた場合は、送信側が受信側のMTUに従ってデータを再分割して送信する。エラーデータの再送信はMTUに指定されたサイズを単位として行われるため、劣悪な通信環境ではMTUを小さい値に設定した方が転送速度は速くなり、逆に安定した通信環境では制御信号が少なくなる分MTUの大きい方が転送速度が速くなる。MTUの単位はバイトで、Ethernetでは1500程度、電話回線によるダイヤルアップ接続では576程度が最適とされる。

MTU (Maximum Transfer Unit)はリンク層の種類によって異なる。
- Ethernet: 1500バイト
- FDDI: 4352バイト

よって、FDDIを通ってイーサネットに流れるパケットは、フラグメントが必要。
IPパケットの長さは32ビット単位
(フレッツADSLでは、1454バイトに設定する。)

これは、MTUの値は、パケットのフラグメント(データ断片化)が発生しない範囲で最大値を適用するのが最も効率的であり、結果としてスループット向上につながる。


※ RFC
RFCは公開されている
ftp://ds.internic.net/rfc
ftp://ftp.nic.ad.jp/rfc

RFCの区分 (以下の6つ)
Proposed Standard, Draft Standard, Standard, Experimental, Informational, Historic


3.1.2 IPアドレスとホスト

3.1.2.1 IPアドレス
ネットワークに一意な番号をつける。

Version4 ⇒ 232 = 42億9496万7295
Version6 ⇒ 2128 = 約340混(かん)

以下は、Version4についても記述

4バイト(=256ビット=28bit)で構成
[1バイト] [1バイト] [1バイト] [1バイト]
256 x 256 x 256 x 256


IPアドレスにはバージョン4と6とがあり、クラス分けがしてあるのは、バージョン4である。
IPアドレスを一元管理する機構はアメリカにあり、日本ではJPNICである。

■IPアドレスのクラス分け


クラスA (ネットワーク番号: 1〜126) 最初が0で始まるIPアドレス
[0][][][][][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]
←-------------→ ←----------------------------------------------→
ネットワークアドレス ホストアドレス
20・27 = 128 28・23 = 224 = 16777214
1〜21億4784万3647

クラスB (ネットワーク番号: 1〜126) 最初が10で始まるIPアドレス
[1][0][][][][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]
←-------------------------------→ ←-----------------------------→
ネットワークアドレス ホストアドレス
20・20・26 x 28  28・22 = 216
21億4784万3648 〜 32億2122万5471(10億7374万1842個)

クラスC (ネットワーク番号: 1〜126) 最初が110で始まるIPアドレス
[1][1][0][][][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]                                                         
←-------------------------------------------------→ ←--------------→
ネットワークアドレス ホストアドレス
20・20・20・25 x 28 x 28 = 221 28・22 = 216
32億2122万5472 〜 37億5809万6368 (5億3687万896個)


クラスD (ネットワーク番号: 1〜126) 最初が1110で始まるIPアドレス
[1][1][1][0][][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]                                                       
ネットワーク番号:224.0.0.0 〜 239.255.255.254
マルチキャスト: 127.0.0.0 〜 127.255.255.255

クラスE (ネットワーク番号: 1〜126) 最初が11111で始まるIPアドレス
[1][1][1][1][][][][] [][][][][][][][] [][][][][][][][] [][][][][][][][]                                                    
ネットワーク番号:240.0.0.0 〜 255.255.255.254
予備の番号

■ ネットワークアドレスとホストアドレス
ネットワークアドレスとは、インターネットのどこのネットワークにあるかの指定
ホストアドレスとは、ネットワーク内の何処にあるかの指定


■ 通信形態


ユニキャスト: 1対1の通信

ブロードキャスト: 1対nの通信 (同一ネットワーク内)

マルチキャスト: 1対nの通信 (違うネットワークでも可能)



■ 二進法と十進法

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
211 = 2,048
212 = 4,096
213 = 8,192
214 = 16,384
215 = 32,768
216 = 65,536
217 = 131,072
218 = 262,144
219 = 524,288
220 = 1,048,576
221 = 2,097,152
222 = 4,194,304
223 = 8,388,608
224 = 16,777,216
225 = 33,554,432
226 = 67,108,864
227 = 134,217,728
228 = 268,435,456
229 = 536,870,912
230 = 1,073,741,824
231 = 2,147,483,648
232 = 4,294,967,296

■ 二進法と十進法
クラス分けはすでに意味を失っている。(Ver.4)
よって、CIDRという方法が取られる。

CIDR (Classless Inter Domain Routing)
IPアドレスのクラスを取り除いた方法。 323ビットのアドレス範囲を任意の分割単位で分割して割当単位と見なす。

表記方法: 192.0.194.224/28

■ ブローバルIPアドレスとプライベートIPアドレス
グローバルIPアドレスとは、ネットワークに対して与えられる唯一のネットワークアドレス。
クライアント機能だけのPCに各々IPアドレスを与えるのは不経済。 よって、内部(同一のネットワーク)だけにつながるIPアドレスがあり、これをプライベートIPアドレスという。(RFC1918)


■ ブローバルIPアドレスとプライベートIPアドレス

グローバルIPアドレスとは、ネットワークに対して与えられる唯一のネットワークアドレス。

クライアント機能だけのPCに各々IPアドレスを与えるのは不経済。 よって、内部(同一のネットワーク)だけにつながるIPアドレスがあり、これをプライベートIPアドレスという。(RFC1918)

プライベートIPアドレス:    10.0.0.0 〜 10.255.255.255 (16,581,375個)

                                 172.16.0.0 〜 172.31.255.255 (975,375個)

                                 192.168.0.0 〜 192.168.255.255 (65,025個)

                                 計 17,621,775個

■ ネットワーク階層構成とサブネットマスク

基本IPアドレス         [ネットワークアドレス][ホストアドレス]

サブネットマスク        [1111111111111111][11111111][00000000]

サブネットアドレス      [ネットワークアドレス][サブネットドレス][サブネットホストアドレス]

“マスク”はAND関数で行う。

例)

192.168.4.20とサブネットマスク 255.255.255.255でマスクする。

            11000000.10101000.00000100.00010100

  AND    11111111.11111111.11111111.11110000

---------------------------------------------

            11000000.10101000.00000100.00010000

            ←----------------------→←-----→ 

                     ネットワーク部             ホスト部

サブネットマスクとは、ARP(Address Resolution Protocol)の届く範囲でもある。

1.       ARP (ブロードキャスト)


                                                     

                                                                                 

192.168.4.30」は誰?

2.       ARP(ユニキャスト)


「それは私です。 MACアドレスは・・・です。」


3.1.2.2 JPNICに割り当てられたIPアドレス群

133.0 〜 133.255

192.50.0 〜 192.50.255

192.218.0 〜 192.218.255

192.244.0 〜 192.244.255

202.11.0 〜 202.11.255

202.13.0 〜 202.13.255

202.15.0 〜 202.19.255

202.23.0 〜 202.26.255

202.32.0 〜 202.35.255

202.48.0 〜 202.48.255

202.208.0 〜 202.255.255

203.136.0 〜 203.141.255

203.178.0 〜 203.183.255

210.128.0 〜 210.159.255


3.1.2.3 NAT/NAPT

(1) 概要
NAT、NAPTは、グローバルIPアドレスとプライベートIPアドレスの変換の技術である。
プライベートIPアドレスは、
クラスA: 10.0.0.0 〜 10.255.255.255
クラスB: 172.162.0.0 〜 172.31.255.255
クラスC: 192.168.0.0 〜 192.168.255.255

(2) NAT
The IP Network Address Translator

G.IP:P.IP = 1:1 1:1でマッピングする。

(3) NAPT
Network Address Port Translation
IPマスカレードとも言う。  「Masquerade: 見せ掛けの」

G.IP:P.IP = 1:n 1:nでマッピングする。 複数の機器が同時に1つのグローバルIPで通信可能。 グローバルとプライベートとの変換に、ポート番号も使う。

NAPT以外と各種NAT機能は、RFC2663にある。 (IP Network Address Translator Terminology and Consideration)

(4) NAT/NAPTとIP電話
VoIPでは、パケット内にIPアドレス(グローバル)が埋め込まれているので、ヘッダだけを変えるNAT/NAPTだと通信が出来なくなる。 (これはアプリケーション毎に異なる。)
また、このIPアドレスは、Destination IPアドレスとは限らないので、ますます複雑。

この解決の為の技術がNATトラバーサル、ALG, プロキシ−サーバーである。

(5) NATトラバーサル (NAT Traversal)
これは、原則論で、これを可能にする技術がUPnP(universal Plug and Play)である。
UPnPは、クライアント/サーバー型モデル。 ネットワークに接続された端末がクライアントで、中継機器がサーバーとするもの。

UPnP実現には、XML、DHCP、SOAP等が利用されている。 (SOAP: Simple Object Access Protocol, ネットワークに分散するオブジェクト間の通信をXMLベースで実現するためのプロトコル。 Webサービスのメッセージ変換やリモートプロシージャ−の呼び出しなどに利用される。)
要するに、IPパケットのデータ部のIPアドレスに、ヘッダのIPアドレスとポート(変換したもの)を設定する。 

(6) ALG (Application level Gateway)
IPパケットのデータ部のIPアドレスやポート番号を変換する仕組み。 但し、アプリケーション毎に、これらの情報は書き方や書き順が違うために、書き換えルール定義を要す。
同じVoIPアプリケーションでも、H.323とSIPなど、呼制御プロトコルが違えば、異なる設定であることがある。 但し、全てのアプリケーション毎の設定は事実上不可能。
実際は、このALGは中継装置(ルーターなど)に実装される。



(7) プロキシ−サーバー

◎==リンク#1==□==リンク#2==[網]
P.IPで通信 Proxy ServerのG.IPアドレスで通信

このプロキシ−サーバーは高速処理が要求される。


3.1.3  DHCP (Dynamic Host Configuration)


各クライアントが起動する際に、動的にIPアドレスを割当て、終了時にIPアドレスを回収するためのプロトコル。 サーバー側では、IPアドレスをDHCPクライアント用として幾つかまとめて用意しておくだけで良い。 同時にゲートウェイアドレスやドメイン名、サブネットマスクその他の情報をクライアントに通知することも出来る。

インターネットに一時的に接続するコンピューターに、IPアドレスなど必要な情報を自動的に割り当てるプロトコル。 DHCPサーバーには、ゲートウェイサーバーやDNSサーバーのIPアドレスや、サブネットマスク、クライアントに割り当てて良いIPアドレスの範囲などが設定されており、ダイアルアップなどの手段を使ってアクセスしてきたコンピューターにこれらの情報を提供する。 クライアントが通信を終えると、自動的にアドレスを回収し、他のコンピューターに割り当てる。 DHCPを使うとネットワークの設定に詳しくないユーザーでも簡単にインターネットに接続することが出来、またネットワーク管理者は多くのクライアントを容易に一元管理することが出来る。

3.1.4 DNS

(1) DNS とは
Domain Name System

 インターネット上のホスト名とIPアドレスを対応させるシステム。全世界のDNSサーバーが協調して動作する分散型データベースである。IPアドレスをもとにホスト名を求めたり、その逆を求めたりすることができる。
 各DNSサーバーは自分の管理するドメインについての情報を持っており、世界で約10台運用されているルートサーバーにドメイン名と自分のアドレスを登録しておく。
 リゾルバと呼ばれるクライアントプログラムは、調べたいドメイン名(またはIPアドレス)をまずルートサーバーに照会し、そのドメインを管理するDNSサーバーを調べ、そのDNSサーバーに情報を聞き出すことで変換を行なう。
 インターネット上で運用されているDNSサーバーのほとんどは、カリフォルニア大学バークリー校(UCB)で開発されたBINDである。


(2) ドメインとは何か
ネットワーク環境におけるひとまとまりの管理単位。 この単位の文字列をドメインという。

例 「abc.co.jp」
abc (サードドメインレベル):組織名
co (セカンドドメインレベル):組織種別
jp (ドップドメインレベル):国

トップドメインレベルには二つある。
gTLD: InterNICが管理。だれでも使える。 com net org など
ccTLD: 各国のNICが管理。 jp to nu 等





FQDN→IPアドレス: 正引き
IPアドレス→FQDN: 逆引き

[クライアント]→[DNS#1]→[ルートサーバー]⇔[DNS#2]⇔[DNS#3]⇔[ DNS#4][]
DNS#2: jpドメイン
DNS#3: co.jpドメイン
DNS#4: abc.co.jpドメイン



(3) 正引きと逆引き
www.yahoo.jp
↑「逆引き」 ↓「正引き」
210.81/153/70

「nslookup」コマンドを使う。
例)
nslookup 210.81.153.70
nslookup www.yahoo.co.jp

「whois」コマンドはUNIXのみで可能。
Whois-h whois.nic.ad.jp 210.81.153.70

web上のサービスもある。
http://www2s.bigloble.ne.jp/~cra/
library/tools/nslookup.html

whois
http://www.benri.com/whois


(4) DNSへアタック
ハッカーはどうする。

・DNSポイゾニング(DNSスプーフィング)
 DNSサーバーがキャッシュしている情報を偽りの情報へ摩り替えてしまうアタック。

・DNSに対するバッファー・オーバーフロー
DNSのサービスプログラムのbindなどにバッファー・オーバーフローの脆弱性があった場合、それを突く事によりルート権限を奪ったり、DoSアタックしたりする。


3-1-5 ポート番号とサービスプロトコル

(1) ポート番号
サーバー側のサービスプロトコルの識別番号
1〜65,535 (IANA, http://www.iana.org/assignments/p@ort-numbers)

1〜1023: サーバーアプリケーション用(ウェルノウンポート番号)
1024〜65,535: クライアントアプリケーション用(動的に割り当て)

例) HTTP
httpサーバー: httpデーモン(httpd)


[HTTPサーバー] <=====> [クライアント]
ポート#80 ポート#1024(他もあり)
ブラウザーを複数立ち上げれば違うポートを占有する

IPだけでは届けるだけなので、どのアプリケーションが対応するのか不明。 よって、UDPやTCPが必要となる。 (SIPの利用ポートは、5060番(TCP)、5001〜50060番(UDP)。 DNSで割り当てられたアドレスはFQDN)


・ アクティブモード
[サーバー] ―――セッション張り―――> [クライアント]

・ パッシブモード
[サーバー] <―――セッション張り――― [クライアント]



(2) ポート番号とサービスプロトコル

7 [サーバー] ECHO(UDP)
送られてきた文字をそのまま返すサービスプロトコル

20, 21 [サーバー] FTP(TCP)
ファイル転送プロトコル
一回の通信で2本のTCPコネクションを張る。 1本がコマンドや応答をやり取りする制御用コネクション。 もう1本がデーターを実際にやり取りするデーター用コネクション
コマンド =>  20
データー => 21

※ FTPの為の1024以上を開ける必要があるが、セキュリティーが心配。 よって、通信を行うときにだけ必要なポートを開くステートフルインスペクションという機能がある。 またパッシブモードと言う方法もある。 これはFTPクライアントとFTPサーバーのデーター用コネクションを逆向きにする方法。 (上記図)
22 [サーバー] SSH:Secure Shell (TCP)
認証方式
>rhosts認証
>RSA付きrhosts認証
>RSA認証
>パスワード認証
この順番で試される。

オープンソース OpenSSH (http://www.openssh.com/)
製品 OpenBSD 3.0/3.1, FreeBSD-Current_1
UNIX系オープンソースOS 但し、脆弱

23 [サーバー] TELNET (TCP)
仮想端末を実現するサービスプロトコル。 NVT(Network Virtual Terminal)という最低限必要な機能をモデル化した機能が必要
・ 入力文字の送信、相手からの文字の表示。 これらの文字はASCII文字(7ビット)
・ 最低 USASCII文字(95種類)を全て表示必要
・ 「改行」、「タブ」、「バックスペース」などの画面制御コードも正しく表示する必要あり。
・ WANからローカルへのTELNETは危険 SSH(にせめて)変更


24 [サーバー] SMTP(TCP) Simple Mail Transfer Protocol




SMTPは認証が無い。 よって、POP before SMTPがあり、これは、認証のないSMTPの前にPOPで認証しようということ。(SMTPデーモンがSendmailを使っている場合。)



53 [ ] DNS (Domain), TCP/IP
インターネットのFQDNとIPアドレスを対応付けして、名前解決を行うプロトコル。
(FQDN: Fully Qualified Domain Name)
インターネットやイントラネットなどのTCP/IPネットワーク上で、ドメイン名/ホスト名
省略せずに全て指定した記述方式、



67, 68 [ ] BOOTP/DHCP, TCP/UDP
Bootstrap Protocol/Dynamic Host Configuration Protocol
RFC95, RFC2131, RFC2132




67, 68のセキュリティ
WAN→LAN 67, 68和えのポートはTCP/UDPとも閉じる。




69 [   ] TFTP、TCP/UDP
サーバーに連結したXターミナルなどに関連した情報を取得するために使われるサービスプロトコル。 ネットワーク機器のファームウェア更新などに使われる。 "John the Ripper"パスワード・ファイルを解析するためのソフトウェア。



79 [ ] FINGER (TCP/UDP)
ユーザーの情報をリモートで参照可能なサービスの一つ。 「本名」、「住所」、「電話番号」、「ログイン名」、「現在のログインステータス」、「ログイン合計時間」、「ログイン回数」
Telnetでポート番号79にアクセスするか、FINGERクライアントを利用することによって、FINGERサービスを受けられる。 この時はサーバー側でFINGERサービスが必要。


80 [サーバー] HTTP(TCP)
ブラウザーはWEBサーバーとHTTPと呼ばれるプロトコルを使ってやり取りする。 このやり取りの際に、ヘッダ情報(HTTP ヘッダ)を一緒に送ることによって、やり取り内容がどのような情報であるか識別させる。

サーバー レスポンスヘッダー クライアント
リクエストヘッダ
(Content-Typeヘッダを含む)
出力データに依存するMIMEタイプの情報を定義する。

ステータスコード
WWWをブラウジングしていて、エラーが発生した場合に表示される3桁の数字。

100番台:アクセス中の送受信情報
200番台:アクセス正常終了
300番台:アクセス未了。さらなるアクセスが必要。(リロードすればよい)
400番台:クライアント(受信側)でエラー発生
500番台:サーバー(送信側)でエラー発生

***80ポートは常にアタックされる***
アタックの例
a. クロスサイトスクリプティング
b. CGIの脆弱性
c. BASIC認証やフォーム認証に対するアカウント解析
d. バッファー・オーバーフロー

a. クロスサイトスクリプティング
Webページとして動的なHTMLやXMLなどのマークアップ言語のソースを生成するための仕組みを儲けているときに、セキュリティ上の問題となるもの。 
あるWebサイトに書かれているスクリプトが別のWebサイトへとまたがって(クローズして)実行されることから、Cross-Site Scriptingと呼ばれる。 この脆弱性を悪用することにより、ユーザーのセッションを奪うことが出来る。

b. CGIの脆弱性
Webサイト内のCGIまたは、httpdに備わっているCGIのバグによって、httpd権限で任意のコマンドを実行されてしまうというもの。

c. BASIC認証やフォーム認証に対するアカウント解析
掲示板の管理人室やルーターの設定画面へアクセスするための認証を突破するアタック。
辞書ファイルを呼ばれるテキストファイルを使う"辞書アタック"、全ての英数字記号によるパスワードを力技で試す」"ブルートフォース・アタック"などが、これに当る。
 Httpdのアクセスログを常にチェックしていれば、怪しいアクセスは分かる。


d. バッファー・オーバーフロー
バッファー・オーバーフローにより、DoSアタックやルート権限(もしくはhttpd権限)を奪取すること。


110 [  ] POP3/APOP(TCP)
POP3の認証を強化したのがAPOP。
POP3の動作: ・認証 (Authentication ) /ID、パスワード
・トランザクション(Transaction)/読んだり、書いたりすること
・アップデート

APOPの機能: ・パスワードを暗号化して送信する。
・チャレンジレスポンスとは使い捨てパスワード方式の一つ。
(y = f(x)としたとき、xに対してyは求めやすいが、yからxは求めにくい。)

セキュリティ:ネットワーク盗聴で簡単に奪える。


111 [  ] RPC(TCP)
サンが作ったネットワーク上の異なるマシンで処理を実行するサービスプロトコル。 ただし、脆弱だから使わない。

123 [  ] NTP(UDP)
NTPサーバー: Stratum1: 時刻源となるセシウム原子時計に直結されたサーバーやGPSを時刻源とするサーバーであり、UTC(協定世界時)に同期されたサーバーの事。
Stratum2: Stratum1を時刻源としているサーバー
Stratum3: Stratum2を時刻源としているサーバー


135, 137, 138, 139, 445 [ ] NetBIOS(TCP/UDP)
・Network Basic Input Output System
・1984年にIBMによって開発されたAPI(Application Programming Interface) OS/2でも利用している。 (サービスプロトコルでないことに注意)
・NetBEUIはNetBIOSをベースにして拡張したもの。 ルーティング機能がないので小規模ならネットワーク構築可能。

ポート135: NetBIOSによるRIC又はDCEで使われる。
ポート137: UDP,名前登録または名前解決で使われる。
ポート139: TCP,主にファイル共有で使われる。
ポート139: Windows2000以降で、ポート139の代わりに使われる。
これらのポートはルーターで遮断したほうが良い。


143 [ ] IMPA4(TCP/UDP)
モバイル機器向けのプロトコル。 サーバー上でメールの管理が可能。


161, 162, 256 [ ] SNMP(TCP/UDP)




メッセージ
・GetRequest:SNMPマネージャーから、SNMPエージェントにオブジェクトを要求する。
・GetNeztRequest:SNMPマネージャーからSNMPエージェントに次のオブジェクトを要求する。
・GetResponse:SNMPマネージャーからSNMPマネージャーにオブジェクトを返す。
・SetRequest:SNMPマネージャーからSNMPエージェントの情報を書き換える。
・Trap:SNMPエージェントからsNMPマネージャーに通知する。

161でやり取りし、管理されるネットワークデバイスが予め設定した条件を満たすと、トラップメッセージを発生し、ポート162を使って送信する。 ポート256(UDP)は、SNMPのチェックポイント(同期)に使われる。


インターネットからのSNMPを使ったアクセスは、拒否の設定がよい。


443 [ ] HTTPS(TCP/UDP)
HTTPSでは、SSL(Secure Sockets Layer)が利用される。 SSL通信は、暗号化され、SSL通信で使われるWebサーバーは、サーバー証明書を発行する。 尚、SSLはIETFでTLSとして検討されている。




SSLでのハッシュ関数

SSL V.3.0

SSL V.2.0

セッション鍵交換用(公開鍵暗号)

RSA, DH, Fortezza

RSA

認証用(公開鍵暗号)

RSA, DSSS/DSA

RSA

セッションの暗号化(共通鍵暗号)

RC4, $c2, DES/3DES

RC4, RC2, DES/3DES. IDEA

メッセージ認証用(ハッシュ関数)

SHA1, MD5

MD5

 514  [   ]      SYSLOG( )






Opening
   Copy Rights 2006 Hishou Techno Com All rights reserved