プロが教えるわが家の防犯対策術!

DNSの仕組みについて分からないので教えて頂きたいです。

現在、マスターとスレーブサーバを構築しており、外向きの
名前解決など動作的には正常に動作していると思われます。

サーバはCentosで構築しており、iptablesで設定しています。

iptablesの一部で以下のように設定をしているのですが・・・

-------------------------------------------------------------------------
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-------------------------------------------------------------------------

1.まず、TCP/UDP共にポートを開けておかないといかないと思うのですが、送信元
  はANYで許可しておかないとダメでしょうか?
  上位DNSサーバからの参照などに使われますよね?
  もちろんbindの設定で、ゾーン転送はスレーブサーバへのみ許可しています。

2.スレーブサーバへのゾーン転送もできているのですが、マスタサーバ側のiptables
  のログに下記のようなものが残っています。
  送信元IPはスレーブサーバのIPでUDP送信ポート53が使われているようなのですが
  送信ポート53は何に使われているのでしょうか?宛先ポート53との違いは?

--------------------------------------------------------------------------
SRC=送信元IP DST=宛先IP LEN=72 TOS=0x00 PREC=0x00 TTL=62 ID=20999 PROTO=UDP SPT=53 DPT=47046 LEN=52
--------------------------------------------------------------------------
スレーブの53ポートからの通信がDNSの動作に必要なものであれば、iptablesのルールを追加
しようと思います。
情報が少ない場合は補足できる範囲で補足させて頂きます。

よろしくお願いします。

A 回答 (3件)

>1.まず、TCP/UDP共にポートを開けておかないといかないと思うのですが、送信元


>  はANYで許可しておかないとダメでしょうか?

ここで言っている送信元とは、送信元IPアドレスでしょうか、送信元ポート番号でしょうか?

UDPは、
・送信元IPアドレスであればDNSリクエストの送信元は不特定ですのでANYである必要がありますね。
・送信元ポート番号であれば、基本ANYでいいと思いますがもっと厳密にするのならば53,1024:65535という指定になるかと思います。

TCPは、
・ゾーン転送のみの使用なので送信元IPアドレスをスレーブサーバのみの固定してもいいでしょう。
・送信元ポート番号はUDPと同様

あとiptablesの設定ではなくBIND側の設定であり既に対応済みかもしれませんが、不特定からのDNSリクエストを受けますので、外部からのDNSクエリリクエストには、自ドメインに対する問い合わせしか応答しない設定も重要かと思います。


>2.スレーブサーバへのゾーン転送もできているのですが、マスタサーバ側のiptables
>  のログに下記のようなものが残っています。

プロトコルの中身がわからないので確実ではありませんが、
これは、マスターからスレーブへのDNS NOTIFYリクエストに対する応答だと思われます。(DNSクエリリクエストの応答の可能性も多少あるかも)

必要なものですが、そもそもDNSレスポンスに対するケアが示された情報には見当たりません。
これでは上位DNSに対する再帰問い合わせの応答が受け取れないように思います。


>送信ポート53は何に使われているのでしょうか

DNSリクエストに対する応答は基本このような通信になるはずです。

また、一般的にはDNS クエストの送信元ポート番号はランダム(1024:65535)で宛先ポート番号が53になりますが、
古いDNSサーバや、ファイアウォールの関係で送信元ポート番号を53に固定する場合も少数だと思いますがあります。
    • good
    • 0
この回答へのお礼

maesenさん回答ありがとうございます。

>>1.まず、TCP/UDP共にポートを開けておかないといかないと思うのですが、送信元はANYで許可しておかないとダメでしょうか?

>ここで言っている送信元とは、送信元IPアドレスでしょうか、送信元ポート番号でしょうか?

ここでは送信元IPアドレスでした。ただ、DNSリクエストの送信元が不特定なのでANYで良いですね。

>あとiptablesの設定ではなくBIND側の設定であり既に対応済みかもしれませんが、不特定からのDNSリクエストを受けますので、外部からのDNSクエリリクエストには、自ドメインに対する問い合わせしか応答しない設定も重要かと思います

