목차/05. SecureXL — DoS 완화(Rate Limiting·SYN Defender)

05SecureXL — DoS 완화(Rate Limiting·SYN Defender)SecureXL — DoS 완화(Rate Limiting·SYN Defender)

SecureXL은 트래픽을 가속하기만 하는 것이 아니라 DoS(Denial of Service, 서비스 거부) 공격을 빠른 경로에서 직접 막 기도 합니다. 이 장에서는 두 가지 방어 기능 — Rate Limiting(속도 제한)과 Accelerated SYN Defender(가속 SYN 방어기) — 를 어떻게 설정하고 어떻게 감시하는지, 원문에 실린 모든 명령과 표·주의사항까지 빠짐없이 풀어 정리합니다.

Rate Limiting for DoS Mitigation

Rate Limiting(속도 제한)은 DoS 공격에 대한 방어 입니다. 규칙을 만들어, 지정한 출발지에서 들어오는 트래픽 이나 지정한 목적지로 가면서 특정 서비스를 쓰는 트래픽 을 제한할 수 있습니다. 이 제한은 SecureXL이 직접 집행 하며, 다음 세 가지를 대상으로 합니다.

  • 대역폭과 패킷률(Bandwidth and packet rate)
  • 동시 연결 수(Number of concurrent connections)
  • 연결률(Connection rate)

더 자세한 내용은 sk112454를 참고하세요.

설정에 쓰는 명령

Rate Limiting은 다음 두 갈래의 명령으로 설정합니다.

  • fw sam_policy 와 IPv6용 fw6 sam_policy — 이때 반드시 quota <Quota Filter Arguments> 파라미터를 함께 써 야 합니다.
  • fwaccel dos config 와 IPv6용 fwaccel6 dos config

Security Gateway / ClusterXL에서 DoS 완화 이벤트 감시하기

DoS 완화와 관련된 정보를 보려면, Gaia Clish 또는 Expert mode에서 다음 명령들을 실행합니다.

명령(Gaia Clish 또는 Expert mode)무엇을 보여 주나
fwaccel stats<br>fwaccel6 stats모든 SecureXL 통계 를 보여 줍니다(IPv4·IPv6 커널 모듈 모두). 참고: fwaccel stats, 그리고 /proc/ppk/·/proc/ppk6/ 항목
fwaccel stats -d<br>또는 cat /proc/ppk/drop_statistics<br>fwaccel6 stats -d<br>또는 cat /proc/ppk6/drop_statisticsSecureXL 드롭(drop) 통계만 보여 줍니다(IPv4·IPv6). 참고: fwaccel stats, 그리고 /proc/ppk/·/proc/ppk6/ 항목
fw sam_policy get활성 정책 규칙의 상세를 긴 형식(long format) 으로 보여 줍니다(IPv4·IPv6). 참고: fw sam_policy get

활성 Rate Limiting 규칙별로 실제 적용된 속도 값을 보려면, SAM 정책 목록에서 규칙 ID를 뽑아 fwaccel dos rate get에 넘기는 다음 한 줄짜리 명령을 씁니다.

fw samp get -l | grep '^<[0-9a-f,]*>$' | xargs fwaccel dos rate get
fw samp get -l | grep '^<[0-9a-f,]*>$' | xargs fwaccel6 dos rate get

마지막으로 cat /proc/ppk/rlc전체 드롭된 패킷 수(Total drop packets)와 전체 드롭된 바이트 수(Total drop bytes) 를 보여 줍니다(자세한 내용은 /proc/ppk/·/proc/ppk6/ 항목 참고).

공격이 의심되면 드롭 통계와 SAM 정책을 확인 해 Rate Limiting이 제대로 막고 있는지 점검하면 됩니다.

Scalable Platform(Maestro·Chassis)에서 감시하기

Scalable Platform에서는 Gaia gClish용 명령과 Expert mode용 명령이 나뉩니다. Expert mode에서는 g_ 접두사가 붙은 명령으로 그룹의 모든 멤버에 한 번에 실행할 수 있습니다.

Gaia gClish 명령Expert mode 명령무엇을 보여 주나
fwaccel stats<br>fwaccel6 statsg_fwaccel stats<br>g_fwaccel6 stats모든 SecureXL 통계 (IPv4·IPv6)
fwaccel stats -d<br>fwaccel6 stats -dg_fwaccel stats -d<br>또는 cat /proc/ppk/drop_statistics<br>g_fwaccel6 stats -d<br>또는 cat /proc/ppk6/drop_statisticsSecureXL 드롭 통계만 (IPv4·IPv6)
`fw samp get -l \grep '^<[0-9a-f,]*>$' \xargs fwaccel dos rate get<br>(IPv6는 fwaccel6 dos rate get`)`g_fw samp get -l \grep '^<[0-9a-f,]*>$' \xargs fwaccel dos rate get<br>(IPv6는 g_fw samp ... fwaccel6 dos rate get`)활성 정책 규칙의 상세를 긴 형식 으로(IPv4·IPv6)
(해당 없음)cat /proc/ppk/rlc전체 드롭 패킷·드롭 바이트

이 밖에 더 깊은 분석이 필요하면 "SecureXL Debug" 절도 함께 보세요.

Accelerated SYN Defender

Accelerated SYN Defender(가속 SYN 방어기)는 SYN flood 공격을 가속 경로에서 방어 합니다.

SYN Flood 공격이란

