在新安装的EC2上:
安全组是默认的.对于入站和出站,"所有流量"允许为0.0.0.0/0.
"网络ACL"有入一定的局限性,因为我们希望我们的这个域名的网站,为我们的慈善组织的内部网络.但是从这台服务器,我们想通过SSH安装一些东西,所以我们需要wget和curl.所以出境也是
100 ALL Traffic 0.0.0.0/0 ALLOW
默认情况下会添加最后一个"DENY".
有了这些设置,这似乎很正常,我还缺少什么?请注意,所有iptables规则都已刷新,我们不会尽我所能使用iptables.所有防火墙内容都由Amazon VPC安全设置管理.
有什么想法或指针吗?谢谢.
我的应用程序在Web组件层中有ELB,NGNIX和ECS,我将所有这些组合在一个安全组中,并且ELB,NGNIX和ECS之间存在内部通信.我想为这三者之间的通信创建自我引用端口,我是否必须编写自我入侵规则或自我超越规则,这种通信是这三种入站还是出站之间的内部通信?
因此,AWS中私有子网的目的是使其实例无法直接从外部访问.然而,有些情况(成功抵制'实例'双关语),其中实例可以访问互联网.一个这样的用例可以是例如下载软件更新.
实现这一目标的"标准"方法是使用NAT网关和路由表中的规则,将所有出站流量指向它(0.0.0.0/0 - > nat-gw).
令我困惑的是:我们不能只使用具有正确配置的安全组(SG)的公有子网来拒绝入站流量并允许特定的出站流量吗?由于SG是有状态的,它们应该允许对出站流量的响应通过,就像NAT网关一样.
我假设我只是遗漏了一些东西,或者上面的配置在某些方面受到限制,我只是没有看到.但是我无法找到答案.
我在终止 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
我是 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
我有一个带有需要插入 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 …
我有一个 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 上运行服务器,一切正常。似乎我在这里缺少一些东西,任何帮助都是值得赞赏的。
如果要自己动手,在 AWS RDS 管理控制台中按“启动数据库实例”就相当于启动服务器守护程序。
控制台还具有将“安全组”关联到数据库实例的设置。
安全组本身具有“入站”和“出站”流量的设置。
“入站”流量意味着来自某处某个客户端的对服务器的请求。
“出站”流量是什么意思?这些仅仅是数据库服务器的响应吗?在这种情况下,入站和出站始终具有相同的端口范围和 IP 地址是否有意义?
与先前问题的关系:
此 RDS 实例将与 ElasticBeanstalk 实例耦合,而不是VPC。
我已使用此模块在 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
我使用以下内容来查找与特定安全组关联的实例的信息
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
amazon-ec2 ×4
terraform ×2
amazon-rds ×1
apache ×1
aws-cdk ×1
aws-cli ×1
aws-lambda ×1
curl ×1
deployment ×1
duplicates ×1
flask ×1
jmespath ×1
nat ×1
subnet ×1
vpc ×1