named.confの「recursion no;」の設定ですよね。この辺りは設定済みです。実際に外部からは自ドメイン以外の名前解決はできません。

>>2.スレーブサーバへのゾーン転送もできているのですが、マスタサーバ側のiptablesのログに下記のようなものが残っています。

>プロトコルの中身がわからないので確実ではありませんが、これは、マスターからスレーブへのDNS NOTIFYリクエストに対する応答だと思われます。(DNSクエリリクエストの応答の可能性も多少あるかも)

>必要なものですが、そもそもDNSレスポンスに対するケアが示された情報には見当たりません。これでは上位DNSに対する再帰問い合わせの応答が受け取れないように思います。

NOTIFYリクエストという線で検索してみたところ、なんかそれっぽいことが書いてあるPDFを発見しました。
http://www.tatsuyababa.com/NW-DNS/NW-200309-DNSQ …
(最後のページの表6)
NOTIFYについて詳しくは分からないのですが、これってマスターのゾーンファイルが更新されたことを更新通知として送信するものですよね?
管理しているサーバではマスターからスレーブへのゾーン転送は定期的に行われているようなのですが現状のままで問題無いのでしょうか^^;よく分かりません。

ただ、必要なモノっぽいのでiptablesにて送信ポートUDP/53で送信元IPをスレーブサーバとして追加しておきます。

お礼日時:2011/08/05 18:43

>管理しているサーバではマスターからスレーブへのゾーン転送は定期的に行われているようなのですが現状のままで問題無いのでしょうか^^;よく分かりません。



ゾーン転送関連の解説を見て頂ければわかるとおもいます。
参考サイト(これ以外にも解説しているサイトはあると思います)
http://www.atmarkit.co.jp/flinux/rensai/bind905/ …

DNS NOTIFYはゾーン転送の即時性を高めるもので、マスタの更新によるスレーブとのゾーン情報の差異をごく短期間に出来ることになります。

定期的なゾーン転送が無くなるわけではないので(意図的に設定しなければ)、定期更新の間隔の間はゾーン情報に差異があることをを容認出来れば、現状でも問題無いということになると思います。

ただ、ファイアウォールでブロックするまでは必要はないと思います。
ブロックするのならばBINDをNOTIFY自体を出さないような設定にすべきと思います。
    • good
    • 0
この回答へのお礼

いろいろと勉強してみます。
ありがとうございました。

お礼日時:2011/08/17 22:47

DNSのクエリの場合、情報量が多いとUDPからTCPに切り替えて接続します。


この動作で、某ISP(?)のDNSサーバーでの名前解決に問題が起きたのは記憶に新しいです。
FireWallでは、TCPもUDPも開けておくのが一般的です。
転送しないからTCPは開けないと言うエンジニアがいますが、それではRFCに準拠していません。

そのDNSサーバーが内部からクエリに対し
外部の名前解決を請け負っているのであれば問題が生じるでしょう。

一般的なDNSサーバーは送信ポートも受信ポートも53でした。
この仕様がセキュリティ上問題になり、ソースポートを変更している場合もありますが
基本はソースポートも53と思って良いでしょう。
    • good
    • 0
この回答へのお礼

pakutiさん回答ありがとうございます。

>DNSのクエリの場合、情報量が多いとUDPからTCPに切り替えて接続します。
この動作で、某ISP(?)のDNSサーバーでの名前解決に問題が起きたのは記憶に新しいです。
FireWallでは、TCPもUDPも開けておくのが一般的です。

一定パケット以上ではTCPが使われるみたいですね。ということで現状のまま、UDP/TCPの53ポートは開けておきます。

>一般的なDNSサーバーは送信ポートも受信ポートも53でした。
この仕様がセキュリティ上問題になり、ソースポートを変更している場合もありますが
基本はソースポートも53と思って良いでしょう。

ログを見る限りソースポートが53で通信しに来ているのがスレーブサーバのIPしかないので、maesenさんがおっしゃるようにNOTIFYリクエストなのではないかと思っています。

お礼日時:2011/08/05 18:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!