본문 바로가기
검색
  • 홈으로
  • 지식마당
  • 알기쉬운SW공학배우기
  •  

알기쉬운SW공학배우기

게시글 상세 보기
제목 [SW공학 동영상 40화] Best Practices for Preventing and Responding to Distributed Denial of Service (DDoS) 작성일 2017.03.17
첨부파일
조회수 266

Best Practices for Preventing and Responding to Distributed Denial of Service (DDoS) Attacks

참석자

Will Hayes - Principal engineer at the Software Engineering Institute

Rachel Kartch - Network analyst team lead in CERT Division of the SEI

요약

오늘은 분산 서비스 거부(DDoS) 공격에 대해 이야기 합니다. 우리가 하는 일 중 가장 중요한 것 중 하나는 네트워크에서 네트워크 트래픽을 살펴 보는 것입니다. 우리는 정상인지 비정상적인지, 네트워크상의 가능한 위협이나 나쁜 조건이 무엇인지를 살펴봅니다.

CERT에 오기 전 15년 정도 네트워크 엔지니어로 일했습니다. ISP 업체, 글로벌 금융 회사에서 일했고 컨설턴트로도 일했습니다. 그 일의 대부분은 무엇보다 네트워크의 트래픽 분석이 필요했습니다.

ISP에서 일할 때는 공격받은 부분에 대해 책임이 있습니다. 응답하는 방법을 이해해야 합니다. 고객이 공격 받고 있다면 어떻게 대응합니까? 고객이 다른 사람을 공격한다면 ...? 더 좋든 나쁘든 간에, 나는 그 경험의 일부를 가졌습니다.

최근의 사건에 대해 이야기 해 봅시다. 휴대 전화에 있는 앱 중 하나가 작동하지 않았으며 그게 뭔가 진행되고 있었습니다. 인터넷 서비스는 중단되었습니다. Dyn은 분명히 공격점이었지만 실제로는 모든 계층에 연결되고 매우 잘 분산되어 있었습니다.

그 공격이 나쁜 이유는 실제로 공격이 인터넷의 서비스를 제공하는 누군가를 목표로 했기 때문입니다. Dyn이 많은 주요 웹 사이트와 주요 응용 프로그램 기능을 제공하는 기본 서비스를 제공하기 때문입니다.

DDoS 공격을 분류하는 표준 방법은 없지만 많은 사람들이 볼륨, 프로토콜, 응용 프로그램을 공격하는 방법 중 하나입니다. 체적 공격과 과거에 추적한 것 등이 가장 일반적인 유형입니다. 50 % 이상은 체적 공격입니다.

볼륨은 트래픽 양이 많은 것처럼 보입니다. 막대한 양의 트래픽으로 서버를 쓰러뜨리는 것이지만 일반적으로 파이프를 채우는 것을 이야기합니다. 그래서 그것은 체적 공격으로 볼 수 있습니다.

체적 공격의 최근 사례는 Brian Kreb의 웹 사이트에 대한 공격입니다. 마치 체적 공격이었던 것처럼 보였지만 던져지는 트래픽은 초당 620 기가 비트였습니다. 범주 공격입니다.

두 번째 범주의 공격은 프로토콜 공격입니다. 프로토콜이 구현되는 방법에서 약점을 목표로 하는 공격합니다. 그 예가 SYN입니다. TCP 3 방향 핸드 셰이크가 작동하는 방식이며 TCP 연결을 설정합니다. 클라이언트는 SYN을 서버에 보내고 서버가 SYN-ACK를 보내기 때문에 인정하고 SYN을 되돌려 보냅니다. 그런 다음 클라이언트가 ACK를 전송하면 3 방향 핸드 셰이크가 완료됩니다. 이제 TCP가 연결됩니다. SYN 침입자는 서버에 많은 SYN을 보냅니다. 이러한 SYN은 스푸핑 된 IP 주소를 가진 단일 호스트에서 올 수 있기 때문에 수천 또는 수백만 호스트에서 오는 것처럼 보입니다.

사람들이 봇넷에 대해 이야기하는 것을 들었습니다. 감염된 장치가 있으면 해당 장치는 명령과 제어 서버에서 SYN을 IP 주소로 보내도록 합니다.

