- エフェメラル・ポート
クライアントがサーバーに接続する為に利用するポートの番号
ftpのファイル転送の場合には、1つのファイル転送毎に1つのエフェメラル・ポートを使用する
HTTPの場合には、1セッション(1ページ)毎に新しいエフェメラル・ポートを使用する
リンクなどがある場合には、1ページでも複数のエフェメラル・ポートを必要とする
同じサイトでも別のページに移動する度に新しいエフェメラル・ポートで接続する。
少しホームページを見るだけで、かなりのエフェメラル・ポートを消費する。
また全て消費するとスタートの番号に戻る。
エフェメラル(ephemeral)の意味 ”短命な” はこの様に一時的に使われる為である。
サーバーは同一クライアント(アドレス)からの接続でもポート番号が異なると、
別の新たな接続(セッション)である事と判断する。
クライアントはサーバーから返ってくるエフェメラル・ポートでどのセッションのものか判別する。
エフェメラル・ポートは基本的には 0から1023までの特権ポートを除いた 1024から65535までが使用出来る。
しかし IANAは1024から49151までを管理ポートとし、
49152から65535までをユーザーが自由に使用するポートとしている。
少なくとも20000以下は様々なサーバー用ポートとして使用されているのでエフェメラル・ポートとして
使用すべきではない。
何故ならサーバーからの返信なのか、それともクライアントからのアクセスなのかの区別が複雑になり、
セキュリティ上問題を起こす場合がある。
事実、UNIX系OSの多くは初期値として49152から65535を使用している
また容易に変更する事が出来る。また経験的に32768から65535までが使用される事が多い。
IANA port-numbers
The range for assigned ports managed by the IANA is 0-1023.
The Registered Ports are those from 1024 through 49151.
The Dynamic and/or Private Ports are those from 49152 through 65535.
Values 32768-65535 are for private use among mutually consenting parties.
Ncftp Ephemeral Ports
AIX,HP-UX,FreeBSD,OpenBSDなどUNIX系OSの多くは初期値として49152から65535までを使用する
IRIX :1024-65535
Solaris :32768-65535
Linux:
kernel 2.2 :1024-4999
kernel 2.4 以降 :32768-61000
UNIX系OSではスタート、エンドポートを変更するのも容易である。
- マイクロソフト Windows系OSのエフェメラル・ポート
Windows系OSのエフェメラル・ポートは 1024-5000 と特異である。
UNIX系OSのインターネットが普及する前の初期値設定と同じとも云えるが
インターネットが普及し、セキュリティが問題になっているのに、この初期値、システムデザインは問題である。
- ポートの拡張
microsoft 196271
microsoft 812873
エンドポートはレジストリ エディタで65534まで拡張出来る。(注意 65535ではない)
Tcpip/Parametersを変更するが tcpだけしか変更できないのか、udpも変わるのか。
tcpとudpのエフェメラル・ポートを分けて管理する程、高度な事はしていないだろうから
エフェメラル・ポートのエンドポートが拡張されると考えればよい。
1.レジストリ エディタ (Regedt32.exe)を起動
2.次のレジストリ キーに移動
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
3.編集メニューの値の追加をクリックし、次のレジストリ値を次に追加する
Value Name: MaxUserPort
Data Type: REG_DWORD
Value: 65534 # 5000-65534
4.レジストリ エディタを終了
- エフェメラル・ポートのパケットフィルター
仮りにクライアントのエフェメラル・ポートが全て32768から60000までとすると
アクセスがクライアントからなのか、それともサーバーからなのかが一目瞭然である。
ファイアウオールのパケットフィルター設定がシンプルで分かり易くなる。
エフェメラル・ポートが1024からで、その中にポート1433などをサーバーとして使用する
ものがある場合には、アクセスがクライアントからかどうかの判別が複雑になる。
Simple is Best !!