사이트 내 전체검색
php.ini 보안설정
로빈아빠
https://cmd.kr/server/657 URL이 복사되었습니다.

본문

■ php.ini 보안설정

1. safe_mode On 일 경우 파일을 이 디렉토리 및 그 하위로부터 include 하는 경우는 UID/GID 의 체크가 스킵된다.
이러한 디렉토리는 include_path 에 포함되도록 하거나 또는 include 시에 절대 경로를 사용해야 한다.

exec관련의 함수를 통해 실행할 수 있는 권한을 safe_mode_include_dir에 있는 실행파일만으로 설정한다.

safe_mode = Off ==> safe_mode = On


2. Error Page 또는 Warning Page 노출을 피하기 위한 것이다. 공격자들은 일부러 에러를 발생하여 서버에 대한 정보를 확인한다.
이를 막기 위해 아래와 같이 수정한다.
On 으로 했을시 웹사이트의 파일 정보나 데이타베이스 스키마등의 시큐리티 정보를 접속 사용자에게 표출 될 수도 있기 때문이다.

display_errors = On ==> display_errors = Off 


3. 혹시라도 낮은 버전을 사용하는 경우는 이 부분이 디폴트로 On 되어있는데, 특별한 이유가 없다면 Off 로 설정하는 것이 좋다.

register_globals = On ==> register_globals = Off


4. Sql Injection 과 같은 공격을 막는데 도움이 된다. GET/POST/Cookie 의 입력 데이터에 관해서 특수 문자를 이스케이프 Get 방식으로 입력되는 ".." 는 일반적으로 필터링 하도록 설계되고 있다. 쉘에는 ".\./"는 ".."과 동일하게 간주된다.
특수문자에 대한 전체적인 제한이 필요하다.

magic_quotes_gpc = Off ==> magic_quotes_gpc = On


5. URL(http:// 나 ftp:// )을 파일로서 취급할지를 결정한다.
많이 발생하고 있는 대규모 홈페이지 변조는 php의 외부사이트 소스 실행기능을 이용하여 악의적인 프로그램을 실행시킴으로써 발생시킴. 

allow_url_fopen = On ==> allow_url_fopen = Off

필요시 특정 홈페이지만 외부 사이트의 소스 실행 허용

    ServerAdmin webmaster@xxx.xxx.xxx.
    DocumentRoot /home/xxxxx/public_html
    ServerName xxxxx.xxxxxxx
    php_admin_flag allow_url_fopen On               <---------- 라인 추가
    ErrorLog logs/xxxx.xxxx-error_log
    CustomLog logs/xxxx.xxxx-access_log common


6. 에러처리

만일 php나 연결된 데이터베이스, 외부 프로그램등의 에머레시지가 임의의 사용자가 볼수 있도록 화면이 나타난다면, 시스템의 정보를 노출하기 때문에 공격의 수단이 될수 있다.
에러메세지를 보여주기 보다는 서버의 에러로그로 남기도록 서정을 바꿔준다,
기본으로 Off 로 되어있는데 혹시 모르니 아래와 같이 확인하도록 한다.

mysql.trace_mode = Off 


7. 로그 파일에 에러로그를 기록한다. 실제 운영환경에서는 에러 표시 기능 대신에 에러로그 기능을 사용하는 것을 추천한다.

log_errors = Off  ==> log_errors = On


8. 안전한 세션관리

session.save_path = /tmp
 
 
 

설정인자

권장값

요약설명

register_globals

Off

이 값을 On으로 설정하면 PHP가 입력으로 받아들이는 값(환경변수, GET, POST, 쿠키, Server 변수)을 무조건 Global변수로 다루게 된다전역변수는 프로그램의 동작 중 어디서나 변수값이 변경될 수 있기 때문에웹 프로그램의 파라미터 변조오동작으로 인한 보안문제가 발생할 수 있다. PHP 4.2.0이루호는 보안상의 문제를 고려해 디폴트로 Off로 설정되어 나오지만프로그램이 On상태에서만 동작하도록 했을 때는 반드시 수정하여야 한다.

safe_mode

On

이 값을 On으로 설정하면 시스템 중요파일(/etc/passwd)접근을 제한할 수 있으나이 때문에 웹 프로그램이 정상 작동하지 않을 수 있다.

safe_mode_gid

Off

위 설정관 관련되어 시스템 중요파일(/etc/passwd)접근을 제한 할 수 있으나이루 인해 웹 프로그램이 정상 작동하지 않을 수 있다.

expose_php

Off

웹 브라우저의 요청에 대해 PHP정보 노출을 방지한다.

file_uploads

Off

해당사이트의 PHP프로그램의 파일업로드를 사용하지 않는 경우 해당 값을 Off로 설정하여파일 업로드 공격을 차단할 수 있다.

allow_url_fopen

Off

해당 옵션을 On으로 설정하면 파일 액세스 시 외부 사이트의 파일을 호출할 수 있다특히 include(), require()계열의 함수 사용 시 심각한 보안상의 문제를 유발하게 되므로 반드시 Off로 사용한다. include _GET[$url]이런식으로 되어있을 때xxx.php?url=http://악성코드  요런식으로 될수도있다.

magic_quotes_gpc

On

해당옵션을 On으로 설정하면 PHP가 입력으로 받아들이는 값(환경변수, GET, POST, 쿠키, server변수)에 단일 인용부호(‘), 이중인용부호(&quot;), 백슬러시(\), 널문자가 포함된경우 자동으로 해당문자앞에 백슬래시를 추가하여 특수문자를 처리한다이것으로 웹 프로그램의 인자를 변경하는 SQL 구문삽입등을 차단할 수 있다.

magic_quotes_sysbase

Off

sysbase사용자의 정상적인 DB접속을 위해 만들어진 기능이며해당기능은 magic_quotes_gpc설정을 무의미하게 만들수 있으므로 sysbase사용자가 아니라면 off로 설정한다.

open_basedir

Directory

해당옵션에 특정디렉토리를 설정하면지정된 디렉토리내에서만 파일에 접근할 수 있다.

safe_mode_exec_dir

Directory

해당옵션을 사용하면 system(), exec(), passthru()등 외부 명령어 실행시 지정된 디렉토리에 존재하지 않는 프로그램은 실행할 수 없게 된다.임의로 업로드한 공격도구나 wget, xterm등 공격에 사용될 수 있는 명령어를 제한할 수 있다.

display_errors

Off

PHP실행 중 에러정보 노출을 방지하는 역할을 제공하므로 필수적이므로 Off설정하도록 한다.

log_errors

On

해당옵션을 On으로 설정하는 경우 PHP실행 중 발생하는 경고나 에러정보를 error_log에서 지정한 파일에 기록하게 되므로 의도적인 에러(SQL Injection)발생시도를 확인해 볼 수 있다.

error_log

파일명

PHP실행중 발생하는 경고나 에러정보를 작성할 파일을 지정하는 옵션이다.

[출처] php.ini보안설정|작성자 uddum0425

댓글목록

등록된 댓글이 없습니다.

1,139 (4/23P)

Search

Copyright © Cmd 명령어 18.226.17.210