강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

apache 웹서버 jail project

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

웹서버 jail project 


0.개요 

  jail project 란  말그대로 감옥을 만드는 것을 의미하며 

  웹서비스에 대해서 시스템에 대한 접근을 힘들게 만듬으로 해서 

  보다 안전한 웹서비스를 가능하도록 하는 것이다 

  여기서 가장 필요한 부분은 chroot 로 최상의 /의 위치를 변경하여 

  가상의 공간에서 웹서비스르 운영함으로 

  웹으로 침투하는 해킹에 대해 제한을 가함으로 웹해킹의 피해를 

  최소화하는데 그 목적이 있다 


1. chroot란 

  실행 명령어나 사용되는 쉘에 대해 실제 / 디렉토리가 아닌  특정위치를 /로 

  지정하여 실행되도록 하는 것이다 

  예를 들어 bind의 경우 chroot 를 적용하는 패키지를 설치하게되면 

  named 가 실행시 /var/named/chroot 가 named에서는 / 로 인식하게 된다 

  위와 같이  / 의 위치를 변경하여 시스템 접근에 데한을 두는 것이다. 


2. 적용시 고려 사항 

  먼저 몇가지 가정을 두자 

  1) /home 디렉토리에 사용자 웹프로그램소스가 저장된다 

  2) apache의 경우 컴파일한것이며  /usr/local/apache 에 설치되어있다 

  3) 관련 라이브러리는 rpm 으로 설치되어 있다 
  
  4) 웹소스에서 특별한 외부 명령어를 호출하지 않는다 


  적용시 고려사항 

  /를  웹서버에서는 /chroot_web/ 으로 인식되도록 한다 


3. 적용 방법 

  생성되는 디렉토리처럼 기본적으로 사용할 디렉토리를 생성한다 
  # mkdir /chroot_web/ 
  # mkdir /chroot_web/etc/ 
  # mkdir /chroot_web/dev/ 
  # mkdir /chroot_web/home/ 
  # mkdir /chroot_web/tmp/ && chmod 1777 /chroot_web/tmp/ 
  # mkdir /chroot_web/usr/ 
  # mkdir /chroot_web/usr/lib/ 
  # mkdir /chroot_web/usr/bin/ 
  # mkdir /chroot_web/usr/sbin/ 
  # mkdir /chroot_web/var/ 
  # mkdir /chroot_web/var/spool/ 
  # mkdir /chroot_web/var/spool/mqueue/ 
  # mkdir /chroot_web/var/spool/clientmqueue/ 

  실재 시스템과 공유 되어야 디렉토리를 바인딩 한다 
  # mount --bind /home/ /chroot_web/home/ 
  # mount --bind /var/spool/mqueue/ /chroot_web/var/spool/mqueue/ 
  # mount --bind /var/spool/clientmqueue/ /chroot_web/var/spool/clientmqueue/ 

  서비스시 필요한 라이브러리를 복사한다 
  # rsync -av /lib/ /chroot_web/lib/ 
  # rsync -av /usr/lib/ /chroot_web/usr/lib/ 

  구동될 웹서버를 카피한다 
  # rsync -av /usr/local/ /chroot_web/usr/local/ 

  기본적인 쉘을 복사한다 
  # cp -Rp /bin/sh /chroot_web/bin/sh 
  # cp -Rp /bin/bash /chroot_web/bin/bash 

  시스템의 가장 기본적인 설정파일 복사 
  # cp -Rp /etc/passwd /chroot_web/etc/ 
  # cp -Rp /etc/shadow /chroot_web/etc/ 
  # cp -Rp /etc/group /chroot_web/etc/ 
  # cp -Rp /etc/hosts /chroot_web/etc/ 
  # cp -Rp /etc/ld.so.conf /chroot_web/etc/ 
  # cp -Rp /etc/ld.so.conf.d /chroot_web/etc/ 
  # cp -Rp /etc/mail /chroot_web/etc/ 
  # cp -Rp /etc/nsswitch.conf /chroot_web/etc/ 
  # cp -Rp /etc/resolv.conf /chroot_web/etc/ 
  # cp -Rp /etc/aliases /chroot_web/etc/ 
  # cp -Rp /etc/localtime /chroot_web/etc/ 
  # cp -Rp /etc/aliases.db /chroot_web/etc/ 

  기본적인 디비이스 생성 
  # mknod /chroot_web/dev/zero c 1 3 
  # mknod /chroot_web/dev/null c 1 3 
  # mknod /chroot_web/dev/random c 1 3 

  웹에서 메일 발송이 필요하다면 sendmail을 카피한다 
  # cp -Rp /usr/sbn/sendmail.sendmail /chroot_web/usr/sbin/sendmail 

4. 웹서비스 구동 방법 

  apache 데몬을 구동하기 
  # chroot /chroot_web /usr/local/apache/bin/apachectl start 

  apache 데몬을 중단하기 
  # chroot /chroot_web /usr/local/apache/bin/apachectl stop 

5. 마무리 
  위와 같이 웹서비스에 대해 chroot를 적용하게되면 

  웹서비스상에서 사용할 수 있는 시스템명령어는 bash 외에는 없다 

  이렇경우 웹쉘이나 명령어로는 외부에서 파일을가져온다는등의 부분의 

  많이 힘들어지며 침투를 하기위해서는 일차적으로 

  가용한 명열어가없으며  이차적으로 감옥에 있는것처럼 제한된 공간만이 열려 있는 상태이다 

  물롱 100% 안전한것은 아니지만 침투및 변조가 발생하더라도 제한된 공안이 오염되기에 복원이 용의하며 

  보다 안전한 상태에서 운영이 가능하다

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,159 명
  • 현재 강좌수 :  36,519 개
  • 현재 접속자 :  325 명