본인이 처음으로 웹 서버를 구성하고 있습니다.NGINX - 디렉터리 트래버스 공격 방지
- 우분투, Nginx에, PHP, SASS 등 최신 업데이트를 설치
- 만든 자신의 사용자 계정 그래서 내가 열린 불필요한 포트를하지 않아도 어디서나
- 이 검사 루트를 사용할 필요가 없습니다
- 가 자신의 이름으로,
- 모든 도메인이 PHP5-FPM 수영장에서 자신의 양말에서 실행되는 모든 도메인에 자신의 폴더를 생성
내 폴더 구조는 생 같다 S :
의/var/www /에서 사이트/exampledomain1/공공/
의/var/www /에서 사이트/exampledomain2/공공/
의/var/www /에서 사이트/exampledomain2/공공/
모든 공용 폴더와/var /,/var/www /에 "test.txt"파일을 만들었습니다. 그럼 난 다른 곳에서 test.txt 파일을 포함하려고 간단한 PHP 파일을 만들었고, 또한/etc/passwd를 포함 시키려고했습니다. 그리고 내 공개 PHP 파일, 심지어/etc/passwd 파일에 모든 파일을 포함 할 수 있다는 것을 알게 된 것은 "기쁨"이었습니다.
"도메인"사용자를 생성하여 www 데이터 그룹에만 저장했습니다. www/..를 제외하고 모두 손대지 않으므로/var/passwd 등은 root : root입니다.
의/var/www /에서 755 www가 데이터 : www가 데이터
의/var/www /에서 사이트/755 www가 데이터 : www가 데이터
의/var/www /에서 사이트/exampledomain1/711 exampledomain1 : www가 데이터
의/var/www /에서 사이트/exampledomain2/711 exampledomain2 : www가 데이터
의/var/www /에서 사이트/exampledomain3/711 exampledomain3 : www가 데이터
은/var/www/sites/exampl edomain1 공개/711 exampledomain1 : www가 데이터
의/var/www /에서 사이트/exampledomain2 공개/711 exampledomain2 : www가 데이터
의/var/www /에서 사이트/exampledomain3 공개/711 exampledomain3 : www가 데이터
현재 모든 index.php 파일은 701입니다. 소유자는 읽기, 쓰기 및 실행을 할 수 있으며, 같은 그룹의 사용자는 아무 것도하지 않고 공개 할 수 있습니다.
내 목표는 다른 폴더의 항목을 포함 할 수 없다는 것입니다. 따라서 내 도메인 중 하나가 악용되면 해킹/크래커가 자체 코드를 실행할 수 있으므로 다른 도메인의 모든 파일을 포함 할 수 없으며 더 깊은 곳에서 파일을 포함 할 수 있습니다.
빠른 답변 감사드립니다. php.ini, "open_basedir"줄을 편집하고 거기에 괜찮은 디렉토리를 썼습니다. 그런 다음 fastcgi_param PHP_VALUE open_basedir = "/ var/www/sites/exampledomain1/public"을 추가했습니다. 모든 php5-fpm 풀 서버 블록에 적용됩니다. 내 "보안 테스트"PHP 파일을 시도하고 지금은 내가 포함하고 싶지 않을 아무것도 포함시킬 수 없습니다. – Jamma