brunch

브런치북 DDoS 개론 08화

You can make anything
by writing

C.S.Lewis

by 흐르는 강물처럼 Feb 03. 2021

DDoS-8 (L3/L4레벨의 DDoS 공격 차단 방법

 L3/ L4레벨의 DDoS 공격은 어떻게 막을 수 있나요?

DDoS-8 (L3/L4레벨의 DDoS 공격 차단 방법)

다음으로 공격을 식별하고 차단하기 위해 구체적으로 어떤 단계를 거쳐서 패킷을 검사하고 식별된 공격 트래픽을 차단하는지 알아보도록 하겠습니다.


아래 <그림 1>과 같이 단계적 차단을 위한 여러 차단 단계를 표시하였습니다. 1번 Invalid Packets에서부터 12번 IP Location Policing까지 다양한 공격을 각각의 공격 특성에 맞추어서 효과적인 차단 방식을 선택적으로 적용하여 공격 트래픽을 단계별로 순차적으로 걸러내게 구성되어 있습니다.


이는 마치 그림의 오른쪽과 같이 인터넷 회선을 제일 상단부터 방화벽, IPS, WAF(웹 방화벽), Layer 7 스위치, QoS 장비를 거쳐서 직렬로 순차적으로 배치한 것과 동일한 효과를 발휘합니다. 즉 5개의 독자적인 보안장비의 기능을 하나의 장비에서 통합적으로 설정하고 모니터링이 가능하게 구성하여 보다 유기적으로 각각의 기능을 발휘하게 구성한 것과 같습니다. 모든 단계에 대해 자세히 설명하기에는 지면이 허락되지 않아서 주요한 단계만 선별해서 설명하도록 하겠습니다.


< 그림 1 >  차단 장비의 공격 트래픽 검사 단계 및 순서


첫 번째 단계는 패킷이 표준에 맞게 구성되어 있는지 확인하는 단계입니다. 정상적인 클라이언트에서 발생되는 트래픽은 단연히 서버와 통신을 위해서 표준에 맞추어서 생성되어 전달 되게 됩니다. 표준에 위배되면 서버와 통신이 불가능하기 때문입니다. 그러나 DDoS 공격 툴에서 만들어지는 패킷은 정상 통신이 아니고 공격을 목적으로 생성되기 때문에 표준에 위배되게 생성되는 경우가 있습니다. 이런 패킷은 사전에 차단하여 이후 단계를 거치면서 발생되는 부하를 최소화할 필요가 있기 때문에 제일 먼저 검사하는 것입니다.


2~4번째 필터 단계는 공격이 발생된 이후 어느 정도 공격을 차단하면서 정상적인 트래픽으로 파악된 패킷의 출발지 IP나 포트 넘버를 필터에 적용하여 이후 단계를 거치지 않고 바로 서버로 전달하거나, 반대로 공격으로 이미 판별된 패킷에 대해 사전 차단을 수행하여 이후 단계에서 추가적으로 검사할 필요가 없을 때 사용하는 차단 단계입니다.


추가적으로 특정 대륙에 할당받은 공인 IP대역 정보를 장비가 사전에 가지고 있다가 아래 <그림 2>와 같이 특정 대륙에서 오는 트래픽은 사전에 차단하고 싶을 때도 사용 가능합니다. 예를 들면 코로나 사태로 원격수업에 필요한 시스템의 경우 상식적으로 해외에서 접속할 경우는 매우 희박할 수 있습니다. 그래서 북미, 남미, 아프리카 등 대륙 단위로 서비스가 필요 없는 지역의 공인 IP는 처음부터 차단하고 싶을 때도 사용 가능합니다.


이런 필터 단계가 필요한 이유도 필터 차단 이후 즉 5단계 이후부터는 장비의 부하가 상대적으로 많이 사용하기 때문입니다. 이미 정상 트래픽이나 공격으로 판별된 트래픽에 대해서는 굳이 장비의 자원이 소모하면서까지 추가적인 단계를 거쳐서 검사할 필요가 없기 때문입니다.


< 그림 2 >  지리적 위치기반 차단 필터 리스트


5번째 단계는 좀비(Zombie) 단말에서 발생되는 비정상 트래픽을 차단하는 단계입니다. 다양한 Flood 공격 등의 용량 기반 공격과 TCP SYN 등의 자원 소모 공격에 모두 효과적인 방어 단계입니다. 아래 <그림 3>과 같이 동작 방식은 특정 출발지 IP를 기준으로 설정한 pps 혹은 bps 임계치를 설정하여, 트래픽이 임계치를 초과할 경우 해당 출발지 IP를 일정 시간 동안 차단하는 방식으로 동작합니다.


여기서 모든 트래픽에 대한 총합을 임계치로 설정할 경우 정상적으로 트래픽을 많이 사용하는(Chatty) 호스트에 대해서도 차단이 될 수 있기 때문에 특정 조건(패킷 길이, TCP flags 등)에 맞는 필터를 만들어서 각 필터 별 임계치를 별도로 설정하면 좀 더 디테일하고 정확하게 공격 단말을 식별하여 차단할 수 있습니다.


< 그림 3 >  Zombie Detection 차단 임계치 설정 개념도


6번째 단계는 TCP SYN 같이 자원 소모 공격에 특화된 차단 단계입니다. TCP 연결은 데이터를 전송하기 전에 두 장비 간 연결 준비를 사전에 하게 됩니다. 이 준비 단계를 3 way handshake라고 하여 서버와 단말 간 총 3번의 통신을 하여 연결 준비를 마치게 되는데, 이를 악용하여 서버의 TCP 연결 자원을 소모시켜 더 이상 신규 세션 연결을 못하게 하는 것이 이 공격의 특징입니다.


아래 <그림 4>와 같이 클라이언트와 서버 그리고 그 사이에 TMS라는 공격 차단 장비가 있습니다. 클라이언트는 서버로 TCP SYN 패킷을 보내면 중간의 TMS가 해당 패킷을 가로채서 서버 대신 클라이언트로 응답을 줍니다.

 

이때 기술적으로 좀 더 들어가면 패킷을 주고받을 때 시퀀스 넘버(seq)라는 고유번호를 사용하는데, 최초 클라이언트가 랜덤 하게 만든 숫자에 TMS가 1을 더한 값을 SYN-ACK 패킷과 함께 보내면서 덧붙여 TMS가 랜덤 하게 생성한 시퀀스 넘버를 추가로 포함시켜 응답을 주게 됩니다. 만약 클라이언트가 정상적인 사용자라면 TMS가 랜덤 하게 생성한 시퀀스 넘버에 1을 더한 값을 응답하게 되는데, 이 시퀀스 넘버가 정상적이면 출발지 IP를 정상 사용자로 판단하여 이후 일정 시간 동안 서버와 패킷을 통과시키고, 만약 시퀀스 넘버가 다르거나 응답이 없으면 공격자로 판단하여 해당 연결을 종료시키는 방식으로 동작합니다.


< 그림 4 >  TCP 기반 자원 소모 공격에 대한 공격 단말 식별 방법


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari