如何使用安全组拒绝来自 AWS EC2 实例的所有出站流量?

问题描述 投票:0回答:4

我正在尝试设置 AWS 安全组出口规则来阻止所有出站流量。众所周知,默认情况下,安全组允许所有出站流量。

我正在使用 AWS CloudFormation,我们应该如何定义适当的安全出口规则?

amazon-web-services amazon-ec2 aws-cloudformation
4个回答
27
投票

安全组始终定义允许流量。对于安全组来说,没有 DENY 的概念。

因此,如果您想拒绝所有流量,只需拥有一个空的安全组

但是,请注意,安全组是“有状态的”。这意味着,如果入站安全组允许连接(例如,请求进入 Web 服务器),将自动允许响应退出服务器。因此,只有当入站和出站安全组都为空时(取决于您的配置),它才会被真正阻止。 阻止服务器的其他选项是基于主机的防火墙规则(即操作系统内的配置)或使用在子网级别运行的网络访问控制列表 (NACL)。 NACL 具有 DENY 规则,可以阻止流量进出子网(但不能阻止特定实例)。

更新

事实证明,如果未提供出口规则,则默认的“全部允许”规则将应用于安全组。

因此,您需要提供一个不执行任何操作的规则,以便默认规则不适用。

例如:

"InstanceSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId": { "Ref": "VPC" }, "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "CidrIp": "0.0.0.0/0" } ], "SecurityGroupEgress": [ { "IpProtocol": "tcp", "FromPort": "1", "ToPort": "1", "CidrIp": "0.0.0.0/32" } ] } }



13
投票
SecurityGroupEgress

SecurityGroupIngress
属性,您也可以通过仅允许所有出站流量到本地主机来欺骗它:

AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Resources: InstanceSecurityGroup: Type: "AWS::EC2::SecurityGroup" Properties: GroupName: block-outbound GroupDescription: Allow http to client host SecurityGroupEgress: - IpProtocol: -1 CidrIp: 127.0.0.1/32 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 VpcId: !Ref myVPC

这将实现您阻止所有出站流量的目标。


0
投票


-2
投票

"InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Allow http to client host", "VpcId" : {"Ref" : "myVPC"}, "SecurityGroupIngress" : [{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" }], "SecurityGroupEgress" : [{ "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" }] } }

有关更多详细信息,请查看 
AWS 用户指南

© www.soinside.com 2019 - 2024. All rights reserved.