できれば似たようなものiptables
。基本的に、でIPを使用する場合と同じように、ドメインフィルタリング/ホワイトリスト/ブラックリストを作成しiptables
ます。これを行う方法に関する推奨事項はありますか?
できれば似たようなものiptables
。基本的に、でIPを使用する場合と同じように、ドメインフィルタリング/ホワイトリスト/ブラックリストを作成しiptables
ます。これを行う方法に関する推奨事項はありますか?
回答:
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 packet()に言っていますwww.facebook.com to
。これにより、httpトラフィック自体ではなく、名前解決がドロップされることに注意してください。
pipes(|03|www|08|facebook|03|com
)で区切られた16進数は、.
dnsクエリのドットシンボルの表現です。FQDNの各部分(ホスト、ドメイン、トップレベルドメイン)を表す次の文字の数を示します。例:
ホスト: 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.@.@....IGB
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.....
でも覚えておいて:
あなたの質問に対する答えは遅すぎるかもしれませんが、最近私は同様の問題を解決する必要があり、グーグルはここに私をもたらします
検索に失敗した後、CでDNS応答をインターセプトし、指定された正規表現とドメイン名を比較し、一致したIPアドレスをリストする小さなユーティリティを作成しました。ここにあります:https : //github.com/vmxdev/sidmat/
独自のDNSサーバーを設定する必要はありません。ユーティリティはどのサーバーからのDNS応答もキャッチできます
たとえば、今すぐ解決できるfacebook.com(およびサブドメイン)のIPアドレスを表示するには、次を実行します。
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
eth0はルーターのネットワークインターフェイス(またはDNS応答が通過する場所)
iptables(またはipsetsのiptables)と簡単に統合できます
だが:
ブラックリストの最も簡単な方法は、おそらくdnsmasqを使用することです
インストール dnsmasq
$ sudo apt-get install dnsmasq
この行を /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
これにより、facebook.comとそのすべてのサブドメインがブロックされます。
注:Ubuntuについては、この投稿を参照してください。
ローカルキャッシングbind9を実行している場合、多くの場合、 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
こちらもご覧ください:
facebook.com
例付きのBIND9およびISC-DHCPの実行。