2018年11月13日

UbuntuServer18.10 DNS/DHCPサーバ(dnsmasq)で悪質サイト・広告をブロッキング

以前に構築したDNS/DHCPサーバ(dnsmasq)を利用し、危ないサイトへのアクセスをブロッキングしたり、悪質な広告サイトを除去したりしよう。

代々この手の制御はWEBプロキシサーバが担ってきたが、WEBサイト全般がHTTPSでの通信にシフトするに連れて、暗号化されている通信内容を書き換えることが困難であるため(書き換えられたら意味がないわけだが)、対応が難しくなって来た。

そこで代替手段として、DNSサーバに悪質サイトの名前解決が要求されたら名前解決せずに電子の海へポイする設定をすることで、そういうサイトをブロッキングするようにする。

ブラウザの拡張機能やスマートフォンアプリなどでもブロックは可能ではある。
だがサーバサイドで行うことで
  • 端末・ブラウザ・アプリごとに設定を行わなくて済む。
  • 端末の処理能力を割かなくて済む。
などの利点がある。


アクセスブロックリストの作成


DNSサーバがアクセスブロックに使用するドメインネームのリストを作成する。
今回は悪いインターネットで配布されているリストを使用する。
# ファイルの格納先ディレクトリを作成
sudo mkdir /etc/dnsmasq.blocklist.d
# 配布されているリストをディレクトリに保存
sudo curl https://warui.intaa.net/adhosts/hosts_lb.txt -o /etc/dnsmasq.blocklist.d/warui.hosts



dnsmasqの設定変更


dnsmasqの設定ファイルに、上記で作成したホストファイルを読み込ませるよう、修正を加える。
sudo nano /etc/dnsmasq.conf
【dnsmasq.conf】ファイル内
# 下記の一文を追加する
addn-hosts=/etc/dnsmasq.blocklist.d
addn-hostsはファイルを指定すればそのファイルを、ディレクトリを指定すれば配下にあるファイル全てを読み込んで名前解決に使用する。
今後、新しくブロックするリストを追加したければこのディレクトリにどんどこファイルを作成してあげればいい。


動作確認


dnsmasqを再起動し、動作確認する。
# dnsmasqの再起動
sudo systemctl restart dnsmasq.service
# /etc/dnsmasq.blocklist.d/warui.hostsファイル内の適当なドメインを選択し名前解決のテスト
nslookup XXXXX.XXX
Name: XXXXX.XXX
Address: 127.0.0.1 # ローカルアドレスで解決が行われたことを確認。



ブロックリストの更新


ネットで公開されているブロックリストはサイトの管理人様により随時メンテナンスされていったりするので、感謝しながら週次とかで自動更新するようにする。
# 週次実行されるcronフォルダにファイルを作成。
sudo nano /etc/cron.weekly/dnsmasq
【dnsmasq】ファイル内
#!bin/bash
/usr/bin/curl https://warui.intaa.net/adhosts/hosts_lb.txt -o /etc/dnsmasq.blocklist.d/warui.hosts
/bin/systemctl restart dnsmasq

保存できたらパーミッションを変更してテストしてみる。
# パーミッションを変更。
sudo chmod 755 /etc/cron.weekly/dnsmasq
# cronのテスト。
# 実行出来るファイルが表示されるのでその中に/etc/cron.weekly/dnsmasqがあればOK。
sudo run-parts --test /etc/cron.weekly/



Webサーバ


名前解決する際に127.0.0.1(dnsmasqサーバ自身)を返すようにしたが、存在するWEBサーバに向けていた方が早いかも?みたいな記事を昔どこかで見たんだけど、見つけるところができなかった。

このサーバにはWEBサーバ(nginx)が構築されてるので、試しに返すIPアドレスをこのサーバのものにして 試してみたが、めっちゃ遅くなった。
設定が悪いのかなんか勘違いしているのか、わからん。

まぁ127.0.0.1の時点ですごく効果がでてるので、問題はない。


終わり


危ないサイトにアクセスしなくなったのに加え、悪質な広告の名前解決もしなければファイルの取得もしなくなるのでページ表示が早くなる。
自己満足に浸れます。
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/184905839
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック