DDoS

DoS는 일반인들에게는 생소한 개념이었지만 2000년 2월 amazon.com, eBay, Yahoo 그리고 그 밖이 다른 유명한 전자상거래 관련 사이트들이 2일 동안 지속적으로 DDoS라는 DoS의 변종공격을 받아 운영이 불가능한 사건이 발생하면서 DoS란 개념이 일반인들에게 점차 인식되기 시작하였다.

안창용(acy7807@hanmail.net)

DoS 는 대부분 외국의 유명사이트를 공격목표로 삼고 있지만, 초고속 인터넷 기술이 발달한 우리나라의 사이트들도 DoS 공격의 좋은 목표이며, 최근에는 국내 모 ISP업체의 해외망이 DoS 공격을 받아 가입자들이 피해를 입은 사례가 있었다.

그리고 전세계 인터넷 트래픽을 관장하는 미국 내 13개 루트 서버가 DDoS 공격을 받아 그 중 9대가 일시적으로 정상 작동이 불가능한 사례가 발생했으며, 공격의 진원지로 인터넷 사용자 수와 초고속 인터넷 보급율이 높은 우리나라와 미국이 제기되기도 했다.

위 에서 잠깐 언급한 국내의 모 ISP 업체의 피해처럼 DoS 공격의 심각성은 비단 남의 일만은 아니다. 이에 기업들은 문제의 심각성을 깨닫고 자사의 네트워크를 보호하기 위해 IDS나 방화벽 같은 보안시스템을 도입하고 자체 CERT를 조직하여 운영하고 있지만 개인이 운영하는 웹서버는 상대적으로 DoS 공격에 대해 취약하다.

