Tcp
多くのアプリケーションとサービスは、TCP を使用して通信します。TCP オプションを設定して、リンクの品質とセキュリティを向上させます。
SYNおよびFINフラグセットを持つTCPヘッダーのセキュリティ
デフォルトでは、デバイスはSYNビットとFINビットの両方がTCPフラグに設定されているパケットを受け入れます。SYNビットとFINビットの両方が設定されたパケットをドロップするようにデバイスを設定して、セキュリティの脆弱性を軽減します。
SYNおよびFIN制御フラグは、通常、同じTCPセグメントヘッダーに設定されていません。SYNフラグは、シーケンス番号を同期してTCP接続を開始します。FIN フラグは、TCP 接続を終了するためのデータ転送の終了を示します。その目的は相互に排他的です。SYNおよびFINフラグが設定されたTCPヘッダーは、異常なTCP動作であり、OSに応じて受信者からさまざまな応答が発生します。 図 1 を参照してください。

攻撃者は、両方のフラグを設定したセグメントを送信して、返されるシステムの応答の種類を確認し、それにより受信側でどの種類の OS が使用されているかを判断できます。その後、攻撃者は既知のシステムの脆弱性を利用してさらなる攻撃を受けることができます。ステートメントを tcp-drop-synfin-set
有効にすると、Junos OSはSYNおよびFINフラグがTCPヘッダーで設定されているかをチェックします。このようなヘッダーを検出すると、パケットをドロップします。
[edit system internet-options] tcp-drop-synfin-set;
TCP RFC 1323拡張を無効にする
RFC 1323 TCP拡張を無効にするには、 階層レベルで ステートメントを[edit system internet-options]
含めますno-tcp-rfc1323
。
[edit system internet-options] no-tcp-rfc1323;
ラップされたシーケンスに対する保護(PAWS)番号拡張(RFC 1323、 ハイパフォーマンス向けTCP拡張機能で説明)を無効にするには、 階層レベルに ステートメントを[edit system internet-options]
含めますno-tcp-rfc1323-paws
。
[edit system internet-options] no-tcp-rfc1323-paws;
セッションネゴシエーション用にTCP MSSを設定する
セッション接続確立時に、2つのピアは、通信中に交換するパケットのIPセグメントサイズを決定するネゴシエーションに同意します。TCP SYNパケットのTCP MSS(最大セグメントサイズ)値は、TCPパケットのデータフィールド(セグメント)に含めることができる最大バイト数を指定します。MSS 値が高すぎると、送信が大きくなり、フラグメント化する必要がある IP データグラムが発生する可能性があります。フラグメント化により、追加のオーバーヘッド コストとパケット ロスが発生する可能性があります。
フラグメント化の可能性を低下させ、パケットロスを防ぐために、 ステートメントを tcp-mss
使用して、より低いTCP MSS値を指定できます。ステートメントは tcp-mss
、MSS値が指定した値よりも高いルーターのすべてのイングレスインターフェイスを通過するすべてのIPv4 TCP SYNパケットに適用されます。特定のポートは、その効果から免除することはできません。
以下のセクションでは、T Series、M Series、MXシリーズルーターでTCP MSSを設定する方法について説明します。
サービスカードを使用したTシリーズおよびMシリーズルーター、およびMXシリーズルーターでのTCP MSSの設定
T SeriesおよびM Seriesルーター、およびサービスカードを使用したMXシリーズルーターでTCP MSS値を指定するには、 階層レベルに ステートメントを[edit services service-set service-set-name]
含tcp-mss mss-value
めます。
[edit services service-set service-set-name] tcp-mss mss-value;
パラメーターの tcp-mss mss-value
範囲は、536~65535 バイトです。
TCP-MSS値を調整するインターフェイスにサービスセットを追加します。
[edit interfaces interface-name unit 0 family family service] input service-set service-set-name; output service-set service-set-name;
受信したSYNパケットとMSS値が変更されたSYNパケットの統計情報を表示するには、 運用モードコマンドを show services service-sets statistics tcp-mss
発行します。
T シリーズおよび M シリーズ ルーターでの TCP MSS の設定の詳細については、 ルーティング デバイス用 Junos OS サービス インターフェイス ライブラリを参照してください。
MPCラインカードを使用したMXシリーズルーターでのTCP MSSインラインの設定
MPCラインカードを使用するMXシリーズルーターでTCP MSS値を指定するには、 階層レベルに tcp-mss
ステートメントを [edit interfaces interface-name unit logical-unit-number family family]
含めます。
[edit interfaces interface-name unit logical-unit-number family family] tcp-mss mss-value;
パラメーターの mss-value 範囲は 64~65,535 バイトです。TCP MSS値は、インターフェイスのMTUよりも低くなければなりません。
このステートメントは、gr-(GRE)、ge-(ギガビット イーサネット)、xe-(10ギガビット イーサネット)、et-(40ギガビットおよび100ギガビット イーサネット)のインターフェイスでサポートされています。サポートされているファミリーは inet
、 および inet6
です。
MPCラインカードを使用してMXシリーズルーターでTCP MSSインラインを設定することは、インターフェイスに出入りするトラフィックに対してのみ機能し、インターフェイスに出入りするトラフィックには機能しません。
ローカルで生成された TCP/IP パケットの固定ソース アドレスを選択します。
ローカルで生成された IP パケットは、ルーティング エンジンで実行されているアプリケーションによって生成されるパケットです。Junos OS は、アプリケーション ピアが応答できるように、これらのパケットの送信元アドレスを選択します。また、アプリケーションごとに送信元アドレスを指定することもできます。この目的を果たすには、Telnet CLI コマンドに 引数が source-address
含まれています。
このセクションでは、 ステートメントを default-address-selection
紹介します。
[edit system] default-address-selection;
Telnet の場合のように、送信元アドレスを特別に選択した場合、 default-address-selection
送信元アドレスの選択には影響しません。送信元アドレスは、引数で source-address
指定されたものになります(アドレスがルーターのインターフェイスで指定された有効なアドレスである場合)。送信元アドレスが指定されていない場合、または指定されたアドレスが無効な場合は、 default-address-selection
デフォルトの送信元アドレス選択に影響を与えます。
Telnet の場合のように送信元アドレスが明示的に指定されていない場合、デフォルトで(指定されていない場合 default-address-selection
)、ローカルで生成された IP パケットに対して選択された送信元アドレスが発信インターフェイスの IP アドレスになります。これは、選択した発信インターフェイスに応じて、特定のアプリケーションの呼び出しごとに送信元アドレスが異なる可能性があることを示しています。
インターフェイスが番号なし(インターフェイスでIPアドレスが指定されていない)場合、Junos OSは予測可能なアルゴリズムを使用してデフォルトの送信元アドレスを決定します。指定された場合 default-address-selection
、Junos OSは、発信インターフェイスに番号が付いているかどうかに関係なく、送信元アドレスを選択するアルゴリズムを使用します。これは、 で default-address-selection
、発信インターフェイスに関係なく、ローカルで生成されたIPパケットに同じ送信元アドレスを提供するようにJunos OSに影響を与えることができることを示しています。
Junos OS による送信元アドレス選択の動作は、次の表に示すように合計できます。
発信インターフェイス |
指定された場合 |
指定されていない場合 |
---|---|---|
無数 |
使用 |
使用 |
番号 |
使用 |
発信インターフェイスの IP アドレスを使用する |
デフォルトアドレス送信元選択アルゴリズムの詳細については、 デフォルト、プライマリ、および優先アドレスとインターフェイスの設定 を参照してください。
IPルーティングプロトコル(OSPF、RIP、RSVP、マルチキャストプロトコルを含むがIS-ISを含まない)によって送信されたIPパケットの場合、ローカルアドレス選択はプロトコル指定によって制限されることが多く、プロトコルが正しく動作するようにします。この制約がルーティングプロトコルに存在する場合、パケットの送信元アドレスは、設定内の ステートメントの default-address-selection
存在によって影響を受けません。ローカルアドレスがIBGPやマルチホップEBGPなどのプロトコル仕様によって制約されないプロトコルの場合、プロトコルを設定する際に特定のローカルアドレスを設定しない場合、ローカルアドレスは他のローカルで生成されたIPパケットと同じ方法で選択されます。
TCP 認証
TCP認証方法を有効にすると、セキュリティが強化され、BGPおよびLDPセッション中に交換されたTCPセグメントの信頼性が保証されます。Junos デバイスは、TCP MD5、TCP 認証オプション(TCP-AO)、TCP キーチェーンベース認証の 3 つの主なタイプの TCP 認証をサポートしています。TCP-AO の詳細については、 TCP 認証オプション(TCP-AO)を参照してください。
JunosデバイスはTCP-AOとTCP MD5の両方の認証方法をサポートしていますが、特定の接続に同時に両方を使用することはできません。
IP サブネットのサポート
リリース 22.4R1 Junos OS Evolved以前は、Junos デバイスでは特定のアドレスでの TCP 認証のみを使用できます。これは、既知のIPアドレスを持つリモートピアへのTCP接続のみを認証できることを意味します。
Junos OS Evolved リリース 22.4R1 以降、TCP-AO および TCP MD5 認証は LDP および BGP セッションの IP サブネットをサポートしています。ネットワークアドレスとプレフィックス長でTCP認証を設定すると、選択したTCP認証方法は、そのサブネットの下にあるアドレスの範囲全体へのTCP接続を認証します。つまり、宛先デバイスの正確なIPアドレスを知る必要なくTCP接続を認証できます。
IP サブネットが重複する場合、認証方法は最長プレフィックス一致(LPM)を使用して、特定の TCP セッションの正確な認証キーを決定します。
Bgp
BGPセッションにプレフィックスベース認証を設定するには、以下のいずれかの階層に ステートメントを含 allow (all | prefix-list)
めます。
-
[edit protocols bgp group group-name]
-
[edit protocols bgp group group-name dynamic-neighbor dyn-name]
サブネットには、IPV4 または IPV6 アドレスを使用できます。
この例では、TCP MD5 は、すべての BGP セッションに対して 10.0.3.0/24 サブネット内のデバイスへの TCP 接続を認証します。
[edit protocols] bgp { group one { authentication-key "$ABC123"; allow 10.0.3.0/24; dynamic-neighbor dyn_one { allow 10.0.3.0/24; authentication-key "$ABC123"; } } }
自民党
LDPのプレフィックスベース認証を設定するには、 階層の下でTCP認証を session-group ip-prefix
設定します。IPv4 アドレスを使用する必要があります。
この例では、LDPはTCP-AOを使用して、10.0.0.0/24サブネット内のアドレスを持つデバイスとのTCP接続を認証します。
[edit protocols ldp] session-group 10.0.0.0/24 { authentication-algorithm ao; authentication-key-chain tcpao; }
TCP-AO キーチェーンを設定する方法については、 TCP 認証オプション(TCP-AO)を参照してください。
VRFのサポート
リリース 22.4R1 Junos OS Evolved以前のリリースでは、TCP MD5 および TCP-AO は仮想ルーティングおよび転送(VRF)インスタンスを無視します。デバイスは、デフォルト以外のルーティング インスタンスの TCP MD5 および TCP-AO 設定を無視します。デフォルトのVRFインスタンスでTCP MD5またはTCP-AOを設定すると、デバイスはその認証方法を、そのVRFインスタンスのIPアドレス範囲内にあるすべてのTCPセッションに適用します。TCPセッションがデフォルト以外のVRFインスタンスに属し、デフォルトVRFインスタンスと同じ宛先IPアドレスを持つ場合、TCP MD5とTCP-AOは、同じ宛先IPアドレスを持つ2つのTCP接続に同じ認証キーを適用します。
Junos OS Evolved リリース 22.4R1 以降、TCP-AO および TCP MD5 認証は BGP および LDP セッションで VRF を認識します。TCP-AOおよびTCP MD5は、デフォルト以外のルーティングインスタンスで設定できます。ルーティングインスタンスで設定するTCP認証方法は、そのVRFインスタンス内のTCPセッションにのみ適用されます。異なるVRFインスタンスのTCP接続に同じ宛先IPアドレスがある場合、VRFインスタンスにピアにTCP認証が設定されていない場合、TCP認証方法はそのTCP接続に適用されません。
通常と同じ階層レベルで VRF ベースの TCP 認証を routing-instances
設定します。TCP MD5認証を使用するには、 ステートメントを authentication-key authentication-key
含めます。TCP-AOを使用するには、以下のステートメントを含めます。
user@device# set authentication-algorithm ao user@device# set authentication-key-chain keychain
TCP-AO キーチェーンを設定する方法については、 TCP 認証オプション(TCP-AO)を参照してください。
VRF対応の設定をIPサブネットと組み合わせることができます。これにより、VRFインスタンス内のアドレス範囲への接続を認証できます。
Bgp
以下のいずれかの階層レベルで、BGPセッションのVRFベースのTCP認証を設定します。
-
[edit routing-instances vrf-instance protocols bgp]
-
[edit routing-instances vrf-instance protocols bgp group group-name]
-
[edit routing-instances vrf-instance protocols bgp group group-name neighbor neighbor-ip]
-
[edit routing-instances vrf-instance protocols bgp group group-name dynamic-neighbor dyn-name]
レベルでVRFベース認証を設定する dynamic-neighbor
場合は、選択した認証方法の設定と共に allow
ステートメントを含めます。例えば、動的ネイバーと TCP-AO を使用するには、以下を行います。
[edit routing-instances vrf-instance protocols bgp group group-name dynamic-neighbor dyn-name] user@device# set allow (all | prefix-list) user@device# set authentication-algorithm ao user@device# set authentication-key-chain keychain
次の例では、 と呼ばれる vrf-one
VRFインスタンスでTCP接続のセキュリティを確保するためにTCP認証を使用します。グループ1では、BGPはTCP MD5を使用して、IPアドレス10.0.1.1を持つネイバーへの接続を認証します。TCP-AOを使用して、IPアドレス10.0.1.2を持つネイバーへの接続を認証します。
グループ2では、BGPはTCP-AOを使用して、10.0.0.0/24サブネット内の任意のデバイスへの接続を認証します。
[edit routing-instances] vrf-one { protocols { bgp { group one { peer-as 22; neighbor 10.0.1.1 { authentication-key "$ABC123"; ## SECRET-DATA } neighbor 10.0.1.2 { authentication-algorithm ao; authentication-key-chain tcpao; } } group two { peer-as 22; dynamic-neighbor dyn_two { allow 10.0.0.0/24; authentication-algorithm ao; authentication-key-chain tcpao; } } } } }
自民党
以下のいずれかの階層レベルで、LDPセッションのVRFベース認証を設定します。
-
[edit routing-instances vrf-instance protocols ldp]
-
[edit routing-instances vrf-instance protocols ldp session session-ip]
-
[edit routing-instances vrf-instance protocols ldp session-group ip-prefix]
この例では、TCP-AOは と呼ばれる vrf-two
VRFインスタンスでTCP接続を認証します。アドレス 10.0.1.1 および 10.0.0.0/24 サブネット内の任意のアドレスへの TCP 接続を認証します。
[edit routing-instances] vrf-two { protocols { ldp { session 10.0.1.1 { authentication-algorithm ao; authentication-key-chain tcpao; } session-group 10.0.0.0/24 { authentication-algorithm ao; authentication-key-chain tcpao; } } } }