>> Delete Reply from No. 0 article
No. RE: [참고] 아파치 실행파일(httpd)에 대한 퍼미션

등록 2000-12-11 13:53:00     조회 4
이름 헐랭이    

		: <PRE>[참고] 아파치 실행파일(httpd)에 대한 퍼미션
:
: -작성자 : 산이 <san2 at linuxchannel.net>
: -대상자 : 아파치 서버 관리자
: -작성일 : 2000.12.10
:
: *주)
: 이 글은 아파치 서버 관리자를 대상으로, 아파치 실행 파일(이하 "httpd")의 보안(퍼미션?)
: 내용을 다루고 있습니다.
: 어쩌면 대수롭지 않은 문제일 수 도 있지만 왠지....
: 제가 아는 범위에서는 아래와 같은 내용에 대해서 언급한 글이 없어서 올려봅니다.
: 조언을 주실분은 언제든지 환영합니다.
:
: 내용상 간혹(?) 경어를 생략했습니다. 양해해 주시길 바랍니다.
:
:
: *요점 정리
: httpd는 일반적으로 퍼미션이 755이다. 즉 root가 아닌 다른 유저로도 어떤 조건에서는 얼마
: 든지 아파치를 실행 가능하다는 의미이다.
: 아파치 제공 문서(http://www.apache.org/docs/misc/security_tips.html)에서는 511로 설정하는
: 예가 있다. 그러나 제가(이하"필자")가 권장하는 퍼미션은 755도 511도 아닌 700이나 500이다.
: 즉 특별한 경우가 아닌 이상 다른 유저가 실행하지 못하도록 하는 것이 좋을 듯 싶다.
:
: *주의)
: 혹시나 해서 실제로 웹호스팅업체의 계정(쉘 권한)을 가지고 있는 분은 테스트하지 마시
: 길 바랍니다. 해당 웹호스팅 업체로부터 매우 혼날 듯.....................T.T
:
:
: 목차
: 1. 배경
: 2. 실전테스트
:   2-1. 전제 및 목표
:   2-2. 아파치 실행파일(httpd)과 설정파일(httpd.conf) 찾기
:   2-3. httpd.conf파일 복사 및 편집
:   2-4. 유저권한으로 아파치 실행 및 테스트
: 3. 퍼미션 조정 및 생각해볼 만한 것들
: 4. 기타
:
:
: 1. 배경
:
: 오래전에 아파치 서버를 두개 설치하여 테스트할 즈음에는 그냥 간과했던 문제인것 같습
: 니다. 얼마전(?) 필자가 운영하는 게시판에 "low numbered" 포트에 대한 설명을 하던 중 재테
: 스트해 본 결과를 이제서야 재인지하게 되었군요.
:
: 보안 및 퍼미션에 대해서 조금이라도 인지하고 있는 분이라면 httpd 퍼미션을 어떻게 설정
: 하고 운영하는지 자못 궁금합니다.(이미 알고 대체하고 있는 분도 분명 있으리라 믿습니
: 다.) 확인차, 실제로 어느 웹호스팅 업체에서는 퍼미션이 755이더군요.....T.T
:
: 주)"low numbered port"
: 맨 페이지에 의하면 1024보다 작은 포트를 의미한다. 이 포트는 오직 root 레벨에서 만 접근
: 가능 하다고 나와 있다. 포트번호 1024는 low numbered port가 아니므로 root가 아닌 다른 유저권
: 한으로 접근이 가능하다.
:
: 그럼 실제로 어떤 일이 벌어지는지 실전테스트 해보자.
: (특히 사용자 많은 시스템에서는 주의깊게)
:
: 2. 실전 테스트
:
: 2-1. 전제 및 목표
:
: 일반적으로 유닉스/리눅스는 많은 계정이 있기 때문에 대부분 쉘권한이 주어진 경우가 
: 많다. (쉘권한이 없는 유저도 있다.)
: 여기에서는 쉘권한을 가진 "san2"라는 유저가 root의 도움없이 1024 포트로 아파치를 실행하
: 여 자신의 홈페이지를 구축하고자 한다.
:
:   $ whoami
:   san2
:   $ pwd
:   /home/san2/temp
:   $
:
:
: 2-2. 아파치 실행파일(httpd)과 설정파일(httpd.conf) 찾기
:
: 일반적으로 아파치 httpd는
:
:   /usr/sbin/httpd
:   /usr/local/apache/bin/httpd
:   /usr/local/etc/httpd/bin/httpd
:   또는 서버관리자가 따로 설치한 위치
:
: 에 httpd가 존재한다.
: 우리는 웹서버 데몬이름을 httpd라고 많이 알고 있으나, 무조건 httpd라는 이름으로 웹서버
: 데몬이 존재하리라고 단정지을 수 없다. 왜냐하면 아파치 데몬 같은 경우에는 소스로 컴
: 파일 할때 얼마든지 이 데몬이름(--target=서비스이름)을 바꿀 수 있기 때문이다.
:
: 만약 위의 3곳에서 찾질 못한다면 find 명령으로 찾아볼 수 도 있고, /etc/services 파일을
: 열어보고 80포트에 어떤 서비스 이름이 있는지 확인한 후 찾아볼 수 도 있다.
: 또한
:
:   $ ps -ef | grep httpd
:
: (/bin/ps 파일에 퍼미션이 막혀있지 않다면) 명령으로 어느 위치에서 실행되고 있는지 확인
: 해 볼 수 있다.
:
: 마찬가지로 httpd.conf 파일도 쉽게 찾을 수 있을 것이다.
:
:
: 2-3. httpd.conf파일 복사 및 편집
:
: 설정파일을 손수 입력하여 작성할 수도 있지만 여간 복잡한 파일이 아닐 수 없다.
: 일단 위치를 알고 있는 설정파일을 자신의 홈디렉토리로 httpd-san2.conf 파일로 복사하자.
: (설정파일 이름을 서로 구별하기 위해서 "httpd-san2.conf"로 정했음)
:
:   $ pwd
:   /home/san2/temp
:   $ cp /usr/local/apache/conf/httpd.conf httpd-san2.conf
:   $
:
: 복사한 httpd-san2.conf 파일을 열어서 다음과 같이 몇군데 만 수정한다.
: (필요한 부분만 요약하면)
:
:   LockFile /home/san2/temp/httpd.lock
:   PidFile /home/san2/temp/httpd.pid
:   ScoreBoardFile /home/san2/temp/httpd.scoreboard
:   Port 1024 #<-- 1024또는 그 이상의 포트 번호로
:   User san2
:   Group nobody #<-- 경우에 따라서 설정
:   ErrorLog /home/san2/temp/error_log
:   CustomLog /home/san2/temp/access_log common
:   기타 DocumentRoot 또는 가상호스트 섹션 등등 수정이 필요한 곳
:
: 수정한 설정파일이 문법에 맞는지 확인해 봅니다.
:
:   $ /usr/local/apache/bin/httpd -t /home/san2/temp/httpd-san2.conf
:   Syntax OK
:   $
:
: 2-4. 유저권한으로 아파치 실행 및 테스트
:
: 그럼 한번 "san2"라는 유저가 위의 설정파일을 중심으로 1024 포트로 아파치 데몬을 실행해 
: 보자. httpd 실행 파일이 /usr/local/apache/bin/httpd에 있고, ServerRoot가 /usr/local/apache이라면,
:
:   $ /usr/local/apache/bin/httpd -f /home/san2/temp/httpd-san2.conf
:   $
:
: 와 같이 명령을 주면 아파치 데몬을 하나 더 띄울 수 있다.
: 아마 아무 에러가 없다면 데몬이 가동중 일겁니다.
: 만약 에러가 난다면 위에서 수정한 내용 중에서 san2 유저가 접근할 수 없는 위치에 각 파
: 일을 설정한 경우입니다.
:
: 참고로 "-f" 옵션은 설정파일의 위치를 지정한 옵션이며 시스템 절대경로나 ServerRoot를 기
: 준으로 상대경로로도 입력 가능합니다.
:
: 직접 한번
:
:   $ ps -ef | grep httpd
:   root     29626     1  0 Dec09 ?        00:00:02 /usr/local/apache/bin/httpd
:   nobody   31182 29626  0 12:16 ?        00:00:00 /usr/local/apache/bin/httpd
:   nobody   31183 29626  0 12:16 ?        00:00:00 /usr/local/apache/bin/httpd
:   nobody   31184 29626  0 12:16 ?        00:00:00 /usr/local/apache/bin/httpd
:   nobody   31185 29626  0 12:16 ?        00:00:00 /usr/local/apache/bin/httpd
:   nobody   31186 29626  0 12:16 ?        00:00:00 /usr/local/apache/bin/httpd
:   san2     31210     1  0 12:31 ?        00:00:00 /usr/local/apache/bin/httpd -f /
:   san2     31211 31210  0 12:31 ?        00:00:00 /usr/local/apache/bin/httpd -f /
:   san2     31212 31210  0 12:31 ?        00:00:00 /usr/local/apache/bin/httpd -f /
:   san2     31213 31210  0 12:31 ?        00:00:00 /usr/local/apache/bin/httpd -f /
:   san2     31214 31210  0 12:31 ?        00:00:00 /usr/local/apache/bin/httpd -f /
:   san2     31215 31210  0 12:31 ?        00:00:00 /usr/local/apache/bin/httpd -f /
:   $
:
: 로 확인해 보거나
:
:   http://HOSTNAME:1024/
:
: 로 접속해 보면 또다른 웹페이지가 보일 것입니다.
:
: 아주 간단하지요?
:
: 만약 위의 수정한 설정파일에서 포트번호를 1024보다 작은 포트를 선택하면, 예를 들어
:
:   Port 1000
:
: 으로 설정했다면, 에러로그 파일에 다음과 같은 내용을 볼 수 있을 것입니다.
:
:   [Sun Dec 10 12:22:00 2000] [crit] (13)허가 거부됨: make_sock: could not bind to port 1000
:
: 이는 1024보다 작은 포트는 오직 root만이 접근할 수 있다는 의미입니다.
: 그럼 1024 포트로 실행 중인 아파치를 Down 시켜 봅시다.
: 간단하지요 PID의 권한이 san2이므로 얼마든지 가능하지요.
:
:   $ ls -l httpd.pid
:   -rw-r--r--   1 san2     san2            6 Dec 10 12:31 httpd.pid
:   $
:   $ kill `cat httpd.pid`
:   $
:   $ ps -ef | egrep "san2(.+)httpd"
:   $
: 
: (/bin/kill 파일에 퍼미션이 막혀 있다면 Down시킬 수 없겠네요....T.T 다른 방법은?)
:
:
: 3. 퍼미션 조정 및 생각해볼 만한 것들
:
: 앞에서 테스트해 보았듯이 계정사용자에게 쉘권한이 있고, httpd의 위치를 알고 있고, 또
: 한 사용자에게 httpd 실행권한이 있다면 얼마든지 웹서버를 다른 포트로 실행할 수 있다는
:  것을 알 수 있었다.
:
: 좀 섬짓한(?) 일이군요.......T.T(왜 이제야 알게 되었는지.........)
:
: 따라서 필자가 권장하는 퍼미션은 root외 다른 유저가 실행할 수 없는 퍼미션으로 조정해 
: 주는 것이 후한(?)을 없애는 한가지 방법인 듯 하군요.
:
:   # chmod go-rwx httpd
:   또는
:   # chmod o-x httpd
:
: 어떤 후한(?)이 있을 까요?
: 극단적인 예이기는 하지만, StartServer수를 많이 설정해서 시스템 자원을 고갈시킬 수도 있
: 을 것이고, 쉘스크립트를 작성해서 아파치 서버가 다운될 때까지 계속 1000개 이상 띄울 
: 수도 있을 것이고......생각해 보면 더....
:
: 이렇게 배짱 두둑한(?) 유저가 있을까요?
: 있다면 서버관리자는 곤욕을 치러야하겠지요.
:
:
: 4. 기타
:
: 어떻게 생각해 보면 큰 문젯거리도 아닐 수도 있습니다.
: 그런데 왜 아파치 httpd 파일에 다른 유저가 실행할 수 있도록 기본(?) 설정되어 있는지
: 알 수가 없군요...
:
: 다른 이유가 있을까요?
: (서버관리자 측면에서는 불리한 경우라서....생각해 봅니다.)
:
: END--------------------------------------
: </PRE>
: --
: LinuxChannel.NET
 rpm 버전만 되는거 아님니까..컴팔한건 않되는데여.... 움~~~ 심볼릭링크로 해야하나.
잘 않되서여......--이 곳에 서명을 적어주십시오.
열심히...
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved