悪霊にさいなまれる世界 -The Demon-Haunted World

30代独身機械系技術者が雑記/セキュリティ/資産運用なんかを書きます/PGP・GPG Key:BC884A1C8202081B19A7A9B8AB8B419682B02FF8

小ネタ:RaspberryPi 3B+のWiFiとBluetoothを無効化した

f:id:scienceasacandleinthedark:20190801184150p:plain

大学時代、マクスウェルの方程式が理解できずに電磁気学の単位を落としたので無線通信を未だに信用できてない。というわけで可能な限り有線主義者なのでRaspberryPiも当然有線LANである。そして繰り返しになるが、使わない機能はOFFにするのがセキュリティの基礎となる。

そういうわけでRaspberryPi 3B+のWiFiBluetoothを無効化した。/boot/config.txtを開いて下記三行(最初の一行はコメント)を追加する。

#WiFi and Bluetooth Disable
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt

これで再起動する。WiFiの無効化はip a sでwlan0が無いことを、Bluetoothの無効化はsyslogを見ると再起動時にワヤワヤ出てなければ起動してないはずである(適当)

以上。

SyslogにDHCPv6 REPLY: No Addresses Availableというエラーが連発するのでdhcpd.confを弄ってみた

f:id:scienceasacandleinthedark:20190716212551p:plain

science-as-a-candle-in-the-dark.hatenablog.com1時間ほど前にRaspbianを最新版にして、様子を見てたところSyslogに下記のようなエラーが定期的に出ている。

Jul 16 21:00:31 raspberrypi dhcpcd[303]: eth0: DHCPv6 REPLY: No Addresses Available
Jul 16 21:00:31 raspberrypi dhcpcd[303]: eth0: DHCPv6 REPLY: No Addresses Available
Jul 16 21:00:32 raspberrypi dhcpcd[303]: eth0: DHCPv6 REPLY: No Addresses Available
Jul 16 21:00:32 raspberrypi dhcpcd[303]: eth0: DHCPv6 REPLY: No Addresses Available

なんぞようわからんが、ifconfigをかけてみると普通にIPv6は設定されている模様。うーむと思いつつArchLinuxWikiを見てみたところ、こんな記述が。

IPv6 - ArchWiki

dhcpcd は (無害ですが) IPv6ルーター要請を送信し続けます。

多分これだろうと見当を付けて/etc/dhcpcd.confに下記2行を追加

noipv6rs
noipv6

しかる後再起動。するとSyslogからエラーが消えた。IPv6が使えなくなったわけでもないので多分これで正解だろう。

RaspberryPi 3B+のRaspbianをDebian Busterベースの最新版(2019-07-10版)に変更して、TorのIdentity Keyをそのまま移し替える

f:id:scienceasacandleinthedark:20190716195635j:plain

Max Pixelより

RaspberryPi 4Bのリリースと、Debian Busterのリリースに合わせてRaspbianもBusterベースになった。丁度いい機会なのでRaspbianからまるごと入れ直す。

Download Raspbian for Raspberry Pi

基本的にはかつて書いたRaspberryPi 1B再設定と、RaspberryPi 3B+にTor公式リポジトリを追加したときと同じことをすれば良い。

RaspberryPi(初期モデル 1 Model B)初期設定、Ed25519鍵使用メモ - 悪霊にさいなまれる世界 -The Demon-Haunted World

RaspberryPi 3B+に公式リポジトリを追加して最新のTorを入れてリレーノードを構築した - 悪霊にさいなまれる世界 -The Demon-Haunted World

が、Tor公式リポジトリの指定をstrechではなくbusterにしなければならない。/etc/apt/sources.listは下記の通り変更する。

deb https://deb.torproject.org/torproject.org  buster main
deb-src https://deb.torproject.org/torproject.org  buster main

あとは前回と同じである。しかしこれで普通にTorをインストールしたままだと、新規に作成されたTorリレーのアイデンティティとなり、Torリレーとしての連続性が保たれない。

別に気にしないのであればそのままで良いのだが、せっかくなのでアイデンティティを引き継いでみよう。

