Information Security Study/Secure Issue

D-DoS공격 대응 전략

김야키 2019. 9. 10. 19:01

SYN Flood
  • 서버가 SYN 연결 요청을 받으면, 클라이언트가 연결을 확인하기 위해 보내는 응답신호(ACK)를 기다리기 위해 통신을 열린 상태로 유지하지만, SYN Flood는 응답 신호를 보내지 않으므로 설정된 연결 시간이 초과될 때 까지 서버의 리소스를 소비
  • (방안1) 방화벽 및 프록시 서버와 같은 주변 장치에서 'TCP 연결 유지'및 '최대 연결' 규칙을 정의
  • (방안2) 방화벽 장비의 'SYN 쿠키' 기능을 사용하여 SYN Flood의 영향을 완화
    트래픽이 서버에 전달되기 전에 방화벽이 클라이언트와 서버 간의 TCP 연결을 확인
    클라이언트(공격자)가 연결에 대한 최종 승인을 보내지 않으면 방화벽은 연결을 종료 시킴

UDP Flood
  • 공격자가 봇을 사용하여 공격 대상 서버로 상당히 크고 많은 량의 트래픽을 전송
  • SYN Flood와의 차이점은 상대적으로 훨씬 빠르며 서버 리소스를 소모하지 않고, 서버의 네트워크 환경에서
  • 사용 가능한 모든 대역폭을 소비하여 정상적인 사용자에 대한 접근을 막는 것이 다름

 

  • (방안1) 많은 수의 Source IP주소에서 오는 불규칙한 네트워크 포트의 통신 요청을 통해 공격 UDP 패킷을 탐색
  • (방안2) 방화벽과 같은 주변 네트워크 장치에 대한 보안 규칙을 정의하여 필요한 포트에서만 인바운드 트래픽을 허용

 

ICMP Flood
  • 대량의 ICMP 트래픽을 공격 대상 네트워크의 사용 가능한 모든 대역폭을 잠식할 수 있는 충분한 ICMP 요청 및 응답 트래픽 발생이 가능해야 함
  • 'ping'명령으로 주로 네트워크 두 지점 간 연결을 테스트 하는데 사용 됨
    명령과 파라미터를 이용하여 'ping'의 크기와 요청 주기를 조정할 수 있어 처리 가능한 공격 대상 네트워크 대역폭을 모두 소진시킬 수 있음

 

  • (방안1) 라우터와 같은 네트워크 경계 장치에 ICMP 트래픽의 임계치를 조정
  • (방안2) 주변 라우터에서 초당 ICMP 요청에 대한 초당 패킷 허용 임계 값을 설정
  • (방안3) 인바운드 ICMP 트래픽 량이 임계 값을 초과하면 초과 트래픽은 일정 시간까지 무시
  • (추가) 근본적으로 ICMP 패킷을 허용하는 네트워크 대역을 따로 설정하는 것도 있음

 

HTTP Flood
  • 공격자가 지속적으로 많은 량의 HTTP GET 요청을 통해 웹서버의 리소스를 소진하게 하여 정상적인 사용자가 이용할 수 없도록 차단
  • 공격자 요청에 대해 웹서버가 응답을 시도하지만 공격자는 응답을 처리하지 않고 대기 시킴
  • 결과 웹서버는 응답 확인을 위하여 일정 시간 동안 각 연결에 대한 고정된 리소스를 배정하여 연결 대기를 유지시킴

 

  • (방안1) 대상 포트가 80번이고 TCP프로토콜을 사용하는 대량의 요청을 네트워크 로그를 조사, 공격이 확인된 경우 DDoS 방어 서비스를 제공하는 전문업체를 이용...
  • (방안2) 정상적인 웹서비스 요청수단이 이용되기 때문에 이 공격을 차단하기 위한 사전 예방대책을 세우기 어려움, 공격의 출발지 IP 주소는 대규모 봇의 일부분이므로 모든 출발지 IP 주소를 차단하는 것은 효율적이지 않으며 정상 사용자가 포함될 수 있음

 

