php의 구멍난 보안부분을 패치햐여 주는 익스텐션.
<?eval($_GET[ok])?>
test.php 라는 웹페이지를 만들어서 거기에 위의 구문을 넣은 다음, 브라우저 주소창에서
http://도메인명/test.php?ok=phpinfo();
라고 치면 phpinfo 정보들이 좌르륵... modsecurity, castle 등 여러가지 보안관련되서 설치했다고 생각했는데. 쩝~
이렇게 나와버리니 겁난다.
그래서 찾아본게 "수호신"이라는 것.
php의 보안 문제점을 지적하고 보안패치를 한다는 이유로 php 그룹과 별로 사이가 안좋단다.
자세한 내막은 여기에서 (http://kldp.org/node/76184)
설치는 컴파일 전의 php 소스를 패치하는 방법과 익스텐션으로 설치하는 방법인데 2가지 중에
이미 php가 설치되어 있다면 익스텐션으로 등록하는 방법이 좋겠다.
php 설치 전에 수호신 패치하기
수호신 다운로드 사이트(http://www.hardened-php.net/suhosin/download.html)에서 설치하려는 php 버전과 같은
패치파일을 다운받는다.
# tar xvzf php-5.2.9.tar.gz # wget http://download.suhosin.org/suhosin-patch-5.2.9-0.9.7.patch.gz
# gzip suhosin-patch-5.2.9-0.9.7.patch.gz
# cd php-5.2.9# patch -p1 -i ../suhosin-patch-5.2.9-0.9.7.patch
이후 php 컴파일 할 때 configure에서 --enable-suhosin 해주면 된다.
익스텐션 설치하기
# wget http://download.suhosin.org/suhosin-0.9.29.tgz
# tar xvzf suhosin-0.9.29.tgz
# cd suhosin-0.9.29
# /usr/local/php/bin/phpize
# ./configure --prefix=/usr/local/suhosin --with-php-config=/usr/local/php/bin/php-config
# make
# make install
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613 디렉토리에 suhosin.so 파일이 생성.
php modules 디렉토리로 이동시키거나, suhosin 익스텐션 디렉토리를 지정해주거나 해서 php.ini에 등록.
php.ini
# mv /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/suhosin.so /usr/local/php/modules/ # vi /usr/local/php/lib/php.ini
extension=suhosin.so
또는
[Suhosin]
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
extension=suhosin.so
phpinfo()로 설치가 정상적으로 되었는지 확인.
"This server is protected with the Suhosin Extension 0.9.29"" 문구와 함께 한글로 된 수호신 로고가 보인다면 성공.