PHP를 수동으로 설치했습니다. PHP의 기본 구성 파일은 /usr/local/apache2/conf/php.ini에 있습니다. 가장 중요한 것은 PHP를 보다 안전하게 실행할 수 있도록 php.ini에 내용을 구성하는 것입니다. . PHP 전체의 보안 설정은 주로 phpshell 및 SQL 주입 공격을 방지하기 위한 것입니다. 먼저 편집 도구를 사용하여 /etc/local/apache2/conf/php.ini를 엽니다. 다른 방법으로 설치하면 구성 파일이 이 디렉터리에 없을 수 있습니다.
(1) PHP의 안전 모드 켜기
PHP의 안전 모드는 시스템( ),
도 많은 파일 작업 기능의 권한을 제어하고 /etc/passwd,
과 같은 특정 키 파일을 허용하지 않지만 기본 php.ini는 안전 모드가 다음과 같습니다. 켜지지 않았으면 켜세요:
safe_mode = on
(2) 사용자 그룹 보안
safe_mode가 켜지면 safe_mode_gid가 꺼지고 php 스크립트는 파일에 접근할 수 있으며, 동일한
그룹에 속한 사용자도 파일에 접근할 수 있습니다.
safe_mode_gid = off
로 설정하는 것이 좋습니다. 설정하지 않으면 서버 웹사이트 디렉토리에 있는 파일을 작동하지 못할 수 있습니다. 예를 들어
파일을 조작합니다.
(3) 안전 모드에서 프로그램을 실행하기 위한 홈 디렉터리
안전 모드가 켜져 있지만 특정 프로그램을 실행하려는 경우 해당 프로그램을 지정하면 됩니다. 기본 디렉터리:
safe_mode_exec_dir = D:/usr/bin
일반적으로 어떤 프로그램도 실행할 필요가 없으므로 시스템 프로그램 디렉터리는 실행하지 않는 것이 좋습니다.
실행해야 하는 프로그램을 복사하세요. 예:
safe_mode_exec_dir = D:/tmp/cmd
그러나 어떤 프로그램도 실행하지 않는 것이 좋습니다. 그런 다음 웹 디렉토리를 가리킬 수 있습니다:
safe_mode_exec_dir = D:/usr/www
(4) 안전 모드에 파일 포함
일부 공용 파일을 안전 모드에 포함하려면 다음 옵션을 수정하세요.
safe_mode_include_dir = D:/usr/www/include/
사실 일반적으로 PHP 스크립트에 포함된 파일은 다음과 같습니다. 이는 특정 요구 사항에 따라 수행될 수 있습니다.
(5) PHP 스크립트가 액세스할 수 있는 디렉터리 제어
PHP 스크립트가 지정된 디렉터리에만 액세스할 수 있도록 제어하려면 open_basedir 옵션을 사용하세요. 액세스
액세스해서는 안되는 파일은 phpshell의 피해를 어느 정도 제한합니다. 일반적으로 웹사이트 디렉토리에만 액세스하도록 설정할 수 있습니다:
open_basedir = D:/usr/www
(6) 해제 위험한 기능
안전 모드를 켜면 기능 금지가 꼭 필요한 것은 아니지만 그래도 안전을 위해 고려하고 있습니다. 예를 들어
명령을 실행할 수 있는 system()을 포함한 PHP 함수나 PHP 정보를 볼 수 있는
phpinfo()와 같은 함수를 실행하고 싶지 않다고 느끼면 비활성화할 수 있습니다:
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo
파일 및 디렉터리 작업을 비활성화하려면 많은 파일 작업을 비활성화할 수 있습니다.
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir ,fopen ,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown
위에는 일반적으로 사용되는 파일 처리 기능 중 일부만 나열되어 있습니다. 위의 실행 명령 기능을 이 기능과 결합하면
은 대부분의 phpshell에 저항할 수 있습니다.
(7) http 헤더에서 PHP 버전 정보 유출 차단
해커가 서버에서 PHP 버전 정보를 얻는 것을 방지하기 위해 폐쇄할 수 있습니다. http 헤더 헤더:
expose_php = Off
에서 이 정보가 유출됩니다. 예를 들어 해커가 www.chinaz.com 80에 텔넷을 연결하면 PHP 정보를 볼 수 없습니다.
(8) 전역 변수 등록 닫기
POST 또는 GET을 사용하여 제출된 변수를 포함하여 PHP로 제출된 변수는 자동으로 전역 변수로 등록되며 직접 access,
이것은 서버에 매우 위험하므로 전역 변수로 등록할 수 없으므로 전역 변수 등록 옵션을 끕니다:
register_globals = Off
물론, 이렇게 설정하면 해당 변수를 구할 때 GET으로 제출한 var 변수를 구하는 등 합리적인 방법을 사용해야 하며,
$_GET['var']을 사용하여 구해야 합니다. 따라서 PHP 프로그래머는 이에 주의해야 합니다.
(9) SQL 주입 방지를 위해 Magic_quotes_gpc 열기
SQL 주입은 작은 경우에는 웹사이트 백엔드에 침입할 수 있는 매우 위험한 문제이며, 더 심각한 문제입니다. 그럴 경우 서버 전체가 다운됩니다.
조심하세요. php.ini에는 다음 설정이 있습니다:
magic_quotes_gpc = Off
이 기능은 기본적으로 꺼져 있습니다. 켜져 있으면 사용자가 제출한 SQL 쿼리를 자동으로 변환합니다.
예를 들어, ' ' 등으로 SQL 인젝션을 방지하는데 중요한 역할을 합니다. 따라서 다음과 같이 설정하는 것이 좋습니다:
magic_quotes_gpc = On
(10) 오류 메시지 제어
일반적으로 PHP는 데이터베이스에 연결되어 있지 않거나 아래에 있는 경우 오류 메시지를 표시합니다. 기타 상황 일반 오류 메시지
앞의 경로 정보나 쿼리 SQL 문 및 기타 정보가 포함됩니다. 이러한 종류의 정보는 해커에게 제공되면 안전하지 않으므로 일반적으로 서버에서 오류 메시지를 비활성화하는 것이 좋습니다. :
display_errors = Off
오류 메시지를 표시하려면 경고 위의 정보만 표시하는 등 오류 표시 수준을 반드시 설정하세요.
error_reporting = E_WARNING & E_ERROR
물론 그래도 오류를 끄는 것이 좋습니다. 프롬프트.
(11) 오류 로그
서버 작동 원인을 쉽게 찾을 수 있도록 display_errors를 끈 후 오류 정보를 기록하는 것이 좋습니다.
log_errors = On
또한 오류 로그가 저장되는 디렉터리를 설정합니다. 루트 아파치 로그를 함께 저장하는 것이 좋습니다:
error_log = D:/usr/local/apache2/logs/php_error .log
참고: 파일은 Apache 사용자 및 그룹에게 쓰기 권한을 허용해야 합니다.
MYSQL 권한 다운로드
mysqlstart와 같은 새 사용자 생성
net user mysqlstart ****microsoft /add
net localgroup users mysqlstart / del
어떤 그룹에도 속하지 않습니다
MYSQL이 d:mysql에 설치된 경우 mysqlstart에 전체 제어 권한을 부여하고
시스템에서 MYSQL의 서비스 속성을 설정합니다. service 로그인 속성에서 이 사용자 mysqlstart를 선택하고 비밀번호 OK를 입력합니다.
MYSQL 서비스를 다시 시작하면 MYSQL이 낮은 권한으로 실행됩니다.
net user apache ****microsoft /add
net localgroup users apache /del
알겠습니다. 어떤 그룹에도 속하지 않는 사용자 apche를 만들었습니다.
컴퓨터 관리자를 열고, 서비스를 선택하고, Apache 서비스 속성을 클릭하고, 로그온을 선택하고, 이 계정을 선택하고, 위에서 만든 계정과 비밀번호를 입력하고,
다시 시작합니다. 아파치 서비스, 좋아요, 아파치가 낮은 권한으로 실행 중입니다.
실제로 Apache 사용자가 원하는 작업만 수행할 수 있도록 각 폴더의 권한을 설정하고 각 디렉토리에 대해 별도의 읽기-쓰기 사용자를 생성할 수도 있습니다.
이 역시 많은 가상 호스트 제공업체에서 널리 사용하는 구성 방법이지만 이를 방지하기 위해 사용하면 과잉입니다.