難易度は Level 1(やさしめ)〜Level 5(難関) の5段階です。
LinuC レベル3 3SS試験のサンプル問題(本番形式・解説付き)
LinuC レベル3 3SS試験(LPI-Japan・LinuC-3SS(セキュリティスペシャリスト))の出題形式を、実際の問題で確かめられます。ここに掲載する5問は、無料の会員登録で解ける模試 第1回(60問)の冒頭から抜粋したオリジナル問題です。当サイトは全1,139問を本番CBT準拠の形式で収録しており、この5問はそのごく一部にあたります。
設問1
systemd のユニットファイルで、サービスが発行できるシステムコールを、明示した集合だけに絞り込みたい。この対象となるシステムコールの集合を指定するパラメータ名だけを入力せよ。
入力形式(コマンドを打ち込んで答える問題です)
SystemCallFilter(正解)
別解: systemcallfilter
解説
SystemCallFilter はシステムコール名やあらかじめ定義された集合を並べて指定し、先頭に ~ を付けると逆に拒否する集合としても書ける。何を行える権限を持つかで締める仕組みとは層が異なり、こちらは「どの呼び出しを通すか」という単位で境界を引く。
設問2
多数のルールを収めたファイルで走査を繰り返しており、実行のたびにルールの読み込みへ時間がかかっている。あらかじめコンパイルしておいたルールを使う場合の実行方法として適切なものはどれか。
- コンパイル済みの形式であることを伝える -C を付けて実行する(正解)
- 照合を速く済ませる方式を選ぶ -f を付けて実行する
- 走査を分担させる処理の本数を増やす指定の -p を付けて実行する
- 一致するルール数の上限を決める -l を付けて実行する
解説
ルールファイルはあらかじめコンパイルした形式にしておける。その形式を渡す場合は、コンパイル済みであることを伝える指定を添えて実行する。走査の対象が多く実行回数も多い運用では、この手当てで実行ごとの読み込みの手間を減らせる。照合の方式を切り替える指定で、ルールの読み込みの形式には関わらない。走査を分担させる処理の本数を決める指定である。一致した数が上限に達したところで走査を打ち切る指定である。
他の選択肢が誤りである理由
- 「照合を速く済ませる方式を選ぶ -f を付けて実行する」照合の方式を切り替える指定で、ルールの読み込みの形式には関わらない。
- 「走査を分担させる処理の本数を増やす指定の -p を付けて実行する」走査を分担させる処理の本数を決める指定である。
- 「一致するルール数の上限を決める -l を付けて実行する」一致した数が上限に達したところで走査を打ち切る指定である。
設問3
検証中は nft で対話的にルールを足していたが、再起動するとルールが残らない。ディストリビューションの nftables サービスが起動時に読み込むファイルへルールセットを書き出し、以後はそのファイルを正としてレビューと変更を行う運用に切り替えたい。書き出し先となるファイルの絶対パスを入力せよ。
入力形式(コマンドを打ち込んで答える問題です)
/etc/nftables.conf(正解)
解説
/etc/nftables.conf は起動時にルールセット全体を読み込ませるためのファイルで、管理コマンドに与える記述をそのまま並べて書く。実行中のルールセットはメモリ上にあり、対話的に追加した内容はこのファイルへ書き出さない限り再起動で失われる。運用では実行中の内容をファイルへ書き出して両者を一致させ、ファイル側を変更の起点にする。実機とファイルのどちらが正かを決めないまま増やすと、差分の追跡ができなくなる。
設問4
複数のサブドメインをまとめて保護するため、Let's Encrypt でワイルドカード証明書を取得し、自動更新まで組みたい。正しい記述はどれか。(3つ選択)
- 発行回数の上限は登録したドメインごとに管理され、証明書の有効期限が切れるたびに自動的に解除されるため、更新の頻度によって上限に触れることはない
- ワイルドカード証明書の発行には DNS-01 を用い、_acme-challenge のラベルを持つ TXT レコードを置いて検証する(正解)
- certbot が証明書の設定の書き換えまで行えるのは nginx だけで、apache 向けの記述は管理者が自分で書いて用意する必要がある
- HTTP-01 は 80 番ポート経由で /.well-known/acme-challenge/ 配下のトークンを取得させる方式で、ワイルドカードの検証には使えない(正解)
- certbot renew を Cron や Timer unit file から定期的に呼び、期限が近づいた証明書だけを更新させる(正解)
解説
ACME の検証方式は、ドメインの支配を何で示すかが違います。HTTP-01 は 80 番ポート経由で /.well-known/acme-challenge/ 配下のトークンを取りに来させる方式で対象は個々のホスト名に限られ、ワイルドカードを求めるならゾーンへ TXT レコードを置く DNS-01 を選びます。運用では、有効期限と発行のレート制限という別種の制約を分けて考える必要があり、certbot renew を Cron か Timer unit file で定期実行して期限が近いものだけ更新する形にすると、無駄な発行を重ねずに済みます。失敗したときの手掛かりは letsencrypt.log に残ります。「発行回数の上限は登録したドメインごとに管理され」は誤りです。発行のレート制限は一定期間あたりの回数として課されるもので、証明書の有効期限とは別の制約です。「certbot が証明書の設定の書き換えまで行えるのは nginx だけで」は誤りです。certbot は nginx と apache のどちらにも対応しており、それぞれ向けの設定を組み込む仕組みを備えています。
他の選択肢が誤りである理由
- 「発行回数の上限は登録したドメインごとに管理され、証明書の有効期限が切れるたびに自動的に解除されるため、更新の頻度によって上限に触れることはない」誤りです。発行のレート制限は一定期間あたりの回数として課されるもので、証明書の有効期限とは別の制約です。
- 「certbot が証明書の設定の書き換えまで行えるのは nginx だけで、apache 向けの記述は管理者が自分で書いて用意する必要がある」誤りです。certbot は nginx と apache のどちらにも対応しており、それぞれ向けの設定を組み込む仕組みを備えています。
設問5
社内に数十本ある systemd の常駐サービスへ、まとめて最低限の防御を入れることになった。サービスごとに実際に使われるシステムコールを洗い出す時間は取れず、導入によって機能が止まる事態も避けたい。SystemCallFilter の書き方の方針として、最も適切なものはどれか。
- リストの先頭に ~ を付けて危険度の高いシステムコールの群を並べ、そこに載ったものだけを止める形で設定する(正解)
- サービスに共通して使われる基本的なシステムコールの群を許可リストとして並べ、リストに無いものを止める形で設定する
- SystemCallErrorNumber だけを設定し、危険度の高いシステムコールに対してエラーを返させる形で抑止する
- SystemCallArchitectures を native に設定し、想定していないシステムコールを実行形式の側でまとめて止める
解説
SystemCallFilter は、並べたもの以外を止める許可リストとして働くのが既定だが、リストの先頭に ~ を付けると効果が反転し、並べたものだけを止める拒否リストになる。防御としては許可リストのほうが強いものの、サービスごとに使うシステムコールを洗い出す必要があり、並べ漏れがあればその経路に入った時点でサービスが止まる。洗い出しの時間が取れず停止も避けたい状況では、危険度の高い群だけを拒否リストで落とす形が現実的な出発点になる。systemd には @ で始まる定義済みの群が用意されており、群の単位で指定できる。SystemCallErrorNumber は、遮断された時の振る舞いをプロセスの終了からエラーの返却へ変える設定である。SystemCallArchitectures は受け付ける実行形式の系統を絞る設定で、別の系統からフィルタをすり抜けられるのを防ぐ役割を担う。
他の選択肢が誤りである理由
- 「サービスに共通して使われる基本的なシステムコールの群を許可リストとして並べ、リストに無いものを止める形で設定する」許可リストは防御としては強いが、並べ漏れたシステムコールに触れた時点でサービスが止まる。各サービスの洗い出しができていない段階で一斉に導入する方式としては、機能を止めたくないという条件に合わない。
- 「SystemCallErrorNumber だけを設定し、危険度の高いシステムコールに対してエラーを返させる形で抑止する」SystemCallErrorNumber は、遮断された時の振る舞いをプロセスの終了からエラーの返却へ変える設定である。単独では何を遮断するかを決められず、対象の指定は SystemCallFilter の側で行う必要がある。
- 「SystemCallArchitectures を native に設定し、想定していないシステムコールを実行形式の側でまとめて止める」SystemCallArchitectures は受け付ける実行形式の系統を絞る設定で、別の系統からフィルタをすり抜けられるのを防ぐ役割を担う。どのシステムコールを止めるかを決める設定ではない。
続きは、会員登録なしでそのまま50問解けます。採点と解説つきで、上と同じ本物の問題です。
登録なしで50問解く