it-swarm-korea.com

xp_cmdshell : 사용해야합니까?

저장된 프로 시저 내에서 xp_cmdshell을 안전하게 사용할 수 있습니까? 실제로 다른 옵션이없는 상황이 있습니까? 다시 말해, 저장 프로 시저 내에서의 사용법은 항상 잘 알려진 소스 코드 분석기에서 알 수 있듯이 보안 문제로 표시되어야합니까?

다르게 말하면, 다음 진술 (직접 인용)에 동의 하시겠습니까?

xp_cmdshell 기능을 안전하게 사용할 수 없습니다. 사용해서는 안됩니다.

15
TobyS

항상 위험입니다. 항상 검토이어야합니다. 제대로 완화 일 수 있습니다.

합법적 인 용도, 때로는 필수품이 있지만 입력 내용을 자세히 살펴보십시오!

9
Jeff Ferland

Xp_CmdShell을 끄는 것은 썩은 고기 위에 베일을 두는 것과 같습니다. 그것은 테이블에 잘못된 보안 감각을 가져오고 파리는 여전히 고기를 얻을 수 있습니다. 설명해주세요.

누가 xp_CmdShell을 사용할 수 있습니까? 맞습니다. "SA"개인 또는 사용자에게 프록시를 부여하는 끔찍한 실수를 한 사람/앱 로그인 만 사용할 수 있습니다.

다음 질문. xp_CmdShell을 끈 경우 다시 설정할 수있는 유일한 사람은 누구입니까? 다시 정정하십시오! "SA"권한이있는 사람/앱만 다시 켤 수 있습니다.

그렇다면 xp_CmdShell이 ​​보안 위험이되는 실제 문제는 무엇입니까? xp_CmdShell은 보안 위험이 아닙니다. 보안이 취약한 것이 유일한 보안 위험입니다. 해커 나 악의적 인 내부 사용자가 "SA"권한이있는 시스템에 침입하면 xp_CmdShell을 momements로 설정할 수 있습니다. 예, 그 행동은 기록되지만 보안이 심각하게 시작되지 않았다는 문서화 된 증거 ​​만 제공합니다.

Xp_CmdShell을 끄면 해커 코드의 해당 부분이 다시 실행되도록 할 수있는 기회를 제공하는 것 외에는 보안을 위해 아무 것도하지 않습니다.

다시 말씀 드리겠습니다. xp_CmdShell은 보안 위험이 아닙니다. 나쁜 보안 만이 보안 위험입니다. 보안을 수정 한 후 xp_CmdShell을 켜십시오. 훌륭한 도구이며 나쁜 보안 관행과 신화로 인해 누락되었습니다.

9
Jeff Moden

"사용해서는 안된다"고 생각하는 것이 좋습니다. 그것은 범주적인 "그것은 항상 안전하지 않습니다"가 아니라, xp_cmdshell이 ​​위험하다는 점입니다.

보안 위험을 피하는 방법을 알고 있다고 생각하더라도 xp_cmdshell이 ​​여전히 사용하기에 가장 적합한 도구는 아닙니다. 더 좋은 해결책이있을 가능성이 있습니다 (물론, 덜 위험하게 발생합니다).

4
D.W.

"큰 힘에는 큰 책임이 따른다." 그 말은 xp_cmdshell는 레드몬드에서 탈출하기위한 최악의 보안 열차 중 하나입니다.

4
rook

Jl01의 답변을 강조하기 위해 (+1을주었습니다) ...

이상하게도, 안전하고 안전한 SQL Server의 적절한 측정 방법은 실제로 xp_CmdShell을 활성화하는 것입니다. 이것이 의미하는 바는 시스템이 충분히 안전하다면 xp_CmdShell 활성화 및 사용과 같은 사소한 문제에 대해 걱정할 필요가 없다는 것입니다.

특히 SQL Server 2005부터는 DBA 이외의 사용자가 제대로 잠긴 시스템의 저장 프로 시저에 대한 PUBLIC 및 EXECUTE 권한보다 큰 권한을 가져야 할 이유가 거의 없습니다. 사실, 올바르게 구현 된 PUBLIC 개인 사용자는 xp_CmdShell을 직접 실행하지 않고도 xp_CmdShell에 대한 호출을 포함하는 저장 프로 시저를 실행할 수 있어야합니다.

MS가 낮은 개인 사용자가 테이블을 볼 수 없어야 할 때 xp_CmdShell을 직접 실행할 수 있도록 명령 셸 프록시를 만든 것은 아이러니하다고 생각합니다.

2
Jeff Moden

SQL Server 환경, 혼합 또는 통합 (Windows)에서 어떤 종류의 보안이 사용되고 있습니까? sysadmin SQL Server 역할은 몇 명입니까? MS 모범 사례는 통합 인증 (sa 로그인, SQL 로그인 없음)을 요구하며 sysadmin SQL Server 역할에는 2 개만 있습니다. 이러한 모범 사례를 따르면 노출을 크게 완화 할 수 있습니다. 또한 xp_cmdshell (pre sqlcmd 모드 및 Powershell 이전)은 예약 된 SQL 에이전트 작업 내에서 수백 마일 떨어진 프로덕션 서버에서 DR 서버로 트랜잭션 로그 파일을 복사하는 기능을 제공합니다. 여기에 사악한 것이 아니라 한 포스터는 "그것이 달려있다"고 적었습니다.

2
jl01