포럼

스쿨이 트래픽에 시달리면서 문제점을 해결해 보고자 .htaccess 파일을 이용해 IP를 자동으로 차단할 수 있는 모듈을 만들고 싶어졌습니다...^^  과거의 리퍼러 모듈을 복원해 모니터링을 해 보았는데 트래픽을 유발하는 요청에는 일정한 패턴이 있었고 이점을 착안해 동적으로 .htaccess 파일을 생성하면 어떨까? 하는 동기로 일명 "IP가드"라는 모듈을 동작시키는데 성공했답니다.


원리는 다음과 같습니다.

트래픽을 요청하는 리퍼러에는 항상 아래와 같이 회원가입이나 글쓰기 액션이 포함되어 있습니다.

http://생략/xe/index.php?mid=xenote_module_book_contentwrite&act=dispMemberSignUpForm

 

그런데 위 미드명은 회원가입을 할 수 있는 모듈이 아닙니다.(외부페이지) 이것이 스쿨과 여러분의 사이트가 다른점인데 스쿨은 회원정보 관리를 항상 member_page 모듈에서 처리하도록 되어 있어요. 즉 정상적인 요청이라면

http://생략/xe/index.php?mid=member_page&act=dispMemberSignUpForm 가 됩니다.


XE는 항상 현재 모듈에서 회원가입이나 계정 관리 액션을 실행 할 수 있습니다. 하지만 위 미드명에 admin이 있다면 문제가 달라지겠지요...^^ 또는 페이지 모듈이나 외부 페이지에서 dispBoardWrite라는 액션이 반복적이고 지속적으로 요청된다면 즉각 해당 IP를 차단해야 불필요한 트래픽을 낭비하지 않을 수 있을 것이고 계정이 뚫리는 일을 미리 차단할 수도 있을 것입니다.


IP가드는 ipguard_post (감시초소 애드온)과 IP가드 모듈의 조합으로 동작합니다. 자칫 요청 리퍼러를 모두 수집하고 저장하는 일이 사이트에 부하를 줄 수 있기 때문에 초소에서는 지정된 액션만 선택적으로 로그에 기록하는 기능을 가지고 있고 모듈에서는 비정상적인 리퍼러에 대해 자동으로 IP를 등록하고 .htaccess 파일을 생성하여 유입 자체를 차단하는 기능을 포함하고 있습니다.(자동 차단 기능은 미완성, 베타는 수동 파일 생성 가능)

모듈에서 조건으로 생성한 필터링 액션은 초소에서도 활용할 수 있습니다.


--- 도움이 필요한 문제점 ---

호스팅 계정의 루트 권한이 모두 열려있다면, 또는 XE가 최상위 폴더에 설치되어 있다면 정상 동작하게 됩니다. 첨부된 모듈은 XE가 /root/xe/ 에 설치되었다는 가정하에 작성하였습니다. 이것은  ipguard.class.php 파일에서 수정할 수 있습니다. 만약 XE를 루트에 최상위로 풀어 설치했다면 ./.htaccess 로 수정하면 됩니다.


// .htaccess 파일 경로
var $htaccessFile = '../.htaccess';


DB의 수동, 자동으로 저장된 IP들과 기존 파일의 차단된 IP들을 모아 임시 파일(.htaccess_temp) 파일을 만들고 최종적으로 FileHandler::rename() 메소드를 이용해 /xe/ 바깥으로 .htaccess 파일을 생성합니다. 만약 XE를 최상위 폴더에 설치한 경우 XE의 .htaccess 원본 파일의 맨 하단에 IP 차단룰을 포함시킬 것입니다.


문제는 /xe/ 로 설치한 경우 XE 바깥의 루트 디렉터리의 퍼미션 권한이 755로 설정된 경우 권한문제가 발생하여 동작하지 않는다는 것입니다. 즉 파일을 생성, 복사하지 못하고 있답니다. XE의 /files 권한은 755,  /xe/ 까지는 707로 XE 안에서는 얼마든지 파일을 생성할 수 있지만 바깥으로는 끄집어 내지 못하고 있습니다. (스쿨이 755)

FTP로 파일 핸들링이 가능하고 XE도 /files(755) 핸들링이 가능하다면 루트로(퍼미션이 755라고 하더라도) PHP를 이용해 생성된 파일(파일 퍼미션 644 유지)을 끄집어 낼 수 있지 않을까? 하는 의문이 풀리지 않아 며칠동안 고생만하고 있답니다.

공부가 모자란 덕이겠지요. 이 문제를 포기해야 하는 것인지, 능력자의 손길이 닿으면 해결될 수 있는 문제인지 도움을 요청합니다.   


IP가드 베타는 추후 비영리적 공개를 목적으로 합니다. 1.4.5.10 버전에서 작성하고 1.5, 1.7 버전에서 동일하게 동작합니다. 호스팅 사용자의 루트 권한에서의 문제점을 해결 할 수 있는 방법을 찾고 싶습니다...^^


만약 퍼미션 문제로 동적 생성이 불가능하다면 ~~~

뭐...임시 파일에서 그때그때 수작업으로 FTP에서 복사하는 방법이나

또는 XE를 최상위로 빼오는 수밖에 없을 것 같고...^^

하지만 해결 할 수 있는 방법이 있지 않을까 하는 기대를 조금이나마 해봅니다.



글쓴이 제목 최종 글
2-COIN 회원 개인정보 수정 못하게 하기. 이름/생일/기타 추가항목 [2] 2013.07.05 by 2-COIN
최윤한 서버 메모리가 계속 올라가서 사이트 접속이 안되는경우 [4] 2013.07.05 by Canto
pentopen 구글 analytics에 자신의 접속기록도 포함이 되는걸까요? [4] 2013.07.04 by pentopen
짤막한글 콘텐트 위젯에 나타난 몇가지 문제점 어떻게 해결해야할까요?  
XE만세 코어 업데이트 멘붕이네요... [1] 2013.07.03 by 혼ME
말똥이 홍보용 배너 모듈? [2] 2013.07.03 by 말똥이
큰성565 혹시 생성된 게시판을 통채로 삭제해도 괜찮은가요..? [2] 2013.07.03 by 큰성565
CKEQ 1.7.3.4 버전에서 위젯 쪽 확장변수 적용이 잘 되는지 궁금합니다.  
코도치 비밀정보관련 [2] file 2013.07.02 by 코도치
sipjaga99 sub 페이지 to 도메인 연결...  
초보개발자 DB Error가 나면서 서버가 2시간마다 한번씩 다운이 됩니다. [4] 2013.07.02 by 초보개발자
달빛영혼 데이터 백업 문제입니다. ㅇ,.ㅇ 첨부파일등등 [3] 2013.07.01 by 달빛영혼
YJSoft 공사중 애드온... [12] file 2013.07.01 by 아루히
로스트(ROST) 갑자기 관리자페이지 편집.제작툴이 이상함 [2] 2013.06.30 by 로스트(ROST)
CMD Xzet 1.4.5.20 (XE 1.4.x 보안 패치) - 2013/03/10 [19] 2013.06.30 by xe매니아
짤막한글 해외 캐시 서버 구축...  
우진홈 IPGUARD 모듈 베타 - 도움이 필요합니다...^^ [9] file 2013.06.29 by 우진홈
skullacy 음... 이상하네요.. 익스에서 가상도메인이 안돼..  
Lansi XE는 돌릴만한 서버 사양이 어느 정도인가요 [5] 2013.06.28 by Lansi
쿡래빗 배너 슬라이드 직접 개발하나요? [2] 2013.06.28 by 쿡래빗