아키텍트2009.06.16 10:28

지금까지 글을 통해 클라우드 컴퓨팅에 대해서는 많이 정보를 전달한 것 같아요. 하지만, 클라우드 컴퓨팅이 가지고 있는 이슈, 그 중에서도 가장 큰 보안에 대해서는 이야기 하지 않았던 것 같습니다.

오늘은 그 부분을 좀 다뤄 볼까요?

보안
1. Logging(로깅) / Auditing(감사)
    - 로깅은 누가, 언제, 어떤 작업을 했는지에 대한 작업 이력을 남기는 것을 의미하죠
    - 감사는 그 남겨진 이력을 가지고, 이상한 짓을 했나 안했나를 추적하는, 감사팀의 역할을 의미합니다.
    * 바로 로깅, 감사가 제대로 이루어지지 않는다면, 해당 시스템은 큰 취약점을 갖게 되죠. 부정한 행위에 대해 증거가 없고
       처벌하지 못한다면, 많은 불법행위가 이루어져 정의사회 구현이 안되는 것과 같은 의미 입니다.

* 제가 말하고자 하는 바는, 클라우드 컴퓨팅 환경에서 각 사용자의 행위에 대해 로깅, 감사가 체계적으로 진행되어야 한다는 
   것입니다. 클라우드 컴퓨팅에서 꼭 챙겨봐야 하는 점이죠.

2. Computer Forensics (감식)
    - 감식, CSI 수사대 등이 혈흔 분석을 하는 등의 과학적 조사 방법을 적용하잖아요.
       파일이 삭제되었거나, 변경되었을 때 여러 고객이 시스템을 공유하고 있기 때문에 누가 접근해서 작업을 했는지 등에
       대해 감식할 수 있는 수단이 있어야 합니다. 실제 어떤 작업이 컴퓨터 메모리상에 남아 있다가, 사라져서 향후에 사후
       분석 때 원인을 찾아내지 못하는 등의 일들이 벌어지곤 하죠. 클라우드 환경에서 Forensic이 얼마나 효과적으로 진행
       될 수 있을 지 분명히 챙겨봐야 하는 점이라고 생각합니다.

이후에도 조금씩 더 다뤄보도록 하겠습니다.
신고
Posted by 나이스가이
마케팅2008.07.27 16:57
몇 가지 고려사항이 있습니다.

첫째, PHP 웹사이트의 보안을 위해 다른 사이트와 격리 시켜야 합니다.
 . 웹사이트 마다 어플리케이션 풀을 각자 할당
 . 어플리케이션 풀 아이덴티티에 사용자 계정 사용
 . 어플리케이션 풀 아이덴티티를 사용하기 위해 Anonymous 사용자 설정
 . FastCGI의 impersonation 설정 확인 (fastcgi.impersonate = 1)

둘째, PHP 프로세스를 재활용 하세요
 . 네이티브 PHP 리사이클링이 시작되기 전에, php-cgi.exe가 항상 리사이클 되도록 하는 것이 좋습니다.
   FastCGI의 프로세스 리사이클링은 instanceMaxRequests라는 파라미터에 의해 결정됩니다.
   리사이클 되기 전에 몇개의 FastCGI 프로세스를 처리할 것인지를 설정하는 역할을 하죠. 이 파라미터 이외에도
   PHP 자체적으로 프로세스 리사이클링을 담당하는 파라미터가 있는데, PHP_FCGI_MAX_REQUESTS가 바로
   그거죠. instanceMaxRequest 값을 PHP_FCGI_MAX_REQUESTS 값보다 작거나 같게 하면 PHP의 네이티브
   리사이클링은 절대 발생하지 않겠죠? 아래와 같이 설정하면 됩니다.

C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='c:\{php_folder}\php-cgi.exe'].instanceMaxRequests:10000

C:\>%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /+[fullPath='c:\{php_folder}\php-cgi.exe'].environmentVariables.[name=’PHP_FCGI_MAX_REQUESTS’, value='10000']

※ 미리 값을 설정하지 않으면 기본 설정값은 instanceMaxRequest=200, PHP_FCGI_MAX_REQUESTS=500 으로 할당됩니다.

셋째, PHP의 버전
 . PHP 어플리케이션은 주로 특정 버전의 PHP의 기능 및 특징을 이용하여 개발되죠. 웹호스팅 환경에서, 또는 기업에서 사용하는 PHP 어플리케이션이 다양한 버전의 PHP를 사용한다면, 한대의 서버에서 여러개의 PHP를 지원하는 것은 필수겠지요. IIS7의 FastCGI 핸들러는 여러 버전의 PHP를 지원합니다. PHP4.4.8, PHP5.2.1, PHP5.2.5 non thread-safe 버전이 모두 필요하다면 PHP컴파일러를 파일 시스템에 각각 다운 받아야 합니다. (c:\php4.4.8, c:\php5.2.1, c:\php525nts)를 설치한 후 각 버전의 어플리케이션 풀을 생성합니다.

C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php448\php.exe']

C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php521\php-cgi.exe']

C:\>%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='c:\php525nts\php-cgi.exe']

site1, site2, site3의 3개의 웹사이트가 있고 각 사이트가 별도의 버전 PHP를 사용한다면 아래와 같이 설정할 수 있을 겁니다.

C:\>%windir%\system32\inetsrv\appcmd set config site1 –section:system.webServer/handlers /+”..[name=’PHP448_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php448\php.exe’,resourceType=’Either’]

C:\>%windir%\system32\inetsrv\appcmd set config site2 –section:system.webServer/handlers /+”..[name=’PHP521_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php521\php-cgi.exe’,resourceType=’Either’]

C:\>%windir%\system32\inetsrv\appcmd set config site3 –section:system.webServer/handlers /+”..[name=’PHP525nts_via_FastCGI’,path=’*.php’,verb=’*’,modules=’FastCgiModule’,scriptProcessor=’c:\php525nts\php-cgi.exe’,resourceType=’Either’]

넷째, PHP 보안강화를 위한 추천 항목
  1. Disable remote URL's for file handling functions:
    • Set allow_url_fopen=Off
    • Set allow_url_include=Off
  2. Disable register_globals:
    • register_globals=Off
  3. Restrict where PHP can read and write on a file system, e.g.:
    • open_basedir="c:\inetpub\"
  4. Disable safe mode:
    • safe_mode=Off
    • safe_mode_gid=Off
  5. Limit script execution time:
    • max_execution_time=30
    • max_input_time=60
  6. Limit memory usage and file sizes:
    • memory_limit=16M
    • upload_max_filesize=2M
    • post_max_size=8M
    • max_input_nesting_levels=64
  7. Configure error messages and logging:
    • display_errors=Off
    • log_errors=On
    • error_log="C:\path\of\your\choice"
  8. Hide presence of PHP:
    • expose_php=Off

감사합니다.



신고
Posted by 나이스가이