広告

検索

RSS RSSフィード

カレンダー

2009年3月
« 2月   4月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

カテゴリー

最新のコメント

リンク

自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)

投稿者:yasu 更新日時:2009年3月26日 20時19分00秒
カテゴリbind, CentOS, Linux, 自宅サーバー

今回はDNSサーバーを構築して外部から自宅サーバーの名前解決ができるようにしていきたいと思います。

DNSサーバーを構築する上でのyasuの自宅の環境ですが契約しているプロバイダの有償オプションで固定IPアドレスを利用しています。
またお名前.comでドメインを取得しています。
※固定IPアドレスの契約やドメインは取得は完了している前提での手順ご紹介になることをご了承ください。

あとノートPCが複数台あるのでローカルネットワーク内だけで名前解決ができるようにします。

我が家のドメイン名や固定IPアドレス、PCのIPアドレスをご紹介しますと
ドメイン名:sa-sa-ki.jp
グローバルIPアドレス:210.189.104.64

自宅サーバー
 ホスト名:centos
 IPアドレス:192.168.0.20
ノートPC1
 ホスト名:winxp
 IPアドレス:192.168.0.101
ノートPC2
 ホスト名:winvista
 IPアドレス:192.168.0.102
ノートPC3
 ホスト名:leopard
 IPアドレス:192.168.0.103
ノートPC4
 ホスト名:ubuntu
 IPアドレス:192.168.0.104

のようになっておりまして(プライベートIPアドレスはダミーのIPアドレスを記載しています)、この環境にあわせて構築していきますのでみなさまは各自の環境に振り替えてください。

それではDNSサーバーを構築していく為にbindとcaching-nameserverをインストールしていきます。
bindは名前解決する為に都度上位のネームサーバーに問い合わせを行います。
caching-nameserverを一緒にインストールする事により一度上位のネームサーバーに問い合わせを行うと名前解決する為の情報を一定時間保持(キャッシュ)しておけるので、上位のネームサーバーに都度検索しなくて済みます。

bindとcaching-nameserverをインストールします

ログイン後、rootユーザにスイッチします
[centos@centos ~]$ su -
パスワード: rootユーザーのパスワード

bindとcaching-nameserverをインストールします
[root@centos ~]# yum -y install bind caching-nameserver
Loading "priorities" plugin
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* base: rsync.atworks.co.jp
* updates: rsync.atworks.co.jp
* addons: rsync.atworks.co.jp
* extras: rsync.atworks.co.jp
0 packages excluded due to repository priority protections
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package caching-nameserver.i386 xx:x.x.x-x.x.x.xx.xxx_x set to be updated
---> Package bind.i386 xx:x.x.x-x.x.x.xx.xxx_x set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
caching-nameserver i386 xx:x.x.x-x.x.x.xx.xxx_x updates 58 k
Installing for dependencies:
bind i386 xx:x.x.x-x.x.x.xx.xxx_x updates 959 k

Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 1.0 M
Downloading Packages:
(1/2): bind-x.x.x-x.x.x.x 100% |=========================| 959 kB 00:00
(2/2): caching-nameserver 100% |=========================| 58 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: bind ######################### [1/2]
Installing: caching-nameserver ######################### [2/2]

Installed: caching-nameserver.i386 xx:x.x.x-x.x.x.xx.xxx_x
Dependency Installed: bind.i386 xx:x.x.x-x.x.x.xx.xxx_x
Complete!

bind設定ファイルを設定します。

named.confファイルがないのでnamed.caching-nameserver.confからコピーします
[root@centos ~]# cp -p /etc/named.caching-nameserver.conf /etc/named.conf

named.confファイルを編集します
[root@centos ~]# vi /etc/named.conf
viエディタが起動するので設定ファイルを変更します
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {
  名前解決の問い合わせに応えるインターフェイスおよびポートを指定する事ができます。ここでは問い合わせ元のIPアドレスを特に制限せずランダムなポートで待ち受け可としたいので先頭に//をつけてコメント化します(IPv4)
  //listen-on port 53 { 127.0.0.1; };
  
  名前解決の問い合わせに応えるインターフェイスおよびポートを指定する事ができます。ここでは問い合わせ元のIPアドレスを特に制限せずランダムなポートで待ち受け可としたいので先頭に//をつけてコメント化します(IPv6)
  //listen-on-v6 port 53 { ::1; };

  ※listen-on/listen-on-v6をコメント化する事で全ての問い合わせ元IPアドレスの制限がなくなり、かつランダムなポートで待ち受け可になりDNSキャッシュポイズニング対策になります。

  bindのバージョンを非表示化する為に追加します
  version "unknown";

  directory "/var/named";
  dump-file "/var/named/data/cache_dump.db";
  statistics-file "/var/named/data/named_stats.txt";
  memstatistics-file "/var/named/data/named_mem_stats.txt";

  // Those options should be used carefully because they disable port
  // randomization
  // query-source port 53;
  // query-source-v6 port 53;

  名前解決の問い合わせ可能なホストを指定できます。ここではローカルホストおよびローカルネットワークからの問い合わせを許可します
  allow-query { localhost; localnets;};

  ゾーン転送可能なホスト(セカンダリサーバ)を指定できます。ここではスレーブサーバはありませんので全ホスト転送不許可とします
  allow-transfer { none; };

  外部のDNSサーバに問い合わせを転送する場合に指定します。契約しているプロバイダのプライマリDNSとセカンダリDNSのIPアドレスを指定します(IPアドレスは各自DNSサーバのIPアドレスを入力の事)
  forwarders { xxx.xxx.xxx.xxx; xxx.xxx.xxx.xxx; };
};

