如何排查 AWS Config 规则 vpc-sg-open-only-to-authorized-ports 和 Systems Manager Automation 文档 AWS-DisablePublicAccessForSecurityGroup 的错误“InvalidPermission.NotFound”?

上次更新时间:2020 年 8 月 12 日

我已创建 AWS Systems Manager Automation 文档 AWS-DisablePublicAccessForSecurityGroup 来禁用 SSH 和 RDP 端口。但是,自动修复因 AWS Config 规则 vpc-sg-open-only-to-authorized-ports 而失败。我收到了与以下类似的错误消息:

“调用 RevokeSecurityGroupIngress 操作时发生错误 (InvalidPermission.NotFound):该安全组中不存在指定的规则。”  

简短描述

AWS Config 规则将检查安全组是否允许入站 TCP 或 UDP 流量到达 0.0.0.0/0。例如,要允许 TCP 端口 443 和 1020-1025 访问 0.0.0.0/0,请在 AWS Config 规则参数中指定这些端口。SSM 文档 AWS-DisablePublicAccessForSecurityGroup 限于默认 SSH 22 和 RDP 3389 端口,这些端口对所有 IP 地址 (0.0.0.0/0) 或指定的 IPv4 地址(使用 IpAddressToBlock 参数)开放。

解决方法

RevokeSecurityGroupIngress API 操作的客户端错误 InvalidPermission.NotFound 表示目标安全组没有入站规则,或者它不在默认 Amazon Virtual Private Cloud (Amazon VPC) 中。

重要提示:开始之前,请确保您已安装配置 AWS 命令行界面 (AWS CLI)。

要验证错误消息,请运行 AWS CLI 命令 describe-remediation-execution-status,它类似于以下内容:

aws configservice describe-remediation-execution-status --config-rule-name vpc-sg-open-only-to-authorized-ports --region af-south-1 --resource-keys resourceType=AWS::EC2::SecurityGroup,resourceId=sg-1234567891234567891

安全组的入站规则必须使用以下模式之一指定打开的端口:

0.0.0.0/0

::/0

SSH or RDP port + 0.0.0.0/0

SSH or RDP port + ::/0

要为其他端口(包括 22 和 3389)配置自动修复,可以使用自定义 SSM 文档来自动执行该流程。有关说明,请参阅创建 Systems Manager 文档