前項記事ラストでバックアップしておいたtor_keys_raspi.tar.gzをコピーして解凍する。

tar -xzvf tor_keys_raspi3b.tar.gz

ディレクトリ構造がそのまま記録されているので、Identity Keysは結構下のディレクトリにある。バックアップするときに気を使えばよかったのだが今さら過ぎるので諦めよう。

cd var/lib/tor/keys/
sudo mv * /var/lib/tor/keys/

これで全てのファイル(9個ぐらいあるはず)が所定のディレクトリに移動された。ホームのディレクトリは邪魔なので消しておこう。

cd /home/pi/
sudo rm -r var/

さて、これで良し、というわけではない。Identity Keysの所有者を変更する必要がある。この状態ではユーザもグループもpiになっているはずだ。lsコマンドで確認してみる。

sudo ls -l /var/lib/tor/keys/

これを両方ともdebian-torに変更する。ユーザ・グループの変更はchownコマンドで行う。-Rオプションでディレクトリごと変更してしまおうのが簡単だ。

sudo chown -R debian-tor:debian-tor /var/lib/tor/keys/

再度lsコマンドで確認すれば所有者が変更されているはず。torを再起動して/var/log/syslogを見れば、" Your Tor server's identity key fingerprint is ホニャララ"でかつてと同じFingerprintが表示されているはずだ。いじょ。

Serow 250を整備した

足代わりの単車、セロー250(FI)を整備したので自分用メモ。

ODD:14626km

TRIP:5376.6km(前回オイル交換時リセット)

 

交換部品

プラグ:DR7EA 締付トルク18Nm

エアフィルタ:5XT-14451-00

オイルフィルタ:5TA-13440-00

オイルフィルタOリング3つ:

  • 93210-54175 ボルト締付トルク10Nm
  • 93210-07135 x2 ボルト締付トルク10Nm

ドレンボルト用銅ワッシャ:汎用品(在庫あり)  ボルト締付トルク20Nm

 

次回の注意点

オイル注ぎ口ボルト用Oリング:93210-19123も交換する。

プラグレンチは二面幅18mmのちゃんとしたやつを買って回転角でなくトルクも見る。

 

Cloudflareが公開NTPサーバを開始した由

blog.cloudflare.com

昨年は公開DNSゾルバ(1.1.1.1)を公開したCloudflareが、今年は公開NTPサーバを開設した。通常のNTPの他に、TLS1.3で認証・暗号化されるNTS(Network Time Security)にも対応しているらしい(ただしNTSはまだRFCがドラフトの筈だ)。また、Googleの開発したシンプルな時刻合わせプロトコルRoughtimeにも対応とのこと。いずれにせよラウンドロビンでネットワーク的に近いサーバから時刻合わせをしてくれるらしい。CDNなのだから当然である。

roughtime.googlesource.com

Cloudflareの開発者Sullivan氏の呟きによると、NTPのStratumは3らしいが、Stratumは負荷分散の仕組みであり別に上位であれば良いというものではないので問題ない。気になるならGPSから直接PPSを受信してStratum1のサーバにしてしまえばいい。

せっかくなのでRaspberryPiの時刻合わせサーバに追加することにした。方法は以前も紹介したとおりsystemd-timesyncdを使用する。

時刻合わせにNTPdではなくsystemd-timesyncdを使うようにした話 - 悪霊にさいなまれる世界 -The Demon-Haunted World

/etc/systemd/timesyncd.confを開いて、FallbackNTPに追加する。

NTP=ntp.jst.mfeed.ad.jp
FallbackNTP=ntp.ring.gr.jp time.cloudflare.com

この設定ならば基本的にはmfeedに時刻を取りに行き、ダメならRingプロジェクトに、それでもダメならCloudflareに問い合わせる、筈である。

何故メインで使わないのかというと、公開DNSといい、テックジャイアントによる支配が怖いから…などと今さら過ぎるのではあるが、気分の問題である。いじょ。

「閲覧には特別な技術が必要で、さまざまな違法行為が当局の目を盗んで行われている」サイトにアクセスする

bunshun.jp

