それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

public dns のv6アドレスを通信拒否する。

exgress な udp/53 をブロックすれば、通信を改竄詐称盗聴できる時代は終わった。従来どおりやるにはdot / doh / dos を止めないと・・・それには打つ手はない。

v6 の public DNSIPアドレスをブロックする。

ただ、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を使わせないことができる。いつまできることやら。

大いなる力には大いなる責任が伴う。