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

며칠 전부터 가끔 서버 다운으로 불편드려 죄송합니다.
제가 DDOS 방어 스크립트를 잘못 짜는 바람에 웹 서버가 고장났었습니다.
(한번은 실수로 서버 설정 파일 통채로 지우기도 -_-;)
DDOS 공격이란, [트래픽을 대량으로 보내려고 시도하는 사이버 공격의 형태] 라고 말할 수 있습니다.
공격의 유형은 보통 다음과 비슷합니다.
-
ICMP flood, UDP flood
네트워크의 대역폭을 소진 -
SYN flood, Ping of Death, Smurf Attack
리소스나 중간 통신 장비(예: 로드 밸런서)의 리소스를 소진 -
HTTP flood, Slowloris
서버의 리소스를 고갈 -
DNS amplification, NTP amplification
소규모의 요청으로 대량의 응답을 유발하여 대상을 과부하 -
Resource Depletion Attacks
대상 시스템의 리소스(예: 연결 테이블)를 고갈시키는 방식으로, 이는 서버가 더 이상 정상적인 요청을 처리할 수 없게 -
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)는 이보다 훨씬 많습니다^^;