首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用安全组拒绝所有来自亚马逊网络服务EC2实例的出站流量?

如何使用安全组拒绝所有来自亚马逊网络服务EC2实例的出站流量?
EN

Stack Overflow用户
提问于 2017-08-11 16:02:11
回答 3查看 13.7K关注 0票数 13

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

我正在使用亚马逊网络服务CloudFormation,我们应该如何定义适当的安全出口规则?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-11 19:07:54

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

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

但是,请注意,安全组是有状态。这意味着,如果入站安全组允许连接(例如,进入web服务器的请求),响应将被自动允许退出服务器。因此,只有当入站和出站安全组均为空(取决于您的配置)时,才会真正被阻止。

阻止服务器的其他选项是基于主机的防火墙规则(即操作系统内的配置)或使用在子网级别运行的网络访问控制列表(NACL)。NACL具有拒绝规则,可以阻止进出子网的流量(但不能阻止发往特定实例的流量)。

更新

结果是,如果没有提供出口规则,则默认的Allow All规则应用于安全组。

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

例如:

代码语言:javascript
运行
复制
"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"
      }
    ]
  }
票数 19
EN

Stack Overflow用户

发布于 2017-08-11 19:17:50

即使CloudFormation不允许空的SecurityGroupEgressSecurityGroupIngress属性,您也可以通过只允许所有到本地主机的出站流量来欺骗它:

代码语言:javascript
运行
复制
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

这将达到阻止所有出站流量的目的。

票数 10
EN

Stack Overflow用户

发布于 2017-08-11 16:42:24

在您的CloudFormation脚本中,您可以在'SecurityGroupEgress‘属性下包含自定义规则,如下所示。

代码语言:javascript
运行
复制
"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 UserGuide

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45629965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档