SQL Server在互联网上

我有一个桌面应用程序直接连接到SQL Server,我看到很多post说你不应该直接向互联网公开SQL Server,但没有人说为什么。 一些背景:

  • 可伸缩性,负载平衡和其他性能标准对我的情况不是问题
  • 我的应用程序需要在本地(使用本地SQL Server)或远程存储库上工作,以便多个用户可以共享数据(托pipeSQL Server,这是我的问题)

我注意到连接到SQL Azure看起来非常像一个标准的远程SQL Server( http://www.windowsazure.com/en-us/develop/net/how-to-guides/sql-database/#using-sql服务器 )

我知道打开任何端口是一个inheritance漏洞,但这不是唯一的原因。 我一定错过了一些东西,但是我不确定是什么?

除了将我的应用程序的下半部分作为Web服务部署以外,还有什么其他的select?

有几个原因,但最有意思的是,一个没有经验的SQL服务器和networking安全的人可能会犯一个或多个常见的错误。

例如,您可以使用“sa”SQLlogin进行连接,这是默认的sysadmin帐户,并且可以完全控制SQL Server。

或者,您可能正在使用另一个SQL Serverlogin密码较弱的密码,因此攻击者可以尝试进行暴力攻击以提升其权限。

或者您可能已经启用了一些默认的只读用户acocunt(对于这个或任何其他应用程序),这将被攻击者主动扫描并利用脚本,以便他们可以从数据库中检索数据。

一些很好的措施来保护自己免受最基本的远程攻击:

  • 限制与您信任的IP和客户端的连接
  • 尽可能使用Windows集成身份validation,并禁用任何使用弱密码的login
  • 如果您必须使用SQL Server身份validation,请重命名/禁用salogin,并在所有login名中设置强密码(> 10个字符)