DNSとは?
ホスト名とIPアドレスを相互に変換する仕組みをDNS(Domain Name System)という。
このことを名前解決ともいう。
◆あだ名と本名って言った感じ
DNSの仕組み
詳しいことは難しいので、先ほどの例を参考によくある場面を想像してみてください
『昔の同級生数人と久々に会って、学生時代の話になった。』
あれ?ヨッシーの本名ってなんだっけ?
あれなんだっけ?
えっと・・・あとちょっとで思い出せそうなんだけどな~
吉田〇×だよ!忘れたの?(笑)
あぁ!吉田〇×か!サンガツ!
解説
——————————————
登場人物
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 | ゾーン情報に電子署名を行う鍵 |
KSK | ZSKに電子署名を行う鍵 |
DNSSECの設定
ZSK鍵ペアを作成
TSIGの設定
マスターDNSサーバとスレーブDNSサーバ間での、ゾーン転送の際に共有秘密鍵を利用することで、
マスターDNSサーバになりすまして偽のゾーンデータをスレーブDNSサーバに送ったり、
ゾーンファイルを改ざんしたりする攻撃を回避する仕組み
コメント