아파치, suexec, PHP, suPHP


13

Linux 사용자 로서 매우 편하지만 Linux Admin-fu는 약간 약합니다. 따라서 저는 여기서 구축하려는 CentOS 서버와 함께 지침을 찾고 있습니다.

일부 클라이언트에 Apache2 웹 서버를 설정해야합니다. USERDIR정적 HTML 사이트에 대한 각 클라이언트의 웹 컨텐츠를 홈 디렉토리 ( pache.conf, 오른쪽?) 아래 에두기를 원합니다 . Apache를 클라이언트로 실행하고 싶습니다 ( suexec?). 그들의 물건 중 일부는 PHP 응용 프로그램이 될 것입니다. 그리고 나는 또한 내가보고 싶은 인상을 suphp받고 있습니다.

기본적으로 저는 공유 웹 호스팅 회사의 작은 버전처럼 보이고 싶습니다. 그것들 이 얼마나 일반적인지를 고려할 때, 나는이 모든 것을 설정하는 방법에 대한 좋은 최신 How-To 가이드를 쉽게 찾을 수 있다고 생각했지만 지금까지 나는 운이 거의 없었습니다. 검색어가 꺼져있는 것 같습니다.

따라서 질문 (임의의 일부 또는 전부에 답하십시오) :

  1. 누구나 현재 / 현대 가이드에 대한 견고한 링크를 가지고 있습니까? 아파치 문서 사이트는 가이드가 아닙니다. ;-)
  2. 정적 사이트와 PHP 앱이 혼합되어 있기 때문에 suexec와 suphp를 모두 설치 / 필요합니까? 그렇다면, 내가 알아야 할 문제가 있습니까?
  3. suexec 및 suphp 대신 다른 옵션을보고해야합니까?

최종 사용자에게 SSH, SFTP 또는 SCP가 자신의 물건에 액세스 할 수 있도록 할 계획입니다 (이에 영향이있는 경우).

도움을 주셔서 감사합니다.

[편집] 필자는이 점을 앞서 언급 했어야했다. 파일 제한 및 소유권과 관련된 공유 호스팅 제공 업체를 모방하려는 나의 주요 목표 중 하나입니다. 추가 / 변경 사항을보기 위해 그러한 것들을 변경해야하는 것에 대해 사용자에게 가르치는 것을 피하고 싶습니다.

답변:


15

suexec 및 suphp를 사용하면 기본값과 다른 유형의 권한 분리가 적용됩니다.

기본값은 사용자의 권한을 웹 서버와 분리하는 것입니다. 즉, 사용자는 파일을 소유하고 있으며 웹 서버가 파일을보고 변경할 수있는 권한을 부여해야합니다.

suexec / suphp 모델은 웹 서버 (스크립트를 실행할 때)가 사용자 계정으로 실행되므로 웹 사이트는 사용자에게 권한이있는 모든 작업을 수행 할 수있는 권한이 있습니다. 어느 정도까지는 사용자와 웹 서버 사이의 분리를 제거하지만, 다른 분리, 즉 한 사용자의 웹 사이트와 같은 상자에있는 다른 사용자의 웹 사이트 사이에 다른 분리를 시행합니다.

기본적으로 PHP는 항상 Apache의 사용자 계정으로 실행되므로 한 웹 사이트의 PHP 스크립트는 다른 사이트의 PHP 스크립트가 할 수있는 모든 파일에 액세스 할 수 있습니다. 따라서 서버의 한 계정이 해킹되면 감염이 다른 계정으로 확산 될 수 있습니다. SuPHP는이를 방지합니다.

suexec 또는 suphp는 아파치가 정적 컨텐츠를 제공하는 방식에 영향을 미치지 않습니다 . 모든 이전 규칙이 계속 적용됩니다. 대신 suexec 및 suphp는 CGI 및 PHP (각각)를 실행할 계정을 변경합니다. Suexec는 CGI 실행 파일을 소유자 계정으로 실행하는 반면 SuPHP는 PHP 스크립트를 소유자 계정으로 실행합니다.

Suexec와 SuPHP가 반드시 더 좋은 것은 아닙니다 . 그들은 단지 다릅니다 . 웹 사이트가 해킹되는 것을 방지하지는 않지만 사이트 를 해킹 하기 쉽게 만들 수는 있지만 한 사이트의 타협이 다른 사이트로 퍼지는 것을 막을 수 있습니다. 사이트 관리자에게는 이러한 격리가 더 중요하므로 일부 공유 호스팅 시스템이 suexec 및 suphp를 기본값으로 설정하는 이유입니다.

매우 일반적인 "gotcha"중 하나는 SuPHP가 스크립트를 실행하기 전에 소유권과 권한을 확인하고 권한이 적절하지 않은 경우 500 오류를 반환한다는 것입니다.

특히:

  • 파일의 소유자와 그룹은 웹 사이트 소유자와 일치해야합니다 (아파치 구성의 설정으로)
  • 파일은 세계적으로 쓸 수 없어야합니다
  • 부모 디렉토리는 쓰기 가능하지 않아야합니다.

따라서 공유 호스팅 모델을 에뮬레이션하고 싶다는 것을 알고 있다는 사실을 알고 있다는 것은 suexec / suphp 모델입니다. 또한 게시물을 편집하여 한 가지 주요 목표는 사용자에게 변경 사항이나 추가 사항을보기 위해 파일 권한 또는 소유자를 수정하지 않아도되는 방법을 가르치는 것을 피하는 것입니다.
Chris_K

2
suexec / suphp는 당신이 좋아하는 것에 대한 좋은 솔루션입니다.
tylerl

suexec보다 suphp를 선호합니다. 내가 생각하는 것이 더 안전합니다.
Vladislav Rastrusny

@FractalizeR : 일반적으로 동시에 둘 다 사용합니다. SuPHP는 PHP 용, suexec는 CGI 용입니다. PHP를 CGI로 실행하여 suexec를 통해 PHP를 실행할 수 있지만, PHP에 대한 더 나은 (보다 안전하고 효율적인) 옵션이 존재하므로 약간 불필요합니다.
tylerl

@ tylerl : 답변 주셔서 감사합니다. PHP에 대해 더 안전하고 효율적인 솔루션은 무엇입니까?
benjamin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.