FreeBSD/arm13.2: ソースメンテナンスにNFS を使う

今までなぜ思い出さなかったんだろう?NFSの事を。

HTTPサーバーと接続しているFreeBSD/arm13.2 は USB HDDと接続しているモデルで、こちらはソースからビルドし直して脆弱性の修正が終了。問題は、RPI2 と マイクロSDで構成している FreeBSD/arm 13.2。SDメモリの摩耗が気になり、バイナリーメンテナンスは行ってもいいけど、ソースビルドはしたくない。自宅内ネットワークのサーバーなので、安全性はアクセス制御で確保すればいいか と思うものの、毎朝、次のようなセキュリティーレポートが届くと、気分は良くない。放置すると、レポート行数は増える一方。

Checking for security vulnerabilities in base (userland & kernel):
Fetching vuln.xml.xz: .......... done
FreeBSD-kernel-13.2 is vulnerable:
  FreeBSD -- Wi-Fi encryption bypass
  CVE: CVE-2022-47522
  WWW: https://vuxml.FreeBSD.org/freebsd/924cb116-4d35-11ee-8e38-002590c1f29c.html

  FreeBSD -- pf incorrectly handles multiple IPv6 fragment headers
  CVE: CVE-2023-4809
  WWW: https://vuxml.FreeBSD.org/freebsd/d35373ae-4d34-11ee-8e38-002590c1f29c.html

  FreeBSD -- Remote denial of service in IPv6 fragment reassembly
  CVE: CVE-2023-3107
  WWW: https://vuxml.FreeBSD.org/freebsd/3dabf5b8-47c0-11ee-8e38-002590c1f29c.html

  FreeBSD -- arm64 boot CPUs may lack speculative execution protections
  CVE: CVE-2023-5370
  WWW: https://vuxml.FreeBSD.org/freebsd/162a675b-6251-11ee-8e38-002590c1f29c.html

  FreeBSD -- copy_file_range insufficient capability rights check
  CVE: CVE-2023-5369
  WWW: https://vuxml.FreeBSD.org/freebsd/e261e71c-6250-11ee-8e38-002590c1f29c.html

  FreeBSD -- msdosfs data disclosure
  CVE: CVE-2023-5368
  WWW: https://vuxml.FreeBSD.org/freebsd/fefcd340-624f-11ee-8e38-002590c1f29c.html

6 problem(s) in 1 installed package(s) found.
vulnxml file up-to-date
FreeBSD-13.2 is vulnerable:
  FreeBSD -- Network authentication attack via pam_krb5
  CVE: CVE-2023-3326
  WWW: https://vuxml.FreeBSD.org/freebsd/9b0d9832-47c1-11ee-8e38-002590c1f29c.html

  FreeBSD -- Potential remote code execution via ssh-agent forwarding
  CVE: CVE-2023-38408
  WWW: https://vuxml.FreeBSD.org/freebsd/291d0953-47c1-11ee-8e38-002590c1f29c.html

  FreeBSD -- bhyve privileged guest escape via fwctl
  CVE: CVE-2023-3494
  WWW: https://vuxml.FreeBSD.org/freebsd/ab437561-47c0-11ee-8e38-002590c1f29c.html

  FreeBSD -- Network authentication attack via pam_krb5
  CVE: CVE-2023-3326
  WWW: https://vuxml.FreeBSD.org/freebsd/41af0277-47bf-11ee-8e38-002590c1f29c.html

  FreeBSD -- libc stdio buffer overflow
  CVE: CVE-2023-5941
  WWW: https://vuxml.FreeBSD.org/freebsd/5afcc9a4-7e04-11ee-8e38-002590c1f29c.html

  FreeBSD -- Incorrect libcap_net limitation list manipulation
  CVE: CVE-2023-5978
  WWW: https://vuxml.FreeBSD.org/freebsd/f4464e49-7e04-11ee-8e38-002590c1f29c.html

6 problem(s) in 1 installed package(s) found.

レポートを見るたび、嫌な気分になっていたところ、データベース用に確保したFreeBSD/arm はどちらもRPI2 (32bit FreeBSD )で、バイナリーが同じじゃん!と、気が付いて当然のことを思い出しました。FreeBSD の標準メンテナンスコマンド freebsd-update や pkg コマンドでサーバーからダウンロードするバイナリーメンテナンスばかり考えていて思いつかなかった。

HDDがつながっている FreeBSD/arm の /usr/src と /usr/obj を SDメモリモデルのRPI2 でNFSマウントすればいいだけじゃない!って思いつきました。で、やってみました。

HDDタイプのRPI2 で、/etc/exports を定義。

#/etc/exports
/usr/src -alldirs -maproot=root -network 192.168.10.0 -mask 255.255.255.0
/usr/obj -alldirs -maproot=root -network 192.168.10.0 -mask 255.255.255.0

この後で、rpc, mound, nfsd 3つのデーモンを一回限りの起動。(リブートすると止まってしまう。)

  • service rpcbind onestart
  • service mountd onestart
  • service nfsd onestart

続いて、SDメモリタイプのRPI2で、次のようにHDD側のビルド済み src & obj をネットワークマウント。そして、インストールを実行。

mount db1:/usr/src /usr/src
mount db1:/usr/obj /usr/obj
cd /usr/src
make installworld
make installkernel

プロンプトが戻ってきたら、shutdown -r now で SDメモリタイプRPI2 を再起動。HDD RPI2側は、NFS関係のデーモンを止める。
バージョンを確認してみると、

# freebsd-version
13.2-RELEASE-p5

と、パッチレベル4から5に上がってます。

Checking for security vulnerabilities in base (userland & kernel):
Database fetched: 2023-11-12T03:36+09:00
0 problem(s) in 0 installed package(s) found.
0 problem(s) in 0 installed package(s) found.

翌朝届いたセキュリティーレポートには脆弱性情報は含まれておらず。この方法でOSメンテナンスが出来るってことを確認できました。pkg はコンパイルしなくても、バイナリーメンテナンス可能。

手動コマンドを、スクリプトにまとめるかどうかはメンテナンス頻度によるかな~?
NFSは(いろいろな要因の)手違いでアクティブな接続が止まってしまうと、クライアントがハングしやすいので、我が家のようなネットワークでの常用はちょっとためらわれる。

今回は、HDD側RPI2でビルドして、2台にパッチを配布した形ですが、よ~く考えると、MySQLを動かしている普段忙しい側でコンパイル作業を行う必要はないわけで、SDメモリ側がネットワークにつながっているHDDをマウントしてビルドした後、2台にパッチインストールすればいいわけだ。この場合ネットワークトラフィックが増大するわけ(大したことないとは思うもののRPI2は100BASE)なので、結局のところ試してみないとわからない。

なんか10年ぶりにNFS使いましたわ。

コメントを残す