セキュリティ · 1 min read · Oct 27, 2025
BIND 9の脆弱性と解決策 - キャッシュポイズニングを避けるためにBINDをパッチする(Fedora/CentOS)
BIND 9の脆弱性と解決策 - キャッシュポイズニングを避けるためにBINDをパッチする(Fedora/CentOS)
私は、皆さんのほとんどがBINDの脆弱性について聞いたことがあると確信しています。今月初め、ダン・カミンスキーは、攻撃者が任意のネームサーバーを侵害する可能性があるDNSの大規模なマルチベンダー問題を発表しました - クライアントも含まれます。
私は、BIND 9を実行しているシステム管理者がこの脆弱性を解決するために使用できる最も迅速な解決策の1つを皆さんと共有したいと思いました。私のDNSサーバーで3日間テストと遊び回った後、私の問題を解決するように思える何かを発見し、皆さんと共有することに決めました。
本当に問題が解決されたかどうかはわかりませんが、私にはうまくいったので、テスト結果は素晴らしいです。しかし、皆さんの提案やコメントは歓迎します。
私の発見は、見た目はシンプルですが、CentOS 4または5およびFedoraコアシステム以上でBIND 9を実行している人々にのみ適用されます…私はオフィスのすべてのボックスでこれをテストしました。
始めましょう…よろしいですか?
前提条件と仮定
- あなたのファイアウォール(iptables NAT/PATまたはPIX)は、ランダムポート選択を許可するようにポート53を開いている必要があります。
- あなたはCentOS 4または5または任意のFedoraコアシステムでBIND 9を実行している必要があります。
- BINDはchrootモードで実行されている必要がありますが、必須ではなく、ベストプラクティスです。
- あなたの/etc/named/named.confまたは/etc/named.confファイルの中で….再帰的クエリを無効にし、ネットワークのみが再帰リクエストを行うことを許可するaclを追加する必要があります。これにより、システム管理者はキャッシュポイズニングの可能性を自分の知られているネットワークにまで減少させることができます。
acl "mynetworks" {
127/8; 172.16.0.0/12; 10.0.0.0/8; 192.168.0.0/16view "internal" {
match-clients { mynetwork; };
allow-query { mynetwork; };
allow-recursion { mynetwork; };
match-recursive-only yes;view "external" {
match-clients { any; };
allow-query { any; };
allow-recursion { none; };
match-recursive-only no;BINDの脆弱性を修正する方法
最初のステップは、システムが脆弱かどうかを確認することです…以下のコマンドを実行し、ns1.youdomain.co.tzを自分の組織のTLDまたはccTLDに置き換えます。
dig +short @ns1.youdomain.co.tz porttest.dns-oarc.net TXT
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
“192.168.1.3はPOORです: 26クエリ 20.0秒で1ポートからの標準偏差0.00”
POOR —–> 明らかに、問題のネームサーバーまたはシステムが脆弱であることを示しており、もちろん実行中のBINDソフトウェアも古く、パッチが必要です…
解決策
CentOSまたはFedoraシステムを実行している人々のために…..yumを使用してシステムをパッチできます。CentOS 5の開発者はすでにBINDソフトウェアのパッチをリリースしており、現在のものは: bind-9.3.4-6.0.2.P1.el5_2です。P1は、パッケージがパッチされたものであることを示します。
私のシステムでは、パッチ後にこの結果が得られました..
rpm -q bindbind-9.3.4-6.0.2.P1.el5_2 —-> あなたのbindバージョンがパッチされていない場合は、パッチしてください。
最新のソフトウェアとパッチを取得するために、次のようにします。
yum update bind bind-chroot -ynamed.confファイルを編集し、以下を追加します。保存してBINDを再読み込みします。
vi /etc/named.conf options {
directory "/var/named";
allow-transfer {192.168.1.4 ;};
query-source address * port 53; ##この行をコメントまたは削除します。これにより、ランダムポート選択が許可されます。このパラメータがnamed.confファイルのオプションの下で有効になっている場合のみ、これを行ってください。
dnssec-enable yes; ## DNS-SECを有効にするためにこのオプションを追加します。上記の行をnamed.confファイルに追加すると、DNS-SECが有効になります。DNS-SECを設定してくださいが、DNS-SECはこの脆弱性に対する究極の解決策ではないことを忘れないでください。**
BINDを再読み込みまたは再起動します。
/etc/init.d/named reload
その後、再度テストして、より良い結果が得られるかどうかを確認します。
dig +short @ns1.youdomain.co.tz porttest.dns-oarc.net TXT
確認のために… :-)
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
“192.168.1.3はGOODです: 26クエリ 19.6秒で26ポートからの標準偏差 16515.27”
GOODは、問題のネームサーバーが192.168.1.3で安全であるように見えることを示していますが、リストされたポートが明らかなパターンに従っていないことを確認する必要があります。すなわち、標準偏差16515.27のポート…しかし、テストが(10000.00の標準偏差)を記録した場合、あなたのDNSサーバーはより安全であり、あなたのクライアントやユーザーは心配する必要はありません。
同じ手順を組織内のすべてのDNSサーバーで実行する必要があります。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。