[LPIC 202]DNSについて学ぶ

LPIC

DNSとは?

ホスト名とIPアドレスを相互に変換する仕組みをDNS(Domain Name System)という。
このことを名前解決ともいう。

◆あだ名と本名って言った感じ

DNSの仕組み

詳しいことは難しいので、先ほどの例を参考によくある場面を想像してみてください

『昔の同級生数人と久々に会って、学生時代の話になった。』

A
A

あれ?ヨッシーの本名ってなんだっけ?

B
B

あれなんだっけ?

C
C

えっと・・・あとちょっとで思い出せそうなんだけどな~

D
D

吉田〇×だよ!忘れたの?(笑)

ABC
ABC

あぁ!吉田〇×か!サンガツ!

解説
——————————————
登場人物
A:自分のパソコン
BCD:DNSサーバ
——————————————
Aがホスト名を求め、DNSサーバへ問い合わせ
・Bはわからなかったので、Cへ問い合わせ
・Cもわからなかったので、Dへ問い合わせ

Dはホスト名を持っているので、
→DはCへホスト名を伝え、
→CはBへホスト名を伝え、
→BはAへホスト名を受け渡す。

※正確には違うがイメージはこんな感じ

このような流れでAはホスト名へアクセスすることができるって感じ
この例だと、Aは元はホスト名を知っている感じになっていますが、
実際にはAはホスト名を知りません。
そのためBCDのDNSサーバーへ問い合わせを行っています。

DNSサーバ

BINDは、Linuxディストリビューションで標準的に採用されるような代表的なDNSサーバソフトウェアです。

ゾーン

DNSサーバが管轄するドメインの範囲
ゾーンを管理できる権限は、ゾーンに対して威厳を持つという
管理を移すことを委託という

マスターDNSサーバ、スレーブDNSサーバ

ゾーンファイルを所有するサーバをマスターDNSサーバと言い、
そのゾーンファイルをコピーして保持しているのをスレーブDNSサーバという。
コピーして受け渡すことをゾーン転送と言う

リゾルバ

自分のPCが知っているDNSサーバに名前解決を行うクライアント側のソフトウェア

再帰的な問い合わせ

DNSの問い合わせをして、そこで得た結果をリゾルバに返すことをいう

DNSクライアントコマンド

DNSサーバへ名前解決を行うクライアントコマンド

nslookup [オプション][ホスト名/ドメイン名/IPアドレス]
古くから利用されてきたコマンドで、対話的に実行するモードがある

host [オプション] ホスト名/ドメイン名/IPアドレス [問い合わせ先DNSサーバ]
DNSサーバを使ってホストやドメインに関する情報を表示する
デフォルトでは、ホスト名とIPアドレスの変換のみ
→DNSによる名前解決ができるかどうかを確認する

dig [@問い合わせ先DNSサーバ] ホスト名/ドメイン名/IPアドレス [クエリタイプ]
より詳細な情報をDNSサーバから取得できるコマンド

BINDの基本設定

メイン設定ファイル:/etc/named.conf
ゾーンファイル
以上、2点から構成されている

/etc/named.confの設定

ステートメントやオプションの末尾には「;」が記述される

actステートメント

アクセス制御リスト(ACL)を定義する

acl ACL名{
     アドレスマッチリスト
};

includeステートメント

指定した外部ファイルを読み込む

include "ファイル名";

optionsステートメント

namedの動作に関する詳細なオプションを設定
詳細なオプションも覚えておこう

controlsステートメント

namedを操作できるホストのIPアドレスやポート番号などを指定

zoneステートメント

ゾーン名、ゾーンのタイプ、ゾーンファイルの場所などを指定

rndcコマンド

namedはrndcコマンドを使って操作することができる

ゾーンファイルの管理

リソースレコード

リソースレコードでは、ゾーンの情報を記述する

SOAレコード

ゾーンに関する基本的な情報を記述

NSレコード

DNSサーバをFQDNで指定

MXレコード

メールサーバがメールを送る際に参照するレコード

Aレコード

ホスト名に対応するIPアドレスを指定
正引きゾーンファイルのみ

AAAAレコード

IPv6の場合に、AAAAレコードを指定

CNAMEレコード

ホストの別名を定義

PTRレコード

Aレコードの逆で、IPアドレスに対応するホスト名を記述する
逆引きゾーンファイルのみ
IPv6の場合は、「:」を消すために、4ビットごとに「.」を挿入
また、IPv6アドレスの末尾に「ip6.arpa」を挿入

DNSサーバのセキュリティ

一般的なセキュリティオプション

named.confの設定によって強化できるセキュリティ

ゾーン転送の制限

スレーブDNSサーバはマスターDNSサーバからゾーン転送をしてもらわないといけないが、
スレーブDNSサーバ以外のDNSサーバにはゾーン転送する必要はないので、制限をかける

DNS問い合わせ制限

DNS問い合わせの範囲を自分の管理するゾーンのみにすることで、不要なDNSサーバ利用を阻止できる
再帰的な問い合わせを禁止することでキャッシュ汚染攻撃を回避可能
→今は、BINDで標準搭載

バージョン番号の隠蔽

バージョンを隠すことで、セキュリティーホールを制御することができる
ただし、完全になくなるわけではない

root以外によるnamedの実行

外部から内部の設定をいじれないようにする

DNSSECとTSIG

BINDに両方とも標準搭載

DNSSECの概要

ゾーン情報に公開鍵暗号方式の電子署名を行うもの
ゾーン情報が改ざんされないこと、DNS応答が正当な管理者によって行われたものであることを保証してくれる

ZSKゾーン情報に電子署名を行う鍵
KSKZSKに電子署名を行う鍵
公開鍵の種類

DNSSECの設定

ZSK鍵ペアを作成

TSIGの設定

マスターDNSサーバとスレーブDNSサーバ間での、ゾーン転送の際に共有秘密鍵を利用することで、
マスターDNSサーバになりすまして偽のゾーンデータをスレーブDNSサーバに送ったり、
ゾーンファイルを改ざんしたりする攻撃を回避する仕組み

コメント

タイトルとURLをコピーしました