방화벽 DoS 공격
DoS 공격 보호는 상태 저장 검사를 활용하여 의도한 대상을 오가는 도중에 인터페이스를 통과해야 하는 모든 연결 시도를 찾은 다음 허용하거나 거부합니다. 자세한 내용은 다음 항목을 참조하세요.
세션 테이블 플러드 공격 이해하기
DoS 공격이 성공하면 피해자가 거짓 시뮬레이션 트래픽의 엄청난 공세로 피해자를 압도하여 합법적인 연결 요청을 처리할 수 없게 됩니다. DoS 공격은 SYN 플러드, SYN-ACK-ACK 플러드, UDP 플러드, ICMP 플러드 등 다양한 형태를 취할 수 있지만, 모두 피해자의 세션 테이블을 채우는 동일한 목표를 추구합니다.
세션 테이블이 꽉 차면 해당 호스트는 새 세션을 만들 수 없으며 새 연결 요청을 거부하기 시작합니다. 소스 기반 세션 제한 화면 옵션과 대상 기반 세션 제한 화면 옵션은 이러한 공격을 완화하는 데 도움이 됩니다.
소스 기반 세션 제한 이해
동일한 소스 IP 주소에서 동시 세션 수를 제한하는 것 외에도 동일한 대상 IP 주소에 대한 동시 세션 수를 제한할 수도 있습니다. 소스 기반 세션 제한을 설정하면 서버를 감염시킨 다음 해당 서버에서 대량의 트래픽을 생성하기 시작하는 Nimda 바이러스(실제로는 바이러스와 웜 모두)와 같은 공격을 차단할 수 있다는 이점이 있습니다. 바이러스에 의해 생성된 모든 트래픽이 동일한 IP 주소에서 발생하기 때문에 소스 기반 세션 제한을 통해 방화벽이 이러한 과도한 양의 트래픽을 억제할 수 있습니다. 그림 1을 참조하십시오.
소스 기반 세션 제한의 또 다른 이점은 모든 연결 시도가 동일한 소스 IP 주소에서 시작된 경우 방화벽의 세션 테이블을 채우려는 시도를 완화할 수 있다는 것입니다.
허용 가능한 연결 요청 수를 결정하려면 일반적인 트래픽 흐름에 대한 기준을 설정하기 위한 관찰 및 분석 기간이 필요합니다. 또한 사용 중인 특정 주니퍼 네트웍스 플랫폼의 세션 테이블을 채우는 데 필요한 최대 동시 세션 수를 고려해야 합니다. 세션 테이블이 지원하는 최대 세션 수를 보려면 CLI 명령을 show security flow session summary
사용한 다음 현재(할당된) 세션 수, 최대 세션 수 및 실패한 세션 할당 수를 나열하는 출력의 마지막 줄을 확인합니다.
userhost# show security flow session summary Unicast-sessions: 0 Multicast-sessions: 0 Failed-sessions: 0 Sessions-in-use: 0 Valid sessions: 0 Pending sessions: 0 Invalidated sessions: 0 Sessions in other states: 0 Maximum-sessions: 2097152
소스 기반 세션 제한의 기본 최대값은 128개의 동시 세션이며, 이 값은 네트워크 환경 및 플랫폼의 요구 사항에 맞게 조정해야 할 수 있습니다.
Junos OS는 IPv4 및 IPv6 트래픽 모두에 대해 소스 기반 세션 제한을 지원합니다.
예: 소스 기반 세션 제한 설정
이 예는 소스 IP를 기반으로 세션 양을 제한하는 방법을 보여줍니다.
요구 사항
이 기능을 구성하기 전에 디바이스 초기화 이외의 특별한 구성은 필요하지 않습니다.
개요
다음 예제에서는 DMZ 및 영역 A에 있는 한 서버가 시작할 수 있는 세션 수를 제한하는 방법을 보여 줍니다. DMZ에는 트래픽을 시작하지 않아야 하는 웹 서버만 포함되어 있으므로 소스 세션 제한을 가능한 가장 낮은 값(단일 세션)으로 설정합니다. 반면에 영역 A에는 개인용 컴퓨터, 서버, 프린터 등이 포함되며 이들 중 다수는 트래픽을 시작합니다. 영역 a의 경우 소스 세션 제한을 최대 80개의 동시 세션으로 설정합니다.
토폴로지
구성
절차
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경하고, 계층 수준에서 명령을 CLI로 [edit]
복사해 붙여 넣은 다음, 구성 모드에서 을 입력합니다 commit
.
set security screen ids-option 1-limit-session limit-session source-ip-based 1 set security zones security-zone dmz screen 1-limit-session set security screen ids-option 80-limit-session limit-session source-ip-based 80 set security zones security-zone zone_a screen 80-limit-session
단계별 절차
DMZ 영역의 소스 IP를 기준으로 동시 세션 수를 지정합니다.
[edit security] user@host# set screen ids-option 1-limit-session limit-session source-ip-based 1
DMZ의 보안 영역을 구성 제한으로 설정합니다.
[edit security] user@host# set zones security-zone dmz screen 1-limit-session
영역 a 영역의 소스 IP를 기준으로 동시 세션 수를 지정합니다.
[edit security] user@host# set screen ids-option 80-limit-session limit-session source-ip-based 80
영역 a의 보안 영역을 구성 제한으로 설정합니다.
[edit security] user@host# set zones security-zone zone_a screen 80-limit-session
결과
구성 모드에서 및 show security zones
명령을 입력하여 show security screen
구성을 확인합니다. 출력이 의도한 구성을 표시하지 않으면, 이 예의 구성 지침을 반복하여 수정합니다.
[edit] user@host# show security screen ids-option 1-limit-session { limit-session { source-ip-based 1; } } ids-option 80-limit-session { limit-session { source-ip-based 80; } }
[edit] user@host# show security zones security-zone dmz { screen 1-limit-session; } security-zone zone_a { screen 80-limit-session; }
디바이스 구성을 마쳤으면 구성 모드에서 을 입력합니다 commit
.
확인
소스 기반 세션 제한 확인
목적
소스 기반 세션 제한을 확인합니다.
작업
운영 모드에서 show security screen ids-option 1-limit-session
, show security screen ids-option 80-limit-session
, 및 show security zones
명령을 입력합니다.
user@host> show security screen ids-option 1-limit-session Screen object status: Name Value Session source limit threshold 1 user@host> show security screen ids-option 80-limit-session Screen object status: Name Value Session source limit threshold 80 user@host> show security zones Security zone: dmz Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: 1-limit-session Interfaces bound: 0 Interfaces:
의미
샘플 출력은 DMZ 영역과 영역 a에 대한 소스 세션 제한 값을 보여줍니다.
대상 기반 세션 제한 이해
동일한 소스 IP 주소에서 동시 세션 수를 제한하는 것 외에도 동일한 대상 IP 주소에 대한 동시 세션 수를 제한할 수도 있습니다. 교활한 공격자는 DDoS(분산 서비스 거부) 공격을 시작할 수 있습니다. DDoS 공격에서 악성 트래픽은 공격자의 은밀한 제어 하에 있는 "좀비 에이전트"로 알려진 수백 개의 호스트에서 발생할 수 있습니다. SYN, UDP 및 ICMP 플러드 탐지 및 방지 화면 옵션 외에도 대상 기반 세션 제한을 설정하면 Junos OS가 소스에 관계없이 허용 가능한 수의 동시 연결 요청만 하나의 호스트에 도달하도록 허용할 수 있습니다. 그림 2를 참조하십시오.
대상 기반 세션 제한의 기본 최대값은 128개의 동시 세션이며, 이 값은 네트워크 환경 및 플랫폼의 요구 사항에 맞게 조정해야 할 수 있습니다.
예: 대상 기반 세션 제한 설정
이 예는 대상 기반 세션 제한을 설정하는 방법을 보여줍니다.
요구 사항
이 기능을 구성하기 전에 디바이스 초기화 이외의 특별한 구성은 필요하지 않습니다.
개요
이 예에서는 웹 서버에 대한 트래픽 양을 1.2.2.5로 제한합니다. 서버가 DMZ에 있습니다. 이 예에서는 한 달 동안 외부 영역에서 이 서버로의 트래픽 흐름을 관찰한 후 수신하는 평균 동시 세션 수가 2000개임을 확인했다고 가정합니다. 또한 2000 동시 세션에서 새 세션 제한을 설정합니다. 트래픽 급증이 때때로 이 제한을 초과할 수 있지만, 이 예에서는 간헐적으로 서버에 액세스할 수 없는 경우 방화벽 보안을 선택한다고 가정합니다.
구성
절차
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경하고, 계층 수준에서 명령을 CLI로 [edit]
복사해 붙여 넣은 다음, 구성 모드에서 을 입력합니다 commit .
set security screen ids-option 2000-limit-session limit-session destination-ip-based 2000 set security zones security-zone external_zone screen 2000-limit-session
단계별 절차
다음 예제에서는 구성 계층의 다양한 수준을 탐색해야 합니다. 대상 기반 세션 제한을 설정하려면:
동시 세션 수를 지정합니다.
[edit] user@host# set security screen ids-option 2000-limit-session limit-session destination-ip-based 2000
외부 영역에 대한 보안 영역을 설정합니다.
[edit] user@host# set security zones security-zone external_zone screen 2000-limit-session
결과
구성 모드에서 및 show security zones
명령을 입력하여 show security screen
구성을 확인합니다. 출력이 의도한 구성을 표시하지 않으면, 이 예의 구성 지침을 반복하여 수정합니다.
[edit] user@host# show security screen ids-option 2000-limit-session { limit-session { destination-ip-based 2000; } }
[edit] user@host# show security zones security-zone external_zone { screen 2000-limit-session; }
디바이스 구성을 마쳤으면 구성 모드에서 을 입력합니다 commit
.
확인
대상 기반 세션 제한 확인
목적
대상 기반 세션 제한을 확인합니다.
작업
show security screen ids-option 2000-limit-session
운영 모드에서 및 show security zones
명령을 입력합니다.
user@host> show security screen ids-option 2000-limit-session node0: -------------------------------------------------------------------------- Screen object status: Name Value Session destination limit threshold 2000 Value user@host> show security zones Security zone: external_zone Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: 2000-limit-session Interfaces bound: 0 Interfaces:
의미
샘플 출력은 외부 영역에 대한 대상 세션 제한 값을 보여줍니다.
SYN-ACK-ACK 프록시 플러드 공격 이해하기
인증 사용자가 Telnet 또는 FTP 연결을 시작하면 사용자는 SYN 세그먼트를 Telnet 또는 FTP 서버로 보냅니다. Junos OS는 SYN 세그먼트를 가로채 세션 테이블에 항목을 생성하며 SYN-ACK 세그먼트를 사용자에게 프록시합니다. 그런 다음 사용자는 ACK 세그먼트로 응답합니다. 이 시점에서 초기 3방향 핸드셰이크가 완료됩니다. Junos OS는 사용자에게 로그인 프롬프트를 보냅니다. 사용자가 악의적인 의도로 로그인하지 않고 대신 SYN-ACK-ACK 세션을 계속 시작하면 방화벽 세션 테이블이 디바이스가 합법적인 연결 요청을 거부하기 시작하는 지점까지 채워질 수 있습니다.
이러한 공격을 방지하기 위해 SYN-ACK-ACK 프록시 보호 화면 옵션을 활성화할 수 있습니다. 동일한 IP 주소의 연결 수가 SYN-ACK-ACK 프록시 임계값에 도달한 후, Junos OS는 해당 IP 주소의 추가 연결 요청을 거부합니다. 기본적으로 임계값은 단일 IP 주소에서 512개 연결입니다. 네트워크 환경의 요구 사항에 맞게 이 임계값을 1에서 250,000 사이의 수로 변경할 수 있습니다.
Junos OS는 IPv4 및 IPv6 주소 모두에 대해 SYN-ACK-ACK 프록시 보호를 지원합니다.
SYN-ACK-ACK 프록시 플러드 공격으로부터 네트워크 보호하기
이 예시는 SYN-ACK-ACK 프록시 플러드 공격으로부터 네트워크를 보호하는 방법을 보여줍니다.
요구 사항
이 기능을 구성하기 전에 디바이스 초기화 이외의 특별한 구성은 필요하지 않습니다.
개요
이 예에서는 SYN-ACK-ACK 프록시 플러드에 대한 보호를 활성화합니다. 값 단위는 소스 주소당 연결 수입니다. 기본값은 단일 주소에서 512개의 연결입니다.
구성
절차
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경하고, 계층 수준에서 명령을 CLI로 [edit]
복사해 붙여 넣은 다음, 구성 모드에서 을 입력합니다 commit
.
set security screen ids-option 1000-syn-ack-ack-proxy tcp syn-ack-ack-proxy threshold 1000 set security zones security-zone zone screen 1000-syn-ack-ack-proxy
단계별 절차
다음 예제에서는 구성 계층의 다양한 수준을 탐색해야 합니다. SYN-ACK-ACK 프록시 플러드 공격으로부터 보호하려면,
소스 세션 제한을 지정합니다.
[edit] user@host# set security screen ids-option 1000-syn-ack-ack-proxy tcp syn-ack-ack-proxy threshold 1000
영역 화면의 보안 영역을 설정합니다.
[edit] user@host# set security zones security-zone zone screen 1000-syn-ack-ack-proxy
결과
구성 모드에서 및 show security zones
명령을 입력하여 show security screen
구성을 확인합니다. 출력이 의도한 구성을 표시하지 않으면, 이 예의 구성 지침을 반복하여 수정합니다.
[edit] user@host# show security screen ids-option 1000-syn-ack-ack-proxy { tcp { syn-ack-ack-proxy threshold 1000; } }
[edit] user@host# show security zones security-zone zone { screen 1000-syn-ack-ack-proxy; }
디바이스 구성을 마쳤으면 구성 모드에서 을 입력합니다 commit
.
확인
SYN-ACK-ACK 프록시 플러드 공격 확인
목적
SYN-ACK-ACK 프록시 플러드 공격을 확인합니다.
작업
show security screen ids-option 1000-syn-ack-ack-proxy
운영 모드에서 및 show security zones
명령을 입력합니다.
user@host> show security screen ids-option 1000-syn-ack-ack-proxy node0: -------------------------------------------------------------------------- Screen object status: Name Value TCP SYN-ACK-ACK proxy threshold 1000 user@host> show security zones Security zone: zone Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: 1000-syn-ack-ack-proxy Interfaces bound: 0 Interfaces:
의미
샘플 출력은 SYN-ACK-ACK-프록시 플러드의 공격이 없음을 보여줍니다.