当入侵者通过扫描ECS实例的开放端口,发现可以使用的端口,例如Windows的远程端口(3389)和Linux的远程端口(22),就会发起攻击。您可以通过修改默认的远程端口或者限制远程访问来源防止攻击。本文以Windows Server 2012 R2系统ECS实例为例,介绍如何使用高级安全Windows防火墙限制远程访问的IP来源。

前提条件

使用本教程进行操作前,请确保您已经注册了阿里云账号。如还未注册,请先完成账号注册

背景信息

高级安全Windows防火墙(简称WFAS)是分层安全模型的重要部分。通过为计算机提供基于主机的双向网络通讯筛选,阻止未经授权的网络流量流入或流出本地计算机,通过网络感知技术将相应安全设置应用到计算机连接到的网络类型。高级安全Windows防火墙将Windows防火墙和Internet协议安全性(IPsec)结合在一起,集成到单个Microsoft管理控制台(MMC)中,因此高级安全Windows防火墙也成为网络隔离策略的重要部分。

说明 本文操作步骤不适用于Windows Server 2016系统ECS实例。对于Windows Server 2016系统ECS实例建议您通过添加安全组规则限制远程访问来源,详情请参见 安全组应用案例案例四:只允许实例访问外部特定IP地址。安全组规则添加步骤请参见 添加安全组规则

使用Microsoft管理控制台配置高级安全Windows防火墙

  1. 启用防火墙。
    1. 按快捷键Win(Windows 徽标键)+R,启动运行窗口。
    2. 输入firewall.cpl后按回车键。
      run
    3. 单击启用或关闭 Windows 防火墙,查看防火墙状态。
      默认情况下,防火墙是关闭状态。
    4. 启用所有网络类型的Windows防火墙,并单击确定
      fire1
  2. 查看远程RDP端口3389。
    1. 按快捷键Win(Windows 徽标键)+R打开运行窗口。
    2. 输入wf.msc后按回车键。
      wf
    3. 单击入站规则,查看入站规则Open RDP Port 3389默认放行的端口是3389。
      ru
  3. 添加远程RDP端口3389至高级安全 Windows 防火墙
    1. 单击新建规则,显示新建入站规则向导对话框。
    2. 选择创建的规则类型端口,单击下一步
    3. 协议选择TCP,端口填写为3389,单击下一步
      sa1
    4. 选择允许连接,单击下一步
    5. 保持默认配置,单击下一步
    6. 设置规则名称,例如RemoteDesktop,单击完成
  4. 配置作用域。
    1. 右键单击已创建的入站规则RemoteDesktop,选择属性
    2. 作用域页签下,远程 IP 地址选择为下列 IP 地址,并添加一个或多个IP地址或CIDR地址段,单击确定
      ip
      注意 启用作用域后,除了作用域里设置的远程IP地址,别的地址将无法远程连接此服务器。
  5. 验证作用域。在远程IP地址里面添加其他任意IP地址,单击确定
    ip2
    远程连接会自动断开,表示作用域已生效。
    如果远程连接没有断开,右键单击入站规则Open RDP Port 3389,选择禁用规则
  6. 通过ECS管理控制台,更换作用域中的远程IP地址为办公环境的公网地址,恢复远程连接。
    1. 登录ECS管理控制台
    2. 在实例列表中,找到需要连接的实例,在操作列中,单击远程连接
      远程连接
    3. 输入远程连接密码对话框中输入密码,单击确定
    4. 修改入站规则RemoteDesktop作用域的远程IP地址,将之前设置的1.1.1.1修改为您需要授权的IP地址。

使用命令行配置高级安全Windows防火墙

您还可以使用命令行 netsh设置高级安全Windows防火墙。以下列表列举了 netsh命令的使用示例:
  • 导出防火墙配置文件。
    netsh advfirewall export c:\adv.pol
  • 导入防火墙配置文件。
    netsh advfirewall import c:\adv.pol
  • 防火墙恢复默认设置。
    netsh advfirewall reset
  • 关闭防火墙。
    netsh advfirewall set allprofiles state off
  • 开启防火墙。
    netsh advfirewall set allprofiles state on
  • 设置所有配置文件的默认防火墙策略为阻挡入站并允许出站通信。
    netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
  • 删除名为ftp的规则。
    netsh advfirewall firewall delete rule name=ftp
  • 删除本地端口80的所有入站规则。
    netsh advfirewall firewall delete rule name=all protocol=tcp localport=80
  • 添加远程桌面的入站规则,允许端口3389。
    netsh advfirewall firewall add rule name=远程桌面(TCP-In-3389) protocol=TCP dir=in localport=3389 action=allow