
SQL Server에 직접 연결하는 데스크톱 응용 프로그램이 있습니다. SQL Server를 인터넷에 직접 노출해서는 안 된다는 게시물이 많이 있지만 그 이유는 아무도 모릅니다. 일부 배경:
- 확장성, 로드 밸런싱 및 기타 성능 기준은 내 시나리오에서 문제가 되지 않습니다.
- 내 앱은 여러 사용자가 데이터를 공유할 수 있도록 로컬(로컬 SQL Server) 또는 원격 저장소에서 작동해야 합니다(호스팅된 SQL Server, 내 질문입니다).
SQL Azure에 연결하는 것이 표준 원격 SQL Server(http://www.windowsazure.com/en-us/develop/net/how-to-guides/sql-database/#using-sql-server)
나는 포트를 여는 것이 상속 취약점이라는 것을 알고 있지만 이것이 유일한 이유는 아닙니다. 뭔가 빠진 것이 틀림없지만 무엇인지 잘 모르겠습니다.
내 애플리케이션의 아래쪽 절반을 웹 서비스로 배포하는 것 외에 실제 대안은 무엇입니까?
답변1
그 이유는 여러 가지가 있지만 가장 관련성이 높은 이유는 SQL Server와 네트워크 보안 모두에 경험이 없는 사람이 하나 이상의 일반적인 실수를 저지를 가능성이 높다는 것입니다.
예를 들어, "sa" SQL 로그인을 사용하여 연결할 수 있습니다. 이 로그인은 기본 sysadmin 계정이며 SQL Server를 완전히 제어할 수 있습니다.
또는 암호가 취약한 다른 SQL Server 로그인을 사용하여 공격자가 자신의 권한을 높이기 위해 무차별 공격을 시도할 수도 있습니다.
또는 공격자 및 익스플로잇 스크립트가 적극적으로 검색하여 데이터베이스에서 데이터를 검색할 수 있도록 일부 기본 읽기 전용 사용자 계정을 활성화(이 응용 프로그램이나 다른 응용 프로그램에 대해) 남겨 둘 수도 있습니다.
가장 기본적인 원격 공격으로부터 자신을 보호하는 몇 가지 좋은 방법은 다음과 같습니다.
- 신뢰하는 IP 및 클라이언트에 대한 연결을 제한하십시오.
- 가능하면 Windows 통합 인증을 사용하고, 취약한 비밀번호를 사용하는 로그인은 비활성화하세요.
- SQL Server 인증을 사용해야 하는 경우 sa 로그인의 이름을 바꾸거나 비활성화하고 모든 로그인에 강력한 암호(10자 이상)를 설정하세요.