数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

让防火墙与SQL Server数据库共存


发布日期:2024年03月20日
 
让防火墙与SQL Server数据库共存

安全与性能是数据库管理员的两块心头肉而通过防火墙来保护数据库的安全无疑是一种不错的选择但是有时会防火墙与SQL Server数据库也会闹矛盾防火墙如果配置不当的话不但不能够起到其应有的保护作用而且还会阻止客户端的合法连接为此如果想让防火墙与SQL Server数据库共存的话还不是一件简单的事情对于这个问题笔者有如下几条建议或许这些建议能够给各位数据库管理员在数据库与防火墙部署的时候提供一定的帮助

建议一先部署数据库再部署防火墙

导致客户端无法连接上数据库服务器的原因有很多而防火墙的限制无疑也是其中的一种为了降低故障排除的复杂程度笔者建议数据库管理员在部署的时候最好先把防火墙关掉即先部署数据库然后再部署防火墙或者说在防火墙存在的情况下如果发现客户端无法正常连接到数据库最好先把防火墙关掉然后再看看能够正常连接这主要可以帮助数据库管理员简单的来判断这个连接故障是不是因为防火墙的不恰当配置所造成的在排除防火墙配置错误的时候这个方法非常的有用如果确实是因为防火墙的原因而数据库管理员还一直在数据库管理系统或者客户端那边寻找原因那就是白花力气同理如果确实是数据库服务器的问题而不是防火墙的配置所造成的连接故障但是数据库管理员却是在寻找防火墙的麻烦那也是自讨苦吃所以笔者建议大家在部署数据库的时候(不仅限于SQL Server数据库系统)最好先把已经存在的防火墙关闭掉等到客户端能够正常连接到服务器后再尝试启动防火墙

建议二根据数据库开启的服务来开启防火墙的端口

从安全上来说数据库服务器的端口开启的越少越好但是数据库的有些服务必须要开启某些特定的端口否则的话某些服务就会受到影响为此从安全与性能上综合考虑的话就要求数据库管理员根据数据库要采用的服务来开启防火墙的端口

如在SQL Server数据库中启用了复制功能的话就需要在防火墙上开启端口(这是数据库默认的给复制服务启用的端口)当然数据库管理员也可以跟网络管理员商量最终所采用的端口另外如果采用复制快照则进行WEB同步或者FTP访问则要求在防后墙上打开其他需要的端口如快照复制通过FTP实现的话为了将数据文件和架构从一个位置传输到网络上的另外一个位置则需要在防火墙上开启端口以允许FTP协议的数据通过这个端口而通常情况下为了安全起见是把这个端口关闭的而如果在复制功能中如果需要用到HTTP或者文件和打印共享服务时还需要打开端口等等否则的话由于防火墙的阻挡这些服务将无法正常使用

另外SQL Server数据库中有些服务的话是没有指定端口的数据库管理员可以根据实际需要来确定所需要采用的端口如数据库的镜像服务其没有指定所需要采用的端口而是要求数据库管理员来选择端口此时数据库管理员就可以根据服务器端口的实际采用情况来设置到底开启哪个端口为好在配置的时候如果数据库服务器中还部署有其他英勇的话就需要避免与其他服务端口的沖突

SQL Server数据库的相关服务有很多如还有报表服务Browser服务(用于侦听指向命名实例的传入连接并为客户端提供与此命名实例对应的TCP端口号)等等若数据库管理员以为客户端的连接故障是由于防火墙所引起的那么数据库管理员就需要查看微软的官方文档看看对应服务所需要开启的端口在防火墙中是否已经打开

建议三管理好动态端口

以上这些服务的端口基本上是静态的只需要在防火墙上把这些端口打开即可没有多大的难度而其管理的难点是有些服务采用的是动态的端口这会给数据库服务器上防火墙的配置带来一定的麻烦因为端口不固定所以有时候防火墙就无法适从了

