CPanel - Apache가 루트 사용자로 실행되는 것을 중지하는 방법은 무엇입니까?

CPanel - Apache가 루트 사용자로 실행되는 것을 중지하는 방법은 무엇입니까?
<?php echo `whoami`; ?>

그래서 이것은 '루트'를 반환하고 있으며 이를 방지하는 방법을 모르겠습니다. 저는 여러 사용자/가상 호스트를 생성하고 Apache가 해당 사용자/그룹으로 프로세스를 생성하도록 하는 WebHost Manager/CPanel을 사용하고 있습니다. 이런 일은 일어나지 않습니다.

WHM에 로그인하고 PHP 및 SuExec 구성 섹션을 열면 내 설정은 다음과 같습니다.

Default PHP Version (.php files)    5
PHP 5 Handler                       cgi
PHP 4 Handler                       none

Apache suEXEC                       on

뭐가 문제 야? Apache가 루트가 아닌 올바른 사용자로 실행되도록 하려면 어떻게 해야 합니까?

답변1

각 사이트를 자체 사용자로 실행하려면 올바른 PHP 5 핸들러 설정은 'CGI'가 아닌 'suPHP'입니다. 이를 변경하면 whoami개별 사용자를 보고하는 것을 볼 수 있습니다.

이 옵션을 먼저 사용하려면 EasyApache를 실행하고 해당 프로세스 중에 "Mod SuPHP"를 선택하여 Apache/PHP를 다시 컴파일해야 할 수도 있습니다. 이는 다음에서 수행됩니다.

메인 >> 소프트웨어 >> EasyApache(Apache 업데이트) 또는 명령줄에서/scripts/easyapache

답변2

Apache 자체는 아마도 Apache 사용자로 실행될 가능성이 높지만 SuExec 덕분에 루트가 소유한 PHP 스크립트는 루트로 실행됩니다. 이것이 바로 whoami명령이 루트 사용자를 반환하는 이유입니다.

문서 루트에 있는 파일의 소유자를 "apache" 또는 "www-data"(서버가 사용하는 것 중 하나)로 변경하면 동일한 명령이 파일의 새 소유자를 반환합니다.

모든 PHP 스크립트 chmod 555와 디렉토리가 파일과 동일한 사용자의 소유가 아닌지 확인하는 것도 가치 있는 일입니다. 이렇게 하면 CGI가 스크립트를 실행할 수 있지만 PHP 스크립트 중 하나에서 결함이 발견되면 자체 또는 다른 스크립트를 수정할 수 없으며 새 스크립트를 만들 수 없습니다. 임의의 디렉토리에 있는 스크립트입니다. PHP 스크립트에서 결함을 발견한 경우 공격자가 할 수 있는 일이 여전히 많이 있지만 공격자를 더 어렵게 만들기 위해 할 수 있는 모든 일은 가치가 있습니다.

관련 정보