웨디

무료 웹방화벽 Modsecurity..!

 
몇일전 운영하는 사이트가 웹해킹을 당해서 사이트가 안뜨는 사태가 발생하였다.
cafe24.com의 한 호스트에서 클라이언트로 파일을 밀어서 까는 방식의 트로이형태의 코드가 사이트 어딘가에
삽입된듯하다.. DB와 각 파일들을 뒤져보았으나 찾지못하였다. 장기적으로 찾아보려고 하고는 있다.
지속적인 모니터링으로 범인을 잡고자 하였으나 해당툴을 깔고서 같은 상황연출이 안되어 신고를 못했다.
서버에대한 보안은 철통같이 한듯하지만.. 웹에서 뚤리는건 생각을 안하고 있던것이 실수였다.
이번사태로 웹방화벽을 설치해보자는 생각에 무료 웹서버보안툴인 ModSecurity를 설치해보았다.

Modsecurity는 http://www.modsecurity.org에서 무료로 다운로드 할수 있다.
modsecurity-apache_2.1.1.tar.gz 파일을 다운로드하여 /usr/local/src/내에서 풀었다.
참고로 현 사용중인 OS는 centos4.4이다..!

# tar -zxvf modsecurity-apache_2.1.1.tar.gz
# cd modsecurity-apache_2.1.1

기존의 관련문서를보니 DSO설치와 소스컴파일 설치 두가지가 있다..
네이버 정보보안카페의 홍석범|오늘과내일차장 님이 쓰신글이 있는데 그 글을 보니
1.x버전은 2가지 방식을 지원하고 2.x부터는 DSO방식만 지원한단다..
apache1.x/apache2.x 모두 지원하는 1.x와
apache2.x만 지원하는 2.x 를 두고 고민했는데.. 머 새버전이니 좋은게 있겠지 하고 2.x를 깔았다.
doc폴더의 index.html파일을 웹으로 열어보면 인스톨방법이 나와있다.

아래는 installation 내용이다.
ModSecurity 2.x works with Apache 2.0.x or better.
  • Make sure you have mod_unique_id installed.
  • (Optional) Install the latest version of libxml2, if it isn't already installed on the server.
  • Unpack the ModSecurity archive
  • Edit Makefile to configure the path to the Apache ServerRoot directory. You can check this by identifying the ServerRoot directive setting in your httpd.conf file. This is the path that was specified with the "--install-path=" configuration flag during compilation (for example, in Fedora Core4: top_dir = /etc/httpd).
  • (Optional) Edit Makefile to enable ModSecurity to use libxml2 (uncomment line DEFS = -DWITH_LIBXML2) and configure the include path (for example: INCLUDES=-I/usr/include/libxml2)
  • Compile with make
  • Stop Apache
  • Install with make install
  • (Optional) Add one line to your configuration to load libxml2: LoadFile /usr/lib/libxml2.so
  • Add one line to your configuration to load ModSecurity: LoadModule security2_module modules/mod_security2.so
  • Configure ModSecurity
  • Start Apache
  • You now have ModSecurity 2.x up and running

# vi Makefile

top_dir      = /etc/httpd
rpm으로 깔았으니 아파치의 루트는 저렇게 된다.

#DEFS = -DWITH_LIBXML2 #
위에 부분을 주석처리 하였다.. 그냥 설치했더니 먼기 오류가 나서 아파치 실행이 안된다.
그냥 설치해도 된다면 그냥설치해보고 안된다면 주석처리해보라

# make
make가 안되고 /usr/lib/build/special.mk를 못찾는다고나온다면..
yum --enablerepo=centosplus install httpd-devel.i386
httpd-devel 깔아줘라.. 깔아주는김에 php도 있는지 확인해보고 없으면 깔아 준다.

# make install
make[1]: Entering directory '/usr/local/src/modsecurity-apache_2.1.1/apache2'
/bin/sh /usr/lib/apr/build/libtool --silent --mode=install cp mod_security2.la /usr/lib/httpd/modules
make[1]: Leaving directory '/usr/local/src/modsecurity-apache_2.1.1/apache2'
위처럼 나온다.

정상설치되면 /usr/lib/httpd/modules/mod_security2.so 파일이 생성된다.
다음 httpd.conf 파일에서 해당 파일을 로드모듈해줘야 한다.

#vi /etc/httpd/conf/httpd.conf
LoadFile /usr/lib/libxml2.so   #xml을 사용하나보다 libxml2가 깔려있는지 검사부터 하고 깔아야 한다.
LoadModule security2_module modules/mod_security2.so

