エフェメラル・ポート(Ephemeral Ports)
  1. エフェメラル・ポート
  2. クライアントがサーバーに接続する為に利用するポートの番号
    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ではスタート、エンドポートを変更するのも容易である。
    
  3. マイクロソフト Windows系OSのエフェメラル・ポート
  4. Windows系OSのエフェメラル・ポートは 1024-5000 と特異である。
    UNIX系OSのインターネットが普及する前の初期値設定と同じとも云えるが
    インターネットが普及し、セキュリティが問題になっているのに、この初期値、システムデザインは問題である。
    
    1. ポートの拡張
    2. 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.レジストリ エディタを終了
      
  5. エフェメラル・ポートのパケットフィルター
  6. 仮りにクライアントのエフェメラル・ポートが全て32768から60000までとすると
    アクセスがクライアントからなのか、それともサーバーからなのかが一目瞭然である。
    ファイアウオールのパケットフィルター設定がシンプルで分かり易くなる。
    
    エフェメラル・ポートが1024からで、その中にポート1433などをサーバーとして使用する
    ものがある場合には、アクセスがクライアントからかどうかの判別が複雑になる。
    
      Simple is Best !!
    

戻る