SYN+ACK 반사 공격
  • 공격자가 피해자의 IP를 도용한 후 반사체로 악용될 서버에 SYN 패킷을 보내고 해당 응답인 SYN/ACK 패킷을 피해자에게 전송하게 하는 공격
  • 피해자는 SYN/ACK패킷을 대량으로 전송 받게 되면 해당 패킷을 처리하기 위해 리소스를 소모하게 되고, 그 과정에서 서버의 부하가 발생되어 정상 사용자들이 접속할 수 없게 됨
  • 반사체 서버들은 피해자가 응답을 주지 않으면 패킷이 정상적으로 전달되지 못한 것으로 판단되어 재 전송하기 때문에 더 효과적인 공격이 됨

 

  • (방안1) TCP SYN/ACK 패킷을 3-Way-Handshake과정에서 수신 받는 패킷으로서 그 자체로서는 정상 패킷이지만 짧은 시간 안에 급격하게 증가한다면 DDoS공격으로 의심할 수 있음
  • (방안2) 방화벽 및 프록시 서버와 같은 모든 주변 장치에서 목적지 IP 기반 SYN/ACK 패킷 임계치를 설정하여 차단

 

NTP 반사 및 증폭 공격
  • NTP(Network Time Protocol) 반사 공격은 정상적인 NTP 서버의 트래픽을 사용하여 공격하는 형태
  • NTP는 네트워크로 연결된 컴퓨터의 시간을 동기화하는데 사용되며 UDP 123 포트를 통해 실행
  • 공격자는 공격 대상의 IP 주소로 도용하고 NTP 서버가 많은 량의 응답 트래픽(고정된 피킷 크기)을 공격 대상 서버에게 보내도록 요청
  • NTP 서버의 응답이 공격자가 보낸 요청보다 크기가 큰 증폭기술이 활용되어 공격 효율성을 크게 높일 수 있음
  • 공격자는 다수의 인터넷에 공개된 NTP 서버에 monlist 요청을 하면 서버는 monlist요청에 대한 응답을 일제히 공격 대상으로 전송하고 공격 대상은 네트워크 대역폭을 모두 소진하여 정상적인 사용자에 대한 서비스 장애가 발생 함

 

  • (방안1) 출발지 중 UDP 123 포트와 특정 패킷 크기를 가진 트래픽을 네트워크 로그에서 조사
  • (방안2) NTP 서버를 2.4.7이상으로 업그레이드하여 monlist 명령을 완전히 제거하거나 OpenNTPD와 같이 monlist 명령을 활용하지 않는 NTP 버전을 이용
  • (방안3) 서버를 업그레이드 할 수 없는 경우 npt.conf파일에 'disablemonitor'을 추가하고 NTP 프로세스를 재시작하여 monlist 쿼리 기능을 비활성화 시킴
  • (방안4) NTP 서버에 대한 무단 트래픽을 제한하는 방화벽 규칙을 적용

 

DNS 반사 및 증폭 공격
  • DNS 시스템을 악용하여 많은 량의 트래픽을 전송하는 형태의 공격
  • 공용 DNS 서버는 요청에 대한 응답을 피해자에게 보내며 이때 응답 크기는 공격자가 DNS 조회 요청에 지정한 옵션에 따라 달라짐
  • 최대 증폭을 얻기 위해, 공격자는 요청에 'ANY'라는 옵션을 사용할 수 있으며, 이것은 DNS 영역에 대한 모든 정보를 반환함
  • 공격자가 피해자 IP주소로 도용하여 다수의 공용 DNS 서버에 DNS 조회 요청을 전송하면 증폭된 응답은 공격 대상에게 전송되어 결국 사용 가능한 피해자 대욕폭을 모두 소진시킴

 

  • (방안1) DNS 공격을 확인하기 위해 DNS 쿼리 요청이 없는 인바운드 DNS 쿼리 응답을 네트워크 로그에서 조사
  • (방안2) DNS 서비스에서는 DNS 개발사에서 제공한 지침에 따라 DNS 재귀 기능을 사용하지 않도록 설정
  • (방안3) 공용 DNS서버가 공격에 악용될 수 있는지 확인 및 테스트 하는 사이트를 활용

 

