텍스트큐브 메인 사이트가 터져 나가는 일련의 문제 (이런 문제들) 때문에 아침놀님 서버의 더부살이를 끝내고 TNF1 서버로 다시 메인 사이트의 이전준비를 하는 중이다. 매번 서버 준비할 때 마다 설정하는 것들이 많은데, 그 중에서 좀 마이너한 아파치 모듈 하나를 정리해 본다.
mod_limitipconn은 한 IP에서 동시에 접속하는 수를 아파치 서버 설정을 통해 간단하게 제한하는 기능을 가지고 있다. 터져나가는 서버나 DDoS에 대한 간단한 대비에 좋은 모듈이다.
먼저 데비안 시스템에 build-essential 패키지가 설치되어 있어야 한다.
- http://dominia.org/djao/limitipconn2.html 에서 mod_limitipconn 소스 파일을 내려 받는다. mod_limitipconn-0.23.tar.bz2 라는 파일을 받을 수 있다.
wget http://www.dominia.org/djao/limit/mod_limitipconn-0.23.tar.bz2 - 압축을 푼다. (bz2 압축이므로 j 옵션을 쓴다.)
tar xvjf mod_limitipconn-0.23.tar.bz2 - 디렉토리로 진입한다.
cd mod_limitipconn-0.23 - 보통 apxs2가 아파치에 깔려있지 않다. 이 도구는 아파치 개발도구에 들어있다. 아파치 개발 도구를 설치한다.
sudo apt-get install apache2-dev - Makefile을 vi 등으로 열어서 (vi Makefile) 현재 버전에 맞게 아래처럼 수정한다.
APXS=apxs2 APACHECTL=apache2ctl - DSO를 컴파일해서 만들고 아파치 라이브러리에 설치한다.
sudo make install - 아파치의 DSO 로 등록한다. 우선 아파치 디렉토리로 이동한 다음 load 파일을 만든다.
cd /etc/apache2/mod_available vi limitipconn.load 이후 내용을 LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so 으로 만들고 저장하고 나온다. - 아파치 서버의 모듈로 등록한다.
a2enmod limitipconn - 아파치 서버를 재시작한다.
sudo /etc/init.d/apache2 restart
설치하고 나면 사이트 파일을 편집하면 된다. 원하는 사이트 정보 하위에 아래의 예제처럼 적으면 된다. (아래는 webhostgear 페이지 에서 소개하는 예이다.)
MaxConnPerIP 3
# 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/*
<Location /mp3>
MaxConnPerIP 1
# In this case, all MIME types other than audio/mpeg and video*
# are exempt from the limit check
OnlyIPLimit audio/mpeg video
다음에는 spamhaus PHP 확장 설치를 써볼까 싶다.





