创建实例时应避免安全组开放运维端口的所有访问来源IP授权,安全组应仅开启必要端口并限制仅允许从指定IP进行访问。
安全风险
云服务器的运维端口,如Linux系统的SSH(22端口)和Windows系统的RDP(3389端口),是管理员远程管理服务器的“大门”。如果在安全组中将这些端口的访问权限设置为对所有IP(即0.0.0.0/0)开放,就等于将这扇大门向整个互联网敞开:
暴力破解攻击: 攻击者可以利用自动化工具,持续不断地尝试使用常见用户名和密码组合来登录您的服务器。一旦成功,他们便能完全控制您的服务器。
数据泄露与篡改: 入侵者可以窃取、修改您服务器上的核心业务数据,给您的业务带来直接损失。
恶意软件植入: 服务器可能被用作僵尸网络的一部分(肉鸡),用于发起DDoS攻击、挖矿或作为进一步攻击其他网络的跳板。
最佳实践
通过安全组,仅开启必要的端口,并且端口限制只能允许指定来源IP访问。
控制台
API
使用CreateSecurityGroup接口创建一个新的安全组,再通过AuthorizeSecurityGroup接口增加必要的入方向规则,可指定
SourceCidrIp
参数限制来源访问IP。使用RunInstances或者CreateInstance接口创建实例时,指定
SecurityGroupId
参数来加入安全组。
合规能力
检查:是否存在运维端口所有IP开放的安全组
ECS使用成熟度评估与洞察
选择安全性能力页签,单击检查项安全组的特定端口无限制访问,可以查看特定端口任意IP(即0.0.0.0/0)访问的实例。
云安全中心
前往云安全中心控制台。
在左侧菜单栏选择
,选择云产品配置风险页签,查找名为22端口禁止任意IP访问、3389端口禁止任意IP访问的检查项,单击操作列的扫描按钮。若状态显示为未通过,表示存在开启任意IP访问22或3389端口的实例,可单击详情进行查看。
拦截:禁止运维端口任意IP访问的实例创建操作
在组织或账户层面通过RAM Policy策略,主动拦截安全组中端口任意IP访问的规则。
针对企业用户:
使用阿里云主账号登录资源目录控制台,单击左侧菜单栏的管控策略,创建自定义权限策略,粘贴以下JSON内容。
限制端口任意IP访问的实例创建、安全组创建与修改操作。
{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "StringLike": { "ecs:SecurityGroupIpProtocols": [ "TCP" ] }, "CIDRInRange": { "ecs:SecurityGroupSourceCidrIps": [ "0.0.0.0/0" ] } } }, { "Effect": "Deny", "Action": [ "ecs:CreateInstance", "ecs:RunInstances" ], "Resource": "*", "Condition": { "Bool": { "ecs:NotSpecifySecureGroupId": [ "true" ] } } } ] }
在资源目录中选择合适的节点绑定策略,策略将对目录下的账号产生拦截效果。
针对非企业用户:
修复:修改安全组规则
修改现有安全组规则,将授权对象从 0.0.0.0/0 更改为具体的、可信的IP地址段。
定位不安全的规则: 使用检查部分的方法找到存在风险的安全组和规则。
修改规则:
前往ECS控制台-安全组,找到目标安全组,单击操作列的管理规则,
找到对应的规则(例如,端口为22,授权对象为0.0.0.0/0的规则),单击编辑,将授权对象更新为可信来源IP,单击确定。
使用阿里云Workbench远程连接实例时,安全组入方向规则如下表所示。
授权策略 | 优先级 | 协议类型 | 端口范围 | 授权对象 |
允许 | 1 | 自定义TCP |
|
|
为了安全和稳定,运维端口建议不要对公网IP(包括办公网出口)开放,请考虑开放VPC内网IP进行访问。更多信息,请参见安全组应用指导和案例。