Rachel : 마치, 이봐, 지금 당장 나와 연결하고 싶은 사람들이 많다. 나는이 자원들을 구속 할 것이다. 서버는 SYN을 보낸 모든 IP 주소로 SYN-ACK를 다시 보냅니다. 이제 이러한 주소가 스푸핑 된 경우 서버는 SYN을 보낸 적이없는 호스트에 SYN-ACK를 보내고 있습니다. TCP의 적절한 기능은 호스트가 그것을 버릴 것이라는 것입니다. 그 SYN-ACK를받는 호스트는 같고, 나는 이것이 무엇인지 모른다. 그리고 나는 상관하지 않는다. 그래서 나는 그것을 떨어 뜨릴 것이다. 스푸핑되지 않았더라도 악성 호스트는 ACK로 SYN-ACK에 응답하지 않습니다. 그들은 그것을 무시할 것입니다.

서버는 이제이 모든 SYN이 들어온 모든 바인딩 된 리소스를 가지며 SYN-ACK를 보내고 아무도 그것을 돕지 않으며 아무도 그 세 방향 핸드 셰이크를 완료하지 못합니다. 이 시점에서 공격자가 작업을 올바르게 완료했다면 해당 서버 ... 모든 리소스가 모두 소진되고 SYN을 더 이상 받아 들일 수 없습니다. 더 이상 TCP 연결 요청을 수락 할 수 없습니다. 서버가 새로운 연결을 허용 할 수 없기 때문에 서비스를 거부했습니다.

세 번째 공격 유형은 응용 프로그램 공격인데 응용 프로그램의 약점을 목표로 하는 공격입니다. 다 그런 건 아니지만 응용 프로그램 공격은 웹 서버에 대한 공격을 말합니다. HTTP 공격의 좋은 예가 Slowloris입니다. Slowloris는 공격자가 웹 서버에 HTTP 요청을 전송한다는 의미에서 조금 비슷하지만 요청을 완료하지는 않습니다. 요청을 시작한 다음 매우 느리게 주기적으로 요청에 다른 헤더를 추가하려 하지만 실제로 하지는 않습니다. SYN과 마찬가지로 웹 서버가 Slowloris에 취약한 경우 연결을 열어 두어야 합니다. 아주 느린 연결 요청을 많이 받게 될 것이고, 웹 서버 연결 테이블이 꽉 차서 새로운 요청을 받아 들일 수 없습니다.

Dyn 공격은 완전한 정보를 가지고 있지 않습니다. 트래픽에 관해 정보를 발표했지만 전부는 아닙니다. 이 공격은 DNS에 있었습니다. 이 공격의 원인 중 일부는 공격자가 보낸 메시지를 나타내기 때문에 HTTP가 아닌 DNS 응용 프로그램에 있었습니다. 이 메시지를 하위 도메인 공격이라고 부릅니다. 합법적인 DNS 요청처럼 보이지만 Dyn이 호스팅하고 있는 도메인의 존재하지 않는 하위 도메인입니다.

합법적인 도메인 이름에 쓰레기 문자를 붙여 Dyn에게 요청을 보냅니다. Dyn은 그것이 공격 트래픽이라는 것을 모릅니다. 한 번에 수백만 개를 보내면 서버를 압도 할 수 있습니다.

비즈니스에서 일어나는 모든 종류의 재난처럼 계획이 중요합니다. 공격 받고 있다면 그것을 알아내야 하고 앞으로 무엇을 할지 알아야 합니다. 할 수 있는 첫 번째는 네트워크가 어떻게 결합되어 있는지 보십시오. 인터넷 연결이 하나인지, 여러 개의 연결이 있는데 모두 같은 공급자인지, 서버가 모두 단일 데이터 센터에 있는지, 서버가 분산되어 있는지 확인해보십시오.

실제로 영향을 받은 Dyn 중 일부는 보조 DNS 공급자가 없습니다. Dyn은 유일한 공급자였습니다. 아키텍처에서 많은 탄력성을 가지고 있다는 사실에 의지했다고 생각합니다. Dyn은 스스로를 보호 할 수 있으므로 사용하면 됩니다.

