演習準備
IAMロールを作成する
演習で使う、IAMReadOnlyAccessを付与するIAMロールを作成します。
検索からIAMのダッシュボードに入り、左側の「ロール」を選択し、「ロールを作成」をクリックします。
「AWSのサービス」から「EC2」を選び、次へ進みます。
「IAMReadOnlyAccess」を検索し、チェックを入れて次に進みます。
ロール名を
emtg-security-scixxxxx
(例)にして、他は変更せずに次へ進みます。
以上でIAMロールが作成できました。
EC2を立ててSSHする
EC2のダッシュボードに入り、東京リージョンであることを確認して、「インスタンスを起動」をクリックします。
名前 | emtg-security-scixxxxx |
---|---|
Amazon マシンイメージ (AMI) | Amazon Linux 2 AMI(HVM) Kernel 5.10, SSD Volume Type 無料利用枠の対象 |
インスタンスタイプ | t2.micro |
キーペア | emtg-security |
ネットワーク設定で「編集」をクリックして以下の通りにしてください。
※ネットワーク的に隔離されているVPCで試しましょう。ここでは、他にリソースの無いVPC
emtg-security-vpc
を用います。
VPC | emtg-security-vpc |
サブネット | emtg-security-subnet-public1-ap-northeast-1a |
パブリック IP の自動割り当て | 有効化 |
ファイアウォール (セキュリティグループ) | セキュリティグループを作成 |
セキュリティグループ名 | emtg-security-scixxxxx |
インバウンドセキュリティグループのルール | 後述 |
ここまで入力したら、その状態で左下の「CloudShell」をクリックしてください。
しばらくするとシェルが立ち上がるので、
curl http://checkip.amazonaws.com/
と入力し、出てきたipアドレスをセキュリティグループのルールに追加します。(画像を参考に変更してください)
タイプ | カスタムTCP |
ポート範囲 | 12322 |
ソースタイプ | カスタム |
ソース | [調べたIPアドレス] /32 |
説明 | cloudshell |
「高度な詳細」を選択し、一番下の「ユーザーデータ - オプション」に以下を入力します。
#!/bin/bash
echo "Port 12322" >> /etc/ssh/sshd_config
systemctl restart sshd
今までの設定が合っているかもう一度確認し、右にあるオレンジの「インスタンスを起動」をクリックします。
すぐに成功するはずです。真ん中の「インスタンスに接続」をクリックします。
別のタブに飛びますが、CloudShellも同時に見えるはずです。(なければ左下から出してください)
Cloud shellの「アクション」から「ファイルのアップロード」をクリックし、以下のpemファイルをアップロードして下さい。
アップロード成功後、シェルで
chmod 400 emtg-security.pem
を叩いてください。
その後、画面に表示されているコマンド例をコピーして、
後ろに
-p 12322
をつけて
実行します。
繋がらない場合は少し待ったり、一旦Ctrl-Cで抜けてもう一度叩きなおしたりしてください。
fingerprintについてきかれたらyesを叩いてください。
これで、今作ったEC2にSSHできます。
パッケージのアップデート(脆弱性対策)
コマンドで以下を実行してください。
sudo yum update -y
実行後の画面を運営に見せてください。
演習:IAMロールの付け外しをしてみる
まずは権限が無い状態でIAMロールの一覧を取得するコマンドを叩いてみましょう。
aws iam list-roles
恐らく、aws configureコマンドを使って資格情報を設定せよというエラーがでます。
これは、使っているEC2にiamの参照権限がないためです。
※実際に書いてある通りにaws configureコマンドで資格情報を設定することも可能ですが、資格情報がサーバ内に残ることなります。
次に、準備で作成したIAMロールをEC2インスタンスに付与します。
検索からEC2ダッシュボードに入り、東京リージョンであることを確認して、「インスタンス(実行中)」にはいります
自分のインスタンスのインスタンスIDをクリックしてください。
セキュリティタブの「IAMロール」を見て、現状IAMロールが何も設定されていないことを確認してください。
上の「アクション」「セキュリティ」「IAMロールを変更」をクリックします。
自分が作ったIAMロール
emtg-security-scixxxxx
を選択し、「IAMロールの更新」をクリックします。
これでEC2にIAMロールを設定できました。
もう一度IAMロールの一覧を取得するコマンドを叩いてみましょう。
aws iam list-roles
たくさん出てくると思います。grepで絞り込んで、今回作ったものを探してみてください。
また、
aws iam list-users
とするとIAMユーザの一覧を見る事もできます。
※他にも見る事ができるので、コマンドオプションを調べて他にもやってみて良いです。
終わったら、上の手順でiamロールを外してください。
※運営は全EC2にiamロールが付与されていないことを確認する。
演習:ポート全開放してみる
アクセスログを見る
まずは通常設定でのアクセスログを見てみます。
ifconfigコマンドで、ネットワークインターフェースが
eth0
であることを確認します。
何も変えてなければ、似たような表示になるはずです。
[ec2-user@ip-172-31-8-213 ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.8.213 netmask 255.255.240.0 broadcast 172.31.15.255
inet6 fe80::82b:c3ff:fe78:a289 prefixlen 64 scopeid 0x20<link>
ether 0a:2b:c3:78:a2:89 txqueuelen 1000 (Ethernet)
RX packets 81511 bytes 118544792 (113.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10952 bytes 664563 (648.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 48 bytes 3888 (3.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 48 bytes 3888 (3.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
以下のコマンドを叩いてください。(sshで使っている12322ポート以外のパケットを見る)
sudo tcpdump -i eth0 -n not port 12322
しばらく眺めてください。NTPやARPのパケットが流れているのがわかります。
通常設定でどのようなパケットが飛んでいるのかを覚えておいてください。
ポート全開放する
赤丸の場所をクリックして、作成したインスタンスの設定画面に移動します。
「セキュリティ」タブのセキュリティグループから、作成したセキュリティグループの設定画面に移動します。
「インバウンドのルールを編集」をクリックします。
この状態で、cloudshellでサーバ操作ができる事を確認してください。
・ 指示をするまでは実行しないでください
・実行前に、EC2削除手順を理解しておいてください。
・通常は(特にサービス環境では)絶対にやってはいけません。
・解放中は目を離さず、用事が済んだらすぐにEC2を削除してください。
「ルールを追加」を押し、「すべてのトラフィック」「Anywhere-IPv4」を選択します。
シェルで
sudo tcpdump -i eth0 -n not port 12322
を叩いて、準備ができたら「ルールを保存」をクリックします。
観察をする前に、「インバウンドのルールを編集」をクリックして再度ルールの設定画面に行き、削除ボタンを押して、「ルールを保存」を押すだけでポートが閉じられるようにしてください。
その状態で、シェルに流れてくるパケットの一覧をしばらく眺めてみてください。
気が済むまで眺めたら、「ルールを保存」を押して、ポートを閉じてください。
お片付け(なるべく早く)
上部検索窓からEC2と検索し、EC2のダッシュボードに入り、「インスタンス(実行中)」を選択します。
自分のインスタンスを選択し、「インスタンスの状態」→「インスタンスの終了」を選択します。
※運営は全EC2が削除されたことを確認する
残りのリソースは運営で削除します。分かる人は自分で削除して構いません。
- セキュリティグループ
- IAMロール