📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
190行目: 190行目:
<br>
<br>
まず、/etc/apparmor.d/usr.sbin.libvirtdファイルにある最後の <code>}</code> スコープの直前に、以下に示す設定を追記する。<br>
まず、/etc/apparmor.d/usr.sbin.libvirtdファイルにある最後の <code>}</code> スコープの直前に、以下に示す設定を追記する。<br>
以下の例では、QEMUを/home/<ユーザ名>/QEMUディレクトリにインストールしているものとする。<br>
以下の例では、QEMUを /home/<ユーザ名>/QEMU/ディレクトリ にインストールしているものとする。<br>
  sudo vi /etc/apparmor.d/usr.sbin.libvirtd
  sudo vi /etc/apparmor.d/usr.sbin.libvirtd
<br>
<br>
218行目: 218行目:
AppArmorの設定を反映させるため、ルールセットを再読み込みする。<br>
AppArmorの設定を反映させるため、ルールセットを再読み込みする。<br>
  sudo systemctl reload apparmor
  sudo systemctl reload apparmor
<br>
===== セキュリティ設定 : SELinuxを使用している場合 =====
QEMUを/usrディレクトリ以外の場所にインストールする場合、SELinuxによるアクセス拒否が発生する可能性がある。<br>
そのため、QEMUバイナリに適切なセキュリティコンテキスト(ラベル)を付与する必要がある。<br>
<br>
まず、現在のSELinuxモードを確認する。<br>
getenforce
<br>
<u>Permissive</u> または <u>Disabled</u> と表示された場合は、設定は不要である。<br>
<u>Enforcing</u> と表示された場合は、以下に示す設定が必要となる。<br>
<br>
====== ファイルコンテキストの設定 ======
QEMUバイナリに適切なコンテキストを設定する。<br>
以下の例では、QEMUを /home/<ユーザ名>/QEMU/ディレクトリにインストールしているものとする。<br>
<br>
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-system-.*"
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-i386"
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/bin/qemu-x86_64"
<br>
関連ライブラリやデータファイルにも必要に応じて設定する。<br>
sudo semanage fcontext -a -t qemu_exec_t "/home/<ユーザ名>/QEMU/libexec(/.*)?"
sudo semanage fcontext -a -t virt_image_t "/home/<ユーザ名>/QEMU/share(/.*)?"
<br>
====== コンテキストの適用 ======
設定したコンテキストを実際のファイルに適用 (再ラベル付け) する。<br>
sudo restorecon -Rv /home/<ユーザ名>/QEMU/
<br>
====== 設定の確認 ======
コンテキストが正しく設定されたかどうかを確認する。<br>
ls -Z /home/<ユーザ名>/QEMU/bin/
<br>
正しく設定されていれば、<u>qemu_exec_t</u> ラベルが表示される。<br>
<br>
====== ブール値の調整(必要に応じて) ======
状況によっては、SELinuxのブール値を変更する必要がある。<br>
<br>
仮想化関連のブール値を確認する。<br>
getsebool -a | grep virt
<br>
必要に応じて有効化する。<br>
sudo setsebool -P virt_use_nfs on              # NFSを使用する場合
sudo setsebool -P virt_use_samba on            # Sambaを使用する場合
sudo setsebool -P virt_sandbox_use_all_caps on  # 特権が必要な場合
<br>
====== 上記で解決しない場合 : カスタムポリシーモジュールの作成 ======
上記の設定でもアクセス拒否が発生する場合は、カスタムポリシーを作成する。<br>
<br>
拒否ログを確認する。<br>
sudo ausearch -m avc -ts recent
<br>
ログからポリシーモジュールを自動生成する。<br>
sudo ausearch -m avc -ts recent | audit2allow -M qemu_custom
<br>
モジュールをインストールする。<br>
sudo semodule -i qemu_custom.pp
<br>
<br>