DDOS와 부하

카테고리 : 보안/web

DDOS는 공격 대상(서버 또는 서비스)이나 그 주변 인프라(네트워크)를 멈추게 하는 공격기법입니다.

 

요즘에는 워낙 네트워크 장치가 발전하여 수십TB 분량의 트래픽도 처리하는 업체도 있습니다.

DDOS는 방식에 따라 네트워크(또는 라우팅)뿐만 아닌 서버를 멈추게도 만들 수 있습니다.

 

 

DDOS공격을 막는다는 것은 어떤 형태로 들어와도 서비스가 멈추지 않으면 됩니다..(?)

즉, 서버/네트워크 환경이 압도적으로 크거나,

공격에서 서버가 멈추지 않게 거르(방화벽 등)는 방법뿐입니다.

 

 

예를들어, "블로그와 같은 정적인 페이지+평상시 부하량이 매우적다(1% 미만)" 라고 가정한 환경에서

한번 실행에 서버시간이 10ms도 소요되지 않는 페이지(또는 API)만 있다면 CPU와 네트워크의 성능에 따라 다르겠지만 방어수단이 전혀 없더라도 일반적으로 문제가 될 가능성이 매우 적습니다.

 

이런 경우, 압도적인 접속자가 나온다고 해도 의도적으로 부하를 걸 수 있는 방법이 거의 없어서

서버가 대다수의 방문자를 상대해줄 수 있기 때문입니다.

 

 

 

DDOS와 부하(負荷)?

웹 서버에서 부하는 CPU가 100%를 달성하거나, 네트워크 사용량이 100%를 달성하는등..

부하는 새로운 방문자를 상대하기 어려운 상태입니다.

 

CPU

만약에 일반적인 웹 호스팅에서 FFmpeg를 사용한다고 가정하면(CPU가 매우 안좋기에) FFmpeg 작업에는 오랜시간이 걸리며, CPU를 최대치(100%)로 사용할 가능성이 생깁니다.

CPU를 지속적으로 최대치로 사용시 언제 실행될지 모를 작업이 계속 쌓이다가 오류등 문제가 발생할 수 있습니다.

예전에 쓴 글 대로, 일반적으로 웹 서버는 고사양이 아닙니다.
https://hi098123.tistory.com/247
웹 문서라는 표현을 쓰기도 하는데, 정말 문서수준으로 가벼운게 웹페이지이고 그걸 운용하는게 웹서버이므로 최신 게임용 CPU사양이라면 매우 큰 사이트도 운영가능합니다.

웹 호스팅은 최신 게임용 CPU성능의 1/100 수준보다 낮을수도 있습니다.

 

만약, 이런 서비스에서 gif to mp4 같은 작업을 한다면(최신 CPU에서 100%까지도 부하가능한 작업).. 유저가 gif를 올릴때마다 DDOS공격을 맞는 경우가 될 것 입니다. (CPU: 살려줘...)

단순히 툴을 이용한 공격이라면, 이런 경우는 안나오겠지만..
서비스를 분석하여 지능적으로 공격한다면 이러한 방식을 사용할 것 입니다.

 

일반적으로 CPU를 많이 사용하는 작업은 검색 기능도 해당할 수 있습니다. (검색도 오래걸리는 쿼리를 쓸 가능성이 큽니다.)

 

 

Network

CPU 100%사용 말고 네트워크 100%도 있습니다.

속도가 10Mbps인데 사용자가 많아서 50Mbps를 요청한다면, 설날/추석에 막히는 도로처럼 언제 도착할지 모르는 파일들이 생깁니다.

우리는 일반적으로 DDOS라고 하면 뉴스로 많이 접한 패킷(네트워크) 방식을 생각하게 됩니다.

 

 

Disk

만약에 회원가입 봇으로 계속 회원가입을 한다거나, 무한으로 글을 작성한다면 디스크가 사용 데이터가 100%가 되어 더 이상 글을 작성하지 못하는등 DB작업이 멈출 수 있습니다.

 

쿼리가 DB를 풀 스캔(잘못된 인덱스)하는 경우에도 디스크 읽기/쓰기 사용량이 100%가 되어 다른작업에 제한이 걸릴 수 있습니다.

DB가 커도 인덱스만 잘 설정되어있으면 풀스캔 하지 않기 때문에 디스크 사용량이 크게 오를 가능성은 매우 적습니다.

 

2020-12-14 구글의 서버는 회원가입으로 Disk사용량을 넘어서 디스크를 사용할 수 없는 상태로 인증서버가 중단된적 있습니다.

 

 

OS

운영체제의 설계상 문제 또는 서버프로그램 설계문제로 잘못된 입력값이 서버를 멈추게 하기도합니다.

TCP, HTTP 등 각종 프로토콜의 설계와 다르게 입력된 값이 예상과 다른 버그를 만들기도 하는데 업데이트를 자주 하던가 자체 유지보수가 된다면 해주는게 좋습니다.

 

이 문제는 가장 찾기 어렵고, 대형업체가 보통 먼저 대상이 되므로 일반적으로 자체 유지보수가 안되는경우 업데이트만 꾸준히 해준다면 피해입지 않을 가능성이 큽니다.

 

 

 

정리하자면

각종 상황에서 부하가 걸리지 않도록 관리하는것이 필요합니다.

 

네트워크는 일반적으로는 서버 외부적 요인이니 어쩔수없다고 해도

CPU사용량이 많거나, 부하가 많은 쿼리등을 관리해줘야 DDOS등의 공격으로부터 서비스를 지킬 수 있습니다.

 

부하가 많은 작업은 서비스와 분리된 서브 서버에서 돌리거나, 효율적인 캐시방법을 사용하는 등 부하관리가 먼저 우선적입니다.

이런 작업은 서버의 한도내에서 관리가 가능한 인증된 사용자만 사용하게 하는것도 방법중 하나입니다.

 

응용프로그램 계층 보호(서버의 역할: CPU/DISK 등)가 안된다면, AWS, CloudFlare, Fastly 등 각종 DDOS보호 서비스(네트워크 서비스)를 사용하더라도 방어할 수 없을겁니다.

 

저작권 보호안내
무단 전재, 재배포 행위는 금지됩니다. (글을 복사하여 게시금지)
본문의 일부(링크용 문장) 인용은 가능하지만, 출처와 링크(a 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)

예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.

만약, 본문 공유를 원하신다면 링크 공유를 해주세요

저작권 정책 확인하기
링크 공유하기

 댓글