Raspberry Pi で広告ブロック
概要
- Raspberry Pi に RpiDNS を入れて広告ブロック DNS(リカーシブ)で使用
- インターネットにつながる Raspberry Pi があれば20分程度で作業完了
- 家の DNS 兼ファイアウォール
- RpiDNS は ioc2rpz を Raspberry Pi で動作させるプロジェクト
- ioc2rpz の紹介 10 Top Tools for Threat Hunters from Black Hat USA 2019
流れ
- Raspberry Pi の準備
- ioc2rpz のサイトにアカウントを作成
- ioc2rpz のサイトで設定ファイルを作成
- Raspberry Pi で上記設定ファイルの入手とインストールを行うスクリプトを実行
チュートリアルビデオ(公式)
Raspberry Pi の準備
- インターネットに接続した Raspberry Pi
- 今のところ Raspbian のみ対応
ioc2rpz でのアカウント作成とログイン(5分)
- ioc2rpz でアカウントを作成
- 登録確認のメールが来るので承諾、サインイン
RpiDNS の設定(5分)
- ioc2rpz にサインイン、RpiDNS β を選択
- + ボタンをクリック、設定画面に移動
- RpiDNS の名前(任意)を入力
- 使用する Raspberry Pi のハードウェアを選択
- RpiDNS が使用する DNS ソフトウェアを選択(現時点では BIND のみ)
- 有効にする RPZ を選択(指定したハードウェアのメモリを超過しそうな場合は警告されるので、上限に収まるように取捨選択)
- それぞれの RPZ ごとにアクションを設定
- Add ボタンで完了
RpiDNSのインストール(10分)
- 完成した RpiDNS の設定画面からリンクアイコンをクリックし、cURL のリンクをコピー
- Raspberry Pi に SSH でログインし、コピーしたコマンドを貼り付け
$ curl 'https://ioc2rpz.net/get_rpidns_config.php?req=download&uuid=<略>' -o ioc2rpz_community_install.sh
- 作成されたファイルを実行
$ sudo bash ioc2rpz_community_install.sh
- 正常に終了すれば、最後に管理画面の URL とパスワードが出力されるので、メモ
#########
RpiDNS was installed
#########
Management console: https://<つけた名前>.rpidns.ioc2rpz.local/rpi_admin/
Username: rpiadmin
Password: <略>
DNS サーバの切り替えと動作確認(5分)
- 端末の DNS サーバの設定を RpiDNS の IP アドレスに切り替え(あるいは DHCP サーバのオプションで DNS サーバを変更)
- ブラウザから上記の Management Console に記載の URL に接続(ユーザ名とパスワードもコピペ)
- いくつかのサイトにアクセス、Dashboard でブロックされたホストのログを確認
その他
- 見れなくなったサイトやアプリ
- ヤフー(日本)のブラウジング
- iphone アプリではヤフー(日本)関連、その他、乗換案内や駅すぱあとなど
- ブロックしているのは notracking.ioc2rpz "No more ads, tracking and other virtual garbage"
- 回避のためホワイトリストに入れることはできるが、どのドメインを許可すればいいのかログから判断するのが面倒
- 管理コンソールや警告画面の証明書エラーを回避
- RpiDNS のルート証明書を取得( Admin > Downloads からルート証明書をダウンロード)
- 各端末にインストール
- 管理画面のログの時刻を日本時刻に変更
OSのタイムゾーンが日本の場合
$ timedatectl | grep zone
Time zone: Asia/Tokyo (JST, +0900)
$ cd /opt/rpidns/www/rpi_admin/
$ sudo cp rpidata.php rpidata.php.bak
$ sudo sh -c 'sed -e "s/%Y-%m-%dT%H:%M:%SZ/%Y-%m-%dT%H:%M:%S/g" -e "s/'utc'/'localtime'/g" rpidata.php > rpidata.php.new'
$ sudo ln -sf rpidata.php.new rpidata.php
$ sudo systemctl restart php7.3-fpm.service
- 管理画面の表示を MAC アドレスからわかり易い名前に変更
Admin > Assets で MAC アドレスごとに NAME を設定
リソース
https://github.com/Homas/ioc2rpz/
https://ioc2rpz.net/
https://www.raspberrypi.org/