标签: aws-security-group

在AWS EC2上,我无法执行wget或curl或任何出站连接

在新安装的EC2上:

  1. 安全组是默认的.对于入站和出站,"所有流量"允许为0.0.0.0/0.

  2. "网络ACL"有入一定的局限性,因为我们希望我们的这个域名的网站,为我们的慈善组织的内部网络.但是从这台服务器,我们想通过SSH安装一些东西,所以我们需要wgetcurl.所以出境也是

    100 ALL Traffic 0.0.0.0/0 ALLOW

    • ALL Traffic 0.0.0.0/0 DENY

默认情况下会添加最后一个"DENY".

有了这些设置,这似乎很正常,我还缺少什么?请注意,所有iptables规则都已刷新,我们不会尽我所能使用iptables.所有防火墙内容都由Amazon VPC安全设置管理.

有什么想法或指针吗?谢谢.

curl amazon-ec2 vpc aws-security-group

8
推荐指数
1
解决办法
9021
查看次数

自引用aws安全组

我的应用程序在Web组件层中有ELB,NGNIX和ECS,我将所有这些组合在一个安全组中,并且ELB,NGNIX和ECS之间存在内部通信.我想为这三者之间的通信创建自我引用端口,我是否必须编写自我入侵规则或自我超越规则,这种通信是这三种入站还是出站之间的内部通信?

amazon-web-services aws-security-group

8
推荐指数
3
解决办法
4014
查看次数

为什么我们需要AWS中的私有子网+ NAT转换?我们不能只使用公共子网+正确配置的安全组吗?

因此,AWS中私有子网的目的是使其实例无法直接从外部访问.然而,有些情况(成功抵制'实例'双关语),其中实例可以访问互联网.一个这样的用例可以是例如下载软件更新.

实现这一目标的"标准"方法是使用NAT网关和路由表中的规则,将所有出站流量指向它(0.0.0.0/0 - > nat-gw).

令我困惑的是:我们不能只使用具有正确配置的安全组(SG)的公有子网来拒绝入站流量并允许特定的出站流量吗?由于SG是有状态的,它们应该允许对出站流量的响应通过,就像NAT网关一样.

我假设我只是遗漏了一些东西,或者上面的配置在某些方面受到限制,我只是没有看到.但是我无法找到答案.

nat subnet amazon-web-services aws-security-group

7
推荐指数
2
解决办法
447
查看次数

Auto Scaling 活动失败,因为 VPC 中不存在安全组

我在终止 EC2 实例时收到以下错误,并期望另一个实例生成并替换它。

Auto Scaling 活动于 81 秒前失败,并出现错误:VPC“Y”中不存在安全组“X”。启动 EC2 实例失败。2018-05-08T20:27:56Z 启动了一个实例,以响应所需容量与实际容量之间的差异,将容量从 0 增加到 1。

原因:

我认为问题在于创建 EB 环境后,我将安全组更改为我创建的另一个安全组,然后删除了默认安全组。

现在,即使 EC2 实例设置为使用新的安全组(在 EB 控制台中),它似乎仍然希望原始的默认安全组存在。

但我可能是错的。

我试过了:

我尝试通过指定我希望它在 .ebextensions 中使用的组来解决此问题。但我仍然遇到同样的问题。

option_settings:
  aws:ec2:vpc:
    VPCId: ...
    AssociatePublicIpAddress: 'true'
    ELBScheme: public
    ELBSubnets: ..., ...
    Subnets: ..., ...
  aws:autoscaling:launchconfiguration:
     SecurityGroups: XXX
Run Code Online (Sandbox Code Playgroud)

deployment flask amazon-elastic-beanstalk aws-security-group

7
推荐指数
1
解决办法
4739
查看次数

创建安全组时出错:在 Terraform 中定义 AWS 安全组时 InvalidGroup.Duplicate

我是 Terraform 的新手,当我运行 Terraform apply 时,出现以下错误:

Error: Error creating Security Group: InvalidGroup.Duplicate: The security group 'xxxxxxx' already exists for VPC 'vpc-xxxxxx'
        status code: 400
Run Code Online (Sandbox Code Playgroud)

这部分的脚本如下所示:

resource "aws_security_group" "xxxxx_security_group" {
  name   = "xxxxx-security-group-xxxx"
  vpc_id = xxxxxxxxxxxxx

  egress {
    from_port   = x
    protocol    = x
    to_port     = x
    cidr_blocks = ["x.x.x.x/x"]
  }
}
Run Code Online (Sandbox Code Playgroud)

有人可以给我一些提示吗?花了快一个小时了,还是没有任何线索……

error-handling duplicates amazon-web-services terraform aws-security-group

7
推荐指数
1
解决办法
1万
查看次数

如何将 VPC 和安全组分配给 AWS CDK 中的 Lambda?

我有一个带有需要插入 RDS 数据库的 lambda 函数的 AWS CDK 堆栈。部署堆栈时,lambda 函数无法访问数据库并给出错误:getaddrinfo ENOTFOUND [RDS 端点由我定义]。手动添加RDS数据库所在的VPC、子网和安全组后,lambda函数正常工作。

您如何在 AWS CDK 中定义 VPC、子网和安全组,最好是在 TypeScript 中?就文档而言,我尝试过:

const vpc = ec2.Vpc.fromLookup(this, "VPC", { vpcName: "myVPC" });

const securityGroup = ec2.SecurityGroup.fromSecurityGroupId(
  this,
  "SG",
  "sg-XXXXX"
);

const subnet1a = ec2.PrivateSubnet.fromSubnetAttributes(this, "SUBNET1A", {
  subnetId: "eu-central-1a"
});

