我正在连接到安装了 SQL Server 2008 R2 Express 的 Windows 2008 R2 Server。我通过远程连接进行连接,不在同一个 LAN 上。我通过 VS2010 连接到 SQL Server 2008 R2 Express。这只是远程建立的数据库连接。这个远程连接安全吗?如果安全,那么如何安全?SSL 与此有什么关系吗?远程连接时,用于远程登录 SQL Server 的密码如何安全?
答案1
不,这种连接并不安全,因为人们可以嗅探数据包并查看返回的数据(或部分数据)。您需要证书、IPSEC、VPN 或类似的东西。
如果您使用 Windows 凭据登录 SQL Server,则应该更安全 - AD。但是,由于它不在同一个 LAN 上,听起来您可能正在使用 SQL 登录,这本质上不如 Windows 域帐户安全。
答案2
如果配置了,SQL Server 可提供隐私(即加密)和防篡改(即签名)。保护确实是使用 SSL 完成的(实际上是 TLS,详情...)。请参阅加密与 SQL Server 的连接和如何:启用与数据库引擎的加密连接了解详细信息,包括实施步骤。
关于密码的问题是一个完全不同的话题。SQL Server 支持两种身份验证模式:Windows 和 SQL 身份验证。如果您的连接字符串指定了Trusted Connection=True
,则Trusted connection=SSPI
您使用 Windows 身份验证。如果您指定了用户和密码,User ID=Carpenter;Password=secret
则您使用 SQL 身份验证。
Windows 身份验证将使用 NTLM 或 Kerberos,这两种身份验证都不需要通过连接发送密码。但是,如果您使用 SQL 身份验证,则密码将在握手期间通过连接发送。如果连接不受 SSL 隧道保护,则密码将以明文形式显示,任何人都可以窃取。
只要您强制使用 SSL(链接的文章逐步展示了如何执行此操作),您就是安全的。