최악의 시나리오를 끊임없이 봐야합니다. DNS 공급자가 공격받는다면 어떻게 될까요? 데이터 센터가 폭발하면 어떻게 될까요? 우리 모두가 공격 받고 있다면 무슨 일이 벌어 질까요? 먼저 아키텍처를 봅니다. 병목 현상이 있는 곳을 발견하면 쉽게 찾는 위치에 너무 많은 것을 가지고 있기 때문에 첫번째 순위입니다.

두 번째로 네트워크로 완화 할 수 있는 유형이 있습니다. 네트워크 방화벽, 웹 응용 프로그램 방화벽, 로드밸런서 등 SYN 플러드 기능을 설정하거나 구성하고 변경할 수 있습니다. 마찬가지로 응용 프로그램 공격의 경우 특히 웹 응용 프로그램 방화벽의 경우 장치 제조업체는 이러한 유형의 공격에 대해 알고 있습니다. 설정 할 수 있는 것들을 알고 있고 웹 서버가 모든 연결을 유지하지 못하도록 조정할 수 있습니다. 일반적으로 로드밸런서나 웹 응용 프로그램 방화벽은 요청이 완료 될 때까지 HTTP 요청을 서버에 다시 보내지 않습니다. 따라서 부분적으로 완료된 연결은 합법적이고 완료된 요청이 표시 될 때까지 네트워크 장치가 다시 전송하지 않는다는 것을 알고 있기 때문에 절대로 서버에 손을 대지 않습니다. 이것의 단점은 체적 공격을 받는다면 네트워크가 도움이 못 된다는 것입니다. 체적 공격은 인터넷 연결이 630기가 비트가 아니면 초당 620 기가 비트를 전송하기 때문입니다.

네트워크 연결이 트래픽 홍수를 처리하기에 충분하지 않은 경우 하드웨어 종류와 상관없이 조치를 취해야 합니다. 대량의 공격을 막기 위해 네트워크를 배치 할 수는 없고 대역폭을 실제로 확장하는 것을 고려할 수 있습니다.

네번째 제안은 아웃소싱을 할 수 있을지에 대한 계획과 시도입니다. 솔직히 말해서 이것은 큰 조직을 제외한 조직에게 최상의 솔루션이 될 것입니다. ISP와 이야기하고 공격을 받는다면 ISP의 절차가 무엇인지 찾아야 합니다.

우선 무엇을 할 수 있습니까? 일부 ISP는 DDoS 보호 기능을 제공하지만 DDoS 공격을 받고 있다고 신고하면 해줄 수 있는 일들이 있습니다. 그래서 첫번째 ISP와 상의하십시오. 두번째로 DDoS를 전문으로 하는 회사들이 클라우드에서 호출하는 것이 있습니다. 클라우드 스크러빙은 이러한 서비스 중 하나입니다. 이것은 대용량의 공격에 완화 조치를 취할 수 있는 가장 좋은 방법입니다. ISP에서 차단하도록 하거나 이러한 클라우드 스크러빙 서비스 중 하나를 사용할 수 있습니다.

Dyn 사건을 다시 보면 DNS 요청이 합법적인 것으로 보입니다. 그러면 어떻게 알 수 있습니까? 지속적으로 트래픽에 추가된 사이트에 접근하려고 시도합니다. 따라서 스크럽 서비스는 합법적인지 아닌지를 알아내고 그 중 어떤 것을 할지 하는 것입니다.

아웃소싱을 바라 보는 다른 방법은 웹 비즈니스의 경우입니다. 일부 회사는 웹 사이트를 가지고 있고 다른 회사의 웹 사이트입니다. 트위터를 생각해보면 트위터에 갈 수 있어야 합니다. 웹 사이트나 응용 프로그램 호스팅이나 DDoS 보호 완화가 서비스의 일부인 호스팅 회사에서 볼 수 있습니다.

DDoS가 무서운 것이 아니라 웹 사이트의 인시던트 관리 리소스는 DDos뿐 아니라 일어날 수 있는 모든 종류의 문제에 대해 준비 할 수 있는 좋은 도구입니다.

질문이 있으면 언제든지 info@sei.cmu.edu로 이메일을 보내주십시오.

댓글쓰기

등록

댓글보기 (총0 개)

홈페이지 내 게시된 정보 문의
  • 담당자 : 유봉식 책임
  • 전화번호 : 02-2132-1367
  • 이메일 : krystal78@nipa.kr