DNSサーバへrndcと呼ばれるツールでアクセスを行うための設定を行います。rndcを使うとbindの機動・停止などを行うことが可能です
controls {
  inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

include "/etc/rndc.key";

ログに関するオプションを指定できます。ここではログファイルに日時、メッセージのカテゴリ、メッセージの重要度を出力するよう設定を追加します
logging {
  channel default_debug {
    file "data/named.run";
    severity dynamic;
    print-severity yes;
    print-category yes;
    print-time yes;

  };
};

ローカルホストで有効なゾーンの設定を行います。
view localhost_resolver {
  match-clients { localhost; };
  match-destinations { localhost; };
  recursion yes;
  include "/etc/named.rfc1912.zones";
  include "/var/named/sa-sa-ki.local.zones";(※1)
};
ローカルネットワークで有効なゾーンの設定を行います。
view internal {
  match-clients { localnets; };
  match-destinations { localnets; };
  recursion yes;
(※2)
  include "/etc/named.rfc1912.zones";
  include "/var/named/sa-sa-ki.local.zones";
(※1)
};

外部から有効なゾーンの設定を行います。
view external {
  match-clients { any; };
  match-destinations { any; };
  recursion no;(※2)
  include "/var/named/sa-sa-ki.jp.zones";(※1)
};

内容を保存しviエディタを終了します

(※1 )この後の手順で作成するファイルですのでひとまず指定してください
(※2)再帰問い合わせの許可、不許可の設定します。ローカルホストやローカルネットワークでは許可を外部は不許可とします
「再帰問い合わせ」の説明はScanNetSecurity - 現役ペンテスト技術者が選ぶ 使えるセキュリティツール(19) 「dig」 を参照の事

ゾーンファイル指定用のファイルを作成します。

ローカルホスト・ローカルネットワークのゾーンファイル指定用のファイルを作成します
[root@centos ~]# vi /var/named/sa-sa-ki.local.zones
viエディタが起動するのでゾーンファイル指定用のファイルを作成します
//内部正引き
zone "sa-sa-ki.jp" {
  type master;
  file "sa-sa-ki.local";
};
//内部逆引き
zone "0.168.192.in-addr.arpa" {
  type master;
  file "0.168.192.in-addr.arpa.db";
};

内容を保存しviエディタを終了します

外部のゾーンファイル指定用のファイルを作成します
[root@centos ~]# vi /var/named/sa-sa-ki.jp.zones
viエディタが起動するのでゾーンファイル指定用のファイルを作成します
//外部正引き
zone "sa-sa-ki.jp" {
  type master;
  file "sa-sa-ki.jp";
  allow-query { any; };
};
//外部逆引き
zone "104.189.210.in-addr.arpa" {
  type master;
  file "104.189.210.in-addr.arpa.db";
  allow-query { any; };
};

内容を保存しviエディタを終了します

ゾーンファイルを作成します。

ローカルホスト・ローカルネットワークの正引き(ドメイン名→IPアドレス)ゾーンファイルをします
[root@centos ~]# vi /var/named/sa-sa-ki.local
viエディタが起動するのでゾーンファイルを作成します
$TTL 86400(※1)
@   IN   SOA   sa-sa-ki.jp.(※2) centos.sa-sa-ki.jp.(※3) (
                   2009032301
(※4) ; Serial
                   3600
(※5) ; Refresh
                   900
(※6) ; Retry
                   604800
(※7) ; Expire
                   86400
(※8) ) ; Minimum
      IN   NS    ns.sa-sa-ki.jp.
(※9)
      IN   MX  10 mail.sa-sa-ki.jp.(※10)
@      IN   A    192.168.0.20(※11)
winxp    IN   A    192.168.0.101
winvista  IN   A    192.168.0.102
leopard   IN   A    192.168.0.103
ubuntu   IN   A    192.168.0.104
centos   IN   CNAME  sa-sa-ki.jp.
(※12)
ns     IN   CNAME  sa-sa-ki.jp.
mail    IN   CNAME  sa-sa-ki.jp.
www    IN    CNAME  sa-sa-ki.jp.

内容を保存しviエディタを終了します
(※1)外部のネームサーバーが自分のドメイン情報を参照してキャッシュ可能な時間(単位は秒)
(※2)ネームサーバーの名前
(※3)ドメインの管理者のメールアドレス(@は.に置き換えて記載する)
(※4)バージョン番号で年月日+シーケンス番号(YYYYMMDDnn)を指定します。ゾーンファイルを変更する場合は変更した年月日+シーケンス番号を一つ繰り上げます
・(※5)〜(※7)の設定はセカンダリネームサーバーがプライマリネームサーバーから取得したゾーン情報の扱いについて指定します
(※5)ゾーン情報をリフレッシュするまでの時間(単位は秒)
(※6)Refreshでゾーン情報が更新できなかった場合のリトライする時間(単位は秒)
(※7)ゾーン情報がリフレッシュできない状態が続いた場合、セカンダリネームサーバーが持っているデータを利用する時間(単位は秒)
(※8)存在しないドメイン名をキャッシュする時間(単位は秒)
(※9)NSレコードといってDNSサーバーを指定します。名前の後ろには.を付けます
(※10)MXレコードといってメールの転送先を指定します
(※11)Aレコードといってホスト名からIPアドレスへ変換する為の指定をします。@の場合ネームサーバー(※2)とイコールになります。
(※12)CNAMEレコードといってホスト名からIPアドレスへ変換する為のエイリアスを指定します。

ローカルホスト・ローカルネットワークの逆引き(IPアドレス→ドメイン名)ゾーンファイルをします
[root@centos ~]# vi /var/named/0.168.192.in-addr.arpa.db
viエディタが起動するのでゾーンファイルを作成します
$TTL 86400
@   IN   SOA   sa-sa-ki.jp. centos.sa-sa-ki.jp. (
                   2009032301 ; Serial
                   3600 ; Refresh
                   900 ; Retry
                   604800 ; Expire
                   86400 ) ; Minimum
    IN   NS     ns.sa-sa-ki.jp.
20   IN   PTR     sa-sa-ki.jp.
(※1)
101   IN   PTR     winxp.
102   IN   PTR     winvista.
103   IN   PTR     leopard.
104   IN   PTR     ubuntu.

内容を保存しviエディタを終了します
(※11)PTRレコードといってIPアドレスからホスト名へ変換する為の指定をします。

外部の正引き(ドメイン名→IPアドレス)ゾーンファイルをします
[root@centos ~]# vi /var/named/sa-sa-ki.jp
viエディタが起動するのでゾーンファイルを作成します
$TTL 86400
@   IN   SOA   sa-sa-ki.jp. centos.sa-sa-ki.jp. (
                   2009032301 ; Serial
                   3600 ; Refresh
                   900 ; Retry
                   604800 ; Expire
                   86400 ) ; Minimum
    IN   NS    ns.sa-sa-ki.jp.
    IN   MX 10  sa-sa-ki.jp.
@    IN   A    210.189.104.64
ns    IN   A    210.189.104.64
www   IN    A    210.189.104.64
mail   IN   A    210.189.104.64

内容を保存しviエディタを終了します

外部の逆引き(IPアドレス→ドメイン名)ゾーンファイルをします
[root@centos ~]# vi /var/named/104.189.210.in-addr.arpa.db
viエディタが起動するのでゾーンファイルを作成します
$TTL 86400
@   IN   SOA   sa-sa-ki.jp. centos.sa-sa-ki.jp. (
                   2009032301 ; Serial
                   3600 ; Refresh
                   900 ; Retry
                   604800 ; Expire
                   86400 ) ; Minimum
    IN   NS     ns.sa-sa-ki.jp.
64   IN   PTR     sa-sa-ki.jp.

内容を保存しviエディタを終了します

設定ファイルの所有者を変更する
[root@centos ~]# chown named.named /var/named/*
[root@centos ~]# ls -l /var/named
合計 136
-rw-r----- 1 named named 611 3月 24 19:29 0.168.192.in-addr.arpa.db
-rw-r----- 1 named named 441 3月 24 19:29 104.189.210.in-addr.arpa.db
drwxr-x--- 4 named named 4096 1月 30 12:11 chroot
drwxrwx--- 2 named named 4096 2月 24 18:53 data
-rw-rw-r-- 1 named named 198 1月 9 11:40 localdomain.zone
-rw-rw-r-- 1 named named 195 1月 9 11:40 localhost.zone
-rw-rw-r-- 1 named named 427 1月 9 11:40 named.broadcast
-rw-r----- 1 named named 1593 3月 24 18:57 named.ca
-rw-rw-r-- 1 named named 424 1月 9 11:40 named.ip6.local
-rw-rw-r-- 1 named named 426 1月 9 11:40 named.local
-rw-r--r-- 1 named named 2878 3月 24 11:21 named.root
-rw-rw-r-- 1 named named 427 1月 9 11:40 named.zero
-rw-r----- 1 named named 619 3月 24 19:29 sa-sa-ki.jp
-rw-r--r-- 1 named named 320 3月 24 17:22 sa-sa-ki.jp.zones
-rw-r----- 1 named named 843 3月 24 19:29 sa-sa-ki.local
-rw-r--r-- 1 named named 175 3月 24 09:49 sa-sa-ki.local.zones
drwxrwx--- 2 named named 4096 1月 9 11:40 slaves

設定ファイルの所有者が[named]に変更されている事を確認する

ルートゾーンファイル(世界に13台しかないトップレベルドメインを管理するDNSサーバーのIPアドレスを管理している)を最新にする

[root@centos ~]# dig . ns @198.41.0.4 > /var/named/named.ca

参照DNSサーバーをサーバー自身に変更する

参照DNSサーバーを変更します
[root@centos ~]# vi /etc/resolv.conf
viエディタが起動するので設定を以下の様に変更します
search sa-sa-ki.jp
nameserver 192.168.0.20

内容を保存しviエディタを終了します

DNSサーバーを外部公開する為に、CentOSのファイアウォールの設定を行います。

[root@centos ~]# vi /etc/sysconfig/iptables
viエディタが起動するのでファイアウォールの設定をします
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
下記2行を追加してTCPとUDPの53番ポートを開放します
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
内容を保存しviエディタを終了します

設定内容を反映します
[root@centos ~]# /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]

DNSサーバーを外部公開する為に、ルータの設定を変更してTCPとUDPの53番ポートを開放します。

開放方法はルータの設定手順に従って実施してください。

サービスの起動と自動起動の設定をします。

bindを起動します
[root@centos ~]# /etc/rc.d/init.d/named start
named を起動中: [ OK ]

OS再起動時にbindを自動起動するようにします
[root@centos ~]# chkconfig named on
[root@centos ~]# chkconfig --list named
named 0:off 1:off 2:on 3:on 4:on 5:on 6:off

ひとまずDNSサーバーの外部公開まで完了しました。
次回は動作検証とDNSキャッシュポイズニングの脆弱性の検証を行いたいと思います。

■ 参考サイト ■
Manpage of NAMED.CONF
DNSサーバー構築(BIND) - CentOSで自宅サーバー構築
はじめての自宅サーバ構築 Fedora/CentOS - DNSサーバの構築(bind)
「BIND」の設定
CentOS 5.2でBIND - K blog
BINDサーバー(ネームサーバー)をインストールして、名前解決を行おう。
DNSサーバ -BIND-
@IT:DNS Tips:SOAレコードには何が記述されている?

■関連記事
自宅サーバー再構築 その1 導入を検討する
自宅サーバー再構築 その2 CentOS 5.2 をインストールする
自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
自宅サーバー再構築 その9 CentOS 5.2 にバッファオーバーフロー攻撃対策を行う
自宅サーバー再構築 その10 CentOS 5.2 SSHサーバーを構築して外部からリモート接続&リモートファイル転送
自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)
自宅サーバー再構築 その12 CentOS 5.2 にDNSサーバーを導入して名前解決(確認編)
自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)
自宅サーバー再構築 その14 CentOS 5.2 にLAMP環境構築(MySQL編)
自宅サーバー再構築 その15 Apacheにサーバー証明書を導入する
自宅サーバー再構築 その16 CentOS 5.2 にWordPressを導入してブログサイトを構築する
自宅サーバー再構築 その17 WordPressのセキュリティ対策
自宅サーバー再構築 その18 CentOS 5.3 にNTPサーバーを導入して自動時間合わせ
自宅サーバー再構築 その19 CentOS 5.3 アンチウィルスソフトのバージョンアップ
自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)
自宅サーバー再構築 その21 CentOS 5.3 メールサーバー構築(Dovecot設定編)
自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)
自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)
自宅サーバー再構築 その24 CentOS 5.3 メールサーバー構築(メールアカウント作成編)
自宅サーバー再構築 その25 CentOS 5.3 メールサーバー構築(Thunderbird設定編)
自宅サーバー再構築 番外編その1 CentOS 5.3 のリリースと導入済みソフトウェアのアップデート


“自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)”にコメントはありません

コメントする