こんにちは!クラウドの世界へようこそ。インフラや開発の現場にいると、「セキュリティ」という言葉の重さに少し圧倒されてしまうことってありませんよね。
「サーバーがサイバー攻撃に遭ったらどうしよう……」
「自分の書いたコードや作った環境に、見えない穴がないかな……」
そんな不安を抱える新人エンジニアや開発者の皆さんに向けて、今日はAWSが誇る強力なセキュリティの番人、「Amazon GuardDuty(ガードデューティ)」についてお話しします。
難しい専門用語をなるべく使わず、私たちの身近な「防犯」の仕組みに例えながら、一緒に一歩ずつ学んでいきましょう!
—
1. 家の鍵だけでは防げない?クラウドの「見えない侵入者」
皆さんが一戸建てやマンションに住むとき、玄関の鍵を閉めますよね。それはクラウドの世界でも同じで、ファイアウォールやセキュリティグループという「鍵」を使って、不正なアクセスを防ぎます。
でも、ちょっと想像してみてください。
もし、泥棒が「うっかり開いていた勝手口(脆弱性)」から忍び込んだり、あるいは「合鍵をこっそり持っていた悪意ある訪問者(乗っ取られたIAMユーザー)」だったらどうでしょう? 玄関の鍵をいくら固く閉めていても、家の中に入られてしまえば、もうやりたい放題ですよね。
クラウド(AWS)のインフラでも全く同じことが起きます。インスタンス(仮想サーバー)が乗っ取りを受け、どこかの怪しい悪者(C2サーバー:Command and Controlサーバー)とコソコソ通信を始めたとき、外向きのファイアウォールだけでそれに気づくのは至難の業です。
そこで登場するのが、家の中の廊下やリビングに設置する「24時間体制の高性能防犯カメラ&警備員」である、Amazon GuardDutyなのです。
—
2. GuardDutyはどうやって不審な動きを見抜くのか?
GuardDutyは、AWSのあちこちからログという名の「足音」を集めて監視しています。その中でも特に重要なのが、今回テーマにする「VPCフローログ」の分析です。
VPCフローログとは、いわばAWS上のネットワーク(VPC)を流れる「すべての通信の通信簿(宛先、送信元、ポート番号、データ量など)」の記録です。
機械学習という「ベテラン警備員の勘」
人間がすべての通信簿を目視でチェックして、「おや、この深夜の通信は怪しいぞ」と気づくのは不可能ですよね。そこでGuardDutyは、機械学習(AI)を使っています。
- 「普段は夜中に通信なんてしないサーバーが、急に海外の怪しいIPアドレスと大量のデータやり取りをしている」
- 「ポートスキャン(家の周りをぐるぐる回って、どの窓が開いているか片っ端から試す不審な行動)をやっている」
こうした「普段と違う、なんか変だな…」という違和感を、機械学習が瞬時に嗅ぎ取ってアラート(通知)を上げてくれるのです。しかも、AWS側が裏側で最新の「脅威インテリジェンス(世界中の悪質なIPアドレスのリスト)」を常にアップデートしてくれているので、最新の犯罪手口にも自動でついていける仕組みになっています。
—
3. 「これ、安全な通信なんですけど!」を防ぐカスタムIPリスト
防犯カメラが優秀なのは良いのですが、時々困ったことが起きます。
それは「誤検知(ごけんち)」です。
例えば、会社のオフィスの固定IPアドレスや、信頼している外部パートナー企業のサーバーからのアクセスを、GuardDutyが「おや、見慣れない外部との通信だぞ!怪しい!」と勘違いして、ピピッと警報を鳴らしてしまうことがあります。
本物の泥棒ではなく、ただの「お馴染みの宅配業者さん」なのに警報器が鳴り響いたら、現場のエンジニアはびっくりしてしまいますよね。
ここで役に立つのが、今回ぜひ覚えてほしい「カスタムIPリスト(Trusted IP List)」の実装です。これは警備員に対して、「このIPアドレスリストに載っている人たちは、うちの家族(信頼できる仲間)だから、怪しい動きをしても警報を鳴らさないでね!」とあらかじめ教えておく設定のことです。
—
4. 実践!カスタムIPリストの作り方と設定の流れ
それでは、実際に安全なIPアドレスをGuardDutyに教えてあげる手順を見ていきましょう。
手順1: 信頼できるIPリストをテキストで作る
まずは、自社のオフィスや安全な外部サーバーのIPアドレスをまとめたテキストファイル(プレーンテキスト)を作成します。形式はシンプルにCIDR(IPアドレスの範囲)で記述します。
# 社内オフィスの固定IPアドレス(例)
203.0.113.10/32
# 信頼している開発パートナーのVPNサーバー(例)
198.51.100.0/24
手順2: S3バケットにアップロードする
作成したテキストファイルを、AWSのAmazon S3(安全なファイルの置き場所)にアップロードします。GuardDutyはこのS3からリストを読み込みます。
手順3: AWS CLIを使ってGuardDutyにリストを登録する
S3に置いただけではGuardDutyは気づいてくれません。「このリストを見てね」と登録作業を行います。実務ではAWS CLIやTerraformなどのIaC(Infrastructure as Code)を使って設定することが多いです。
以下は、AWS CLIを使って信頼済みIPリスト(Trusted IP List)を登録するコマンドのサンプルです。
# GuardDutyの「信頼済みIPリスト(TRUSTED_IP)」としてS3上のファイルを登録するコマンド例
aws guardduty create-trusted-ip-list \
--detector-id "あなたのGuardDutyの検出器ID(英数字の羅列)を入力" \
--name "MyTrustedIPs" \
--location "https://s3.amazonaws.com/your-bucket-name/trusted-ip-list.txt" \
--activate \
--client-token "unique-string-12345"
--detector-id: GuardDutyが稼働している環境固有のIDを指定します。--location: 先ほどアップロードしたS3ファイルのURL(HTTPS)を指定します。--activate: リストを登録したその瞬間から有効化(アクティブ)にします。
この設定をしておくだけで、社内からの正当なアクセスが「脅威」として誤って検知されるストレスから解放されます。現場のエンジニアにとって、不要なアラート対応に追われないことは、精神衛生的にも非常に大切ですよね。
—
5. まとめ:一歩ずつ、安全なクラウドインフラを作ろう
今回は、AWS GuardDutyによるVPCフローログ解析の仕組みと、カスタムIPリストを使った誤検知抑制についてご紹介しました。
- クラウドの安全は、外側の鍵(ファイアウォール)だけでなく、内側の見守り(GuardDuty)が不可欠。
- VPCフローログを機械学習で分析し、見えない侵入者や不正な通信の兆候をキャッチする。
- 誤検知を防ぐために、カスタムIPリストを活用して「信頼できる仲間」をあらかじめ教えてあげる。
セキュリティ対策というと、なんだか難しくて壁が高そうに見えますが、こうして「家の防犯」に置き換えて考えてみると、やっていることはとてもシンプルで理にかなっていることが分かりますよね。
まずは小さな環境でGuardDutyを有効化し、アラートがどう飛んでくるか眺めてみることから始めてみましょう。インフラやセキュリティの面白さが、きっと少しずつ見えてくるはずです。
一緒に一歩ずつ、安全で強いシステムを作っていきましょう!
コメント