使用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
- 测试远程管理
- 测试通过
MSBuild
和Visual 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
用于添加入栈的规则, 如下图:
说明如下;
- 这里选择通过
IP Address
来限制 - 输入您的管理端的IP地址,例如你家里的公网IP
- 输入windows服务器的端口,例如桌面连接端口
- 选择协议。
- 输入优先级
- 输入一个名字。
保存之后就可以生效了。
到这里为了更安全的生产和管理,我们做了如下的安全配置:
- 区分用户,给不同的用户不同的权限。
- 更改了默认的服务端口,去掉了不必要的服务。
- 更改了windows的防火墙,配置入栈规则。
- 增加了
Azure
安全组上的访问限制,以及开放了不同的端口。 - 自动更新补丁。
嗯。到了这个地步理论上,安全工作还做得不错了。