문제

보안/성능 관점에서 PHP로 공유 서버를 설정하는 데 무엇이 권장합니까?

  • Apache mod_php (PHP6에 없어서 Safe_Mode 이외의 방법을 어떻게 보호합니까?)
  • Apache CGI + Suexec
  • Lighttpd 및 사용자 당 FastCGI를 생성합니다

LE : 나는 내 자신을 쓰려고 할 때 이미 만든 제어판을 사용하는 데 관심이 없으므로 직접 설정하는 가장 좋은 방법을 알고 싶습니다. 나는 LightTPD를 사용하는 것을 생각하고 모든 호스팅 된 사용자가 FCGI 프로세스를 그의 자격 증명으로 실행하는 FASTCGI를 스폰했습니다 (LightTPD Wiki에 이것에 대한 자습서가 있습니다). 이것은 다소 안전 할 것이지만 이것은 성능 (모든 FCGI에 필요한 많은 사용자 / 메모리)에 영향을 미치기 때문에 실행 가능한 솔루션이 아닌가?

도움이 되었습니까?

해결책

개인적으로 LightTPD는 괜찮지 만 Lightweight Webserver + FastCGI 솔루션을 사용하면 Nginx + FastCGI와 함께 갈 것입니다. 나는 벤치 마크를 실행하고 모든 코드를 읽고 Nginx는 부하에서 더 빠르거나 안정적인 순서입니다. 매우 좋습니다.

그러나 그것은 당신이 요청한 것이 아닙니다. 본질적으로, 나는 당신이 나열하는 세 가지 옵션에 스펙트럼/스케일 가능성 대 속도 트레이드 오프가 있다고 말하며, 원하는 위치를 결정하면됩니다. 신뢰할 수없는 사용자가있는 공유 호스팅 제공 업체 인 경우, 신자 노우스-의 PHP 앱을 설치하는 PHP 앱을 설치하면 보안에 더 많이 의존 할 것입니다. 더 신뢰할 수있는 사용자들 사이에서 공유되면 성능에 의존 할 수 있습니다. 내 생각은 다음과 같습니다.

CGI + suexec : 이는 공유 호스팅 환경에서 사용자/사이트 수의 측면에서 가장 안전하고 효율적이고 확장 가능합니다. 프로세스가 생성되고 요청이 들어 오면 메모리가 사용됩니다. 물론 CGI 스폰은 개별 스크립트의 실행 시간에서 가장 느리게 만듭니다. 얼마나 느리게? 글쎄, 당신은 벤치마킹해야하지만, 일반적으로 사람들이 장기 실행 앱을 실행하는 경우 (즉, Libs를로드하고 각 요청을 초기화하는 데 0.25-0.5 초가 걸리는 WordPress와 같은 것) CGI 스폰 페널티가 예쁘게 보이기 시작합니다. 맥락에서 무시할 수 있습니다.

fastcgi : 여기에서 문제 (그리고 웹 서버가 Apache, LightTPD 또는 Nginx인지는 중요하지 않음) 각 프로세스가 PHP 통역사의 크기와 동일한 메모리를 먹기 때문에 각 사용자가 실행되도록하는 FCGI 어린이가 얼마나 많은지를 파악하고 있습니다. Linux는 물론 모든 것이 유선이 아니지만, 나는 멍청합니다). 또한 mod_php와 달리 이러한 프로세스는 사용자간에 공유되지 않으므로 사용자마다 제한해야합니다. 예를 들어, DreamHost는 고객을 위해 3 점을 획득합니다. 이제 2-5 개 이상의 페이지를 파열시키는 웹 사이트를 실행하는 고객의 경우 2 초를 볼 수 있습니다. 그 요청이 쌓이고 사이트가 매달려 있기 때문에 실제로는 매우 나쁩니다. 이제 나는 앱에서 앱을 실행할 때 가벼운 웹 서버가있는 FastCGI를 좋아합니다. 헌신적인 서버/클러스터, 앱에 수백 명의 FCGI 어린이를 제공 할 수있을 때 (물론 Webserver Privs와 함께, à la apache/prefork + mod_php). 그러나 사용자 당 FCGI 어린이를 할당/캡을 할 수있는 공유 호스팅이 의미가 없다고 생각합니다.

