모의 DoS 서비스 거부 공격을 통한 Apache2 웹 서버 안정성 확인 및 트래픽 아웃바운드 제어 - Whitmem
모의 DoS 서비스 거부 공격을 통한 Apache2 웹 서버 안정성 확인 및 트래픽 아웃바운드 제어
Other
2024-09-13 16:44 게시 4150b8b6feff33f44e2a

0
0
96
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
DoS 공격
DoS 공격은 서비스 거부 공격으로 임의 네트워크 트래픽 사용량을 점유하여 서비스를 마비시키는 네트워크 공격/범죄이다. 이러한 공격의 문제점은 서버를 마비시키는 것도 마비시키는 것 이지만, 네트워크 트래픽을 점유하여 입주해있는 네트워크 사용자를 방해하고, 때로는 네트워크 트래픽 요금을 과도 청구 유발한다.
기본적으로 UDP 기반의 DoS 공격은 응답하지 않는 경우 인바운드 트래픽을 위주로 점유하는데, 다른 인바운드 트래픽이 들어오지 못하도록 방해한다. 한편, 호스팅의 경우 기본적으로 아웃바운드 트래픽에 요금 정책을 부과하고 있기 때문에, 서버 내부에서 밖으로 나가는 TX 트래픽에 대해서 요금이 청구된다.
단순 DoS 공격으로는 아웃바운드 트래픽이 유발되지 않기 때문에 요금 문제가 없을 수 있지만, 문제는 DoS 공격의 방법에 있다.
DoS 공격이 UDP 기반이 아니라, TCP와 같은 응답형 방식의 공격, HTTP flood 공격인 경우 서버는 그에 대한 요청을 처리하기 때문에 아웃바운드 트래픽을 소모할 수 있다. 특히 파일 다운로드와 같은 대용량 파일을 처리하는 서버의 경우 과한 트래픽 사용량이 청구될 수 있다.
나는 따라서 Apache2 서버에서 이 트래픽 사용량을 최소화하고 아웃바운드 트래픽을 제한하기 위해서 mod_qos를 사용하는데, 이것이 정말 효과가 있는지, 어떤식으로 제어되는지 확인하기 위해서 내부망을 별도로 구성하여 내부 모의 공격을 수행하였다.
모의 공격 환경
모의 공격을 하기 위해서 물리적인 PC 1대와 물리적인 서버 보드 1대를 활용하였다. 그 사이에는 일반 기가비트 스위치 하나를 놓아 PC 1대에서 서버로 공격을 진행하고, 서버 내 트래픽 사용량을 점검하여 아웃바운드 사용량을 확인한다.
PC는 윈도우 10 Pro 운영체제, 서버는 Ubuntu Desktop으로 진행하였다.
모의 공격
서버
먼저 서버측 IP는 192.168.7.5 사설 아이피로 할당하였으며, Apache2를 설치한다. 그리고 libapache2-mod-qos도 설치하여 추후 QoS 설정을 할 수 있도록 한다. 서버측에 임의 Zero Fill 된 100KB 파일을 하나 올려두고, 웹으로 접속하여 내려받을 수 있도록 한다.
한편, 클라이언트 PC 에서는 Java 언어를 사용해서 HTTP 공격 코드를 구성한다. 단순히 HTTP을 접속하는 코드지만, 무한히 반복하여 서버의 자원을 고갈하도록 한다.
클라이언트 측 공격
이런 상태에서 서버측의 TX 사용량을 확인한다. 서버측 TX가 아웃바운드 트래픽이며, 서버 내부에서 밖으로 나간 트래픽을 의미한다. 이 트래픽량이 결국 요금이 된다.
클라이언트 공격을 수행하고, 잠시 뒤 서버 측 사용량을 본다.
서버에서 네트워크 인터페이스 사용량을 확인하면 TX 패킷이 47GB가 초과하였음을 확인할 수 있다. 즉 서버에 존재하는 100k 짜리 파일 하나에 무한정 요청을 보내고 다운로드 받았기 때문에 서버가 응답을 47GB 치 하게 된 것이다. 특이한점은 이렇게 공격한 트래픽 공격은 RX 패킷이 139MB 밖에 되지 않는다. 이는 서버가 응답하는 데이터가 압도적으로 많았기 때문이다.
즉 위 HTTP 공격을 통해서 인바운드 트래픽은 매우 적지만, 아웃바운드를 기하 급수적으로 유발하는 공격을 당하는 경우 어마무시한 트래픽 요금이 부과될 수 있으며, 이는 서버 서비스의 위협이 될 수 있기에 apache2 설정을 통해서 속도 제한을 걸 필요성이 있다. 특히 DDoS 공격의 경우 IP가 각각 다르기 때문에, IP 별 속도 제한을 걸어서는 안되며, 서버 단위로 속도를 제한해야 규모 공격에서 피해를 최소화할 수 있다.
위 설정은 mod_qos 를 통해서 해당 호스트 단위에 대해서 초당 KB 사용량을 제한 한 것이다. 초당 최대 10240KB를 내려받을 수 있도록하였으며, 이는 네트워크 속도로 따지면 80Mbps에 해당한다. 아무리 많은 사용자가 다운로드를 요청하더라도 토탈 80Mbps 즉, 초당 10MB씩만 내려받을 수 있으며, 사용자가 10명이 동시에 내려받는 경우 각각 약 1MB 씩 다운로드받을 수 있게 된다. 아무리 많은 요청이 들어오더라도 초당 10MB 씩 다운로드 된다면, 트래픽 사용량을 예측할 수 있게 된다.
접속하는 클라이언트 입장에서도 동시에 100개 이상의 다운로드 요청을 보내더라도, 6.2Mbps~8Mbps 사이의 받기만 수행되는 모습을 확인할 수 있다.
전 사진은 공격전, 후 사진은 약 몇 십분 공격을 수행하고 스크린샷을 찍은 것 이다. 아웃바운드가 적게 소모되었음을 확인할 수 있다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.