我们正在构build一个基于云的应用程序,它依赖于login数据库以及许多单独的客户端数据库。 使用rackspace,我们使用SQL Management Studio 2012(Web)build立了一个服务器(windows server 2012),并在启动之前进行testing/ QA程序。
使用服务器事件查看器来查找一些debugging信息,我注意到有几个IP试图每隔一分钟左右与我们的SQL数据库build立连接。 我们使用默认的“sa”用户作为超级用户。
我的问题是:
我们可以设置一个最大数量的请求任何个人知识产权之前,“禁令”以某种方式吗?
将用户帐户名更改为随机有帮助吗?
我们可以采取其他措施来保护我们的数据库吗?
正如其他人所说,你的安全结构是错误的…这里说的是一些最佳实践,看看….也见链接到下面的全文。 我build议从头开始重新思考你的结构和安全方法。
http://www.serverwatch.com/tutorials/article.php/3554051/Lock-Down-IIS-and-SQL-Server.htm
基本的SQL Server安全清单
在您的SA帐户上设置密码并限制其使用。 此外,请定期更改密码以防止“传播”并被开发人员或pipe理员使用。 如果有人知道该密码,请更改SA密码。 使用eEye的工具来扫描您的networking的SQL服务器没有SA密码。
将SQL Server放在防火墙后面,与IIS或Web服务器分开。 只允许从这些指定的Web服务器连接到SQL服务器。 您的SQL服务器不应该是面向Internet的或可公开访问的。
从sysadminangular色中删除BUILTIN / Administrators,并将SQL中的sysadmin权限授予需要它的特定域帐户。
如果可能,请使用Windows身份validation和仅限Windows模式。 这样,潜在的黑客就必须首先对域进行身份validation,而不仅仅是对SQL Server进行身份validation。
不要在域控制器上运行SQL Server。
将SQL Server服务启动帐户更改为LocalHost以外的其他帐户。
启用失败login选项(服务器属性|安全性选项卡),以便您可以查找失败的login名以查看未经授权的人是否尝试访问服务器。 如果可能的话,监视SQL日志并使用NETSEND或电子邮件在SQL中设置警报。
随时了解操作系统和SQL的修补程序和服务包。 有关某些选项,请参阅保护IIS的工具。
保护任何扩展的存储过程。 通过存储过程控制所有数据访问,并授予对这些数据的访问权限,而不是给数据本身赋予db_datareader和db_datawriter权限。 有关更多信息,请参阅本文的第一部分。
更改服务器networkingconfiguration实用程序下的标准SQL Server端口并阻止默认端口1433.请让您的networkingpipe理员允许新的端口。
确保Everyone组对SQL Serverregistry项没有写访问权限
你应该真的把SQL Server从互联网和防火墙,所以不允许外部访问。 然后,使用VPN到每个客户站点。 是的,这不是最简单的设置,但它是在一天中的任何时间阻止随机连接尝试的唯一方法。 而且,随着更多的探测器发现你的SQL实例对外开放,“攻击”的速度往往会加快。
从安全的angular度来看,需要从实施的angular度来考虑。 另外,这是对SQL Server本身的访问; SSMS只是说SQL,所以你可以pipe理它。
首先,你不应该像别人指出的那样使用SA。
其次,这个服务器不应该暴露在互联网上,因为你看到的原因。 Nathan C说的; 设置一个VPN。
最后,除非您使用证书专门configurationSQL,否则默认情况下stream量未encryption,并受到嗅探。 (不是用户名/密码,而是您的实际数据。)
严重的是,这几乎肯定是对PCI的违反。 请防火墙closures。
我会阻止TCP端口1433(由SQL Management Studio使用的端口)在防火墙中用于外部IPS,并且只允许本地主机或一组可信的IPS。