DoS(Denial of Service) 공격은 웹 사이트 또는 애플리케이션과 같은 대상 시스템의 가용성과 합법적인 최종 사용자에게 악영향을 미치려는 악의적인 시도입니다. 일반적으로 공격자는 대량의 패킷 또는 요청을 생성하여 궁극적으로 대상 시스템을 마비시킵니다. DDoS(Distributed Denial of Service) 공격에서는 공격자가 여러 개의 손상된 또는 제어된 소스를 사용하여 공격을 생성합니다.
일반적으로 DDoS 공격은 공격 대상인 OSI(Open Systems Interconnection) 모델의 계층에 따라 분리될 수 있습니다. DDoS 공격은 네트워크(계층 3), 전송(계층 4), 표현(계층 6) 및 애플리케이션(계층 7) 계층에서 가장 많이 나타납니다.
# | 계층 | 애플리케이션 | 설명 | 벡터 예제 |
7 | 애플리케이션 | 데이터 | 애플리케이션에 대한 네트워크 프로세스 | HTTP 플러드, DNS 쿼리 플러드 |
6 | 표현 | 데이터 | 데이터 표현 및 암호화 | SSL 남용 |
5 | 세션 | 데이터 | 호스트 간 통신 | 해당 사항 없음 |
4 | 전송 | 세그먼트 | 엔드 투 엔드 연결 및 안정성 | SYN 플러드 |
3 | 네트워크 | 패킷 | 경로 결정 및 논리적 주소 지정 | UDP 반사 공격 |
2 | 데이터 링크 | 프레임 | 물리적 주소 지정 | 해당 사항 없음 |
1 | 물리 | 비트 | 미디어, 신호 및 바이너리 전송 | 해당 사항 없음 |
이러한 공격에 대응하는 완화 기법을 고려할 때, 공격을 인프라 계층(계층 3과 4) 공격과 애플리케이션 계층(계층 6과 7) 공격으로 그룹화하는 것이 도움이 됩니다.
인프라 계층 공격
계층 3과 4에 대한 공격은 일반적으로 인프라 계층 공격으로 분류됩니다. 이러한 공격은 가장 일반적인 유형의 DDoS 공격이며, SYN(동기화된) 플러드 같은 벡터 그리고 UDP(User Datagram Packet) 플러드 같은 기타 반사 공격을 포함합니다. 이러한 공격은 대개 볼륨이 상당히 크고, 네트워크 또는 애플리케이션 서버 용량에 과부하가 걸리게 하는 것을 목표로 합니다. 그러나 다행히 이러한 공격 유형은 징후가 분명하고 감지하기가 좀 더 쉽습니다.
애플리케이션 계층 공격
계층 6과 7에 대한 공격은 주로 애플리케이션 계층 공격으로 분류됩니다. 이러한 공격은 덜 일반적이긴 하지만 좀 더 정교한 경향이 있습니다. 일반적으로 이러한 공격은 인프라 계층 공격과 비교하여 볼륨은 작지만, 애플리케이션에서 고가의 특정 부분을 집중적으로 공격하여 실제 사용자가 사용할 수 없도록 만듭니다. 로그인 페이지에 대한 HTTP 요청 플러드, 고가의 검색 API 또는 Wordpress XML-RPC 플러드(Wordpress 핑백 공격이라고도 함)를 예로 들 수 있습니다.
공격 대상 영역 줄이기
DDoS 공격을 완화하는 첫 번째 기법 중 하나는 공격을 받을 수 있는 대상 영역을 최소화하여 공격자의 옵션을 제한하고 한 곳에서 보호 기능을 구축하는 것입니다. AWS에서는 애플리케이션이나 리소스를 통신이 일어날 것으로 예상되지 않는 포트, 프로토콜 또는 애플리케이션에 노출하지 않는다는 점을 분명히 말씀드릴 수 있습니다. 따라서 공격 가능 지점이 최소화되므로 AWS에서는 완화 노력에 집중할 수 있습니다. 일부의 경우에는 컴퓨팅 리소스를 콘텐츠 전송 네트워크(CDN) 또는 로드 밸런서 뒤에 배치하고 데이터베이스 서버와 같은 인프라의 특정 부분에 인터넷 트래픽이 직접 접근하지 못하도록 제한할 수 있습니다. 다른 경우에는 방화벽 또는 ACL(액세스 제어 목록)을 사용하여 애플리케이션에 도달하는 트래픽을 제어할 수 있습니다.
규모에 대한 대비
대규모 볼륨의 DDoS 공격을 완화하기 위한 주요 고려 사항 두 가지는 공격을 흡수하고 완화할 수 있는 대역폭(또는 전송) 용량과 서버 용량입니다
전송 용량. 애플리케이션을 설계할 때에는 호스팅 제공업체가 대량의 트래픽을 처리할 수 있도록 충분한 중복 인터넷 연결을 제공하는지 확인해야 합니다. DDoS 공격의 최종 목표가 리소스/애플리케이션의 가용성에 악영향을 주는 것이므로, 이를 최종 사용자뿐만 아니라 대규모 인터넷 교환망에 가까운 곳에 배치해야 합니다. 그러면 트래픽 볼륨이 증가하더라도 사용자가 애플리케이션에 쉽게 액세스할 수 있습니다. 또한, 웹 애플리케이션의 경우는 콘텐츠 전송 네트워크(CDN) 및 스마트 DNS 확인 서비스를 사용하여 최종 사용자에게 좀 더 가까운 위치에서 콘텐츠를 제공하고 DNS 쿼리를 해결할 수 있는 추가적인 네트워크 인프라 계층을 제공할 수 있습니다.
서버 용량. 대부분의 DDoS 공격은 많은 리소스를 소모하는 볼륨 공격입니다. 따라서 컴퓨팅 리소스를 신속하게 확장 또는 축소할 수 있는 기능이 중요합니다. 이를 위해서는 더 큰 컴퓨팅 리소스에서 실행하거나, 더 큰 볼륨을 지원하는 광범위한 네트워크 인터페이스 또는 향상된 네트워킹과 같은 기능이 있는 컴퓨팅 리소스에서 실행하면 됩니다. 또한, 로드 밸런서를 사용하여 지속적으로 리소스 간 로드를 모니터링하고 이동하여 하나의 리소스에만 과부하가 걸리지 않도록 하는 것도 일반적인 방법입니다.
정상 및 비정상 트래픽 파악
호스트의 트래픽 발생의 수준이 증가하는 것을 감지할 때마다 AWS에서 가장 기본적으로 고려하는 원칙은 가용성에 영향을 주지 않고 호스트가 처리할 수 있는 만큼의 트래픽만 수용할 수 있어야 한다는 것입니다. 이 개념을 속도 제한이라고 부릅니다. 좀 더 고급 보호 기법은 한 단계 더 나아가서 개별 패킷 자체를 분석하여 지능적으로 합법적인 트래픽만 수용하는 것입니다. 이를 위해서는 대상이 일반적으로 수신하는 정상 트래픽의 특징을 이해하고 각 패킷을 이러한 기준과 비교할 수 있어야 합니다.
정교한 애플리케이션 공격에 대비하여 방화벽 배포
애플리케이션 자체의 취약성을 악용하려고 시도하는 SQL 주입 또는 사이트 간 요청 위조와 같은 공격에 대비하려면 WAF(웹 애플리케이션 방화벽)를 사용하는 것이 좋습니다. 또한 이러한 공격의 고유한 특성상, 정상 트래픽으로 위장하거나 잘못된 IP 또는 예상치 못한 지역에서 수신되는 등의 특징이 있을 수 있는 불법적인 요청에 대비하여 사용자 지정된 완화 기능을 손쉽게 생성할 수 있어야 합니다. 때로는 트래픽 패턴을 연구하고 사용자 지정된 보호 기능을 생성할 수 있는 경험이 풍부한 엔지니어의 지원을 받을 수 있다면 공격을 완화하는 데 도움이 될 수 있습니다.