AWSでKali Linux入りのEC2を起動してCloudWatch Agentを仕込む

はじめに

今回Kali Linuxをはじめて触ってみたいと思ってちょっと調べていました。

手元にサブPCやサーバを用意するのが一般的かと思いますが、AWS上でも建てられるということを知りこちらを試すことにしました。

訳あってCloudwatchへログを転送したいと思ったのですが、設定中に少し詰まるところがあったので備忘録としてEC2作成からログ転送完了までの流れを記しておくことにします。

作業の流れ

大体の部分はCloudWatchでログ監視みたいな文脈で調べると出てくる手順とほぼ同じかと思います(今回の作業でもそう調べて従っているので)。

エージェント導入に関して参考にしたのはここ。
クイックスタート: 実行中の EC2 Linux インスタンスに CloudWatch Logs エージェントをインストールして設定する - Amazon CloudWatch ログ

EC2は作成済みの前提で進んでいますが、その辺りは色々な場所で解説されているので割愛。
少し普段と変わっている部分だけ次の節で補足します。

EC2の作成(補足)

Kali LinuxのAMI選択

インスタンス作成で一番最初の画面で、"Amazon MarketPlace"を選択 -> ”Kali”などで適当に検索

Kali LinuxのイメージはEC2インスタンス自体の料金に加えて、イメージ作成者へのサブスク料金が必要になります。

が、あってないような値段なのであまり問題にはならないと思います。
(AMIイメージの選択時に料金表が出てくるので確認してみてください。)

f:id:socha77:20210922152426p:plain

f:id:socha77:20210922152436p:plain

セキュリティグループの設定

Webサーバーではないので、自PCからのSSHだけ許可しておけばいいと思います。

f:id:socha77:20210922152903p:plain
「マイIP」で今コンソールを開いているPCのIPアドレスを指定できるということをこの前教えてもらって初めて知りました

ログイン

ログインユーザー名が ec2-userではなくkaliになっています。そこだけ注意

$ ssh kali@{EC2インスタンスのアドレス} -i {秘密鍵へのパス}

ログ転送などをする必要がなければここで終了です。

インストール用スクリプトの取得、修正

先ほどの公式導入ガイドに従っていきます。

AmazonLinux2であれば "sudo yum install -y awslogs" で済むところですが、
yumが入っていないのでドキュメント上「既存の Ubuntu Server、CentOSRed Hatインスタンスに CloudWatch Logs をインストールして設定するには」の部分に沿って行きます。(どれでもないのですが)

$ sudo apt-get update
$ curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

ここで本来はawslogs-agent-setup.pyを起動するところですが、Kali Linuxに対応していないためエラーとなります

$ sudo python ./awslogs-agent-setup.py --region us-east-1
Launching interactive setup of CloudWatch Logs agent ...
ERROR: Failed to determine linux distribution. Exiting.

pythonスクリプト中で現在のLInuxディストリビューションを推測しデフォルトのシステムログの場所を指定する処理があるようなのですが、推測対象の選択肢にKaliが入っていないためエラーを吐かれているようです。

というわけでawslogs-agent-setup.pyに数ヶ所追記します。

なお、以下にある画像ではdiffの表示のためにローカルに落としたコードをVSCodeで表示していますが、実際の作業の際にはインスタンス内で使える各種エディタで編集をしてください。

修正箇所1

enumっぽく定義されている定数にKaliを加えます。
・Kaliではパッケージインストーラにapt-getを使っているのでその旨を指定します。

f:id:socha77:20210922141900p:plain

修正箇所2

ディストリビューションを推定する部分でKaliを発見できるようにします。
推定には /etc/issue の中身を見ているようで、Kali Linuxでは(?) "Kali GNU/Linux Rolling" と書いてあります。 f:id:socha77:20210922142015p:plain

修正箇所3

・もう一ヶ所、有効なディストリビューション一覧にKaliを追記します。

f:id:socha77:20210922142112p:plain

全然改行されていないせいで見えなくてすみません。末尾がこうなります。 f:id:socha77:20210922142213p:plain

修正箇所4

・最後に、システムログの場所を指定する分岐に追記します。 Kaliの場合は /var/log/syslog のほうのようです。(間違っていたらすみません)

f:id:socha77:20210922145127p:plain

f:id:socha77:20210922145111p:plain

以上でソースの修正は全部になります。
以下のリンクなどの情報を参考にしながら、"AmazonLinux" でファイル内検索をして修正箇所のあたりを付けていました。

VAL の LABO: CloudWatchのログ蓄積とモニタリングを使ってみる(その1)

Kali-Linux AMI & AWSLogs. Today we had to build a Kali Linux AMI… | by Netscylla Cyber Security | Medium

インストール ~ 起動

ここまでくればおそらくCloudWatch Agentを入れることができます。

# regionの設定はよしなにお願いします。
sudo python ./awslogs-agent-setup.py --region us-east-1

対話形式での各種設定が終わったらそのまま起動をすることができます。
ただし、公式マニュアルのほうにはenableが書いていないので注意してください。

$ sudo systemctl enable awslogs 
$ sudo service awslogs start    

CloudWatch Logsのほうでシステムログを見ることができると思います。  

もしも表示されない場合はIAMロールの設定なども見直してみてください。

おわりに

クラウド便利だな~と思って軽い気持ちで始めたところ詰まってびっくりしてしまいましたが、無事にいってよかったです。

特に目的があって始めたわけではなくなんか面白そうだなくらいの気持ちなのですが少しずつKali Linuxの機能を触っていけたらなと思います。

ここまでお読みいただきありがとうございました。