WireGuard

車に積んでいる Raspberry Pi zero 2 W(以下ラズパイ)にいつでもアクセスしたいと思った。

しかし、 donedone 128kbps で常時接続しているとは言え、接続IPアドレスが133.203.130.90と分かったとしても、こいつは携帯電話会社のファイヤーウォールだから、直接携帯電話へアクセスする事はできない。

そこで、VPNの WIreGuard の出番。
ラズパイ から、家のサーバーに VPN接続すれば、家からならVPN経由で ssh が可能になる。

接続方法は
情報源: 【Ubuntu】WireGuardで簡単VPN環境を構築 | VPS Life

こちらを参考にさせていただいた。感謝。

サーバー側ステータスを見てみると、

RX-7に搭載しているラズパイのクライアント側

これで、外部から車に搭載したRaspberry Pi へ指令が送れるようになった訳だが、電子工作と合わせると、車を始動不能にしたり、クラクションでSOS鳴らしたり、色々、可能性が広がって夢が広がりまくりんぐなわけですよ。 🙂

【皇紀2682年9月26日 追記】

いざ、ラズパイに接続しようとするもできない。

どうやら、ラズパイのUSB省電力機能が効いているのか、ラズパイ側からVPNのサーバーに ping を打たないと、サーバーからはアクセスできないっぽい。

ラズパイの cron で10分毎にVPNサーバーに ping 打つようにしてみるか。

【/皇紀2682年9月26日 追記】

【RX-7】警報発報メール通知プログラム

Raspberry Pi zero 2 Wに exim4 入れて、スマートホスト設定して、Xserver のメールサーバーをリレーホストにする設定して、ボタン監視してメール通知するプログラムをサクっと書いた。

ボタン監視は、GPIO26とGNDに繋いでやる予定だけど、巷にあるサンプルだと、エラーとかリソースビジーとか出るので wait を入れた。

echo 26 >/sys/class/gpio/gpio26/export
sleep 0.1
echo in >/sys/class/gpio/gpio26/direction
sleep 0.1
echo high >/sys/class/gpio/gpio26/direction

ハードウェアに近いプログラム書いた事無いと分からんかもしれんけど、Raspberry Pi が GPIO26 の用意完了前にデータを書こうとすると、間に合わない場合があるので、その場合は適当に時間待ちしてやる必要があるんだな。

Raspberry Pi zero 2 Wの BCM2835は、ARM v8(Cortex-A53)クアッドコアの64bit 1GHzなので、結構処理速度が速いようで、GPIOのファイルシステムへ書き込みするのに、sleep で wait を入れないとダメになったみたいだな。

ちなみにメールは次のようなものが届く予定。

無茶苦茶シンプルなので、donedone 128kbps でも問題なく送信できる。

で、後は半田ゴテで、配線するのみなのだが、半田ゴテ暫く使ってなかったから汚部屋で見つからんのよね。 🙁

【追記:皇紀2682年9月18日21:13】

ラスタバナナの変換コネクタに必死で半田付けし、GPIO26とGNDに半田付け

docomoの携帯電話を挿せるけど、携帯から5V出てるとしたら、raspberry PiのGIPOへ5V流れて壊れちゃうので、携帯電話を挿してはいけない。

先のプログラム走らせて、イヤホンマイクボタンを押すと、メールが来た。

これで、docomo 3Gが無くなっても大丈夫 🙂

【/追記:皇紀2682年9月18日21:13】

Raspberry Pi zero 2 W 到着

bootイメージの入った 32GBのmicroSD付きなので、まずはそいつをPCにマウント。

「ファイル」で開いて、右クリックで、「端末で開く」。

/boot/ に “ssh” という空ファイルを作成。

次は、Headless で使う為に、同じく /boot/ に wpa_subblicant.conf を作成

[/boot/wpa_supplicant.conf]

設定は「Raspberry Pi 無線 LAN 設定おぼえ書き」を参考にしました。ありがとうございます。

で、ルーターのDHCP払い出し状況を確認すると、192.168.11.15 へ割当られている模様。

初期ユーザー pi でパスワードが raspberry ね。

グラフィカルユーザーインターフェースから、ヘッドレスへ

で、再起動

次にまた ssh で入ると、

既定ユーザーの pi のパスワード変わってないからセキュリティリスクやでと親切に教えてくれる。

タイムゾーン設定、言語設定、ホスト名変更に raspi-config で設定

パッケージのアップデートに sudo apt update やったらエラーが出たので、検索したら、「Raspbianのsudo apt-get updateが失敗したら試したい解決方法」に載っていた。ありがとうございます。

