ハックされた原因はGithubのprivateリポジトリをpublicに変更したんだけど、そのリポジトリにAWSのアクセスキーとシークレットキーが含まれていたため。 我ながらあほすぎる。。 時系列で起こったことを書く。
- 金曜23時頃キー情報をpublicにしてしまう
- 土曜の朝にAmazonから不正利用されてるぞ!というメールが来ていたが気付かず
- 月曜の朝にAmazonからのメールに気付き、超焦る
- AWSコンソールを見ると、高価なインスタンスがいっぱい立ち上がってる。これはやばい。。請求額は13000ドル!
- キー情報を含むリポジトリを削除、漏洩したキーを無効化、立ち上がっているインスタンスとスポットインスタンスリクエストを削除。この時スポットインスタンスリクエストの一覧がページングされているのに気付かず、2ページ目のスポットインスタンスリクエストを削除し忘れてしまった。そのため何度インスタンスを削除してもインスタンスが起動してくるので、バックドアがどこかにあるのか!?と焦る
- AWSのサポートから「もう大丈夫!不正利用は止まったよ。あと、不正利用による請求は取り消すから安心してくれよな☆」というメールが来て安堵する。まじ神すぎるだろ。。
- とりあえず被害の拡大を抑えられたのでこの日の対応は終了。
- 火曜にクラッカーに削除されてしまった自分のEC2インスタンスを起動し直し、サービスを再開する。AMI残っててよかった。。
この件から得た教訓は以下。
- AWSのセキュリティはまじで気をつけろ!特にGithubでキー情報を公開してしまったら数時間以内にハックされる。常にそういう情報が無いか監視してる奴らがいるんだろうな。 http://media.amazonwebservices.com/AWS_Security_Best_Practices.pdfなどでセキュリティを高める方法を公開してくれているのでそれに従うこと。
- EC2インスタンスが消えても復旧できるようにしておくこと。クラッカーはEC2インスタンスは消したけど、その他のリソースは消されてなかった。
AWSのサポートはかなり手慣れた感じでした。よくあることなんだろうな。
Amazonの素晴らしい対応に心を打たれ、生涯AWSに忠誠を誓うことを決めました。AWS最高!