TCP 세션
네트워크에서 TCP를 통해 데이터를 전송하려면 3방향 핸드셰이크 세션 설정 프로세스를 따릅니다. 세션을 시작하는 프로세스가 있으며 TCP 세션을 종료하는 프로세스도 있습니다. 이 항목은 TCP 세션 처리와 관련된 프로세스를 이해하는 데 도움이 됩니다.
정책당 TCP 세션 검사 이해
기본적으로 TCP SYN 검사 및 시퀀스 검사 옵션은 모든 TCP 세션에서 활성화됩니다. Junos 운영 체제(Junos OS)는 TCP 세션 중에 다음 작업을 수행합니다.
세션의 첫 번째 패킷에서 SYN 플래그를 확인하고 세션 시작을 시도하는 비 SYN 플래그가 있는 모든 TCP 세그먼트를 거부합니다.
상태 저장 검사 중에 TCP 시퀀스 번호의 유효성을 검사합니다.
정책별 TCP 세션 검사 기능을 사용하면 각 정책에 대한 SYN 및 시퀀스 검사를 구성할 수 있습니다. 현재 TCP 옵션 플래그인 no-sequence-check 및 no-syn-check는 서비스 게이트웨이의 동작을 제어하기 위해 글로벌 수준에서 사용할 수 있습니다. 정책별 TCP 옵션을 지원하기 위해 다음 두 가지 옵션을 사용할 수 있습니다.
sequence-check-required: sequence-check-required 값은 전역 값 no-sequence-check보다 우선합니다.
syn-check-required: syn-check-required 값은 전역 값 no-syn-check보다 우선합니다.
정책별 TCP 옵션을 구성하려면 해당 전역 옵션을 꺼야 합니다. 그렇지 않으면 커밋 검사가 실패합니다. 글로벌 TCP 옵션이 비활성화되어 있고 SYN 플러드 보호가 첫 번째 패킷을 허용하는 경우, 정책별 TCP 옵션이 SYN 및/또는 시퀀스 검사의 수행 여부를 제어합니다.
정책
syn-check-required
별 옵션은 CLI 명령의set security flow tcp-session no-syn-check-in-tunnel
동작을 무시하지 않습니다.전역 SYN 검사를 비활성화하면 패킷 플러딩을 방어하는 디바이스의 효율성이 감소합니다.
정책 검색 후 글로벌 SYN 검사를 비활성화하고 SYN 검사를 적용하면 라우터가 처리할 수 있는 패킷 수에 큰 영향을 미칩니다. 이로 인해 CPU 작업이 집중적으로 발생합니다. 글로벌 SYN 검사를 비활성화하고 정책별 SYN 검사 시행을 활성화하는 경우 이러한 성능 영향을 알고 있어야 합니다.
TCP 패킷 보안 검사 비활성화
SRX 시리즈 방화벽에서는 TCP 패킷에 대한 보안 검사를 비활성화하여 잘못된 TCP 구현이 있는 호스트 및 디바이스와의 상호 운용성을 보장할 수 있습니다.
이 no-sequence-check
옵션은 TCP 시퀀스 검사를 비활성화합니다. 또한 처리량을 증가시킵니다.
이 set security flow tcp-session no-sequence-check
명령은 기본 또는 해시 기반 모드의 모든 TCP 세션에서 TCP 시퀀스 검사를 비활성화합니다.
예: 정책당 TCP 패킷 보안 검사 구성
이 예에서는 디바이스의 각 정책에 대해 TCP 패킷 보안 검사를 구성하는 방법을 보여줍니다.
요구 사항
시작하기 전에 전역 수준에서 구성된 tcp 옵션, tcp-syn-check
을 tcp-sequence-check
비활성화해야 합니다.
개요
SYN 및 시퀀스 확인 옵션은 기본적으로 모든 TCP 세션에서 활성화됩니다. 대용량 파일 전송을 지원해야 하거나 비표준 애플리케이션을 실행하는 환경에서는 각 정책에 대해 시퀀스 및 동기화 검사를 다르게 구성해야 할 수 있습니다. 이 예에서는 정책에 pol1
대한 시퀀스 및 동기화 검사를 구성합니다.
구성
절차
단계별 절차
정책 수준에서 TCP 패킷 보안 검사를 구성하려면 다음을 수행합니다.
세션을 생성하기 전에 TCP SYN 비트에 대한 검사를 구성합니다.
[edit] user@host# set security policies from-zone Zone-A to-zone Zone-B policy pol1 then permit tcp-options syn-check-required
상태 저장 검사 중에 TCP 세그먼트의 시퀀스 번호 확인을 구성합니다.
[edit] user@host# set security policies from-zone Zone-A to-zone Zone-B policy pol1 then permit tcp-options sequence-check-required
디바이스 구성을 완료하면 구성을 커밋합니다.
[edit] user@host# commit
확인
구성이 제대로 작동하는지 확인하려면 명령을 입력합니다 show security policies detail
.
예: SRX 시리즈 서비스 게이트웨이에 대한 TCP 패킷 보안 검사 비활성화
이 예는 디바이스에서 TCP 패킷 보안 검사를 비활성화하는 방법을 보여줍니다.
요구 사항
시작하기 전에 TCP 패킷 보안 검사를 비활성화하는 상황을 이해하십시오. .
개요
Junos OS는 TCP 패킷에 대한 보안 검사를 비활성화하는 메커니즘을 제공하여 TCP 구현에 결함이 있는 호스트 및 디바이스와의 상호 운용성을 보장합니다. no-SYN-check 중에 Junos OS는 세션 생성을 위해 TCP SYN 패킷을 찾지 않습니다. 시퀀스 없음 검사는 TCP 시퀀스 검사 유효성 검사를 비활성화합니다. 또한 처리량이 증가합니다. SYN 확인 및 시퀀스 검사는 기본적으로 활성화되어 있습니다. set security flow 명령은 모든 TCP 세션에서 TCP SYN 검사 및 TCP 시퀀스 검사를 비활성화하므로 보안이 약화됩니다. 이는 대용량 전송 파일과 같은 고객이 있는 시나리오 또는 표준에서 올바르게 작동하지 않는 애플리케이션에서 필요할 수 있습니다.
구성
절차
단계별 절차
다음 예제에서는 구성 계층의 다양한 수준을 탐색해야 합니다. 이를 수행하는 방법에 대한 지침은 CLI 사용자 가이드의 구성 모드에서 CLI 편집기 사용을 참조하십시오.
TCP 패킷 보안 검사를 비활성화하려면 다음을 수행합니다.
세션을 생성하기 전에 TCP SYN 비트 검사를 비활성화합니다.
[edit security flow] user@host# set tcp-session no-syn-check
상태 저장 검사 중에 TCP 세그먼트에서 시퀀스 번호 확인을 비활성화합니다.
[edit security flow] user@host# set tcp-session no-sequence-check
디바이스 구성을 완료하면 구성을 커밋합니다.
[edit ] user@host# commit
확인
구성이 제대로 작동하는지 확인하려면 명령을 입력합니다 show security flow
.
예: SRX 시리즈 방화벽의 모든 TCP 세션에 대한 최대 세그먼트 크기 설정
이 예는 SRX 시리즈 방화벽의 모든 TCP 세션에 대한 최대 세그먼트 크기를 설정하는 방법을 보여줍니다.
요구 사항
시작하기 전에 최대 세그먼트 크기를 설정하는 상황을 이해하십시오.
개요
TCP 최대 세그먼트 크기(TCP-MSS)를 변경하여 모든 TCP 세션을 종료할 수 있습니다. 단편화 가능성을 줄이고 패킷 손실을 방지하기 위해 tcp-mss를 사용하여 더 낮은 TCP MSS 값을 지정할 수 있습니다. 이는 MSS 값이 지정한 값보다 높은 라우터의 수신 인터페이스를 통과하는 모든 TCP SYN 패킷에 적용됩니다.
DF 비트가 설정된 경우, 패킷을 단편화하지 않으며 Junos OS는 ICMP 오류 유형 3 코드 4 패킷을 애플리케이션 서버로 전송합니다(대상에 연결할 수 없음; 조각화 필요 및 DF 설정). 이 ICMP 오류 메시지에는 응용 프로그램 서버에서 사용할 올바른 MTU(tcp-mss에 정의됨)가 포함되어 있습니다. 이 메시지를 수신하고 그에 따라 패킷 크기를 조정해야 합니다. 이는 IPsec이 패킷 오버헤드를 추가했기 때문에 VPN에 특히 필요합니다. 따라서 TCP-MSS를 적절하게 낮춰야 합니다.
패킷 모드에서 SRX 시리즈 방화벽을 실행하는 경우 을 set system internet-options tcp-mss (를) 사용하여 TCP-MSS 값을 조정합니다. 모든 포트는 TCP-MSS 구성의 영향을 받습니다. 특정 포트를 제외할 수 없습니다. 플로우 모드에서 SRX 시리즈 방화벽을 실행할 때 를 사용할 set system internet-options tcp-mss 수 있지만 TCP-MSS 값을 조정하려면 을 set security flow tcp-mss (를) 사용할만 권장합니다. 두 문이 모두 구성된 경우 두 값 중 낮은 값이 적용됩니다.
구성
절차
단계별 절차
모든 TCP 세션에 대한 최대 세그먼트 크기를 구성하려면:
모든 TCP 세션에 대한 TCP 최대 세그먼트 크기를 설정합니다.
[edit security flow] user@host# set tcp-mss all-tcp mss 1300
디바이스 구성을 완료하면 구성을 커밋합니다.
[edit ] user@host# commit
결과
구성 모드에서 명령을 입력하여 show security flow
구성을 확인합니다. 출력이 의도한 구성을 표시하지 않으면, 이 예의 구성 지침을 반복하여 수정합니다.
간결성을 위해 이 show
명령 출력에는 이 예와 관련된 구성만 포함됩니다. 시스템의 다른 모든 구성은 줄임표(...)로 대체되었습니다.
[edit] user@host# show security flow ... tcp-mss{ all-tcp{ mss 1300; } } ...
확인
구성이 제대로 작동하는지 확인하려면 운영 모드에서 명령을 입력합니다 show configuration security flow
.
user@host> show configuration security flow tcp-mss{ all-tcp{ mss 1300; } }
TCP Out-of-State 패킷 드롭 로깅 개요
패킷 교환 네트워크 내에서 수요가 사용 가능한 용량을 초과하면 패킷은 대기열이 가득 찰 때까지 초과 패킷을 보관하기 위해 대기열에 대기한 다음 패킷이 삭제됩니다. TCP가 이러한 네트워크에서 작동하는 경우 오류 없는 종단 간 통신을 유지하기 위해 수정 조치가 취해집니다.
플로우 모듈은 이미 세션 생성 및 세션 닫기와 같은 세션 기반 이벤트에 대한 RTLOG 생성을 지원합니다. SRX 시리즈 방화벽은 이제 세션이 존재하지 않는 패킷 드롭과 같은 패킷 기반 이벤트에 대한 RTLOG 생성을 지원합니다.
SRX 시리즈 방화벽은 플로우 모듈에 의해 손실된 동기화되지 않은 TCP out-of-state 패킷의 로깅을 지원합니다.
TCP out-of-state 패킷 드롭 로깅 기능은 패킷 손실을 방지하고 오류 없는 통신을 위해 동기화되지 않은 패킷을 로깅하여 패킷 복구를 가능하게 하며 데이터베이스 서버가 동기화되지 않도록 합니다. 이 기능은 보안 로그(RTLOG) 기능 위에 구축됩니다.
TCP out-of-state 패킷 드롭 로깅은 다음 조건에서 TCP 패킷 드롭 로그의 캡처를 지원합니다.
Session ages out- 긴 TCP 세션 위에서 실행 중인 클라우드 애플리케이션이 있고 세션이 만료된 후 이러한 애플리케이션이 TCP 세션을 새로 고치지 않으면 TCP 패킷이 삭제됩니다. 이 기능은 이렇게 삭제된 TCP 패킷의 로깅을 지원합니다.
Unsynchronized first packets due to attacks or asymmetric routes—SRX 시리즈 방화벽을 두 사이트에 구축하는 경우, 그리고 라우팅에 때때로 비대칭 트래픽이 강제되는 경우, 동기화(SYN) 패킷은 한 사이트에서는 표시되지만 동기화 승인(SYN_ACK) 패킷은 다른 사이트에서 표시됩니다.
즉, SRX 시리즈 방화벽은 일치하는 상태 테이블 항목이 없는 TCP ACK 패킷을 확인합니다. 이는 연결이 일정 기간 동안 비활성 상태이거나 연결 테이블이 플러시되었기 때문에 발생할 수 있습니다(예: 정책 설치 또는 다시 시작으로 인해).
이 경우 다른 사이트에서 볼 수 있는 SYN_ACK 패킷은 SRX 시리즈 방화벽에 의해 거부되었지만 기록되지 않았습니다. 이 기능은 거부된 SYN_ACK 패킷의 로깅을 지원합니다.
Other out-of-state conditions (like TCP sequence check fail and synchronization packet received in FIN state)—SRX 시리즈 방화벽이 시퀀스 실패를 감지하면, 디바이스가 TCP 4방향 폐쇄 상태이지만 SYN 패킷을 수신하거나 3방향 핸드셰이크 실패가 있는 경우, SRX 시리즈 방화벽은 TCP 패킷을 삭제하고 이러한 손실된 패킷이 기록됩니다.
동기화되지 않은 TCP Out-of-State 패킷 드롭 로그는 세션 기반 로그가 아니라 패킷 기반 로그입니다.
TCP Out-of-state 패킷 드롭 로깅은 CPU가 공격을 받지 않도록 보호하기 위해 스로틀 메커니즘으로 설계되었으며, 각 스로틀 간격 내에서 일부 로그가 삭제될 수 있습니다.
플로우 모듈에 의해 삭제된 TCP out-of-state 패킷만 기록됩니다. TCP 프록시 및 IDP에 의해 삭제된 TCP 패킷은 기록되지 않습니다.
TCP Out-of-State 패킷 드롭 로깅 이해
TCP Out-of-State 패킷 드롭 로깅의 구현을 이해하려면, SRX 시리즈 방화벽을 두 사이트에 구축하고, 라우팅이 때때로 비대칭 트래픽을 강제하여 SYN 패킷은 한 사이트에서 표시되지만 SYN_ACK 패킷은 다른 사이트에서 표시된다는 점을 고려해야 합니다. 이 경우 SYN_ACK 패킷은 거부되지만 기록되지는 않습니다. TCP out-of-state 패킷 드롭 로깅 기능은 이러한 동기화되지 않은 패킷 드롭에 대한 가시성을 제공합니다.
데이터 센터 내의 데이터베이스가 keepalives를 전송하지 않고 TCP 소켓을 열린 상태로 유지하는 시나리오를 고려하십시오. 데이터가 전송되지 않으면 SRX 시리즈 방화벽이 세션 시간을 초과합니다. 데이터베이스가 해당 TCP 소켓을 통해 일부 데이터를 전송하더라도 트래픽이 SRX 시리즈 방화벽에 도달하면 세션이 더 이상 존재하지 않고 패킷이 삭제되지만 기록되지는 않습니다. 이렇게 삭제된 상태 외 TCP 패킷은 이제 SRX 시리즈 방화벽에 로깅됩니다.
지원되는 TCP Out-of-State 로깅 기능
TCP 상태 외 로깅은 다음과 같은 기능을 지원합니다.
대상 트래픽을 필터링하는 패킷 필터 구성 요소입니다.
CPU가 로그 메시지로 인해 오버로드되지 않도록 보호하는 스로틀 구성 요소입니다.
로그 생성 속도를 변경할 수 있는 유연성.
패킷 필터 구성 요소
로깅 필터는 현재 플로우 추적 필터를 활용합니다. 트래픽을 필터링하는 다양한 방법을 제공합니다. 패킷 로그를 생성하도록 필터를 구성해야 하며, 그렇지 않으면 로그가 트리거되지 않습니다.
이 필터 기능을 사용하면 예기치 않게 로그가 활성화되는 것을 방지할 수 있습니다. 지원되는 최대 필터는 64개입니다.
set security flow packet-log packet-filter <filter-name>
명령을 사용하여 원하는 관련 필터 구성 요소를 사용하도록 설정합니다.
스로틀 구성 요소
모든 TCP out-of-state 패킷을 로깅하면 트래픽이 많거나 공격이 발생할 때 디바이스에 과부하가 걸릴 수 있습니다. CPU가 유휴 상태이고 가능한 한 많은 메시지를 기록하려는 경우 CPU 과부하가 발생할 수 있습니다.
스로틀 메커니즘을 사용하면 CLI에서 스로틀 간격을 구성할 수 있으므로 CPU가 과부하되지 않도록 보호할 수 있습니다.
기록된 데이터를 매핑하기 위해 해시 테이블이 도입되었습니다. 해시 키는 원본-IP 주소, 대상-IP 주소, 원본 포트 및 대상 포트를 사용하여 생성됩니다.
각 스로틀 간격 내에서는 제한된 수(둘 이상)의 메시지만 RTLOG로 전송됩니다. 나머지 로그 메시지는 제한됩니다.
기본 스로틀 간격은 1초입니다. 스로틀 간격(밀리초 수준에서)은 2 또는 0(0, 1, 2, 4, 8, 16 ... 2^N)입니다.
스로틀 간격이 0으로 구성되면 스로틀 메커니즘이 관련되지 않습니다. 이는 트래픽이 매우 적고 모든 패킷 드롭 로그를 기록하려는 시나리오에 적합합니다.
스로틀 간격을 2^N으로 구성하면 스로틀 메커니즘이 잠기지 않고 우수한 로그 캡처 성능을 제공합니다.
로그 생성 속도를 변경할 수 있는 유연성
설정된 스로틀 간격에 따라 로그 생성 속도를 수정하고 관리할 수 있습니다.
즉, 각 32밀리초(ms) 간격 내에서 제한된 수의 로그가 생성되고 나머지 로그는 삭제될 수 있습니다. 간격을 (0, 1, 2, 4, 8, 16, 32 ... 2^N)입니다.
입력 값이 2^N으로 정렬되지 않은 경우 흐름 처리 중에 자동으로 2^N에 정렬됩니다. 예를 들어 10ms 간격을 구성하면 자동으로 8ms 간격으로 정렬됩니다.
들어오는 단편화 특성을 보존하여 처리량을 향상시키는 방법 이해
이 주제에서는 SRX 시리즈 방화벽을 사용하여 수신 패킷 조각의 특성을 보존할 때의 이점에 대해 설명합니다.
데이터가 한 호스트에서 다른 호스트로 전송되면 일련의 패킷으로 전송됩니다. 가장 큰 크기의 패킷이 데이터 경로의 링크에서 단편화되지 않고 소스 노드에서 대상 노드로 경로를 전송할 수 있을 때 성능이 향상되고 네트워크 리소스가 절약됩니다. 패킷이 해당 링크에 대해 설정된 최대 전송 단위(MTU)의 패킷보다 커서 경로의 링크를 전송하기 위해 패킷을 더 작은 패킷으로 조각화해야 하는 경우 각 결과 조각에는 페이로드 또는 데이터 외에도 패킷 헤더 정보가 포함되어야 합니다. 오버헤드가 증가하면 처리량이 낮아지고 네트워크 성능이 저하될 수 있습니다. 또한 패킷 조각은 추가 네트워크 리소스를 소비하는 대상 노드에서 리어셈블되어야 합니다.
반면, 호스트가 경로 MTU(경로 최대 전송 단위)보다 훨씬 작은 패킷을 전송하면 네트워크 리소스가 낭비되어 처리량이 최적화되지 않습니다. 경로 MTU 검색 프로세스는 세션의 소스 노드에서 대상 노드로 데이터 경로를 전송하는 조각에 대한 최적의 MTU 크기를 검색하기 위해 작동합니다. 최적의 패킷 크기는 경로 MTU의 패킷 크기입니다. 단편화는 패킷의 크기가 경로 MTU를 초과할 때 발생합니다.
SRX 시리즈 방화벽에 애플리케이션 레이어 서비스가 구성된 경우, 서비스를 적용하고 콘텐츠를 검사하기 전에 수신 인터페이스의 패킷 조각을 다시 조립해야 합니다. 이러한 리어셈블된 패킷 조각은 데이터가 송신 인터페이스로 전송되기 전에 다시 세분화되어야 합니다. 일반적으로 송신 인터페이스의 MTU 크기에 따라 SRX 시리즈 방화벽에서 다음 링크로 전송되는 단편의 크기가 결정됩니다. SRX 시리즈 방화벽의 송신 MTU 크기가 경로 MTU보다 클 수 있으며, 이로 인해 데이터 경로에서 패킷 단편화가 발생하여 성능이 저하되거나 패킷 손실이 발생할 수 있습니다. 패킷 조각은 소스에서 대상으로 경로의 모든 링크를 전송할 수 있을 만큼 작아야 합니다.
기본적으로 SRX 시리즈 방화벽은 송신 인터페이스에 구성된 MTU 크기를 사용하여 전송하는 패킷 조각의 크기를 결정합니다. 그러나 수신 패킷 조각을 보존하는 기능을 활성화하면 SRX 시리즈 방화벽이 들어오는 패킷 조각을 탐지하고 크기를 저장합니다.
데이터 경로에서 패킷 단편화 가능성을 줄이기 위해 SRX 시리즈 방화벽은 해당 플로우에 대한 송신 최대 전송 단위(MTU)를 추적하고 조정합니다. 들어오는 모든 조각의 최대 크기를 식별합니다. 이 정보를 송신 인터페이스의 기존 최대 전송 단위(MTU)와 함께 사용하여 송신 인터페이스로 전송되는 단편화된 패킷에 대한 올바른 MTU 크기를 결정합니다. SRX 시리즈 방화벽은 두 숫자를 비교합니다. 더 작은 숫자를 사용하여 송신 인터페이스 MTU 크기에 사용합니다.
들어오는 패킷 조각의 크기를 고려하는 기능을 활성화하기 위해 명령을 사용하여 set security flow preserve-incoming-frag-size
디바이스를 구성합니다.
표 1 에는 SRX 시리즈 송신 최대 전송 단위(MTU) 크기가 어떻게 결정되는지 요약되어 있습니다.
수신 프래그먼트 크기 |
기존 송신 최대 전송 단위(MTU) 크기 |
최종 송신 최대 전송 단위(MTU) 크기 |
---|---|---|
가장 큰 조각이 |
기존 송신 최대 전송 단위(MTU) 크기보다 작음 |
가장 큰 수신 조각 크기가 사용됩니다. |
가장 큰 조각이 |
기존 송신 최대 전송 단위(MTU) 크기보다 큼 |
기존 송신 인터페이스 최대 전송 단위(MTU)가 사용됩니다. |
이 기능은 SRX 시리즈 방화벽에서 지원됩니다. 터널을 통과하는 트래픽과 터널을 나가는 트래픽을 지원합니다. IPv4 및 IPv6 트래픽 모두에 적용됩니다.
다음 두 가지 고려 사항이 조각 크기에 영향을 줍니다.
Content Security 및 ALG와 같은 스트림 기반 애플리케이션의 경우, 수신된 조각이 없더라도 애플리케이션 자체가 패킷을 변경하거나 리어셈블할 수 있습니다. 이 경우 기존 송신 인터페이스 최대 전송 단위(MTU)가 사용됩니다.
경로 MTU 디스커버리 패킷이 세션에 전달되면 해당 세션의 경로 MTU는 경로 MTU 패킷에 의해 설정된 값으로 재설정됩니다.
변경 내역 테이블
기능 지원은 사용 중인 플랫폼 및 릴리스에 따라 결정됩니다. 기능 탐색기 를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.
set security flow preserve-incoming-frag-size
디바이스를 구성합니다.