apache + mod_php : Webserver Privs와 함께 실행되는 모든 것이 보안이지만 실시간 PHP 프로세스 풀이 공유되므로 성능 종료에서 가장 좋습니다. 개발자의 관점에서, 나는 php_safe 모드를 견딜 수 없으며, sysadmin의 관점에서 그것은 실제로 보안의 환상 일뿐입니다 (그것은 멍청한 사용자를 대상으로하지만 실제 공격으로부터 보호하지 않습니다). 다른 옵션에는 safe_mode가 포함되어야합니다.

Dreamhost는 일종의 하이브리드를 수행하며 기본적으로 Apache CGI + Suexec을 수행하지만, 원하는 경우 FCGI를 수행하기로 선택한 더 많은 사용자의 (작은) 비율을 캡과 메모리 사용량을 모니터링하는 데 도움이됩니다. . 이는 기본적으로 모든 사람에게 FCGI를 가능하게하는 수많은 메모리 리소스를 절약합니다.

표준 상업 공유 호스팅에 대해 이야기하는 또 다른 문제는 Apache가 완전한 기능을 갖추고 있으며, 거의 모든 것에 대한 모듈이 있으며 (Mod_Security와 같은 것들을 포함하여). htaccess 구성이 작동하기 때문에 사용자가 좋아할 것입니다. 등 - Drupal 또는 WordPress를 설치할 때 다른 어떤 것과 함께 지원되는 두통을 겪게됩니다 (내부 사용자를 말하는 경우 문제가 훨씬 적음).

개인적으로 최상의 보안 및 스케일링을 위해 CGI + SUEXEC로 시작하는 것이 간단하게 유지하는 것이 좋습니다. 사용자가 FCGI 또는 MOD_PHP를 원하고 제안/커뮤니케이션을위한 좋은 채널이 있으면 요청할 것이지만, 이들 중 하나는 한계 성능 개선만으로 훨씬 더 큰 두통이므로 내 제안 사항이 있습니다. 처음에는 그들 중 하나를 수행하지 않고 그들이 그것을 요구하는 경우 반응을 유지하는 것입니다.

나는 표준 apache + cgi + suexec 대신 lighttpd + fcgi와 같은 "흥미로운"일을하려는 욕구에 동정하지만, 나는 그것을 진정으로 추천 할 수 없습니다.

여러 서버를 실행하는 경우 다른 사람들에게 CGI를 넣고 다른 사람의 전원 사용자를 위해 다른 것을 넣을 수 있습니다. 그리고 구식 버전의 PHPBB와 같은 것들에 대한 모든 www dirs를 cron을 grep하십시오!

다른 팁

추천합니다 수호신

PHP + FASTCGI 및 보안과 관련하여 확인하십시오. 이 블로그 게시물.

공유 호스팅 서버를 확보하는 데 따른 과제는 외부와 내부에서 웹 사이트를 공격으로부터 보호하는 방법입니다. PHP에는 도움이되는 기능이 내장되어 있지만 궁극적으로 문제를 해결하기에 잘못된 장소입니다.

나는 이미 작동하는 많은 솔루션에 대해 글을 썼지 만 몇 번이고 보라고 요청받은 옵션 중 하나는 PHP + FASTCGI를 사용하는 것입니다. FastCGI를 사용하면 FASTCGI 프로세스가 페이지보기 사이에 지속되기 때문에 FASTCGI를 사용하면 Apache의 SUEXEC 또는 MOD_SUPHP의 성능 문제를 극복 할 것입니다.

그러나 성능을 살펴보기 전에 첫 번째 질문은 다음과 같은 것입니다. 첫 번째 웹 서버에서 PHP와 FastCGI가 다른 사용자로서 다른 사용자로서 정확히 어떻게 실행됩니까?

나는 사용하고있다 변태 약 1 년 동안 매우 감동했습니다. 보안을 위해 스크립트를 chroots로 램프 서버를 유지 관리합니다.

나는 또한 사용했다 insim, 그러나 친절하고 빠르고 빠른 기능을 찾지 못했습니다. 기능은 많지 않습니다. 또한 비용이 훨씬 더 듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top