CLDAP 반사 및 증폭 공격
  • CLDAP(Connection-less Lightweight Directory Access Protocol)
  • 공격자가 공격대상 IP 주소로 도용하고 LDAP서버로 CLDAP요청을 보내는 형태의 공격
  • CLDAP는 인터넷 디렉토리를 연결/검색/수정하는데 사용되며 UDP 389 포트를 사용
  • 공격자가 도용된 IP주소로 CLDAP 쿼리를 여러 LDAP 서버로 전송할 때 CLDAP 반사 공격이 발생하며, LDAP 서버는 요청에 대한 응답 데이터를 도용된 피해자 IP주소로 보냄
  • 피해자는 대량의 LDAP/CLDAP 데이터를 동시에 처리 할 수 없기 때문에 정상적이 서비스가 불가능
  • UDP LDAP는 52배에서 70배까지 증폭이 가능한 증폭 기술을 사용하여 공격 효율성을 높임

 

  • (방안1) 출발지에서 UDP 389포트를 사용하는 요청을 네트워크 로그에서 조사
  • (방안2) LDAP 서버를 운영하는 경우 방화벽 규칙을 설정해 공격에 악용되지 않도록 예방

 

DDoS공격 대응 전략
  1. 네트워크 서비스 제공 업체에서 제공하는 DDoS 방어 서비스를 알고 있어야 한다. DDoS공격의 경우, 네트워크 서비스 제공 업체에서 조치하는 것이 대응이 빠르다.
  2. DDoS 공격에 대한 방어서비스를 계약하는 것을 고려한다.
  3. DDoS 공격이 발생하면 네트워크 서비스 제공 업체(IPS등)에 공격 IP주소를 제공한다.
  4. 허용된 트래픽과 거부된 트래픽에 대한 방화벽 로그를 확인하여 DDoS공격 발생 위치를 확인한다.
  5. 방화벽 및 프록시 서버와 같은 주변 장치에서 TCP Keepalive 및 최대 연결을 설정하여 SYN Flood 공격을 예방한다.
  6. 네트워크 서비스 제공 업체에서 포트 및 패킷 크기 필터링이 가능한지 확인하여 설정한다.
  7. 공개 웹사이트의 기본 트래픽 패턴(볼륨 및 유형)을 파악하고, 이상 패턴이 발생하는지 정기적으로 확인한다.
  8. 네트워크/보안 장비의 패치는 적절한 테스트 및 검증을 거친 후 적용한다.
  9. 예약된 IP주소, 루프백, 사설, 할당되지 않은 DHCP 클라이언트, 멀티캐스트 및 RFC 5735에 나열된 다른 주소에서 출발되는 인바운드 트래픽을 차단하도록 방화벽을 구성한다.
  10. 비즈니스 목적에 필요한 프로세스와 네트워크 대역폭을 파악하고, 서버에 설정을 반영한다.
  11. 비즈니스 목적과 보안 정책ㄱ을 고려하여 방화벽 설정을 한다.
  12. 이상 징후 발생 시 즉시 인지할 수 있도록 방화벽 및 침입 탐지 서비스를 구성한다.
  13. DDoS 공격으로 네트워크 서비스에 장애가 발생할 것을 대비하여, 대체 연결 수단을 준비한다.
  14. 중소기업 대상으로 DDoS 공격 대응 서비스를 무료로 제공하고 있는 [DDoS 사이버대피소] 이용을 고려한다.