2014-11-22 2 views
1

본인이 처음으로 웹 서버를 구성하고 있습니다.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입니다. 소유자는 읽기, 쓰기 및 실행을 할 수 있으며, 같은 그룹의 사용자는 아무 것도하지 않고 공개 할 수 있습니다.

내 목표는 다른 폴더의 항목을 포함 할 수 없다는 것입니다. 따라서 내 도메인 중 하나가 악용되면 해킹/크래커가 자체 코드를 실행할 수 있으므로 다른 도메인의 모든 파일을 포함 할 수 없으며 더 깊은 곳에서 파일을 포함 할 수 있습니다.

답변

3

은 절대적으로 고립 된 환경을 만들려면 당신이해야

가) 사용 아파치 백엔드 + suexec를 + 방법 mod_php, PHP-FPM 지원하지 않기 때문에 "suexec를"로 완전히 아파치)

B를 않는 만들뿐만 아니라, 도메인 당 개인 사용자뿐만 아니라 개별 그룹

C) 이름 기반 가상 호스트의 몇 가지를 구성, 서비스 도메인 (희망 당 하나, 당신은) 이미 수행하고, suexec를 매개 변수로 개별 사용자 이름을 설정 한

이 경우 DocumentRoots 도메인에 대해 0700 권한을 설정하면 파일 시스템 권한으로 도메인 \ 사용자를 각각 분리 할 수 ​​있습니다.

+0

빠른 답변 감사드립니다. php.ini, "open_basedir"줄을 편집하고 거기에 괜찮은 디렉토리를 썼습니다. 그런 다음 fastcgi_param PHP_VALUE open_basedir = "/ var/www/sites/exampledomain1/public"을 추가했습니다. 모든 php5-fpm 풀 서버 블록에 적용됩니다. 내 "보안 테스트"PHP 파일을 시도하고 지금은 내가 포함하고 싶지 않을 아무것도 포함시킬 수 없습니다. – Jamma

0

PHP-FPM 및 chrooting을 강력히 권장합니다. 그것은 완전히 아파치/suexec이 될 수없는 방식으로 고립되어 있으며 각 사이트는 자신의 사용자이고 자신의 chroot입니다. 그것은 큰 ISP/호스팅 회사가 이유 때문에 사용하는 것입니다.

가장 중요한 부분은 PHP-FPM이 NginX에서도 사용 가능하다는 것입니다.