U-lis [491954] · MS 2014 (수정됨) · 쪽지

2017-08-21 19:50:20
조회수 14,564

DDoS 에 대해

게시글 주소: https://roomie.orbi.kr/00012940325

안녕하세요 옛날에 블록체인 어쩌고 하는 글을 썼던 개발자입니다.

오늘 보니 오르비에 디도스 공격이 있었다는 공지가 있네요.

이에 대해 뭔지 궁금해하는 글이 몇개 보여 간단하게 설명충 등판하러 왔습니다.

디도스라는 말 많이들 들어보셨을텐데요, 정확히 말하자면 디도스 공격이라고 해야 맞습니다.

그리고 이걸 알기 위해  DoS 부터 살펴봐야 할 것 같네요.


도스 보고 운영체제 생각하신 아재들은 아이디를 놓고 오르비를 떠나주시기 바랍니다.


1. DoS (Denial of Service) Attack 


이름만 봐도 뭔지 알 수 있죠? 서비스를 거부하게 만들어버리는 공격입니다.

여러분도 오르비에 도스 공격을 할 수 있습니다. 모아보기 페이지에 가서 새로고침을 빠르고 강력하게 열심히 누르세요.

물론 그정도로 오르비 안죽습니다. 왜때문에 새로고침이 공격이 되는거지? 설명해드리겠습니다.

서비스 거부 공격의 핵심은 시스템 자원을 말리는 데 있습니다. 오르비는 웹 서비스니까 요청을 받아 처리하는 웹 서버가 있을 것이고 데이터를 저장하고 꺼내주는 데이터베이스도 있겠네요. 서버와 디비는 각각 자기가 활용할 수 있는 자원을 열심히 활용해 사용자들의 요청을 처리합니다.

도스 공격은 여기에 악의적인 요청을 때려부어서 서버의 가용 용량 이상의 부하를 주는 공격이라고 생각하시면 됩니다. 요청이 순간적으로 엄청나게 쏟아져 들어오게 되면 어디든 병목이 되는 곳에서는 요청에 대한 지연이 발생할 것이고, 이런 지연들이 점점 쌓이다보면 결국 서비스를 계획대로 사용자에게 제공할 수 없는 상황이 돼버립니다. 그러다 어디선가 오류를 내고 서버가 내려가버릴 수도 있게 되는 것이고, 데이터베이스가 일을 안하고 배를 째는 사태도 생길 수 있습니다. 이렇게 되면 일반 사용자들은 서비스를 이용할 수 없게 되는 것이죠. 서버를 죽여서 어떻게 해부를 해보겠다는 것도 있을 수 있지만 도스 공격의 핵심은 사용자들이 서비스를 이용할 수 없게 만들어 서비스 운영측에 손해를 끼치는 것이에요.

여러분이 새로고침을 열~심히, 오르비 서버가 견딜 수 있는 양보다 더 많이 누를 수 있다면 여러분도 도스 공격자!(Yeah~)


2.  DDoS (Distributed DoS) Attack


여러분이 익히 들어보신 디도스는 위에서 설명한 도스 공격의 분산버전입니다.

자, 여러분이 새로고침을 1초에 백만번 하는 프로그램을 구했다고 해봅시다. 도스 공격을 하기 충분하네요. 그걸 여러분 컴에서 돌려요. 그러면 서버에 한 아이피에서 엄청난 양의 요청을 보낸 걸 확인할 수 있겠죠? 그럼 그냥 철컹철컹... (뭐 이러저러하게 우회하는 방법은 있습니다만 그건 이 글의 주제에서 벗어나니..) 그리고 고가용성 서비스를 하는 곳에 공격을 하려면 컴퓨터 한 대로는 택도 없겠죠.

그래서! 디도스 공격을 하기 위해서는 디도스 한창 유행할 때 같이 들어보셨을 좀비를 필요로 합니다. 내가 원하는 곳에 요청을 같이 날려줄 수 있는 숙주를 만드는 거죠. 일단 숙주를 퍼뜨리는 동안에는 이 프로그램은 아무것도 하지 않습니다. 그냥 프로세스만 떠서 조용히 살아요. 그러다가 충분한 수의 좀비가 확보되고 공격자에게 입금이 되면? 공격자는 비로소 이 프로그램들에게 동일한 곳으로 DoS 공격을 날리도록 명령합니다. 그러면 수많은 컴퓨터에서 수많은 요청이 몰려들기 때문에 어지간한 고가용성 서비스도 뻗어버릴만한 트래픽을 발생시킬 수 있습니다.


디도스 공격이 대응하기 까다로운 점은 

첫째로 공격의 규모를 가늠하기 어렵다는 겁니다. 따라서 대응하기도 어렵습니다. 예를 들어 전 세계 컴퓨터의 50%를 숙주로 가진 공격자가 여러분이 운영하는 서비스를 공격한다고 해봅시다(네 이런사람 없습니다). 심지어 여러분은 공격자에게 예고도 받았다고 해둡시다. 그렇다고 여러분이 전 세계 50%의 컴퓨터가 미친놈처럼 날려대는 요청을 커버할 수 있을 만큼의 고가용성을 확보해야 할까요? 그냥 맞고 죽었다 대응하고 살리는게 좋아보이죠 상식적으로. 대부분의 서비스는 어지간한 요청은 견딜 수 있도록 + 갑자기 트래픽이 뛸 것까지 고려해 여유있게 서비스를 운영합니다. 그런데 디도스같은 이벤트는 자주 일어나는 것도 아니고 어느정도 규모일 지 알 수가 없기 때문에 디도스 공격을 맞으면 거의 일단 서비스는 내려간다고 봐야 해요. 그걸 다 버틸 서버를 상시 운영할 수는 없으니까요. 물론 여러가지 기술로 디도스 공격을 방어하고 차단할 수 있습니다.

둘째로 공격자를 특정하기가 일반적인 도스 공격에 비해 훨씬 어렵다는 겁니다. 도스 공격이야 프록시를 타건 뭘 어쩌건 여튼 한 아이피에서 공격을 하기 때문에 그 아이피에 대한 오리진을 계속 파고 들어가면 결국 공격자를 특정할 수가 있게 돼요. 하지만 디도스는 오랜 시간에 걸쳐 좀비를 만들어 대기하고 있다가 어느 순간 수많은 곳에서 요청이 들어오기 때문에 이걸 다 조사해서 진짜 공격자를 찾는게 매우 어렵습니다. 심지어 공격자 자신의 컴퓨터는 공격에 참여할 필요도 없기 때문에 숙주를 파고 들어가 거기서 흔적을 찾는 작업을 해야 합니다. 이런 이유로 디도스 공격은 난이도가 있는 공격이라고 할 수 있겠습니다. 도스 공격이 어려운 게 아니라 숙주를 만들고 명령을 내리고 흔적을 지우는 게 어려운 거죠.


이렇게 간단하게(?) 도스/디도스 공격에 대해 알아봤습니다.


그럼 전 이만.

0 XDK (+0)

  1. 유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.