TCP SYN Flood 공격은, 보통 출발지 IP를 위조한 호스트가 TCP [SYN] 패킷을 폭주시킬 때 일어납니다. 이런 [SYN] 패킷 하나하나가 연결 요청으로 처리되므로, 서버는 반쯤 열린(half-open, 미수립) TCP 연결 을 계속 만들게 됩니다. 서버가 TCP [SYN+ACK]를 보내 놓고, 끝내 오지 않는 응답 패킷을 기다리기 때문입니다. 이 반쯤 열린 연결이 결국 사용 가능한 최대 TCP 연결 수를 넘어서 면, 서비스 거부 상태가 발생합니다.

Check Point Accelerated SYN Defender과도한 TCP 연결이 만들어지는 것을 막아 Security Gateway(또는 Scalable Platform Security Group)를 보호합니다. 공격이 의심되면 TCP [SYN] Cookie(초기 TCP 시퀀스 번호를 특정 방식으로 고르는 기법) 를 사용합니다. SYN Cookie를 쓰면 Security Gateway와 그 뒤의 컴퓨터들이 받는 부하를 줄일 수 있습니다. 이때 SYN Defender는 TCP 연결의 프록시(proxy) 역할 을 하면서, 패킷 안의 TCP {SEQ}·{ACK} 값을 양쪽에 맞게 보정합니다.

동작 흐름 — TCP 타임라인

다음은 Accelerated SYN Defender가 켜진 Security Gateway를 거치는 TCP 연결의 흐름입니다.

        Security Gateway
Client  with Accelerated   Server
        SYN Defender
  |           |              |
  | -(1)-SYN-> |             |
  | <-SYN+ACK(2)- |          |
  | -(3)-ACK-> |             |
  |          (4)            |
  |           | -(5)-SYN---> |
  |           | <-SYN+ACK(6)- |
  |           | -(7)-ACK---> |
  |           |              |
  1. 클라이언트 가 서버로 TCP [SYN] 패킷을 보냅니다.
  2. Accelerated SYN Defender 가 클라이언트에게 Seq 필드에 특별한 쿠키(cookie)를 담은 TCP [SYN+ACK] 로 응답합니다. 이 시점에 Security Gateway는 아직 연결 상태를 보관하지 않 습니다.
  3. 클라이언트 가 응답으로 TCP [ACK] 를 보냅니다. 이로써 클라이언트 쪽 TCP 연결이 완성 됩니다.
  4. SYN Defender 가 클라이언트의 [ACK] 안에 담긴 SYN 쿠키가 정당한지 검사 합니다.
  5. 쿠키가 정당하면, SYN Defender가 서버로 TCP [SYN] 을 보내 서버 쪽 연결을 시작합니다.
  6. 서버 가 TCP [SYN+ACK] 로 응답합니다.
  7. SYN Defender 가 서버에 TCP [ACK] 를 보내 서버 쪽 3-way handshake를 완성 합니다.
  8. SYN Defender 가 이 TCP 연결을 수립됨(established)으로 표시 하고, 양쪽 사이의 TCP 시퀀스 보정값을 기록 합니다.

정리하면, SecureXL이 TCP [SYN] 패킷을 처리 하고, 나머지 연결 설정은 Security Gateway가 처리 합니다. 그리고 SYN Defender가 수립한 연결마다, Security Gateway는 그 연결이 살아 있는 동안 내내 TCP 시퀀스 번호를 보정 합니다.

명령줄 인터페이스(CLI)

Accelerated SYN Defender는 fwaccel synatk 명령으로 설정합니다.

SmartConsole에서 IPS 'SYN Attack' 보호 설정하기

IPS의 'SYN Attack' 보호는 SYN Flood 공격을 완화 하기 위한 것입니다.

설정 순서는 다음과 같습니다.

단계작업
1SmartConsole 로 Management Server에 접속합니다.
2왼쪽 탐색 패널에서 Security Policies 를 클릭합니다.
3Shared Policies 영역에서 Inspection Settings 를 클릭합니다.
4위쪽 검색창에서 SYN Attack 을 검색합니다.
5SYN Attack 보호를 더블 클릭합니다.
6해당 Inspection profile 을 편집합니다.
7프로파일에서 필요한 설정을 구성합니다(아래 설명).
9Access Control Policy 를 설치(Install)합니다.

7단계에서 설정할 항목은 두 페이지로 나뉩니다.

  • General Properties 페이지에서 — Override with Action 을 고르고 Accept 또는 Drop 을 선택하면, Security Gateway에서 fwaccel synatk 명령으로 한 설정을 이 SmartConsole 설정이 덮어 씁니다.
  • Advanced 페이지에서 — Activation Settings 에서 고른 값(Protect all interfaces(모든 인터페이스 보호) 또는 Protect external interfaces only(외부 인터페이스만 보호))이, 마찬가지로 Security Gateway의 fwaccel synatk 설정을 덮어씁니다.

SmartConsole의 SYN Attack 보호에 대한 더 자세한 내용은 sk120476을 참고하세요.

이렇게 SecureXL의 DoS 완화는 Rate Limiting으로 과도한 트래픽(대역폭·연결 수·연결률)을 제한하고, Accelerated SYN Defender로 SYN flood를 가속 경로에서 막 는 두 축으로 이뤄집니다. 둘 다 빠른 경로(SecureXL)에서 동작해 공격 트래픽이 느린 경로의 자원을 잡아먹기 전에 차단합니다.