2013-07-26 5 views
1

지금까지 PHP에서 sudo'd 명령을 수행하는 동안 발생할 수있는 잠재적 보안 허점이 발견되었습니다.PHP를 통해 sudo로 쉘 명령을 실행

현재 문제는 PHP의 exec() 함수를 통해 작업 웹 서버에서 sudo로 bash 스크립트를 실행해야한다는 것입니다. 우리는 현재 200 개 미만의 웹 사이트를 운영하고 있습니다. 이 작업을 수행 할 웹 사이트는 내 사무실의 IP 주소에서만 액세스 할 수 있도록 제한됩니다. 이로 인해 사용 가능한 솔루션과 관련된 잠재적 보안 문제가 제거됩니까?

sudoers 파일에 apache 사용자를 추가하는 방법 중 하나는 전체 서버에 적용되는 것으로 가정하므로 다른 모든 웹 사이트에서도 여전히 문제가됩니다.

우리 사무실에만 액세스 할 수있는 웹 사이트에서 보안 위협을 제기하지 않는 솔루션이 있습니까?

미리 감사드립니다.

편집 : 간단한 배경

여기 정확히 내가 달성하기 위해 노력하고있어 간단한 설명입니다. 제가 일하는 회사는 관광 관련 비즈니스를위한 웹 사이트를 개발합니다. 새로운 웹 사이트를 만들 때 나는 새로운 사이트의 디렉토리 구조 만들기, httpd.conf에 포함 된 아파치 설정 파일 생성, 새로운 FTP 사용자 추가, 데이터베이스를 웹 사이트 CMS와 함께 사용하여 몇 가지 이름을 지정하십시오.

현재 서버에 디렉토리 구조를 생성하고 사용자를 추가하며 apache 구성 파일을 만들고 정상적으로 아파치를 다시 시작하는 bash 스크립트가 있습니다. 그것은 단지 한 부분 일 뿐이므로, PHP 스크립트에서이 셸 스크립트를 사용하여 사용하기 쉬운 방법으로 전체 웹 사이트 생성 프로세스를 자동화하고 다른 동료와 일반적인 효율성을 얻습니다.

답변

1

당신은 적어도 4 가지 옵션이 있습니다 :이 경우

  1. 의 sudoers 파일에 아파치 사용자를 추가 (!와 명령을 실행하도록 제한)
    • 에서 일부 보안 구멍을 당신의 php-apps는 스크립트를 실행할 수도 있습니다 (예를 들어 호출 PHP를 포함 할 수 있거나 심지어 스크립트를 호출하는 다른 URL 인 mod_rewrite를 사용하여 IP에 제한을 무시할 수도 있습니다)
  2. 플래그 th 전자 스크립트 비트로
    • 위험하지 마세요.
  3. 실행 만 로컬 인터페이스에 결합 이것은 PHP를 호출 링크 이후 나의 선호하는 솔루션은 주요 웹 서버와 보안의 링크로 액세스 할 수 있습니다 외부
    • 에서 액세스 할 수없는 다른 웹 서버 별도로 처리 할 수 ​​있습니다. 이 서버에 대한 새 사용자를 만들 수도 있습니다. 몇몇 간단한 서버가 그 일을한다. 예를 들어 python과 perl을위한 서버 모듈이있다. 심지어 PHP 설치에서 exec를 사용할 수있는 것은 아닙니다.
  4. 데몬을 실행 일부 파일 또는 DB-항목을 읽거나 cron 작업 (파일 이벤트를보고, 예를 들어 inotify를) 다음,
    • 이 너무 복잡 할 수 있으며,이 단점이 명령을 실행하는 것을 디먼은 항목을 생성 한 스크립트를 점검 할 수 없습니다.
+0

이 스크립트를 사용하게 될 다른 URL이 없습니다, 스크립트가 수행 정확히 무엇의 아이디어를 얻을 위의 내 편집을 참조하십시오. 내부 용도로만 사용되며 클라이언트 웹 사이트 중 어느 것도 쉘 스크립트를 호출하지 않습니다. 이것이 옵션 1의 보안 문제와 어떤 차이가 있습니까? (가장 쉬운 것으로 보입니다). –

+0

@ 윌리엄 스튜어트 : 적어도 이것은 당신이 의도 한 것입니다! 일부 php 소프트웨어에 쉘 스크립트를 호출하는 php 스크립트에 대한 파일 시스템 읽기 권한이 있고 그 소프트웨어의 보안 문제로 외부 사용자가 (셸 스크립트를 실행할 수있는) php 파일을 포함 할 수 있다면 그것을 실행하십시오! – urzeit

+0

@ 윌리엄 스튜어트 : 내 편집보기 – urzeit

관련 문제