すべてのアウトバウンドトラフィックをブロックするAWSセキュリティグループの出力ルールを設定しようとしています。デフォルトでは、セキュリティグループはすべてのアウトバウンドトラフィックを許可することが知られています。
AWS CloudFormationを使用していますが、適切なセキュリティ出力ルールをどのように定義する必要がありますか?
セキュリティグループは常にALLOWトラフィックを定義します。セキュリティグループには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"
}
]
}
CloudFormationは空の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
これにより、すべてのアウトバウンドトラフィックをブロックするという目的が達成されます。
CloudFormationスクリプトでは、以下に示すように、「SecurityGroupEgress」属性の下にカスタムルールを含めることができます。
"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 を確認してください。