今までなぜ思い出さなかったんだろう?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使いましたわ。