では「特別な技術」を暴露しましょう。

  1. Torブラウザをインストールする
  2. 「(サイト名) .onion」でググる
  3. 出てきたオニオンアドレスをTorブラウザにぶち込む

以上です。もったいぶるほどのものではない。Wallstreet Marketとやらはテイクダウンされてるが、多分redditなり4chanなりで調べれば新しいところが見つかるんじゃないかな。私は興味が無いので各位で調べてください。

Torブラウザのインストール方法は以前説明ずみ(下記記事後半)

science-as-a-candle-in-the-dark.hatenablog.com

これだけだとあんまりなのでもう少しTorでしかアクセスできないサイトを紹介しておこう。

もちろん、オニオンサービスだけでなく通常のサイトもTorブラウザでアクセスすることにより暗号化トラフィックを増やすことは、検閲・大規模監視のコストを上げるためとても重要。常日頃からTorブラウザを使いましょう。Android版もリリースされてます。

play.google.comいじょ。Happy Hacking!

RaspberryPi 1BでBCM2835内蔵のウォッチドッグを有効にした

VPNサーバ兼バックアップ用に動かしているRaspberryPi 1B、ちょっとアクセスしにくい場所に置いてあるので何らかの理由でバグって停止すると再起動が面倒。なのでウォッチドッグ使って異常時に再起動をするようにした。

調べてみるとRaspberryPiのSoCであるBCM2835にはあらかじめウォッチドッグ機能がついているので特にソフト等をインストールする必要は無い模様。なので以下サイトを参考に有効化してみた。

Raspberry PiにハードウェアWatchdogを設定してみましょう | CANDY LINE Blog

内容はリンク先の前半部をそのままやっただけである。試しに初期状態のまま、システムをハングアップさせてしまうFork爆弾を打ち込んでみる。

:(){ :|:& };:

f:id:scienceasacandleinthedark:20190503152656p:plain

完全にハングアップです。本当にありがとうございました。こうなると電源ケーブルを抜いて強制再起動しかない。

ざっくりとしたシステムの流れとしては、

  1. 「SoCは設定した間隔内でハートビート信号が来ることを期待している」
  2. 「正常動作中はsystemdが別に設定された間隔でハートビート信号を送信する」
  3. 「ハートビート信号を受信すればSoCは正常動作と判断」
  4. 「ハングアップするとsystemdからのハートビート信号が途絶える」
  5. 「SoCはハングアップを検出して強制再起動」

ということになる、らしい。それではサクサクと設定していく。

まずウォッチドッグ機能を有効にする設定。/boot/config.txtを開いて一番下に下記行を追加。

#Enable watchdog
dtparam=watchdog=on

続いてSoCのカーネルモジュールの設定。/etc/modprobe.d/bcm2835-wdt.confを新規ファイルとして作成し、

options bcm2835_wdt heartbeat=20 nowayout=0

の一行を作成。これでBCM2835が20秒以内にハートビート信号を期待する設定となる。参照サイトでは14秒となっていたが、何となくキリが悪いので20秒にした。

最後にsystemdからハートビートを送信させる設定。/etc/systemd/system.confを開き、コメントアウトされている#RuntimeWatchdogSec=0を探してその下に一文を追加。

RuntimeWatchdogSec=10

これでsystemdから10秒おきにハートビート信号が送信されるはずである。期待時間が前述の通り20秒なので、1回は何らかの理由で跳んでも大丈夫だろう。設定を有効にするためrebootで再起動。

再起動したら有効になっているか、起動ログから確認する。

dmesg | grep bcm2835-wdt

有効化されていれば以下のような一行が表示される。冒頭の数字は起動からの秒数らしいので毎回異なるはず。

[ 0.902386] bcm2835-wdt 20100000.watchdog: Broadcom BCM2835 watchdog timer

これでOKである。試しに前述のFork爆弾をもう一度打ち込んで様子を見てみる。

:(){ :|:& };:

待つこと数分

f:id:scienceasacandleinthedark:20190503155309j:plain

 今回はちゃんと自動で再起動。ちゃんと監視が効いている模様なのでOKである。いじょ