IT/WEBWAS

DDoS 공격에 대한 이해와 방어 방법

동구멍폴로 2024. 8. 13. 23:00
반응형

DDoS(Distributed Denial of Service) 공격은 여러 대의 컴퓨터를 사용해 특정 서버나 네트워크에 과도한 트래픽을 보내 서비스 이용을 방해하는 사이버 공격입니다.  DDoS의 정의, 주요 유형, 방어 방법, 그리고 Nginx와 Apache HTTP Server에서 DDoS 방어 설정 방법을 알아봅니다.

DDoS 공격의 정의

DDoS 공격은 분산된 여러 대의 컴퓨터, 주로 감염된 봇넷을 통해 목표 서버나 네트워크에 대량의 트래픽을 보내서 과부하를 유발하는 공격입니다. 이를 통해 정상적인 사용자들이 서비스를 이용하지 못하게 만들거나 서버를 다운시키는 것이 목적입니다.

DDoS 공격의 주요 유형

  1. 볼륨 기반 공격: 대규모 트래픽을 통해 네트워크 대역폭을 소진시키는 공격입니다. UDP 플러드, ICMP 플러드 등이 포함됩니다.
  2. 프로토콜 공격: 네트워크 프로토콜의 취약점을 이용해 서버 자원을 고갈시키는 공격입니다. SYN 플러드, Ping of Death 등이 있습니다.
  3. 애플리케이션 레이어 공격: 특정 애플리케이션이나 서비스에 집중하여 트래픽을 보내는 공격입니다. HTTP 플러드가 대표적입니다.

DDoS 공격 방어 방법

  1. 트래픽 모니터링: 비정상적인 트래픽 패턴을 실시간으로 모니터링하여 조기에 탐지합니다.
  2. 방화벽 및 라우터 설정: 특정 유형의 트래픽을 필터링하거나 차단할 수 있도록 설정합니다.
  3. DDoS 방어 솔루션 사용: 전문 DDoS 방어 솔루션이나 서비스를 이용하여 공격 트래픽을 필터링하고 차단합니다.
  4. 분산형 인프라: 서버와 네트워크 자원을 분산시켜 단일 지점에 대한 공격의 영향을 줄입니다.

Nginx에서 DDoS 방어 설정

Nginx는 고성능 웹 서버로 DDoS 방어를 위한 다양한 설정을 제공합니다.

  1. Rate Limiting 설정: 클라이언트가 일정 시간 내에 보낼 수 있는 요청 수를 제한합니다.이 설정은 IP 주소당 초당 10개의 요청을 허용하고, 최대 20개의 버스트 트래픽을 허용합니다.
    http {
        limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
        server {
            location / {
                limit_req zone=one burst=20 nodelay;
            }
        }
    }


  2. Connection Limiting 설정: 동일한 IP 주소에서 허용되는 최대 동시 연결 수를 제한합니다.이 설정은 IP 주소당 최대 10개의 동시 연결을 허용합니다.
    http {
        limit_conn_zone $binary_remote_addr zone=addr:10m;
    
        server {
            location / {
                limit_conn addr 10;
            }
        }
    }


  3. Request Body Size 제한: 클라이언트가 서버로 전송할 수 있는 요청 본문의 최대 크기를 제한합니다.이 설정은 요청 본문의 최대 크기를 1MB로 제한합니다.
    http {
        client_max_body_size 1m;
    }



  4. Client Body Timeout 설정: 클라이언트가 요청 본문을 전송하는 시간을 제한합니다.이 설정은 클라이언트가 10초 내에 요청 본문을 전송하지 않으면 연결을 끊습니다.
    http {
        client_body_timeout 10s;
    }


Apache HTTP Server에서 DDoS 방어 설정

Apache HTTP Server에서도 유사한 방어 설정을 적용할 수 있습니다.

  1. mod_evasive 모듈 설치: DDoS 공격을 방어하기 위해 mod_evasive 모듈을 설치합니다.
    sudo apt-get install libapache2-mod-evasive



  2. mod_evasive 설정: /etc/apache2/mods-available/evasive.conf 파일을 편집하여 설정을 추가합니다.이 설정은 특정 IP에서 너무 많은 요청이 들어오면 차단합니다.
    <IfModule mod_evasive20.c>
        DOSHashTableSize    3097
        DOSPageCount        2
        DOSSiteCount        50
        DOSPageInterval     1
        DOSSiteInterval     1
        DOSBlockingPeriod   10
    </IfModule>


  3. mod_security 모듈 설치: 웹 애플리케이션 방화벽(WAF)인 mod_security를 설치하여 추가적인 보안을 제공합니다.
    sudo apt-get install libapache2-mod-security2


  4. mod_security 설정: 기본 설정 파일을 편집하여 필요한 규칙을 추가합니다.이 설정은 특정 User-Agent를 가진 요청을 차단합니다.
    <IfModule security2_module>
        SecRuleEngine On
        SecRequestBodyAccess On
        SecRule REQUEST_HEADERS:User-Agent "curl" "deny,status:403,id:1001"
    </IfModule>



결론

DDoS 공격은 매우 파괴적일 수 있지만, 적절한 설정과 방어 기술을 통해 상당 부분 완화할 수 있습니다. Nginx와 Apache HTTP Server는 각각 다양한 방어 설정을 제공하며, 이를 통해 웹 서버를 보다 안전하게 운영할 수 있습니다. 이 포스트가 DDoS 방어에 도움이 되기를 바랍니다.

반응형