演習準備
IAMロールを作成する
演習で使う、IAMReadOnlyAccessを付与するIAMロールを作成します。
検索からIAMのダッシュボードに入り、左側の「ロール」を選択し、「ロールを作成」をクリックします。
「AWSのサービス」から「EC2」を選び、次へ進みます。
「IAMReadOnlyAccess」を検索し、チェックを入れて次に進みます。
ロール名をemtg-security(例)にして、他は変更せずに次へ進みます。
以上でIAMロールが作成できました。
VPCを作成する
検索からVPCのダッシュボードに入り、「VPCを作成」をクリックします。
VPCの作成のコンソールが表示されたら、作成するリソースにVPCなどを選択し、以下の表に従って設定してください。
記載の無いものはデフォルト値です。
| 作成するリソース | VPCなど |
|---|---|
| 名前タグの自動生成 | emtg-security |
| アベイラビティゾーンの数 | 1 |
EC2を立ててSSHする
EC2のダッシュボードに入り、東京リージョンであることを確認して、「インスタンスを起動」をクリックします。
| 名前 | emtg-security |
|---|---|
| Amazon マシンイメージ (AMI) | Amazon Linux 2023 kernel-6.18 AMI |
| インスタンスタイプ | t3.micro 無料枠の対象 |
新規にキーペアを作成します。鍵ファイルがダウンロードされると思いますので、残しておいてください。
| キーペア | 新しいキーペアの作成 |
|---|---|
| キーペア名 | emtg-security |
| キーペアのタイプ | RSA |
| プライベートキーファイル形式 | .pem |
ネットワーク設定で「編集」をクリックして以下の通りにしてください。
※ネットワーク的に隔離されているVPCで試しましょう。ここでは、他にリソースの無いVPCemtg-security-vpcを用います。
| VPC | emtg-security-vpc |
|---|---|
| サブネット | emtg-security-subnet-public1-ap-northeast-1a |
| パブリック IP の自動割り当て | 有効化 |
| ファイアウォール (セキュリティグループ) | セキュリティグループを作成 |
| セキュリティグループ名 | emtg-security |
| インバウンドセキュリティグループのルール | 後述 |
ここまで入力したら、その状態で左下の「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 dnf upgrade -y 実行後の画面を運営に見せてください。
演習:IAMロールの付け外しをしてみる
まずは権限が無い状態でIAMロールの一覧を取得するコマンドを叩いてみましょう。
aws iam list-roles 恐らく、aws configureコマンドを使って資格情報を設定せよというエラーがでます。
これは、使っているEC2にiamの参照権限がないためです。
※実際に書いてある通りにaws configureコマンドで資格情報を設定することも可能ですが、資格情報がサーバ内に残ることなります。
次に、準備で作成したIAMロールをEC2インスタンスに付与します。
検索からEC2ダッシュボードに入り、東京リージョンであることを確認して、「インスタンス(実行中)」にはいります
自分のインスタンスのインスタンスIDをクリックしてください。
セキュリティタブの「IAMロール」を見て、現状IAMロールが何も設定されていないことを確認してください。
上の「アクション」「セキュリティ」「IAMロールを変更」をクリックします。
自分が作ったIAMロールemtg-securityを選択し、「IAMロールの更新」をクリックします。
これでEC2にIAMロールを設定できました。
もう一度IAMロールの一覧を取得するコマンドを叩いてみましょう。
aws iam list-roles たくさん出てくると思います。grepで絞り込んで、今回作ったものを探してみてください。
また、aws iam list-users とするとIAMユーザの一覧を見る事もできます。
※他にも見る事ができるので、コマンドオプションを調べて他にもやってみて良いです。
終わったら、上の手順でiamロールを外してください。
演習:ポート全開放してみる
アクセスログを見る
まずは通常設定でのアクセスログを見てみます。
ip lコマンドで、ネットワークインターフェースがensN(Nは数字)であることを確認します。
何も変えてなければ、似たような表示になるはずです。
[ec2-user@ip-10-0-6-113 ~]$ ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 06:f3:50:47:5a:21 brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname eni-0c9b24b8cc2b04305
altname device-number-0.0
ens5を自身のインタフェース名に変えて、以下のコマンドを叩いてください。(sshで使っている12322ポート以外のパケットを見る)
sudo tcpdump -i ens5 -n not port 12322 しばらく眺めてください。NTPやARPのパケットが流れているのがわかります。
通常設定でどのようなパケットが飛んでいるのかを覚えておいてください。
ポート全開放する
IAMの時と同様の手順で、インスタンスの管理画面に入ります
「セキュリティ」タブのセキュリティグループから、作成したセキュリティグループの設定画面に移動します。
「インバウンドのルールを編集」をクリックします。
この状態で、cloudshellでサーバ操作ができる事を確認してください。
・指示をするまでは実行しないでください
・実行前に、EC2削除手順を理解しておいてください。
・通常は(特にサービス環境では)絶対にやってはいけません。
・解放中は目を離さず、用事が済んだらすぐにEC2を削除してください。
「ルールを追加」を押し、「すべてのトラフィック」「Anywhere-IPv4」を選択します。
シェルでsudo tcpdump -i ens5 -n not port 12322 を叩いて、準備ができたら「ルールを保存」をクリックします。
観察をする前に、「インバウンドのルールを編集」をクリックして再度ルールの設定画面に行き、削除ボタンを押して、「ルールを保存」を押すだけでポートが閉じられるようにしてください。
その状態で、シェルに流れてくるパケットの一覧をしばらく眺めてみてください。
気が済むまで眺めたら、「ルールを保存」を押して、ポートを閉じてください。
アクセスしてきたIPを見てみよう
このサイトでは、IPアドレスへの通報数や信頼性を見ることができます。
下の情報では、DigitalOceanというクラウド事業者のサーバからブルートフォース攻撃を中心とした通報を多数受けていることが分かります。
ポートを叩いてきたIPアドレスについて、AbuseIPDBで調べてみてください。
お片付け(なるべく早く)
作成した以下について削除をお願いします。
- EC2 (優先)
- セキュリティグループ
- VPC
- IAMユーザ