Tcp
많은 애플리케이션 및 서비스가 통신을 위해 TCP를 사용합니다. 링크 품질 및 보안을 향상시키기 위해 TCP 옵션을 구성합니다.
SYN 및 FIN Flag Set을 통한 TCP 헤더 보안
기본적으로 디바이스는 TCP 플래그에 SYN 및 FIN 비트가 설정된 패킷을 허용합니다. 보안 취약점을 줄이기 위해 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(Protection agains Wrapped Sequence) 번호 확장(RFC 1323에서 설명, 고성능을 위한 TCP Extensions에서 설명)을 비활성화하려면 다음 계층 레벨의 [edit system internet-options]
명령문을 포함합니다no-tcp-rfc1323-paws
.
[edit system internet-options] no-tcp-rfc1323-paws;
세션 협상을 위한 TCP MSS 구성
세션 연결 설정 과정에서 두 피어는 통신 중에 교환할 패킷의 IP 세그먼트 크기를 결정하기 위해 협상에 동의합니다. TCP SYN 패킷의 TCP MSS(최대 세그먼트 크기) 값은 TCP 패킷의 데이터 필드 또는 세그먼트가 포함할 수 있는 최대 바이트 수를 지정합니다. MSS 값이 너무 높게 설정되면 전송하기에는 너무 큰 IP 데이터그램이 생성되고 단편화되어야 합니다. 단편화는 추가적인 오버헤드 비용과 패킷 손실을 초래할 수 있습니다.
단편화의 가능성을 줄이고 패킷 손실을 방지하기 위해 이 명령문을 사용하여 tcp-mss
보다 낮은 TCP MSS 값을 지정할 수 있습니다. 이 문은 tcp-mss
MSS 값이 사용자가 지정한 것보다 높은 모든 라우터의 수신 인터페이스를 통과하는 모든 IPv4 TCP SYN 패킷에 적용됩니다. 특정 포트의 영향을 면제할 수 없습니다.
다음 섹션에서는 T 시리즈, M 시리즈 및 MX 시리즈 라우터에서 TCP MSS를 구성하는 방법을 설명합니다.
서비스 카드를 사용하여 T 시리즈 및 M 시리즈 라우터, MX 시리즈 라우터에서 TCP MSS 구성
T 시리즈 및 M 시리즈 라우터에서 TCP MSS 값을 지정하고 서비스 카드를 사용하는 MX 시리즈 라우터를 지정하려면 계층 수준의 명령문을 [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 값을 지정하려면 계층 수준의 명령문을 [edit interfaces interface-name unit logical-unit-number family family]
포함합니다 tcp-mss
.
[edit interfaces interface-name unit logical-unit-number family family] tcp-mss mss-value;
매개 변수 범위 mss-value 는 64바이트에서 65,535바이트까지입니다. TCP MSS 값은 인터페이스의 MTU보다 낮아야 합니다.
이 설명은 GRE(gr-), ge-(Gigabit Ethernet), xe- (10-Gigabit Ethernet) 및 et-(40-Gigabit 및 100-Gigabit Ethernet)에서 지원됩니다. 지원되는 제품군은 inet
inet6
MPC 라인 카드를 사용하여 MX 시리즈 라우터에서 TCP MSS 인라인으로 구성하면 인터페이스를 송신/수신하는 트래픽이 아니라 인터페이스를 송수신하는 트래픽에 대해서만 작동합니다.
로컬에서 생성된 TCP/IP 패킷에 대한 고정 소스 주소 선택
로컬에서 생성된 IP 패킷은 Routing Engine에서 실행되는 애플리케이션에 의해 생성된 패킷입니다. 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는 알고리즘을 사용하여 발신 인터페이스의 번호가 지정되었는지 여부에 관계없이 소스 주소를 선택합니다. 이는 사용자가 Junos OS에 영향을 미루어 나가는 인터페이스에 관계없이 로컬로 생성된 IP 패킷에서 동일한 소스 주소를 제공할 수 있음을 default-address-selection
나타냅니다.
Junos OS의 소스 주소 선택 동작을 다음 표에 나와 있듯이 요약할 수 있습니다.
나가는 인터페이스 |
지정된 경우 |
지정되지 않은 경우 |
---|---|---|
번호가 지정되지 않은 경우 |
사용 |
사용 |
번호 매기기 |
사용 |
나가는 인터페이스의 IP 주소 사용 |
기본 주소 선택 알고리즘에 대한 자세한 내용은 기본값, 기본 주소, 기본 주소 및 인터페이스 구성 을 참조하십시오.
IP 라우팅 프로토콜(OSPF, RIP, RSVP 및 IS-IS는 포함되지 않는 멀티캐스트 프로토콜 포함)에 의해 전송되는 IP 패킷의 경우 프로토콜이 올바르게 작동할 수 있도록 로컬 주소 선택이 프로토콜 사양에 의해 제한되는 경우가 많습니다. 이 제약 조건이 라우팅 프로토콜에 존재하는 경우 패킷의 소스 주소는 구성에 있는 명령문의 default-address-selection
존재에 의해 영향을 받지 않습니다. IBGP 및 Multihop EBGP와 같은 프로토콜 규격에 의해 로컬 주소가 제한되지 않는 프로토콜의 경우 프로토콜을 구성할 때 특정 로컬 주소를 구성하지 않으면 로컬 주소가 다른 로컬에서 생성된 IP 패킷과 동일한 방법을 사용하여 선택됩니다.
TCP 인증
TCP 인증 방법을 활성화하면 보안을 강화하고 BGP 및 LDP 세션 동안 교환되는 TCP 세그먼트의 인증을 보장합니다. Junos 장치는 TCP MD5, TCP-AO(TCP Authentication Option) 및 TCP 키체인 기반 인증 등 세 가지 유형의 TCP 인증을 지원합니다. TCP-AO에 대한 자세한 내용은 TCP 인증 옵션(TCP-AO)을 참조하십시오.
Junos 장치는 TCP-AO 및 TCP MD5 인증 방법을 모두 지원하지만, 해당 연결에서 동시에 둘 다 사용할 수는 없습니다.
IP 서브넷 지원
Junos OS Evolved Release 22.4R1 이전에 Junos 장치는 특정 주소로 TCP 인증만 사용할 수 있도록 합니다. 즉, 알려진 IP 주소를 가진 원격 피어에 대한 TCP 연결만 인증할 수 있습니다.
Junos OS Evolved Release 22.4R1부터 시작하여, TCP-AO 및 TCP MD5 인증은 LDP 및 BGP 세션을 위한 IP 서브넷을 지원합니다. 네트워크 주소와 접두사 길이로 TCP 인증을 구성할 때 선택한 TCP 인증 방법은 해당 서브넷에서 모든 범위의 주소에 대한 TCP 연결을 인증합니다. 즉, 대상 장치의 정확한 IP 주소를 알 필요 없이 TCP 연결을 인증할 수 있습니다.
IP 서브넷이 겹치는 경우, 인증 방법은 LPM(Longest Prefix Match)을 사용하여 특정 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
LDP에 대한 Prefix 기반 인증을 구성하려면 계층에서 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-AO(TCP Authentication Option)를 참조하십시오.
VRF 지원
Junos OS Evolved Release 22.4R1 이전의 릴리스에서는 TCP MD5 및 TCP-AO가 VRF(Virtual Routing and Forwarding) 인스턴스를 무시합니다. 디바이스는 기본이 아닌 라우팅 인스턴스에서 TCP MD5 및 TCP-AO 구성을 무시합니다. 기본 VRF 인스턴스에서 TCP MD5 또는 TCP-AO를 구성할 때 디바이스는 해당 VRF 인스턴스에 대한 IP 주소 범위 내의 목적지가 있는 모든 TCP 세션에 인증 방법을 적용합니다. TCP 세션이 기본이 아닌 VRF 인스턴스에 속하지만 기본 VRF 인스턴스와 동일한 대상 IP 주소를 가진 경우, TCP MD5 및 TCP-AO는 동일한 대상 IP 주소를 가진 두 개의 TCP 연결에 동일한 인증 키를 적용합니다.
Junos OS Evolved Release 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-AO(TCP Authentication Option)를 참조하십시오.
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
. 예를 들어 동적 neighbor와 함께 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
다음 예에서 BGP는 TCP 인증을 사용하여 라는 vrf-one
VRF 인스턴스에서 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
다음 계층 수준에서 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/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; } } } }