好ましくは同様ですiptables
。基本的にこの問題を解決しようとしていますiptables
。これを行う方法についての提案はありますか?
答え1
トラフィックをドロップするために iptables ルールの名前解決を使用する場合、ルールの作成中に名前が解決されます。状況が変更されると、ルールは適用されなくなります。これは解決策かもしれません(完璧な解決策ではありません...)。
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
LAN内の他のホストから:
# host www.facebook.com
www.facebook.com A record not found, try again
udp/53
デフォルトでは、16進文字列を含むすべてのDNSパケット()を破棄しますwww.facebook.com to
。これはhttpトラフィック自体ではなく名前解決を削除することに注意してください。
DNSクエリのドット表記|03|www|08|facebook|03|com
を表すPipes()で区切られた16進数。.
次の文字のうち、文字の各部分を表す文字数を示します。完全修飾ドメイン名(ホスト、ドメイン、トップレベルドメイン)例:
マスター:mail.google.com
16進表現:04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
「ビジュアルパフォーマンス:04mail06google03com
tcpdump を使用してパケットを取得します。
# tcpdump -i eth0 -X dst port 53
15:50:11.643672 IP xxx.xxx.xxx.xxx:xxx > ns4.google.com.domain: 16530 A? mail.google.com. (33)
0x0000: 4500 003d 779a 4000 4011 b390 c949 4742 E..=w.@[email protected]
0x0010: d8ef 260a 8424 0035 0029 0fc0 4092 0000 ..&..$.5.)..@...
0x0020: 0001 0000 0000 0000 046d 6169 6c06 676f .........mail.go
0x0030: 6f67 6c65 0363 6f6d 0000 0100 01 ogle.com.....
しかし覚えています:
- smtp、ftp、httpなどのより具体的なトラフィックをフィルタリングしたい場合は、そのプロトコルのプロキシが優れています。
- ドメインをブロックするのではなく、DNSクエリを「ハイジャック」しています。ユーザーはそれほど愚かではありません;)
答え2
あなたの質問への回答が遅すぎるかもしれませんが、最近同様の問題を解決する必要があり、Googleからここに案内しました。
検索に失敗した後、DNS応答を傍受し、その中のドメイン名を与えられた正規表現と比較し、一致するIPアドレスを一覧表示する小さなユーティリティをCで作成しました。ここにいる:https://github.com/vmxdev/sidmat/
独自のDNSサーバーを設定する必要はありません。このユーティリティは、すべてのサーバーでDNS応答をキャプチャできます。
たとえば、facebook.com(およびサブドメイン)の現在確認されているIPアドレスを表示するには、次のように実行できます。
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
ここで、eth0はルーター(またはDNS応答が転送される場所)のネットワークインターフェースです。
iptables(またはipsetを使用したiptables)と簡単に統合できます。
しかし:
- 実用性は非常に簡単です。攻撃者が欺くために多くの検査を行いません。
- ユーザーが名前解決にDNSを使用していない場合、この手法は役に立ちません。
答え3
答え4
ローカルキャッシュバインド9を実行すると、通常は次のように実行されます。dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
そしてdummy-block
ファイル:
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
* IN A 127.0.0.1
また見なさい:
BIND9およびISC-DHCPの実行たとえばfacebook.com
。