[server] msdeploy 에이전트 서비스가 서버에서 공격 경로를 열 수 있습니까?

프로덕션 서버에 자동 배포하기위한 msdeploy 웹 배포 에이전트 서비스 사용을 평가하고 있습니다.

우리가 알 수없는 한 가지는 잠재적 인 보안 영향입니다.

우선 우리의 웹 서버는 (방화벽과로드 밸런서 뒤에) 안전하게 보호되므로 외부에서는 http 트래픽 만 허용됩니다.

그럼에도 불구하고 웹 배포 에이전트는 http (s)를 통해 액세스 할 수 있으므로 IIS (외부로 향하는 유일한 것)와 통합되어 실행됩니다. 따라서 해당 IIS에 호스팅 된 웹을 통해 에이전트에 액세스 할 수 있으며 모든 웹에 대한 읽기 및 쓰기 액세스 권한을 얻을 수 있을지 걱정됩니다.

프로덕션 환경에서 msdeploy를 안전하게 사용할 수 있습니까?

업데이트 : 프로덕션 웹 서버에서 IIS7이 실행되고 있습니다.



답변

그것을 사용한지 오래되었지만 웹 관리 부분을 포함하지 않는 IIS 6에서만 사용했습니다. 원격 관리 URL 및 포트를 수정하여 외부 방화벽에서 차단할 수 있습니다. 원격 서비스 사용자 정의 및 보안을 참조하십시오 . 주요 보안 메커니즘은 사용자 계정 보안 인 것처럼 보이지만, 이미 말한 것처럼 IIS 내에 있기 때문에 IIS 취약점으로 인해 패치 될 때까지 보안 수단을 쓸모 없게 만들 수 있습니다. 이런 이유만으로도 인터넷에서 웹 컨텐츠를 업데이트하는 것을 주저 할 수 있지만, 이는 조직의 보안 요구 사항과 웹 개발자의 요구 사항에 따라 다릅니다.

웹 배포 서비스를 인터넷에 노출시키지 않으려면 다음을 수행하십시오.

  • NAT가 아닌 내부 전용 IP 나로드 밸런싱 IP 범위의 일부에서 기본 웹 사이트를 수신하도록합니다.
  • 기본 관리 웹 사이트가 localhost에서만 수신 한 다음 msdeploy를 사용하여 단일 지점에서 모든 호스트에 원격으로 연결하는 대신 각 호스트에서 msdeploy 실행 파일을 호출하여 로컬로 실행하는 스크립트를 작성할 수 있습니다.
  • 로드 밸런서가 웹 배포 URL에 도달하려는 외부 요청을 필터링하도록합니다 (예 : https : // server : 8081 / MSDeploy )
  • 모든 웹 배포가 제공되는 지정된 (내부) 배포 호스트가 있고 IP가 배포 URL의 웹 서버에만 연결되도록 허용 ( 단일 배포 호스트가 아닌 것은 차단 )

웹 개발자 모두 원격으로 작업하는 경우 여전히 필요가 인터넷 말하자면에서 직접 확인할 수 있습니다 웹 배포 기능이 가지고 있다면이 필요한 이유 (내가 상상할 수없는 직접VPN이 널리 사용됨에 따라 2 단계 배포 프로세스를 통해 웹 배포 가능 IIS 7 상자를 사용하여 격리 된 DMZ를 설정하고 (웹 팜의 DMZ와 별도로) 웹 개발자가 인터넷에서 DMZ에만 연결하여 변경 사항을 원격으로 배포하십시오. 그런 다음 변경 사항, 테스트 등을 검토 한 후 내부적으로 해당 호스트에 연결하고 나머지 웹 서버에 배포 할 수 있습니다.이 방법도 위험은 없지만 악의적 인 사용자가 웹 배포 기능을 손상시켜 일부를 소개 할 수 있습니다 모르는 사이에 악성 코드가 생겨 무의식적으로 프로덕션 환경에 도입 할 수 있습니다.


답변

간단한 대답. 예, 모든 컴퓨터에서 실행중인 모든 것이 공격 경로를 엽니 다. 항상 소프트웨어에 취약점이 있다고 가정해야합니다. 완화는 네트워크, 사용자, 컴퓨터, IP 등에 대한 액세스를 제한하는 핵심 요소입니다. 또한 물리적 액세스를 확인하십시오.

방화벽이 특정 시간의 규칙을 처리 할 수있는 경우 업데이트가 허용되는 시간을 제한 할 수도 있습니다.

웹 서버의 사용자, 즉 업데이트를 수행 할 수있는 사용자를 제한하는 것이 좋습니다. (아마도 이미이 작업을 수행했을 것입니다.) 그런 다음 방화벽을 사용하여 관리 인터페이스에 액세스 할 수있는 네트워크 (IP)를 제한합니다. 그런 다음 지원되는 경우 작업 시간 동안 (방화벽 규칙을 통해) 업데이트 만 처리하도록 허용합니다. 방화벽 관리자는 항상 긴급 업데이트 규칙을 편집하도록 할 수 있습니다. 마지막으로 Web Deployment Agent의 알려진 취약점을 감시하고 추가 완화하거나 수정이 구현 될 때까지 비활성화합니다.


답변