如通常情况下数据库中有一个叫做命名实例的服务这个服务采用的就是动态端口也就是说每次启动数据库服务器的时候数据库引擎都将确定一个服务器没有使用的端口作为自己的端口即每次采用的端口都不一致默认情况下SQL Server数据库引擎采用的TCP端口号为但是如果在这台数据库服务器上还部署有其他的数据库引擎如Oracle数据库系统或者MySQL数据库系统则可能这个端口已经被他们所采用了则此时SQL Server数据库系统引擎将无法使用这个端口此时数据库引擎就会另外选择一个可用的端口可见由于数据库引擎或者数据库服务器在每次启动的时候所采用的端口都可能不同为此很难在防火墙上启用对正确端口的访问(防火墙不会跟数据库引擎互动)也就是说防火墙不会去侦测数据库引擎到底启用哪些端口所以如果在数据库服务器上配置了防火墙则在数据库部署的时候如果某些服务采用了动态端口则数据库管理员需要把他们配置为固定端口或者静态端口以保证数据库引擎每次都采用同一的端口号

在SQL Server数据库中把动态端口设置为固定端口其难度不是很大只是如果启用的服务比较多的话工作量可不算小下面笔者就谈谈如何通过企业管理器来设置固定端口

第一步打开TCP/IP属性对话框在数据库配置管理中打开网络配置选项然后单击要配置的服务器实例此时在右面窗口中会显示相关的内容管理员需要找到TCP/IP这项内容并双击它以打开TCP/IP属性对话框

第二步设置可用的端口号在TCP/IP属性对话框中找到TCP端口页签在这个页签中就是当前SQL Server数据库所采用的端口号数据库管理员需要在这个地方把需要采用的端口信息加入到这个页签中那么操作系统在分配端口的时候会把这个端口信息预留给数据库系统注意数据库管理员手工数据的端口最好能够采取后面一些的端口号如此的话发生端口沖突的几率就会少许多

第三步关联相关的服务设置好端口后此时还没有关联到具体的服务数据库管理员还必须把新设置的端口与数据库的服务关联起来此时就需要单击SQL Server服务找到相关的服务后选择重新启动当数据库引擎重新启动时就会将新的端口给这个服务所使用以后每次数据库引擎重新启动之后这个服务都将采用这个端口为此在防护墙上只需要把这个端口打开即可

所以说对于动态端口来说防火墙配置有一定的难度此时最理想的方式就是把数据库服务所采用的动态端口改为静态端口或者固定端口上面笔者介绍得就是把数据库服务的动态端口改为静态端口的基本步骤各位数据库管理员可以尝试利用这种方法试试看

建议四出现连接故障时的排错步骤

如果在数据库服务器上部署了防火墙此时如果客户端发生无法连接到服务器的现象那么此时最佳的排错步骤是什么呢?如何才能够在最短时间内找到问题的原因呢?为此笔者有如下这个建议

首先数据库管理员必须先保证服务器与客户端之间网络的连通性数据库管理员可以利用ping命令或者求助网络管理员来判断服务器与客户端之间的连接是否有问题有则改之没有的话则进行下面一个步骤

第二把防火墙先禁用掉如果服务器与客户端之间的网络连通没有问题那么此时数据库管理员就需要判断是防火墙的问题还是数据库服务器本身的问题要判断这个故障的起点最简单的方法就是把防火墙禁用掉如果防火墙禁用后客户端访问服务器正常了那么就说明是防火墙在作怪;而过此时故障还依旧那么就是数据库本身的问题了不过此时也先不要急着把防火墙启用起来等到故障修复后再重新启用防火墙为好这么处理就是让数据库环境尽量的简单以加速排错的过程

第三如果是防火墙的问难那么就先查看SQL Server数据库所需要采用的端口并在防火墙中全部打开因为有些服务的话可能需要很多个端口;而某些服务又会引用其他的服务而这被引用的服务也需要新的端口为此及时是数据库专家也很难一下子说清楚某个服务到底需要哪些端口为此就把用到的端口先一一打开然后再逐渐的关闭从而可以确定某个服务需要引用哪些服务采用哪些端口

上一篇:微软宣布SQL Server R2圣诞节发布

下一篇:MS SQL Server和MySQL区别