const myLambda = new lambda.Function(this, "myLambda", {
  runtime: lambda.Runtime.NODEJS_12_X,
  code: lambda.Code.fromAsset("lambda"),
  handler: "myLambda.handler",
  description: "myLambda",
  environment: {
    DB_HOST: "XXXX",
    DB_USER: "XXXX",
    DB_PASSWORD: "XXXX",
    DB_NAME: "XXXX"
  },
  vpc: vpc,
  vpcSubnets: [subnet1a],
  securityGroups: [securityGroup]
});
Run Code Online (Sandbox Code Playgroud)

运行 cdk …

amazon-web-services aws-lambda aws-security-group aws-cdk

7
推荐指数
2
解决办法
8002
查看次数

EC2 实例入站规则不起作用

我有一个 Apache 服务器正在侦听端口 10801(在 Amazon linux EC2 实例上运行)。我已使用自定义 TCP 规则更新了安全组的入站规则,以允许所有流量到达端口 10801。该进程正在侦听端口 10801

>> sudo netstat -tulpn | grep :10801
tcp        0      0 :::10801                    :::*                        LISTEN      24534/httpd
Run Code Online (Sandbox Code Playgroud)

当我从浏览器中输入端口号时,它只是旋转并失败。我看到很多这样的问题,几乎每个问题都要求更新我已经完成的安全组。仍然无法通过端口 10801 访问服务。如果我在端口 80 上运行服务器,一切正常。似乎我在这里缺少一些东西,任何帮助都是值得赞赏的。

apache amazon-ec2 aws-security-group

6
推荐指数
1
解决办法
6455
查看次数

出站流量对于分配给 AWS RDS 实例的 AWS 安全组意味着什么?

如果要自己动手,在 AWS RDS 管理控制台中按“启动数据库实例”就相当于启动服务器守护程序。

控制台还具有将“安全组”关联到数据库实例的设置。

安全组本身具有“入站”和“出站”流量的设置。

安全组的入站和出站选项卡

“入站”流量意味着来自某处某个客户端的对服务器的请求。

“出站”流量是什么意思?这些仅仅是数据库服务器的响应吗?在这种情况下,入站和出站始终具有相同的端口范围和 IP 地址是否有意义?

与先前问题的关系

此 RDS 实例将与 ElasticBeanstalk 实例耦合,而不是VPC

amazon-web-services amazon-rds aws-security-group

6
推荐指数
1
解决办法
3330
查看次数

Terraform - 使用在单独文件中创建的安全组 ID 来创建 EC2 实例

我已使用模块在 AWS VPC 中创建安全组。如何在单独的文件中引用由此创建的资源?我正在同一存储库的单独目录中创建我们的堡垒实例。

我的堡垒配置如下所示,使用 Terraform EC2 模块,并且如果我对 vpc 安全组 ID 进行硬编码,则可以正常工作,但我希望它能够直接从创建安全组时获取它,因为这将来可能会发生变化..

terraform/aws/layers/bastion/main.tf

    provider "aws" {
        region = var.region
    }

    module "ec2-instance" {
      source = "terraform-aws-modules/ec2-instance/aws"

      name                   = "bastion"
      instance_count.        = 1
      ami                    = var.image_id
      instance_type          = var.instance_type
      vpc_security_group_ids = ["${}"]
      subnet_id              = var.subnet
      iam_instance_profile   = "aws-example-ec2-role"

      tags = {
        Layer = "Bastion"
      }
    }
Run Code Online (Sandbox Code Playgroud)

这就是我创建安全组的方式: terraform/aws/global/vpc/bastion_sg.tf

        module "bastion-sg" {
          source = "terraform-aws-modules/security-group/aws"
    
      name        = "Bastion"
      description = "Bastion example group"
      vpc_id      = "vpc-12345"
    
      ingress_with_cidr_blocks = [
        { …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services terraform aws-security-group infrastructure-as-code

6
推荐指数
2
解决办法
7869
查看次数

当这些属性处于同一级别时,aws cli 查询多个属性

我使用以下内容来查找与特定安全组关联的实例的信息

aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-123456 --output json
Run Code Online (Sandbox Code Playgroud)

这返回(部分输出)

{
    "NetworkInterfaces": [
        {
            "Attachment": {
                "AttachTime": "2019-10-09T07:15:44+00:00",
                "AttachmentId": "eni-attach-01234567",
                "InstanceId": "i-12345678",
                "InstanceOwnerId": "123456789",
                "Status": "attached"
            },
            "AvailabilityZone": "us-east-1c",
            "Description": "Primary network interface",
            "Groups": [
                {
                    "GroupName": "sg-number1",
                    "GroupId": "sg-123456"
                },
                {
                    "GroupName": "sg-number_2",
                    "GroupId": "sg-654321"
                }
            ],
Run Code Online (Sandbox Code Playgroud)

如果我只想获取实例 ID,那么我可以使用 --query 并沿着树向下查找

--query 'NetworkInterfaces[*].Attachment.InstanceId'
Run Code Online (Sandbox Code Playgroud)

我也可以做类似的事情来获得所有 SG

--query 'NetworkInterfaces[*].Groups[*].GroupId'
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在一个查询中获取 InstanceID 和 Group.GroupName ?

或者更好的是,当这些属性处于同一级别时,如何查询多个属性?

以下内容无效:

--query 'NetworkInterfaces[*].Attachment.InstanceId','NetworkInterfaces[*].Groups[*].GroupName'
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services aws-cli jmespath aws-security-group

6
推荐指数
1
解决办法
2328
查看次数