FreeBSD にセキュリティパッチの適用方法です。

参考にさせて頂いたサイト集です。

第17章 FreeBSD のアップデートとアップグレード
FreeBSDのアップグレード

セキュリティパッチ適用前に、以下のコマンドを実行してカーネルのバージョンを確認する。

uname -a
■セキュリティパッチ適用前
FreeBSD FreeBSD 12.1-RELEASE FreeBSD 12.1-RELEASE r354233 GENERIC  amd64

また、セキュリティパッチの適用方法は以下のコマンドを実行する。

freebsd-update fetch

実行した時のメッセージが以下の内容になります。

[root@FreeBSD ~]# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching public key from update1.freebsd.org... done.
Fetching metadata signature for 12.1-RELEASE from update1.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 42 patches.....10....20....30....40. done.
Applying patches... done.
The following files will be updated as part of updating to
12.1-RELEASE-p2:
/bin/freebsd-version
/boot/kernel/cpuctl.ko
/boot/kernel/efirt.ko
/boot/kernel/kernel
/boot/loader.efi
/boot/loader_4th.efi
/boot/loader_lua.efi
/boot/loader_simp.efi
/lib/libc.so.7
/rescue/[
/rescue/bectl
/rescue/bsdlabel
/rescue/bunzip2
/rescue/bzcat
/rescue/bzip2
/rescue/camcontrol
/rescue/cat
/rescue/ccdconfig
/rescue/chflags
/rescue/chgrp
/rescue/chio
/rescue/chmod
/rescue/chown
/rescue/chroot
/rescue/clri
/rescue/cp
/rescue/csh
/rescue/date
/rescue/dd
/rescue/devfs
/rescue/df
/rescue/dhclient
/rescue/disklabel
/rescue/dmesg
/rescue/dump
/rescue/dumpfs
/rescue/dumpon
/rescue/echo
/rescue/ed
/rescue/ex
/rescue/expr
/rescue/fastboot
/rescue/fasthalt
/rescue/fdisk
/rescue/fsck
/rescue/fsck_4.2bsd
/rescue/fsck_ffs
/rescue/fsck_msdosfs
/rescue/fsck_ufs
/rescue/fsdb
/rescue/fsirand
/rescue/gbde
/rescue/geom
/rescue/getfacl
/rescue/glabel
/rescue/gpart
/rescue/groups
/rescue/gunzip
/rescue/gzcat
/rescue/gzip
/rescue/halt
/rescue/head
/rescue/hostname
/rescue/id
/rescue/ifconfig
/rescue/init
/rescue/ipf
/rescue/iscsictl
/rescue/iscsid
/rescue/kenv
/rescue/kill
/rescue/kldconfig
/rescue/kldload
/rescue/kldstat
/rescue/kldunload
/rescue/ldconfig
/rescue/less
/rescue/link
/rescue/ln
/rescue/ls
/rescue/lzcat
/rescue/lzma
/rescue/md5
/rescue/mdconfig
/rescue/mdmfs
/rescue/mkdir
/rescue/mknod
/rescue/more
/rescue/mount
/rescue/mount_cd9660
/rescue/mount_msdosfs
/rescue/mount_nfs
/rescue/mount_nullfs
/rescue/mount_udf
/rescue/mount_unionfs
/rescue/mt
/rescue/mv
/rescue/nc
/rescue/newfs
/rescue/newfs_msdos
/rescue/nos-tun
/rescue/pgrep
/rescue/ping
/rescue/ping6
/rescue/pkill
/rescue/poweroff
/rescue/ps
/rescue/pwd
/rescue/rcorder
/rescue/rdump
/rescue/realpath
/rescue/reboot
/rescue/red
/rescue/rescue
/rescue/restore
/rescue/rm
/rescue/rmdir
/rescue/route
/rescue/routed
/rescue/rrestore
/rescue/rtquery
/rescue/rtsol
/rescue/savecore
/rescue/sed
/rescue/setfacl
/rescue/sh
/rescue/shutdown
/rescue/sleep
/rescue/spppcontrol
/rescue/stty
/rescue/swapon
/rescue/sync
/rescue/sysctl
/rescue/tail
/rescue/tar
/rescue/tcsh
/rescue/tee
/rescue/test
/rescue/tunefs
/rescue/umount
/rescue/unlink
/rescue/unlzma
/rescue/unxz
/rescue/unzstd
/rescue/vi
/rescue/whoami
/rescue/xz
/rescue/xzcat
/rescue/zcat
/rescue/zdb
/rescue/zfs
/rescue/zpool
/rescue/zstd
/rescue/zstdcat
/rescue/zstdmt
/sbin/devd
/sbin/init
/usr/bin/ar
/usr/bin/as
/usr/bin/c++
/usr/bin/cc
/usr/bin/clang
/usr/bin/clang++
/usr/bin/clang-cpp
/usr/bin/cpp
/usr/bin/make
/usr/bin/ranlib
/usr/include/machine/pmap.h
/usr/include/x86/specialreg.h
/usr/lib/debug/boot/kernel/cpuctl.ko.debug
/usr/lib/debug/boot/kernel/efirt.ko.debug
/usr/lib/debug/boot/kernel/kernel.debug
/usr/lib/libc.a
/usr/lib/libc_p.a
/usr/lib/libc_pic.a
/usr/lib/libfetch.a
/usr/lib/libfetch.so.6
/usr/lib/libfetch_p.a
/usr/lib32/libc.a
/usr/lib32/libc.so.7
/usr/lib32/libc_p.a
/usr/lib32/libc_pic.a
/usr/lib32/libfetch.a
/usr/lib32/libfetch.so.6
/usr/lib32/libfetch_p.a
/usr/sbin/nologin
/usr/src/lib/libc/secure/stack_protector.c
/usr/src/lib/libfetch/fetch.c
/usr/src/stand/efi/loader/bootinfo.c
/usr/src/stand/efi/loader/copy.c
/usr/src/sys/amd64/amd64/pmap.c
/usr/src/sys/amd64/include/pmap.h
/usr/src/sys/conf/newvers.sh
/usr/src/sys/dev/cpuctl/cpuctl.c
/usr/src/sys/kern/imgact_elf.c
/usr/src/sys/x86/include/specialreg.h
(END)

(END)が表示されたら、Q キーを押下して終了する。

その後、以下のコマンドを実行してインストールする。

freebsd-update install

実行した時のメッセージが以下の内容になります。

[root@FreeBSD ~]# freebsd-update install
Installing updates... done.

「Installing updates… done.」が表示されたら大丈夫です。

以下のコマンドを実行して再起動する。

reboot

再起動後、カーネルのバージョンを確認する。

uname -a
■セキュリティパッチ適用後
FreeBSD FreeBSD 12.1-RELEASE-p2 FreeBSD 12.1-RELEASE-p2 GENERIC  amd64

無事、カーネルのバージョンが変更されたので成功しました。

■セキュリティパッチ適用前に戻す方法

セキュリティパッチ適用前に戻す方法が以下の内容になります。

freebsd-update rollback

実行した時のメッセージが以下の内容になります。

[root@FreeBSD ~]# freebsd-update rollback
Uninstalling updates... done.

再起動後、 カーネルのバージョンが戻っていたら成功です。

■自動更新方法

crontab を使用して定期的にセキュリティパッチを更新するように設定する。

また、自動更新するには以下の方法を設定する。

vi /etc/crontab

以下を追加する事で、毎日3時にセキュリティパッチを確認する。

#freebsd-update
0       3       *       *       *       root    /usr/sbin/freebsd-update

また、セキュリティパッチが存在している場合はメール通知するように設定する。

以下のコマンドを実行する。

vi /etc/freebsd-update.conf

修正箇所は、「MailTo」の部分に以下のように追加する。

MailTo メールアドレスを記入する