その通りやる(ちょっと違うけど)。

更新パッケージが270個位あったので、中々終わらなかった。

そして、microSDの長寿命化の為に、ログを一切吐かないように、/etc/rsyslog.conf を編集して、インクルードの無効化と、RULES以下の設定を全部 # でコメントアウト

そして、念の為、/etc/logrotate.conf を月1ローテーションで、履歴は1つのファイルのみ、インクルード無効化に変更

pi ユーザーのパスワードを変更して、スマートフォンをUSBテザリングに設定して、Raspberry Pi zero 2 Wに接続してみると、何の操作や設定する事もなく、通信経路が確立した。

後は、ラズパイにメール送信環境と、GPIOチェックしてメール送るプログラム書いて、ラスタバナナの平型コネクタソケットをGPIOに配線したら、即運用できそうだな。

ただ、車のバッテリが上がったら嫌なので、ラズパイとスマホでどれだけ消費電力喰うか分からないのが不安要因なんだな。

【Kagoya VPS】自動アップグレード設定見直し

radiko のαSTATION 聴く時に、VPNで接続して重宝しているのと、IRC serverを動かしているKagoyaのVPSだが、ログインしてみたら、アップグレード可能なパッケージが44個あった。

自動更新設定したはずなのに、おかしいと思い検索。
次のページを参考にさせていただいた。

コマンドラインターミナルを使用して、Ubuntu 22.04 LTS JammyJellyfishLinuxに無人アップグレードをインストール/有効化および構成する方法を学びます。

情報源: Ubuntu22.04LTSに無人アップグレードをインストール/構成する方法-LinuxCapable

うまく動いてないので、調べると、apt-config-auto-update パッケージを入れないといけないようで、入れようとすると、update-notifier-common パッケージとファイルがバッティングしてるとか。

そこで次のコマンド実施して、パッケージを入れ替えた。

あと、件のページに書かれていた要らないパッケージの自動削除も有効にした。

これで取り敢えず様子見。

【作業記録】監視カメラのRaspberry Pi3を自動更新&再起動

わしの Raspberry Pi3 は Raspbian GNU/Linux 9 (stretch)なので、自動更新にはなってないから、unattended-upgrades のパッケージをインストール。

needrestart パッケージが提案パッケージになっとるけど、要るのかなあ?

後は次の記事を参考に設定。

【作業記録】自動更新&再起動設定

防犯監視カメラだから、深夜に再起動するのはマズいので、昼間に再起動するようにした。

まあ、Raspberry Pi3 だと、数秒で復帰するから、特に問題は無いだろう。

そして、apt-cron をアンインストール

 

【作業記録】自動更新&再起動設定

cron-apt 使ってて、更新はメールで通知してくれるが、再起動は必要に応じて自分でやらないといけないのがマンドクセと思っていた。

そして自動で再起動する方法ねーかな?と探してみた所、次のページをハケーン。

https://unluckysystems.com/ubuntu-20-04-lts%e3%81%ae%e8%87%aa%e5%8b%95%e3%82%a2%e3%83%83%e3%83%97%e3%83%87%e3%83%bc%e3%83%88%e3%81%a8%e3%80%81%e8%87%aa%e5%8b%95%e5%86%8d%e8%b5%b7%e5%8b%95%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%97/

Ubuntu 20.04 LTSから、自動でアップデートするようになってたのか。cron-apt要らねーじゃん。知らんかった(笑)

再起動するのを有効化して、午前2時だと、まだ起きてる可能性があるので、午前3時に設定。

そして cron-apt を削除。
これで、Kagoya VPS は放置してても、常に最新状態に保たれる訳だな。

昔、KDDIの回線引いて、固定IPアドレス8個貰って、家でサーバー運用……とはいえ、VAIOのノートPCにKondara MNU/Linux 入れて自分のウェブサイトを公開していた。

ノートPCをサーバーにしたら、UPS要らず。
そう思っていた時期が僕にもありました。

移動の際に電源引っこ抜いたら、即座にブチンと画面暗転。

2〜3回しか充電してないL型バッテリが、24時間運用で、1年間電源に繋いでいたら、お亡くなりになっていた。

ノートPCはUPS要らずのサーバーにはならない。それが教訓。

デジタルファクトリが潰れて、OSが更新されなくなって、クラッキングを受けて、X Serverにサイトを移し替えた。

