把SQL SERVER数据库暴露在公网合适不?
公司有一套系统,是C/S架构的。为了能让出差人员或者异地业务部人员能访问系统,老大设想将SQL SERVER数据库暴露在公网,即申请个静态IP,或使用动态域名解析。
请问这样有什么风险?是否可行?
或者使用什么方案更好?
------解决方案--------------------风险非常大,数据库与应用不应该直接连接,并且暴露在公网,后果自负,比较合理的是应用程序发送请求到中间层,由中间层处理后再到数据库层,中间可以有些防火墙之类的。
至于出差人员能直接远程访问数据库的需求不合理,如果真有这样的情况,建议使用证书、vpn、跳板机等方式加多一些中间环节,直链死翘翘。
安全性方面我这里有一份文档:http://download.csdn.net/detail/dba_huangzj/5395925
------解决方案--------------------建议:
1.修改SQL Service的默认端口,即非默认的1433.
2.SQL Server SP补丁包应安装.
3.检查sa帐号密码强度是否足够,必要时可禁用sa帐号.
4.服务器windows防火墙需开启.
5.服务器windows需经常更新(windows update).
6.时常关注windows日志及SQL日志是否有异常信息.
------解决方案--------------------你们公司的这个c/s系统,难道是直接从客户端连接的sql server嘛,没有经过应用服务器吗?
------解决方案--------------------如果是没有应用服务器的,这样直接让客户端连接数据库,那个是相当不安全啊。
我记得之前,有qq网友,让我看一个程序,就是个普通的程序,是个尝试连接所有公网上的ip的1433端口,然后用户名sa,各种简单的密码,去尝试,连接进去,然后取得系统的最高权限,然后就成了肉鸡了。。。
所以,如果真的是要暴露在公网上,至少:
1、sql server不要使用默认的1433端口,改成其他不常用的端口。
2、在防火墙上做设置,只允许必须的端口,哪些telnet、ftp等的端口都关闭
3、服务器上,关掉所有不必要的服务,因为服务开的越多,就漏洞也越多。
4、给服务器打上最新的补丁。
5、如果可以的话,采用一些硬件的方式,比如:加密狗,插在客户端上,然后在登录时,除了要服务器地址,用户名和密码都对,加密狗的值,必须与服务器上存储的相同。
6、在服务器级别,最好用数据库审计,来对数据库的操作进行记录,不过sql server的审计功能不够详细。
------解决方案--------------------可以连接VPN再访问,直接公开在公网是很不安全的。
------解决方案--------------------小心被注入到死。。
------解决方案--------------------是什么语言写的c/s
如果是delphi,改为多层的c/s,应该很方便
如果重新改写,建议以 web应用 作为中间层,client/webserver模式
既保留client的操作便利,又无须数据库对外、甚至vpn都用不到。。。。
------解决方案--------------------
按照上面的说法,至少也得要通过vpn来连接,这个还有加密,还安全一点
------解决方案--------------------
https安全点
------解决方案--------------------你对别人的意见有什么不满?