こんにちは!インフラやセキュリティの世界へようこそ。
初めてサーバーに触れるとき、「セキュリティを万全に」と言われても、何から手をつければいいか途方に暮れてしまいますよね。専門用語は呪文のように聞こえるし、設定を間違えたらサイトが止まりそうだし……。でも、安心してください。一歩ずつ、身近な例えから紐解いていけば、決して難しいものではありません。
今回は、私たちが普段何気なく使っている「DNS(ドメインネームシステム)」のセキュリティ、特にAWSの Route 53 を使った DNSSEC(DNS Security Extensions) と クエリログの監視 について、一緒に優しく学んでいきましょう!
—
1. DNSってなぁに? 身近な「電話帳」で例えてみよう
インターネットの世界で、私たちは「example.com」のような分かりやすい名前(ドメイン)を使ってウェブサイトにアクセスしますよね。でも、裏側のコンピューター同士は、実は「192.0.2.1」のような数字のIPアドレスでしか会話ができません。
ここで登場するのが DNS(ドメインネームシステム) です。DNSは、人間が覚えやすいドメイン名を、コンピューターが分かるIPアドレスに変換してくれる、いわば「インターネットの巨大な電話帳」のような役割をしています。
恐ろしい「DNSキャッシュポイズニング」の仕組み
さて、この電話帳を狙う悪い泥棒がいたらどうなるでしょうか?
想像してみてください。あなたが友人の家にいこうと電話帳を開いたとき、もし悪意ある人物が勝手に電話帳のページを書き換え、「A君の家はこちら」と偽の住所(泥棒の家)に誘導してしまったら……あなたは気付かずに泥棒の家に行ってしまいますよね。
これが、サイバー攻撃の世界で 「DNSキャッシュポイズニング(DNS偽装)」 と呼ばれる手口です。攻撃者は、ユーザーがアクセスしようとした正規のサイトのURLに対し、偽のIPアドレスをこっそり教え込み、フィッシング詐欺サイトやウイルスが仕掛けられたサーバーへと誘導してしまうのです。
—
2. 偽物を見破る合言葉!「Route 53 DNSSEC」でできること
そんな「電話帳の改ざん(偽装)」を防ぐために生まれたのが、今回ご紹介する DNSSEC(DNS Security Extensions) です。
先ほどの電話帳の例えで言うと、DNSSECは電話帳のすべてのページに「発行元の公的なサイン(電子署名)」を押すような仕組みです。
もし泥棒が勝手にページを書き換えても、サインがない(あるいはサインが偽物である)ことが一目でバレてしまうため、コンピューターは「あ、これ偽物の電話帳だ!」と気づいてアクセスをスパッと遮断してくれます。
AWS Route 53でのDNSSEC設定のイメージ
AWSのDNSサービスである Route 53 では、このDNSSECの導入がとても簡単に行えるようになっています。
実際に設定する際は、以下のステップを踏むことになります(※実際の設定画面やAWS CLIでの手順をイメージしてみましょう)。
1. KMS(Key Management Service)で鍵のペアを作る
- 署名を作るための「秘密のハンコ(私有鍵)」と、みんなに見せる「検証用のハンコ(公開鍵)」をAWS上で作成します。
2. ホストゾーンでDNSSECの署名を有効にする
- Route 53の管理画面、またはCLIから「うちのドメインにDNSSECの署名をつけてね」と指示を出します。
3. レジストラ(ドメインを買った業者)に「親の鍵(DSレコード)」を登録する
- ここが少しだけ緊張するポイントですが、AWSで作った公開鍵の情報を、ドメインを購入したレジストラに登録することで、インターネット全体に「このサイトのDNSSECは本物ですよ」とお墨付きを与えます。
—
3. 「見えない泥棒」を見つける!DNSクエリログの監視
DNSSECで「偽物の電話帳への誘導」を防げるようになりました。しかし、セキュリティ対策に「これだけで100%安全」ということはありません。
次に私たちがやるべきなのは、「誰が、どんな名前(ドメイン)を、どれくらいの頻度で調べているか」をのぞき見する(監視する)ことです。これが DNSクエリログの監視 です。
なぜログの監視が必要なの?
例えば、社内のパソコンがマルウェア(ウイルス)に感染したとします。感染したパソコンは、指示を出している悪者のサーバー(C2サーバー)と通信しようとして、裏でこっそり変なドメインのIPアドレスを何度も調べようとします。
普段の生活で言えば、近所の家から「深夜に何度も怪しい合言葉を叫ぶ声が聞こえる」ような状態です。この「怪しい声(クエリ)」をログとして記録し、監視していれば、「おや、この端末は何か変な動きをしているぞ!」と早期に発見できるわけですね。
Route 53 クエリロギングの設定と監視のポイント
Route 53では、DNSクエリのログを Amazon CloudWatch Logs や Amazon S3 に出力することができます。
以下は、CloudWatch Logsへクエリログを出力するための設定イメージ(AWS CLIコマンドの例)です。
{
"Comment": "Route 53のクエリログをCloudWatch Logsに出力するための設定",
"HostedZoneId": "Z123456789EXAMPLE",
"CloudWatchLogsLogGroupArn": "arn:aws:logs:us-east-1:123456789012:log-group:my-dns-query-logs"
}
*設定のポイント:*
- ログには「いつ」「どのIPアドレスから」「何のドメイン名が引かれたか」がすべて記録されます。
- すべてのログを人間の目で追うのは不可能なので、CloudWatch Logsの「メトリクスフィルター」や「Amazon GuardDuty」などのAIツールを組み合わせて、「通常とは違う大量のクエリ」や「不審なドメインへの問い合わせ」があった際に、Slackやメールに通知が飛ぶように仕組みを作っておきましょう。
—
4. まとめ:一歩ずつ、安全なインフラを作っていこう
今回は、DNSセキュリティの基本である「DNSSEC」と「クエリログ監視」についてお話ししました。
- DNSSEC は、電話帳(DNS)の改ざんを防ぐ「電子署名(公的なハンコ)」。
- クエリログ監視 は、怪しい問い合わせ(通信)を見逃さないための「防犯カメラ」。
どちらも、一度仕組みを理解してしまえば、AWSのマネージドサービス(Route 53やCloudWatch)が面倒な部分の多くを引き受けてくれます。
「なんだか難しそう」と怖じ気づく必要はありません。まずは小さなテスト環境から、一歩ずつ設定を試してみましょう。あなたのその丁寧な積み重ねが、組織の、そしてインターネットの安全を守る大きな盾になりますよ!
コメント