
자동화된 PHP 구성 감사 도구로, php.ini를 스캔하여 보안 오설정을 찾고, CLI 및 웹 모드를 지원하며, 결과를 텍스트, HTML 또는 JSON으로 출력합니다.
현재 PHP 구성을 잠재적인 보안 결함에 대해 검사합니다.
웹서버에서 이 파일에 접근하거나 CLI에서 실행하기만 하면 됩니다.
이 소프트웨어는 Ben Fuhrmannek, SektionEins GmbH가 php.ini 점검을 자동화하고 좀 더 즐거운 작업에 시간을 할애하기 위해 작성했습니다.
CLI: php phpconfigcheck.php를 호출하기만 하면 됩니다. -a를 추가하면 숨겨진 결과도 표시되며, -h는 HTML 출력, -j는 JSON 출력입니다.
WEB: 이 스크립트를 웹서버가 접근 가능한 디렉토리(예: 문서 루트)에 복사하세요. 아래 '안전장치'도 참조하세요.
비CLI 모드에서의 출력은 기본적으로 HTML입니다. 이 동작은 환경 변수 PCC_OUTPUT_TYPE=text 또는 PCC_OUTPUT_TYPE=json을 설정하여 변경할 수 있습니다.
일부 테스트 케이스는 기본적으로 숨겨집니다(특히 skipped, ok, unknown/untested). 모든 결과를 표시하려면 phpconfigcheck.php?showall=1을 사용하세요. JSON 출력에는 적용되지 않으며, JSON은 기본적으로 모든 결과를 반환합니다.
웹 모드에서 출력 형식을 제어하려면 phpconfigcheck.php?format=...을 사용하세요. format 값은 text, html 또는 json 중 하나일 수 있습니다. 예: phpconfigcheck.php?format=text. format 매개변수는 PCC_OUTPUT_TYPE보다 우선합니다.
대부분의 경우 PHP 구성과 같은 보안 관련 정보를 외부에 노출하지 않는 것이 좋습니다. 다음과 같은 안전장치가 구현되었습니다.
mtime 검사: 이 스크립트는 비CLI 모드에서 이틀 후에 작동을 중지합니다. touch phpconfigcheck.php를 실행하거나 스크립트를 서버에 다시 복사(예: SCP를 통해)하여 검사를 다시 활성화할 수 있습니다. 이 검사는 환경 변수 PCC_DISABLE_MTIME=1을 설정하여 비활성화할 수 있습니다(예: Apache의 .htaccess에서 SetEnv PCC_DISABLE_MTIME 1).
소스 IP 검사: 기본적으로 localhost(127.0.0.1 및 ::1)만 이 스크립트에 접근할 수 있습니다. 다른 호스트는 PCC_ALLOW_IP를 IP 주소 또는 와일드카드 패턴으로 설정하여 추가할 수 있습니다(예: .htaccess에서 SetEnv PCC_ALLOW_IP 10.0.0.*). SSH 포트 포워딩(예: ssh -D 또는 ssh -L)을 통해 웹서버에 접근할 수도 있습니다.
비활성화된 함수: 이 스크립트는 제대로 작동하기 위해 ini_get() 및 stat()와 같은 몇 가지 함수가 필요합니다. 이러한 함수 중 하나가 블랙리스트에 있거나(또는 화이트리스트에 없으면) 실행이 실패하거나 잘못된 출력이 생성됩니다. 이러한 경우 Suhosin을 일시적으로 시뮬레이션 모드로 전환하고 disable_functions를 생략하는 것이 가능합니다. 안전을 위해 별도 디렉토리의 .htaccess를 사용하여 완화된 보안 구성을 수행할 수 있습니다. 또한 이 스크립트는 명령줄에서 웹서버 구성을 사용하여 호출할 수도 있습니다(예: php -n -c /etc/.../php.ini phpconfigcheck.php).
CLI: 이전 PHP 버전은 'cli' SAPI 이름을 인식하지 못하고 CLI에서도 CGI 스타일 출력을 사용합니다. 해결 방법: PCC_OUTPUT_TYPE=text /opt/php/php-5.1.6/bin/php phpconfigcheck.php
이 도구는 안전한 PHP 환경을 설정하는 데 도움을 줄 뿐입니다. 그 외에는 아무것도 아닙니다. 이 도구의 출력이 그렇지 않다고 제안하더라도, 여러분의 설정, 소프트웨어 또는 관련 구성은 여전히 취약할 수 있습니다.