1. 개요

CGI와 SSI 프로그램을 지정한 사용자로 실행하도록 합니다.

잘 사용하면 보안상 좋지만, setuid 와 setgid 개념에 생소하다면 사용하지 마시길 권장하고 있습니다.

아파치는 아래 부분을 체크하여 성공, 실패를 결정합니다.

- wrapper를 실행하는 사용자가 시스템의 정상적인 사용자인가?

- 적절한 수의 아규먼트로 wrapper를 실행하는가?

- 이 사용자가 wrapper를 실행하도록 허용되었나?

- 지정한 CGI나 SSI 프로그램이 안전하지않은 계층참조를 가지는가?

- 지정한 사용자명이 유효한가?

- 지정한 그룹명이 유효한가?

- 지정한 사용자가 superuser가 아닌가?

- 지정한 userid가 최소 ID 숫자보다 큰가? 

- 지정한 그룹이 superuser 그룹이 아닌가?

- 지정한 groupid가 최소 ID 숫자보다 큰가?

- wrapper가 성공적으로 지정한 사용자와 그룹이 될 수 있는가?

- CGI/SSI 프로그램이 있는 디렉토리로 디렉토리를 변경할 수 있는가?

- 디렉토리가 아파치 웹공간 안에 있는가?

- 다른 누구도 디렉토리에 쓰기권한이 없는가?

- 지정한 CGI/SSI 프로그램이 존재하는가?

- 다른 누구도 지정한 CGI/SSI 프로그램에 쓰기권한이 없는가?

- 지정한 CGI/SSI 프로그램이 setuid나 setgid가 아닌가?

- 지정한 사용자/그룹이 프로그램의 사용자/그룹과 같은가?

- 안전한 동작을 위해 프로세스의 환경변수를 청소할 수 있는가?

- 성공적으로 지정한 CGI/SSI 프로그램을 실행할 수 있는가?  

 

2. 사용법

 

1) 해당 모듈을 로드

LoadModule suexec_module modules/mod_suexec.so

혹은

아파치 설치시 suEXEC 구성 옵션을 명확하게 선정하여 아파치를 컴파일 하여야 합니다.

 

2) 관련지시어

CGI 프로그램 요청의 경우, SuexecUserGroup(2.*대) 지시어를 사용한 가상호스트에 요청하였거나,

mod userdir이 요청을 처리하는 경우에만 suEXEC wrapper를 호출합니다.

(이 경우 --with-suexec-userdir 설치옵션과 관련이 있습니다.)

- Apache 1.*

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot 디렉토리
    User 유저명
    Group 그룹명
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

- Apache 2.*

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot 디렉토리
    SuexecUserGroup 유저명 그룹명
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>