LoginSignup
1
1

AWS CloudFormationを使用してセキュアなSSH接続を設定する方法

Posted at

はじめに

今回は、AWS CloudFormationを使用して、特定のIPアドレスからAWSリソースに対するSSH接続を安全に設定する方法について、ネットワークアクセスコントロールリスト(Network ACL、NACL)を設定し、特定のIPアドレスからのSSH接続のみを許可する方法を解説します。

CloudFormationテンプレートの概要

以下のCloudFormationテンプレートは、特定のVPC内でネットワークACLを作成し、特定のIPアドレスからのSSH接続を許可する設定を行います。

Resources:
  MyNetworkAcl:
    Type: AWS::EC2::NetworkAcl
    Properties:
      VpcId: !Ref MyVPC
      Tags:
        - Key: Name
          Value: MyNetworkAcl

MyNetworkAclリソース↑

Type: このリソースはAWS::EC2::NetworkAclタイプで、VPC内に新しいネットワークACLを作成します。
(Properties):
VpcId: このネットワークACLが関連付けられるVPCのIDです。!Ref MyVPCは、このテンプレート内の他の部分で定義されたVPCリソースを参照します。
Tags: リソースにメタデータ(タグ)を付加します。ここでは、ネットワークACLにNameタグを追加し、その値をMyNetworkAclとしています。

  InboundSshRule:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNetworkAcl
      RuleNumber: 100
      Protocol: 6 # TCPプロトコル
      RuleAction: allow
      Egress: false
      CidrBlock: 172.28.10.1/32
      PortRange:
        From: 22
        To: 22

InboundSshRuleリソース↑

Type: AWS::EC2::NetworkAclEntryタイプは、ネットワークACLにルールを追加します。
(Properties):
NetworkAclId: このエントリが適用されるネットワークACLのID。
RuleNumber: ルールの優先順位を示す数値。低い数値ほど優先度が高いです。
Protocol: 通信プロトコルを示す数値。6はTCPプロトコルを意味します。
RuleAction: ルールのアクション(allowまたはdeny)。ここでは、許可する設定になっています。
Egress: このルールが出口(送信)トラフィックに適用されるかどうか。falseは入口(受信)トラフィックに適用されることを意味します。
CidrBlock: このルールが適用されるIPアドレス範囲。172.28.10.1/32は単一のIPアドレスを指定します。
PortRange: このルールが適用されるポート範囲。SSHのデフォルトポートである22を指定しています。

  OutboundResponseRule:
    Type: AWS::EC2::NetworkAclEntry
    Properties:
      NetworkAclId: !Ref MyNetworkAcl
      RuleNumber: 100
      Protocol: 6 # TCPプロトコル
      RuleAction: allow
      Egress: true
       CidrBlock: 0.0.0.0/0 # すべての宛先を許可
      PortRange:
        From: 1024
        To: 65535 # 一般的に応答パケットは1024以上のポートを使用

OutboundResponseRuleリソース↑

このリソースは、ネットワークからのアウトバウンド(送信)トラフィックに適用されるルールを定義します。SSH接続の応答として送り返されるデータパケットを許可するために使用されます。

Egress: trueに設定されており、このルールがアウトバウンドトラフィックに適用されることを意味します。
CidrBlock: 0.0.0.0/0は全ての宛先IPアドレスを指します。これにより、SSH接続応答を任意の宛先へ送信できるようになります。
PortRange: From: 1024とTo: 65535で、応答トラフィックが使用するポート範囲を指定しています。この範囲は、多くのシステムで動的に割り当てられるポート範囲に対応しています。

まとめ

このCloudFormationテンプレートは、特定のIPアドレスからのSSH接続を許可しながら、不要なトラフィックはブロックするためのネットワークACLを設定します。ネットワークACLはステートレスであるため、インバウンドとアウトバウンドの両方でルールを定義する必要があります。このように設定することで、セキュリティを強化しつつ、必要な通信だけを許可する効果的なネットワーク環境を構築できます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1