본문
■ 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
|
관련링크
댓글목록
등록된 댓글이 없습니다.