当時、OSのシステムメンテナンスは非常に面倒臭く、自分でセキュリティ情報を集めて、必要とあれば、自分でゴリゴリカーネル再構築とかやってた時代だったので、クラックされるようではアカンと思い、業者に丸投げ(^^;

今はそれも OS がやってくれるので、便利な時代になったものじゃて。

【作業記録】Ubuntu 20.04 LTSに livepatch

家のマシンで、Ubuntu 20.04LTSを入れた時、livepatch という、再起動しなくてもセキュリティホールにpatch当ててくれる canonical社のサービスを設定するよう促されたので、入れたのだが、よく分かってなかった。

どうやら、カーネルにパッチを当てるんだけど、カーネルパッケージの更新はしてくれないようなので、サーバーとか、再起動を頻繁にできないマシンに対するサービスのようで、会社に行ってる間に電源を落とす個人PCには不要なものだと分かった。

で、このライセンスが個人なら 3台まで使えるとの事で、24時間運用の Kagoya VPSのUbuntu 20.04に導入しようと思ったので、その作業記録(長い前置きだ(^^;)。

https://ubuntu.com/security/livepatch

の下の方にあるやり方でやる。トークンは、ログインして、右上の自分の名前をクリックすると、UA subscriptions ってページを開くと出てくる。

Webで検索して出てくる例だと、snap で canonical-livepatch をインストールするって書かれてるんだが、試しても「そんなの無え!」と言われて困ってたが、ua attach [TOKEN]で snapd と共にインストールしてくれた模様。

ハッ!? もしかして、snap のインストールって、 snapd入れないとできないってオチか orz

ua attach [TOKEN] 実行した時に既に、livepatch yes enable ってなってるから、 ua enable livepatch 必要無いかもしれん。

今の所、patch は無いけど、結局の所、頻繁に再起動しても問題無いなら、不要なサービスだなあ。

【作業記録】fail2ban 再犯長期jail

fail2ban で ssh 不正ログインを試みる輩を接続拒否する運用をしているが、現状こんな感じ。

3日間で、4回失敗で1週間アク禁。
11/1くらいから、241件アク禁にして、現在90件アク禁中。
151件を釈放。

ログを見てると、18時間間隔で 2回試行するとか、明らかに fail2ban を避けるパターンのやつがいるんだな。

ふと、再犯してるのどれだけだろう? と疑問に思い、調べると、再犯者を長期アク禁にできるとの事で、早速設定変更。

次のコマンドを実行

次の設定を追加

fail2ban.logを調べて、再犯者は2週間以内に1回のログイン失敗でアウト、懲役1年(笑)

【追記 2681/11/20】
maxretry = 1 だと、fail2ban.log で、Ban 1回で作動してしまうので、 2 に変更した。
【/追記 2681/11/20】

その条件でも、33件該当。
1週間アクセス不能だったとしても、スクリプトでやり続けてんだろうなあ。

【作業記録】fail2ban設定変更

【作業記録】fail2ban インストール

/var/log/auth.log を見ると、既定の fail2ban.conf を避けるようにアクセスしてる奴が居たので、そういう奴を締め出すように設定変更。

blocktypeをDROPに、出入り禁止期間 1週間、アクセス監視期間 3日、4回失敗でアウト。

情報源: iptablesはDROPすべきか、REJECTか。tcp-resetという手も – のめうブログ

注意すべき点は、これ、自分で sshのログインに4回失敗すると、セルフ出入り禁止になっちゃうので気をつけないといけない。

まあ、Kagoya VPSの場合、Webからアクセスしてコンソールからログインしたら回避できるので、特に問題は無いけど、会社の契約するサーバーなんかで maxretry = 3 とかになってて、アク禁喰らった事が何度かあったんだな。

【追記】

3日間で51のIPアドレスをBAN。大漁や〜

【/追記】

【作業記録】fail2ban インストール

Kagoya VPS の Ubuntu 20.04 で、ssh への攻撃が多数あり、色々試させない為にfail2banをインストール

情報源: 【Ubuntu Desktop 20.04】Fail2Banをインストールする – Crieit

情報源によると、既定で sshd は有効となっているそうで、特に何もしなくても良さそう。

しかし、待てど暮せど中々 Ban してくれない。

これは私も経験済みです。jail.local(jail.conf)の設定は「backend = auto」で良いよとされてはいるのですが、起動時のログを見ると backend が “pyinotify” に設定されてしまいます。

情報源: fail2banをうまく動かすためのTips。正規表現はシンプルに見やすく – のめうブログ

/var/log/fail2ban.log を見てみると、

pyinotify って知らんけど、backend の動作モードが違っててワロタ。

新規ファイルを作成して、動作モードを polling にして、設定を再読込。

無事、polling モードで動作するようになった。