为什么配置的安全组规则不生效?
问题描述
实例(如ECS)安全组规则配置完成后,实际未生效。比如,添加的安全组规则是允许来自特定IP的流量访问安全组内实例,结果该流量还是无法访问实例。
背景知识
虚拟私有云VPC是您在云上的私有网络,通过配置安全组和网络ACL策略,可以保障VPC内部署的实例安全运行,比如弹性云服务器、数据库、云容器等。
- 安全组对实例进行防护,将实例加入安全组内后,该实例将会受到安全组的保护。
- 网络ACL对整个子网进行防护,将子网关联至网络ACL,则子网内的所有实例都会受到网络ACL保护。
除了VPC提供的安全策略,通常情况下您还可以配置实例的防火墙,进一步提升实例的安全。不同安全策略配合使用的工作原理图如图1所示。
基于以上情况,如果您的安全组规则配置完未生效,除了安全组本身参数的配置可能有误,还有可能是不同的安全策略之间存在冲突,具体请您参考以下指导处理。
排查思路
以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。
如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。
可能原因 |
处理措施 |
---|---|
安全组规则配置错误 |
解决方法请参考安全组规则配置错误。 |
网络ACL规则与安全组规则冲突 |
解决方法请参考网络ACL规则与安全组规则冲突。 |
实例防火墙限制端口访问 |
解决方法请参考实例防火墙限制端口访问。 |
实例属于不同VPC,网络不通 |
解决方法请参考实例属于不同VPC,网络不通。 |
安全组规则配置错误
当安全组规则配置有误时,无法按照规划的安全组规则对实例进行保护。您可以按照以下几点原因对安全组配置进行检查:
- 安全组规则方向设置错误,例如将需要在入方向添加的规则添加到出方向规则下。
- 出方向规则控制安全组内实例访问外部的请求,控制的是从实例流出的流量。
- 安全组规则协议类型未选择正确。
- 添加的端口是高危端口,对于运营商判断的高危端口,这些端口默认被屏蔽,在受限区域无法访问,此时建议您将端口修改为其他非高危端口。
常用端口说明及高危端口请参考弹性云服务器常用端口。
- 实际未开通业务所需的端口。
在安全组规则中放开某个端口后,您还需要确保实例(如ECS)内对应的端口也已经放通,安全组规则才会对实例生效。
请参考添加安全组规则中的“检查安全组规则是否生效”小节,检查ECS内端口开放情况,并验证配置是否生效。
网络ACL规则与安全组规则冲突
安全组对实例(如ECS)进行防护,网络ACL对子网进行防护。网络ACL规则与安全组规则冲突时,优先匹配网络ACL规则,可能会导致安全组规则不生效。
例如当您的安全组入方向规则放通80端口,但是同时设置的网络ACL规则拒绝80端口的访问,那么流量优先匹配网络ACL规则,此安全组规则不生效。
实例防火墙限制端口访问
安全组和防火墙都可以对实例(如ECS)进行防护,当在安全组中开通某个端口的访问时,ECS的防火墙可能限制该端口的访问,您需要关闭防火墙,或者在防火墙配置例外端口。
您可以参考Windows云服务器怎样关闭防火墙、添加例外端口?或Linux云服务器怎样关闭防火墙、添加例外端口?开放例外端口。
实例属于不同VPC,网络不通
安全组需在网络通信正常的情况下生效。若实例属于同一安全组,但是属于不同VPC,此时由于不同VPC网络不通,因此实例之间不能通信。
比如,您可以使用对等连接连通不同VPC网络,安全组才能对不同VPC内ECS的流量进行访问控制。VPC连接请参见应用场景。
提交工单
如果上述方法均不能解决您的疑问,请提交工单寻求更多帮助。