따라서 이번에는 Windows 2000을 기반으로 한 웹서버에서 어떻게 하면 DoS 공격으로부터 웹서버를 보호할 수 있는지 알아보자.

  • [DoS 탐구]1.DoS/DDoS란 무엇인가?
  • [DoS 탐구]2.DoS 공격 유형
  • [DoS 탐구]3.DoS 대응방안
  • 1. DoS/DDoS란 무엇인가?

    DoS(Denial of Service)도 사용자들에게 피해를 준다는 점에서 크래킹의 한 종류라고 할 수 있지만, 요즘 인터넷으로 배포되는 공격 프로그램을 이용하면 전문 지식이 없어도 공격이 가능하기 때문에 그 방법이 비교적 간단하지만 그 피해 범위와 정도는 매우 광범위하다. DoS의 주요 공격 대상은 시각적인 서비스를 하는 웹서버나 라우터, 네트워크같은 기반 시설이다.

    DoS 는 한 사용자가 시스템의 리소스를 독점하거나 모두 사용, 또는 파괴함으로써 다른 사용자들이 이 시스템의 서비스를 올바르게 사용할 수 없도록 만드는 것을 말한다. 이런 의미에서 시스템의 정상적인 수행에 문제를 일으키는 모든 행위를 DoS라 할 수 있다.

    그 런데 이런 공격이 일어나는 방법은 매우 다양하다. 이 공격은 고의적으로 발생할 수 있지만 사용자의 의도와는 무관하게 발생할 수도 있으며, 공격자는 서비스 요구를 통해 서비스 중단을 초래할 수 있다. 예를 들어 공격자가 1초당 10개의 메일을 받을 수 있는 서버에 초당 20개의 메일을 보내면 공격 대상이 된 메일 서버는 메일을 제대로 전송하지 못할 것이며, 20개보다 훨씬 많은 메일을 보낼 경우엔 서버가 다운될 수도 있다.


    ▲ DoS 공격 구조

    DDoS 공격은 DoS의 또 다른 형태로, 인터넷에 연결된 일련의 시스템들을 이용해 단일 사이트에 대한 플러드 공격을 시도하는 것이다. 해커들이 일단 취약한 인터넷 시스템에 대한 액세스에 성공하면 침입한 시스템에 소프트웨어를 설치하고 이를 실행시켜 원격에서 공격을 개시한다. 최근 DDoS 공격이 민간 기업이나 공공기관 시스템에서 실행되고 있지만, 해커들은 대학 네트워크의 개방적인 분산 속성 때문에 대학 네트워크를 실행 사이트로 자주 사용하는 경향이 있다.

    엘림넷 DDoS공격

    오늘…엘림넷IDC에 DDoS 공격이 있었다.

    그로인한 여파는 막심.

    근 4시간동안 모니터링하는 케릭터문자, EVRC, SKTWorld…전체가 모두 서비스가 막혔다.

    이번에 다시금 DDoS에 대해 공부하게 되었다..

    휴가…

    8박 9일동안의 여행.

    광주 – 부산

    도보여행이다.

    얼마나 갈수 있을까..

    아니-얼마나 얻을 수 있을까.

    목적이 있는 여행은 아니지만 이번 여행으로 뭔가를 깨달았으면 한다.

    8/20 ~ 8/29

    여행을 하는 내내..웃음과 동행하길 바라면서..

    Proftp virtualhost configuration 설정 예제(proftpd.conf)

    ############################################
    #

    #                       ProFTPD Korea User Groups
    #                           http://proftpd.oops.org

    #
    ############################################

    # 번역 : 김정균 < admin@oops.org >
    # 이 예제 설정 file은 두개의 가상 server와  anonymous login를 결합하는
    # 것을 설명하고 있다.

    ServerName                      “ProFTPD”
    ServerType                      inetd

    # Port 21 은 FTP 의 기본 port이다.
    Port                            21

    # Global은 main server와 모든 virtualhosts에 의해 공유되는 “global” 설정
    # 을 생성한다.

    <Global>
    # Umask 022는 group과 world writable로 부터 새로운 dir과 file들을 막기
    # 위한 훌륭한 기본 umask이다.
    Umask                         022
    </Global>

    # Server가 실행하는데 일반적인 user와 group을 설정한다.
    User                            nobody
    Group                           nobody

    # DoS 공격을 막기 위해, 자식 process의 maximun number를 30으로 설정한다.
    # 만약 30이상의 접속을 허락할 필요가 있다면 간단하게 이 치수를 증가시키도록
    # 한다. 이것은 오직 standalone mode에서만 가능하다. inetd mode에서는
    # service 당 maximun number를 제한 하는 것을 허락하는 inetd server에서
    # 설정을 해야 한다.(xintd 역시 마찬가지 이다)
    MaxInstances                    30

    # 접속에 stall이 될때 끊어 지지 않는 최대 시간을 지정한다.
    TimeoutIdle                     300

    <VirtualHost ftp.virtual.com>

    ServerName                    “Virtual.com’s FTP Server”

    MaxClients                    10
    MaxLoginAttempts              1

    # DeferWelcome 는 client가 인증을 하기 전에 servername을 display하는
    # 것을 방지한다.
    DeferWelcome                  on

    # guest login만 허락하기를 위하여
    # nomal user login을 제한한다.
    <Limit LOGIN>
    DenyAll
    </Limit>

    # 다음, 자신들의 web site 등에 개인적으로 접근하기 위한 customer에
    # 의해 사용되어 지는 “guest” 계정을 만든다.
    <Anonymous ~cust1>
    User                        cust1
    Group                       cust1
    AnonRequirePassword         on

    <Limit LOGIN>
    AllowAll
    </Limit>

    HideUser                    root
    HideGroup                   root

    # 사용자가 접근하기를 원하지 않는 private directory
    <Directory logs>
    <Limit READ WRITE DIRS>
    DenyAll
    </Limit>
    </Directory>

    </Anonymous>

    </VirtualHost>

    # primary address에서 작동을 하지만 port는 4000번을 사용하는 또 다른
    # virtual host 이다. access는 하나의 anonymous login만 된다.
    <VirtualHost our.ip.address>

    ServerName                    “Our private FTP server”
    Port                          4000
    Umask                         027

    <Limit LOGIN>
    DenyAll
    </Limit>

    <Anonymous /usr/local/ftp/virtual/a_customer>

    User                        ftp
    Group                       ftp
    UserAlias                   anonymous ftp

    <Limit LOGIN>
    AllowAll
    </Limit>

    <Limit WRITE>
    DenyAll
    </Limit>

    <Directory incoming>
    <Limit WRITE>
    AllowAll
    </Limit>
    </Directory>

    </Anonymous>

    </VirtualHost>

    출처 : http://proftpd.oops.org/document.php?t=doc&m=virtual