= FreeBSD13でのよくある設定集 = FreeBSD 13.0-RELEASE環境におけるよく設定するような内容についてまとめる。 本記述は13.0-R時点での内容であるが、13.0-Rがリリースされたあとも調整する。 [[FreeBSD/FreeBSD13-install|インストール]] および [[FreeBSD/FreeBSD13-initial-setup|初期設定]] が完了しているものとするが、そう極端に依存はしてないはずである。 <> = 都度対応ケース = == ユーザーおよびグループの追加 == * 実行頻度: ユーザーおよびグループを追加したいと思った都度。 * いわゆるユーザーアカウントの管理をどうするかについてはここでは問わない。 * 管理ポリシーを決めた上で運用する際の手順をまとめる。 * ports/pkgシステムで追加されるユーザーおよびグループについて以下のファイルを参照すること(デフォルト設定)。 * `/usr/ports/UIDs` * `/usr/ports/GIDs` * もちろん事前に作成してしまってもかまわない(UIDを他の環境に合わせるなど)。 * 本設定においてはいくらか前提条件(`/home` がパーティションされてる)があるので留意すること。 === ユーザーの追加 === * ユーザー設定に必要なパラメータは以下の通り。 * ユーザー名 * ユーザーID * グループ名(事前に設定しておくこと) * ログインシェルは `/etc/shells` ファイル内のリストから設定すること。 {{{#!highlight shell numbers=disable pw useradd ユーザー名 -u ユーザーID -g グループ名 -c "名前" -s ログインシェル zfs create zroot/home/ユーザー名 chown ユーザー名:グループ名 /home/ユーザー名 }}} * ここではホームディレクトリは作成しない。別途ZFSパーティションを切るものとする。 * この時パスワードは無効になっている(パスワードフィールドが `*`)。 * セカンダリグループを加えたい場合は `-G` オプション(複数指定はカンマ区切り)を指定すること。 * よく使われるセカンダリグループは以下の通り。 * `wheel`: ルートになれるユーザー(管理者)が所属するグループ * `operator`: 再起動等のサーバーの操作ができるユーザー(オペレーター)が所属するグループ * `dialer`: シリアル通信したいユーザーが所属するグループ 後から修正したい場合は `pw usermod` を使う。 {{{#!highlight shell numbers=disable pw usermod ユーザー名 -G wheel,operator }}} === パスワードの設定 === パスワードは例えば `makepasswd --chars=パスワード長` でランダムなパスワードを決める。 {{{#!highlight shell numbers=disable passwd ユーザー名 }}} === パスワードの無効化 === {{{#!highlight shell numbers=disable pw usermod ユーザー名 -w no }}} === グループの追加 === * グループ設定に必要なパラメータは以下の通り。 * グループ名 * グループID {{{#!highlight shell numbers=disable pw groupadd グループ名 -g グループID }}} == SASL認証におけるユーザーの追加 == * 実行頻度: SASL認証対象のユーザーを追加したいと思った都度。 * いわゆるレルムとの相関についてはここでは問わない。 * 本サービスを利用する側の運用ポリシーを決めた上で作業すること。 * なおユーザー `user@domain` と、ユーザー `user`・レルム `domain` は扱いが違うので注意。 * 上位サービスによっては `user@domain` を `user`・`domain` に分解することがあるが、それはそっち側の話となる。 * レルムを指定しない場合 `hostname` が指定された物として処理されるが、これが上位サービスから認識されるかは別の話になる。 === SASLユーザーの追加 === {{{#!highlight shell numbers=disable saslpasswd2 -c ユーザー saslpasswd2 -c -u レルム ユーザー }}} === SASLユーザーのパスワード変更 === {{{#!highlight shell numbers=disable saslpasswd2 ユーザー saslpasswd2 -u レルム ユーザー }}} === SASLユーザーの一覧 === {{{#!highlight shell numbers=disable sasldblistusers2 }}} === SASLユーザーの削除 === {{{#!highlight shell numbers=disable saslpasswd2 -d ユーザー saslpasswd2 -d -u レルム ユーザー }}} === SASLユーザーの検証 === {{{#!highlight shell numbers=disable testsaslauthd -u ユーザー名 -p パスワード testsaslauthd -u ユーザー名 -p パスワード -r レルム }}} = 使用したい一回だけ設定すればいいもの = == SASL認証サーバー == * 実行頻度:セットアップしたいと思った1回だけ。再起動不要。 * 認証のバックエンドはSASLデータベース、OS(PAM)、LDAP等選べるが、組み合わせての選択はできない。 * 今回はSASLデータベースによりOSのアカウントとは独立して認証を運用する。 * またSASLデータベースのバックエンドとしてナウでヤングなLMDBを採用する。 * SASL認証サーバーを使う場合、認証メカニズムは非暗号化パスワードしか扱えない点に注意。 * `PLAIN` * `LOGIN` * SYSLOGについてのメモ。 * いわゆるファシリティAUTHで出力される。 * アイデント名は `saslauthd` か `pwcheck` である。 {{{ saslauthd -+- sasldb -+- BDB1 | +- BDB ※BDB5のこと | +- GDBM | +- LMDB +- getpwent -+- /etc/master.passwd + -kerberos5 +- pam -+- /etc/pam.d に設定に準拠 +- rimap +- ldap }}} === /etc/make.conf === {{{#!highlight makefile numbers=disable security_cyrus-sasl2_SET= LMDB LOGIN PLAIN security_cyrus-sasl2_UNSET= OTP CRAM NTLM DIGEST SCRAM security_cyrus-sasl2_UNSET+= BDB BDB1 ANONYMOUS ALWAYSTRUE AUTHDAEMOND security_cyrus-sasl2_UNSET+= OBSOLETE_CRAM_ATTR OBSOLETE_DIGEST_ATTR security_cyrus-sasl2-saslauthd_SET= LMDB security_cyrus-sasl2-saslauthd_UNSET= BDB BDB1 HTTPFORM OPENLDAP OPENLDAP_SASL }}} === インストール === {{{#!highlight shell numbers=disable cd /usr/ports/security/cyrus-sasl2-saslauthd make install clean sysrc saslauthd_enable="YES" sysrc saslauthd_flags="-a sasldb" service saslauthd start }}} === デバッグメモ === 認証動作に不良が見られる場合は以下の手順でデバッグすること。 * `saslauthd -a sasldb -d` でデバッグモードで起動する。 * `testsaslauthd -u ユーザー名 -p パスワード` でテストする。 * `testsaslauthd -u ユーザー名 -r レルム -p パスワード` でテストする。 * `testsaslauthd` を実行すると必ず `saslauthd` に接続するので、フロント側の切り分けができる。 * また、`saslauthd` のデバッグログを読めば、バックエンド側の切り分けができる。 * 究極的には `ktrace(1)` / `kdump(4)` コマンドを使用して、アクセスしているファイルを確認する。 * これはファイルにアクセスできる・できないのエラー表示が無いためである。 * レルムとの相互関係についてはSASL認証をする上位サーバーアプリの振る舞いにもよるので、ここでは以上とする。 == DNSキャッシュサーバーの運用 == * 実行頻度:セットアップしたいと思った1回だけ。再起動不要。 * 自前でDNSキャッシュサーバー(フルリゾルバ)を運用したい場合の設定。 * デフォルトでお堅い設定なので若干緩くする。 * 具体的には、デフォルトで `dig +trace` 使えなくなるのだが、使えるように設定する。 * `access-control` では `allow` の代わりに `allow_snoop` を有効にすると良い。 === /etc/unbound/conf.d/local.conf === {{{ server: prefetch: yes rrset-cache-size: 64m rrset-roundrobin: yes access-control: 127.0.0.1/8 allow_snoop }}} === 準備 === {{{#!highlight shell numbers=disable sysrc local_unbound_enable="YES" service local_unbound setup service local_unbound start }}} === /etc/resolv.conf === 以下の2行が追加されるので整理する。具体的には古い `nameserver` の指定を消す、`options` に組み込むなどである。 {{{ nameserver 127.0.0.1 options edns0 }}} 今時は `edns0` オプションの指定をしなくても動くとのことで、消してしまっても問題無い。 == シリアルコンソールを追加する == * 実行頻度:セットアップしたいと思った1回だけ。要再起動。 * ビデオコンソール(`vidconsole`)と共にシリアルコンソール(`comconsole`)でも操作したい場合の設定。 === /bootdir/boot.config === 以下の内容のファイルを作成する。 {{{ -D }}} === /boot/loader.conf === 以下の内容をファイルに追加する。 {{{ boot_multicons="YES" }}} * シリアルコンソールでの操作が遅いと思ったら `comconsole_speed="115200"` も追加する。その際通信条件も変更すること。 * 複数のシリアルポートがあって、どれか選択したい場合は `hint.uart.n.flags` (n≧0)を設定することで制御する。 * 使わないポートに対しては `0x0` を、使うポートには `0x10` を設定する。 * この辺りの詳細は[[https://www.freebsd.org/cgi/man.cgi?uart(4)|マニュアル]]を参照のこと。 = 参考文献 = * [[https://docs.freebsd.org/en_US.ISO8859-1/books/handbook/serialconsole-setup.html|Setting Up the Serial Console]] * [[https://wiki.freebsd.org/SerialConsole|SerialConsole]] * [[https://www.freebsd.org/cgi/man.cgi?uart(4)|uart(4)]] ※シリアルポートの設定 * [[https://people.allbsd.org/~hrs/FreeBSD/sato-20140313.pdf|Kerberos 認証サービスの設定と運用]] * [[https://people.allbsd.org/~hrs/FreeBSD/sato-FBSDW20180629.pdf|30分で分かるKerberos]]