DNS関連の脆弱性とその対策

前略

DNS脆弱性

ゾーン転送機能による登録情報の不正利用

ゾーン転送機能とは、プライマリDNSの登録情報をセカンダリDNSへ反映する仕組み。
通常セカンダリDNSは上位プロパイダのDNSなど外に存在するため、攻撃者が外から登録情報を不正取得することが可能。
一瞬何が悪いのかと思ったが、どうも内部向けの名前解決情報まで漏れるらしい。ローカルで使っているドメイン名とプライベートアドレスの対応まで筒抜け・・・と。
 

不正情報をキャッシュに登録可能

DNSキャッシュのポイゾニングという奴。
ある種のサーバープログラムの脆弱性を突けば、任意の名前解決情報を登録可能とか。
 

DoS攻撃を受ける危険性がある脆弱性

これまた一部のサーバープログラムに存在する脆弱性
BOFDoSが来ることがあるとか。。。
 

その対策

外部向けゾーン情報と内部向けゾーン情報を分離

外部向けに公開すべき情報と内部でしか使用しない情報を分離。それぞれ外向き・内向きネームサーバーとして分割管理。
また公開DNSには内部の名前解決情報は登録しない。(逆はあり。つまり公開DNSの情報を内向きDNSが取得することは可能)
 

ゾーンサーバとキャッシュサーバを分離

さらに、DNSの機能毎にサーバを分割する。
それぞれ

  • キャッシュサーバー

 名前解決要求に応じて自身のキャッシュや他のDNSへの問い合わせで名前解決をする。
 自身はゾーン情報を持たない。

  • ゾーンサーバー

 ゾーン情報の登録を担当。キャッシュサーバーからの問い合わせにのみ応じる。
 名前解決は一切行わない。
 
つまり問い合わせを受ける奴に重要な情報を持たせず、漏れたら困る情報持ってる奴は受付窓口を背後からバックアップ という体制を作るということ。
  

ゾーン転送の制限

外部からの転送要求を受ける必要がないなら公開DNSサーバーの53番ポートを閉じる。
或いはセカンダリDNSにのみ許可するよう設定。誰にでも教える状態から脱却する。
 

キャッシュサーバーの利用者を制限

利用可能なホストのIPアドレスを制限。
たとえば内向きキャッシュならローカルアドレスのみ など。
 

問い合わせ数を制限

クライアントからの再帰問い合わせ回数を制限し、DoS攻撃を回避する。