AWS

【画像付き】AWS セキュリティグループの設定方法|EC2を公開する手順を解説

AWSのセキュリティグループは、EC2などのAWSリソースへの通信を制御する重要なセキュリティ機能です。

しかし、「SSHで接続できない」「Webサイトが表示されない」といったトラブルは、セキュリティグループの設定が原因になっていることが少なくありません。

この記事では、セキュリティグループの基本的な仕組みから、インバウンドルールの設定方法、EC2へSSH接続する手順までを実際の画面を交えながら解説します。

1.セキュリティグループとは

AWSのセキュリティグループとは、EC2などのAWSリソースに対して通信を制御するための仮想ファイアウォールです。

インターネットからEC2へアクセスする際は、セキュリティグループのインバウンドルールに一致した通信だけが許可されます。反対に、EC2からインターネットへ送信する通信も、アウトバウンドルールによって制御されます。

また、用途ごとに異なるセキュリティグループを作成し、それぞれに必要な通信だけを許可することで、安全なシステムを構築できます。

下図は、Webサーバー用とDBサーバー用でセキュリティグループを分け、それぞれ必要な通信だけを許可するイメージです。

AWSの通信の流れの図

例えば、Webサーバー用のセキュリティグループではHTTPやHTTPSを許可し、DBサーバー用のセキュリティグループではデータベース接続だけを許可する、といったように用途ごとに通信ルールを設定できます。

2.セキュリティグループでできること

AWSのセキュリティグループでは、通信を許可する条件をルールとして設定できます。

許可する通信は、以下のような条件で制御できます。

  • 通信プロトコル(TCP、UDPなど)…通信方式を指定します。WebサイトやSSH接続では一般的にTCPが利用されます。
  • ポート番号(22、80、443など)…どのサービス・アプリケーション宛ての通信なのかを識別するための番号です。
  • 接続元(ソース)IPアドレス…どこからのアクセスを許可するかを決めます。
  • 他のセキュリティグループ…AWS内部のサーバー間通信をするための設定です。

そしてAWSのセキュリティグループは、主に「インバウンド」と「アウトバウンド」という2種類のルールで構成されています。

設定内容
インバウンド外から来る通信
例:
PC→EC2(SSH接続)
インターネット→Webサイト閲覧
アウトバウンド外へ出る通信
例:
EC2→OSアップデート
WordPress→外部APIへ接続
メール送信

デフォルトではアウトバウンドは全許可(0.0.0.0/0)です。

3.インバウンドルールの設定例

いくつかの設定を組み合わせてセキュリティグループを作成します。

用途タイプポート
サーバー内に入って操作SSH22
暗号化していない通信HTTP80
SSL/TLSで暗号化された通信
(証明書の発行が必要)
HTTPS443
リモートデスクトップ接続RDP3389

ソース(接続元)の選び方

主なソースの種類は以下の通りです。使い方に合わせて指定します。

用途ソース
現在使用中の通信を指定マイIP
任意のIPアドレス例:192.0.2.45/32
すべてのIPv4アドレスを許可0.0.0.0/0
すべてのIPv6アドレスを許可::/0

4.セキュリティグループを設定してEC2へSSH接続する

実際にEC2へ接続します。

【検証環境】

  • AWS EC2
  • Amazon Linux 2023
  • Windows 11
  • Windows PowerShell
  • OpenSSHクライアント

手順1:セキュリティグループのインバウンドルールを編集する

EC2インスタンスを立ち上げる際の初期設定の場合

インスタンスの起動画面でセキュリティグループを設定している様子

「からのSSHトラフィックを許可」にチェックを入れます。

「任意の場所」から、「自分のIP」へ変更します。

セキュリティグループ画面から設定する場合

インスタンスでどのセキュリティグループが使われているか確認してから、セキュリティグループへ移動します。

左カラムからセキュリティグループを選択

設定を変更したいセキュリティグループを選択して、「インバウンドのルールを編集」をクリックします。

セキュリティグループ画面からインバウンドのルールを編集