# service httpd restart
Stopping httpd :              [OK]
Starting httpd :             [OK]
정상적으로 깔린거다..

기존버전 1.x는 httpd.conf 내에
<IfModule mod_security.c>
</IfModule>
의 중간에 옵션을 적어넣는게 기본으로 되어있지만 2.x부터는 rules의 폴더안에 기본적인 룰을 제공한다.

# mv /usr/local/src/modsecurity-apache_2.1.1/rules/ /etc/httpd/conf/
셋업폴더의 rules폴더를 아파치 conf폴더에 넣는다

# vi /etc/httpd/conf/httpd.conf
Include conf/rules/*.conf

# service httpd restart
정상적으로 된다면 다 깔린거다..

제대로 깔린것인지 확인하는 방법은
# vi modsecurity_crs_10_config.conf
적용된룰들중 10번 config파일을 열어서
#SecServerSignature "Apache/2.2.0 (Fedora)"
SecServerSignature "Microsoft-IIS/5.0"

위에부분을 Microsoft-IIS/5.0으로 바꾼후 아파치 제시작하고난후

 # curl --head http://127.0.0.1
HTTP/1.1 403 Forbidden
Date: Wed, 20 Jun 2007 08:00:40 GMT
Server: Microsoft-IIS/5.0
Accept-Ranges: bytes
Content-Length: 5044
Content-Type: text/html; charset=UTF-8

위와 같이 나온다면 잘 적용된거다..
위가 아니라 Server: Apache/2.2.4(Unix) 라고 나온다면 적용이 안된거다.

룰부분에 대해서는 관련문서를 참고하여 수정하면 되겠다.

또하나 modsecurity 와 관련하여 https://bns.breach.com에서 modsecurity 로그관리툴이 있다.
우선적으로 JDK를 설치해줘야 한다 1.5이상 설치하란다.
JDK를 까는 방법은 네이버에서 검색해보면 무지 많이 나온다.
 
해당 사이트에서 modsecurity-console_1_0_2_linux.rpm을 다운로드한후..
# rpm -Uvh modsecurity-console_1_0_2_linux.rpm  깔게되면
# find / -name 'modsecurity-console'
/usr/local/bin/modsecurity-console
/opt/modsecurity-console
/opt/modsecurity-console/modsecurity-console
에 깔리게 되고..
# ./modsecurity-console 실행하게 되면 동작한다..
8886포트로 동작하기 때문에 방화벽에서 8886포트를 열어줘야 한다.

# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8886 -j ACCEPT
전체포르를 닫아버리는 부분 이전에 위라인을 추가해준다.
# /etc/rc.d/init.d/iptalbes restart
방화벽을 다시 시작한다.

그다음 브라우저에서 http://서버도메인:8886 에 접속할수 있다.
초기 관리자 비번은 admin/admin 이다

접속해본 결과
사용자 삽입 이미지
 
아직은 어떻게 써먹는지는 모르겠으나.. 인젝션버그등 잡다한거는 죄다 막아 준다고 했다.
로그파일을 뒤지는것보다 저게 편하기는 하겠는데 어떻게 보는줄 모르니.. 좀더 연구해봐야..
참고로 breach.com 에서 modsecurity를 인수했다고 한다. 기존의 것은 오픈소스로 제공하고
새로나오는것들은 팔아먹을 모양이다. 머 지금까지 다들 잘써왔다고 하니 계속 쓰면 될듯하다.

또하나 홍석범님의 글을 보니
- REMO : http://remo.netnea.com/
modsecurity 에 대한 규칙설정을 웹 기반으로 편집할수 있는 프로그램이다.
-WeBekci : http://www.owasp.org/index.php/Category:OWASP_WeBekci_Project
modsecurity에 대한 규칙설정 등의 관리를 웹기반으로 수행할수 있는 프로그램으로, php+mysql의 기반 프로그램이다 또한 유료기술지원으로 modsecurity를 인수한 www.breach.com에서 리눅스 기반의
ModSecurity Pro와 WebDefend라는 웹 파이어월 어플라이언트 제품도 판매한단다.
 
--------------------------------여기까지 제 블로그의 글이이랍니다.-------------------------------------
위 내용은 네이버의 정보보안관련 카페의 홍석범님의 글을 토대로 제가 운영중인 서버에 Modsecurity설치를 했던
내용 입니다. 홍석범님이 워낙 설명을 잘해주셔서 거의 원문과 같습니다.
 
설치하여 잘 사용하고는 있지만 해당툴의 옵션을 디폴트로 설정하였음에도 몇몇 페이지 및
간혹 에러나는 페이지가 발생하였답니다. 이는 자신의 사이트에 맞는 옵션설정이 안되어 그런듯합니다.
저희 사이트 같은경우 쪽지에 파일을 넣어서 보낼때와 트랙백 사용시에 잘될때가 있는가하면 크로스어택 머시기가
나오면서 안될때도 있더군요. 옵션관련 내용들이 영문이라 하나씩 살펴보고있지만 어려워서..ㅋㅋ
웹해킹 한번 당하고보니 심히 문제가 심각하더군요. 직접 서버를 운영하시는분들은 웹방화벽을 설치해보는것도 좋을것 같습니다.
 
카테고리가 여기가 맞는듯하여 팁란에서 옮겨왔습니다.
[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
|

댓글 3개

좋은 정보 감사합니다..
http://www.krcert.or.kr/firewall2/index4.jsp
참조자료 붙입니다. 담에 적용해봐야 겠네요
modsecurity 의경우 세팅이 잘못될 경우 사이트 자체가 동작을 안할 수 있습니다.
사이트에 맞는 적절한 옵션값을 찾아내는것도 중요합니다.

아니면 IPS 방식외에 IDS 방식을 운영하는것도 좋은 방법입니다.
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
18년 전 조회 1,519
18년 전 조회 1,752
18년 전 조회 4,334
18년 전 조회 3,728
18년 전 조회 3,287
18년 전 조회 3,389
18년 전 조회 3,883
18년 전 조회 4,351
18년 전 조회 4,272
18년 전 조회 2,720
18년 전 조회 2,339
18년 전 조회 3,272
18년 전 조회 3,183
18년 전 조회 3,341
18년 전 조회 3,274
18년 전 조회 4,935
18년 전 조회 5,224
18년 전 조회 3,427
18년 전 조회 2,728
18년 전 조회 2,965
18년 전 조회 2,292
18년 전 조회 2,105
18년 전 조회 2,054
18년 전 조회 3,084
18년 전 조회 2,373
18년 전 조회 2,392
18년 전 조회 2,068
18년 전 조회 2,442
18년 전 조회 3,179
18년 전 조회 4,109
18년 전 조회 3,388
18년 전 조회 2,026
18년 전 조회 1,966
18년 전 조회 2,880
18년 전 조회 1,674
18년 전 조회 2,031
18년 전 조회 2,320
18년 전 조회 2,187
18년 전 조회 2,280
18년 전 조회 4,049
18년 전 조회 1,803
18년 전 조회 4,402
18년 전 조회 2,939
18년 전 조회 2,246
18년 전 조회 3,291
18년 전 조회 2,913
18년 전 조회 2,847
18년 전 조회 5,646
18년 전 조회 2,314
18년 전 조회 3,436
18년 전 조회 3,344
18년 전 조회 3,725
18년 전 조회 3,283
18년 전 조회 2,459
18년 전 조회 2,107
18년 전 조회 2,563
18년 전 조회 6,129
18년 전 조회 2,755
18년 전 조회 4,556
18년 전 조회 2,048
18년 전 조회 1만
18년 전 조회 2,501
18년 전 조회 1,564
18년 전 조회 3,002
18년 전 조회 2,943
18년 전 조회 2,840
18년 전 조회 2,151
18년 전 조회 2,333
18년 전 조회 2,883
18년 전 조회 2,979
18년 전 조회 4,140
18년 전 조회 6,126
18년 전 조회 2,070
18년 전 조회 2,204
18년 전 조회 1,911
18년 전 조회 1,670
18년 전 조회 2,647
18년 전 조회 1,698
18년 전 조회 1,569
18년 전 조회 4,749
18년 전 조회 1,803
18년 전 조회 1,857
18년 전 조회 1,865
18년 전 조회 1,984
18년 전 조회 3,640
18년 전 조회 1,665
18년 전 조회 1,540
18년 전 조회 1,371
18년 전 조회 1,875
18년 전 조회 1,920
18년 전 조회 3,662
18년 전 조회 1,992
18년 전 조회 3,136
18년 전 조회 4,753
18년 전 조회 2,885
18년 전 조회 8,062
18년 전 조회 4,070
18년 전 조회 2,760
18년 전 조회 1,535
18년 전 조회 2,638