exgress な udp/53 をブロックすれば、通信を改竄詐称盗聴できる時代は終わった。従来どおりやるにはdot / doh / dos を止めないと・・・それには打つ手はない。
v6 の public DNSのIPアドレスをブロックする。
ただ、public dnsを止めるだけでも相当の効果はあると考えられる。
v6時代のpublic dns をブロックしてDNSをある程度制御することにする。
public dns のv6アドレスの一覧をURLで用意した
https://github.com/takuya/public_dns_list/raw/master/public_dns_ipv6_list.txt
GitHub - takuya/public_dns_list: known public dns list ips and domains
これをルータに仕込む
#!/usr/bin/env bash function v6_addrs(){ map=working_$RANDOM ipset destroy $map &> /dev/null ipset create $map hash:ip family inet6 addrs=( https://github.com/takuya/public_dns_list/raw/master/public_dns_ipv6_list.txt ) list=() for url in ${addrs[@]} ; do echo $url; a=$(curl -sL $url ) list+=( $a ) done ips=$( for i in "${list[@]}"; do echo $i; done | sort -n | uniq \ | sed -E 's|$|/128|' \ | sort -n | uniq ) for i in $ips ; do ipset add $map $i 2>/dev/null; done ; ipset list $map | grep -E '^[0-9]' | sort -n > /etc/config/custom/public-dns/ip6-list.txt ipset destroy $map } function v4_addrs(){ map=working_$RANDOM #iptables -D FORWARD -o pppoe-ybb -m set --match-set public_dns dst -j DROP ipset destroy $map &> /dev/null ipset create $map hash:ip addrs=( https://github.com/takuya/public_dns_list/raw/master/dns-list-ipv4.txt https://github.com/takuya/public_dns_list/raw/master/dns-list-doh-as-ip.txt https://github.com/takuya/public_dns_list/raw/master/dns-list-dot-as-ip.txt ) list=() for url in ${addrs[@]} ; do echo $url; a=$(curl -sL $url ) list+=( $a ) done ips=$( for i in "${list[@]}"; do echo $i; done | sort -n | uniq \ | sed -E 's|:[0-9]+||' \ | sed -E 's|$|/32|' \ | sort -n \ | uniq ) for i in $ips ; do ipset add $map $i ; done ; ipset list $map | grep -E '^[0-9]' | sort -n > /etc/config/custom/public-dns/ip-list.txt ipset destroy $map # #ipset list public_dns #iptables -I FORWARD -o pppoe-ybb -m set --match-set public_dns dst -j DROP } function main(){ v4_addrs v6_addrs } ### main;
firewall 設定
config ipset option name 'public_dns' option match 'dest_ip' option family 'ipv4' option loadfile '/etc/config/custom/public-dns/ip-list.txt' config ipset option name 'public_dns_v6' option match 'dest_ip' option family 'ipv6' option loadfile '/etc/config/custom/public-dns/ip6-list.txt' ### 特定のネットワーク・アドレス空間だけ v6を許可する。 config rule option ipset 'public_dns_v6' option src 'lan6' option dest '*' option target 'ACCEPT' option name 'Allow v6 global from pc ' list src_ip 'fd03:xxx:xxx:xxx::/64' ## public_dns(v6)への通信は全部拒否 config rule option src 'lan6' option dest '*' option ipset 'public_dns_v6' option target 'REJECT' option family 'ipv6' option name 'reject public dns:ipset' list proto 'all' ## public dns (v4)の通信は全部拒否 config rule option src 'lan' option dest 'wan' option ipset 'public_dns' option target 'REJECT' option device 'pppoe-xxx' option direction 'out' option family 'ipv4' option name 'reject public dns:ipset' list proto 'icmp' list proto 'any'
基本的には打つ手なし
DoHがChromeにはいったので、野良でDoHを起動されると、本当に打つ手はない。
証明書の書換えによる、通信監視しか手段はない。
証明書の書換えは、リスクが高すぎるし、なにより、通信の秘密に関わる部分である。日本国と国民は憲法により、通信の秘密は保持すると決めている。国民間の労働契約の場合においても雇用条件通知書や雇用契約書で明記しない限り、リーガルリスクを伴う。学生・社員が逃れたとしてもそれの責任追及をする根拠としての「通知・契約」である。不文律というわけには行かない。せいぜい漏洩した被害にたいする責任追及に留まることになる。なので、野良DoHは打つ手はない。契約で縛るしかない。でも「悪意の広告」「フィッシング」「悪質な全面広告」をブロックするには、DNS書き換えが強い力を発揮するので使わない手はない。ライトユーザ相手にはとても良い選択肢だと思う。
こっそり通信を監視するような横暴は不可能になっているので、改めて本当に必要な監視かどうか考え直してほしい。
また証明書のインストールをするのであれば、ちゃんと契約に明示したほうがいいと思う。そして証明書のインストールが「レアキャラ」であり信用できない証明書のインストールをしてはいけないことを合わせて教えておく必要がある。でなければ、「証明書のインストールをやって良いんだ」という誤った解釈を学習することにになる。
いまは、Google Chromeのインストールを「Windowsで構成」すれば、DoHを使わせないことができる。いつまできることやら。
大いなる力には大いなる責任が伴う。