インバウンドのルールを編集する画面に移動します。

インバウンドのルールを編集する画面

①「ルールを追加」をクリックします。

②タイプ「SSH」を選択します。

③ソースから「マイIP」を選択します。

④「ルールを保存」をクリックします。

セキュリティグループに自動で戻り、インバウンドルールに設定が追加されていることを確認してください。

セキュリティグループのインバウンドルールに設定が追加されている様子

手順2:PowerShellからSSHコマンドを実行する

powershellで以下のコマンドを入力します。

ssh -i C:\Users\ユーザー名\Downloads\鍵の名前.pem ec2-user@パブリック IPv4 アドレス

※一例です。秘密鍵のパスとIPアドレスはご自身の環境に置き換えてください。

初回ログインの場合は接続していいか?を聞かれるため、「yes」と入力してEnterを押します。

接続に成功すると[ec2-user@ip-198.51.100.45 ~]$ のような表示になります。

PowerShellからSSHでログインする様子

SSHの設定がうまくいっていない場合

タイムアウトが表示され、ログインできませんでした。
セキュリティグループが正しく設定されていないとSSHに入れないことがわかります。

PowerShellでConnection timed outが表示されている画像

5.よくある設定ミス

①SSHが繋がらない

セキュリティグループの設定を見直してください。ポート22が開いているか、ソースIPが変わっていないか確認してください(プロバイダの都合で自分のIPが変わることがあります)。

また、EC2 Instance Connect(ブラウザから)接続する場合、マイIPだと繋がりません。EC2 Instance ConnectがAWS内部のEC2 Instance Connect用サーバーを経由してSSH接続する方式だからです。セキュリティグループで、以下の設定を許可すると接続できます。

インバウンドルールの編集画面
タイプソースソースの選択
SSHカスタムcom.amazonaws.ap-northeast-1.ec2-instance-connect
東京リージョンの場合

参考:チュートリアル: EC2 Instance Connect を使用してインスタンスに接続するために必要な設定を完了する

②IPアドレスが間違っている

インスタンスの詳細画面からパブリック IPv4 アドレスを確認してください。コマンドを入力する際、プライベート IPv4 アドレスでは繋がらないため、間違えないように注意しましょう。

③サイトが表示されない

セキュリティグループのインバウンドルールでHTTPまたは、HTTPSを許可しないと表示されません。

④HTTPSにならない

SSL証明書が発行されていないサイトはHTTPS通信ができません。
SSL証明書が有効になっているか確認してください。

6.セキュリティグループ利用時の注意点

  • SSHを0.0.0.0/0にしない
    第三者からSSH接続を試みられる可能性が高くなります。
  • 必要なポートだけ開ける
    利用しないポートは閉じておきましょう。
  • 不要なルールは削除する
    不要な許可設定は攻撃対象を増やす原因になります。
  • セキュリティグループを用途ごとに分ける
    用途ごとに分けることで管理がしやすくなるため、おすすめです。

7.まとめ

AWSのセキュリティグループは、EC2などのAWSリソースへの通信を制御する仮想ファイアウォールです。

インバウンドルールでは外部からの通信、アウトバウンドルールでは外部への通信を制御できます。

EC2へSSH接続する場合は22番ポート、Webサイトを公開する場合は80番・443番ポートを許可するなど、用途に応じて必要な通信だけを許可することが重要です。

ただし、ポートを広く公開すると不正アクセスのリスクが高まるため、SSH接続は自分のIPアドレスだけを許可するなど、最小限の設定を心がけましょう。

【おすすめの関連記事】
当サイトでは他にもAWSに関する情報を初心者向けに発信しています。

【事故防止】大切なEC2インスタンスを誤削除から守る設定方法
「間違って消してしまった…」となる前に!数分で完了する安全対策を解説しています。

【IPアドレス固定化】Elastic IPとは?使う理由から設定まで徹底解説
固定IPが必要な理由から、無駄な料金を発生させないための正しい設定・解除手順まで分かりやすく解説しています。

TOP