개요
지난 주 동일 IP를 통해서 다중 세션으로 서버에서 과도한 트래픽이 발생하여 원인 파악 결과 중국에서 서버에 DDOS 공격을 일으킨 것을 확인 하였다
DDOS차단은 여러가지가 있으나 커넥션 수를 제한하여 트래픽을 제어할 수 있는 방법을 소개한다
조건
아래와 같은 상황에서 테스트 되었다
- APACHE 2.4 64BIT VS16
- PHP 7 이상
- WINDOWS 10 이상 64비트 환경
모듈 설치 파일
해당 파일은 WINDOWS 환경에서 작동하도록 VS16으로 컴파일 되었다
서버가 VC로 컴파일 되었거나 다른 버전일 경우는 https://www.apachehaus.com/cgi-bin/download.plx#MODULES24">APACHE HAUS 사이트에서 확인 바란다
설치방법
압축을 풀고 mod_limitipconn.so 파일을 APACHE24\MODULES 폴더에 복사 붙여넣기 한다
APACHE24\CONF\httpd.conf 파일을 메모장으로 열고 아래 내용을 so 모듈 라이브러리에 추가한다
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.so
그리고 아래에 다음과 같은 명령어를 추가한다
<IfModule mod_limitipconn.c>
# Set a server-wide limit of 10 simultaneous downloads per IP,
# no matter what.
MaxConnPerIP 10
<Location /images>
# This section affects all files under http://your.server/somewhere
MaxConnPerIP 10
# exempting images from the connection limit is often a good
# idea if your web page has lots of inline images, since these
# pages often generate a flurry of concurrent image requests
NoIPLimit image/*
NoIPLimit text/*
# exclude local IP addresses from limits
LocalIP 127.0.0.1
</Location>
명령어에 대한 해석
MaxConnPerIP 10 - 최대 10개까지 동일 ip 접근을 허용한다
<Location /video> - 비디오 폴더는 별도의 제한을 설정한다
MaxConnPerIP 5 - 비디오 폴더 접근은 최대 5개까지 동일 ip 접근을 허용한다
NoIPLimit image/* - 비디오 폴더 내 image, text는 별도의 제한을 주지 않는다
NoIPLimit text/*
LocalIP 127.0.0.1 - 127.0.0.1 아이피는 예외로 설정한다
</Location>