Skip to main content

使用Azure虚拟机创建一个功能完备的网站 - 配置安全规则

分类:  Windows Server 标签:  #Azure #基础 #Windows #.Net #Web 发布于: 2023-06-15 19:35:23

我们之前通过一些类的配置,已经完成了创建Azure资源,配置Windows Server 2019 Datacenter作为一个Web服务器,添加了自定义的用户,并给用户分配了权限,设置了网站目录的权限,同时我们在服务器上启用了远程管理和远程通过Web Deploy进行发布的组件,这一切都看起来很美好,我们已经可以开始进行开发,测试和部署了。

但是等一等,我们清单上是不是还有没有完成的事项?

检查一下清单吧:

  • 安装Web角色和服务
  • 安装Asp.net Core Module
  • 配置用户
  • 创建我们的站点
  • 启动IIS的远程管理
  • 安装Web Deploy
  • 配置Windows Server上的防火墙
  • 配置Azure Virtual Network Security Group
  • 测试远程管理
  • 测试通过MSBuildVisual Studio远程更新和发布站点

清单里有一个配置防火墙的项目,这提醒我们了,我们必须对于我们远程要管理的机器,考虑它的安全问题。

这一节我们谈谈安全问题。

默认情况下对于操作系统,我们只需要定时更新操作系统,定时打补丁,更新,启用windows防火墙,那么在操作系统这个层面无需太过于担心,交给微软来搞定操作系统的安全性问题,但是作为用户还是需要考虑是否由于管理不当,从而造成安全事故的。虽然我们之前也已经做了一些事情,但是不够。

我们已经按照功能区分了用户的权限,用户只能处理自己能力范围的事情,防火墙默认启用了,我们启用了Azure的安全组,过滤不必要的访问,还能做更多吗?

完全可以!

我们可以:

  • 更改远程服务的默认端口,减少注意力
  • 限制可以远程访问的地址,只允许自己的管理地址访问远程管理服务。

更改远程服务的默认端口

选用windows服务器有一个好处是,安装完操作系统之后,是一个非常干净的系统,除了基本的服务管理工具,基本的服务组件,管理工具,没有其他的任何组件,用户需要按需安装,不要在服务器上安装任何多余的工具或者服务,尤其是允许远程访问和使用的服务,以及工具。

我们这台服务上仅仅启用了web服务,以及远程IIS管理服务,远程桌面连接。

Web服务是公用端口,是无法更改的,但是我们也限制了Web服务仅仅提供Asp.net Core的以及基本的Web服务,其他像CGI, 远程包含服务,统统都关闭了。

更改远程桌面服务的端口

要更改远程桌面的服务端口,我们需要通过更改注册表的值:
依次更改如下两项:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

这两项的端口都是3389, 更改为你喜欢的端口数字,例如9999, 改完之后,重启该服务,或者直接重启服务器。

更改远程IIS管理服务端口

在服务器上启动IIS管理器,如下图:


然后如下图更改端口:


在3处更改端口就可以了,然后注意重启该服务。或者重启计算机。

开放Windows防火墙规则

Windows服务器上启动默认端口,防火墙会感知,默认帮助用户配置防火墙,但是更改完端口后,需要手动开放一下端口。按如下的步骤开发上述你更改完的端口。

在服务器上启动服务管理器,然后选择右侧的工具:


启动防火墙高级管理工具之后:


按照上图的1,2,3添加规则,选择按端口
下一步:


输入我们要允许的端口

然后下一步下一步就可以完成规则的添加了。

按照如上的步骤,添加好服务器上的端口之后,即可以完成服务器本身的防火墙的配置了。

开放安全组上的端口以及限制IP访问

不要忘了,我们的服务是运行在Azure上的虚拟机,Azure提供了安全组,用于限制用户的访问,所以我们需要在安全组上也开放端口,开放端口的步骤如下:

登录到Azure Portal, 然后找到安全组所在的资源:


选择Inbound Security Rule, 然后选择Add用于添加入栈的规则, 如下图:


说明如下;

  1. 这里选择通过IP Address来限制
  2. 输入您的管理端的IP地址,例如你家里的公网IP
  3. 输入windows服务器的端口,例如桌面连接端口
  4. 选择协议。
  5. 输入优先级
  6. 输入一个名字。

保存之后就可以生效了。

到这里为了更安全的生产和管理,我们做了如下的安全配置:

  1. 区分用户,给不同的用户不同的权限。
  2. 更改了默认的服务端口,去掉了不必要的服务。
  3. 更改了windows的防火墙,配置入栈规则。
  4. 增加了Azure安全组上的访问限制,以及开放了不同的端口。
  5. 自动更新补丁。

嗯。到了这个地步理论上,安全工作还做得不错了。