Skip to content
다크 모드

DDOS 방어가 도입 되었습니다.

조회 수
20,273
추천 수
6
등록일
음식점_대기_줄.jpg

며칠 전부터 가끔 서버 다운으로 불편드려 죄송합니다.

제가 DDOS 방어 스크립트를 잘못 짜는 바람에 웹 서버가 고장났었습니다.

(한번은 실수로 서버 설정 파일 통채로 지우기도 -_-;)

 

DDOS 공격이란, [트래픽을 대량으로 보내려고 시도하는 사이버 공격의 형태] 라고 말할 수 있습니다.

공격의 유형은 보통 다음과 비슷합니다.

  1. ICMP flood, UDP flood
    네트워크의 대역폭을 소진

  2. SYN flood, Ping of Death, Smurf Attack
    리소스나 중간 통신 장비(예: 로드 밸런서)의 리소스를 소진

  3. HTTP flood, Slowloris
    서버의 리소스를 고갈

  4. DNS amplification, NTP amplification
    소규모의 요청으로 대량의 응답을 유발하여 대상을 과부하

  5. Resource Depletion Attacks
    대상 시스템의 리소스(예: 연결 테이블)를 고갈시키는 방식으로, 이는 서버가 더 이상 정상적인 요청을 처리할 수 없게

  6. Multi-Vector Attacks
    여러 유형의 공격을 조합하여 사용하는 방식으로, 보안 시스템을 우회하거나 방어를 더 어렵게

뭐라고 썼는지 저도 잘 모릅니다.
예를들면 음식점(=서버) 대기줄에 손님으로 위장하고 잔뜩 줄 서있으니 음식점에 손님(=방문자)이 더 이상 입장하지 못하는 상황이 발생합니다.

 

트레디아 서버는 2대로 서비스 됩니다.

  • 외부망 (aws - nginx reverse proxy)
    nginx: 데이터 전송을 담당
  • 내부망 (apache + php + mysql + nodejs) 입니다.
    apache: 데이터 전송을 담당
    php: 데이터를 방문자에게 보기 좋게 가공.
    mysql: 사이트의 각종 데이터를 저장하거나 조회합니다.
    nodejs: 실시간 채팅 서버

서버 부하는 mysql > php > apache > nginx 순인데, nginx 의 부하가 가장 적은 이유는 단순 통로를 담당하기 때문입니다.

따라서 서버 공격은 부하가 많은 mysql, php 가 1, 2 순위 타겟이 됩니다.

 

이번에 도입한 방어 기법은 nginx 서버에 제가 만든 스크립트를 탑재 했습니다.

해당 아이피 대역에서, 짧은 시간 내에, 사이트에 여러번 액세스 - 하면 잠시 동안 그 아이피 대역을 차단합니다.

이것이 좋은 이유는, 보통은 php 에서 스크립트를 만들기 때문에 방어에 성공 하더라도 외부망 + 내부망 동시에 부하가 발생해서 자원이 소모됩니다.

그러나 이번에 만든 스크립트는 방어가 외부망에서만 이루어지기 때문에 내부망의 서버는 안전하게 보호되는 것이 큰 장점입니다.

 

아래의 영상은 nginx(=외부망)에서 AI 봇이 자동으로 차단되는 모습입니다.

1초에도 여러번 차단되는 것을 볼 수 있는데요, 의도한대로 잘 작동하는 것 같습니다.

사이트 방문자(access.log)는 이보다 훨씬 많습니다^^;


등록된 소개글이 없습니다.
댓글 17
권한이 없습니다.
다크 모드