Linux Kernel Runtime Guard (LKRG) in Qubes OS Debian or Qubes-Whonix ™ VMs

From Whonix
Jump to navigation Jump to search



LKRG logo Logo-debian-500x500.png Logo box.png Qubes-logo-blue.png FREE
Linux Kernel Runtime Guard (LKRG) protects the kernel. It provides security through diversity and has a similar effect to running an uncommon operating system (kernel). [1]

LKRG renders whole classes of kernel exploits ineffective, while making other exploits less reliable and more difficult to write; see features and security. LKRG was developed by a security professional with reviews undertaken by other high profile security professionals; see authorship. For further information, refer to the main LKRG entry.

The instructions below explain how to install LKRG in Qubes-logo-blue.png Qubes Debian-based VMs. Most users will want to apply these instructions in the Qubes Debian TemplateVM.

Logo box.png Qubes-Whonix ™ is supported as well, but in that case the steps to add the signing key and repository should be skipped because they are already present in Qubes-Whonix ™.

For all other platforms Logo-linux-500x500.png, see LKRG.

Qubes VM Kernel[edit]

Since LKRG is a kernel module, it is required (and advisable) to reconfigure the VM to use a Qubes VM kernel. [2]

Any issues with Qubes VM kernel should not be confused with LKRG. Otherwise, LKRG could be falsely suspected of causing unrelated issues, which wastes time in successfully completing the configuration.

  1. Follow the Qubes OS Installing kernel in Debian VM instructions.
  2. Ensure the Qubes VM kernel is functional before proceeding -- Qubes VM kernel issues should be raised at Qubes support and not in Whonix ™ forums. [3] [4]
  3. Reboot dom0 with Qubes VM kernel. This is because Qubes VM kernel might break unrelated things such as the USB VM. [5]
  4. Once the Qubes VM kernel is functional, proceed with the following instructions.


Add Signing Key[edit]

Info Skip this step in Qubes-Whonix ™.

Complete the following steps to add the Whonix ™ Signing Key to the system's APT keyring.

Open a terminal.

Package curl needs to be installed.

Install curl.

1. Update the package lists.

sudo apt update

2. Upgrade the system.

sudo apt full-upgrade

3. Install the curl package.

Using apt command line parameter --no-install-recommends is in most cases optional.

sudo apt install --no-install-recommends curl

4. Done.

The procedure of installing curl is complete.

Download Whonix ™ Signing Key. [6]

If you are using Debian, run.

curl --tlsv1.3 --proto =https --max-time 180 --output derivative.asc https://www.whonix.org/derivative.asc

If you are using a Qubes Debian Template, run.

curl --proxy http://127.0.0.1:8082/ --tlsv1.3 --proto =https --max-time 180 --output derivative.asc https://www.whonix.org/derivative.asc

Users can check Whonix ™ Signing Key for better security.

Add Whonix ™ signing key to APT trusted keys.

sudo cp derivative.asc /usr/share/keyrings/derivative.asc

The procedure of adding Whonix ™ signing key is now complete.

Add Repository[edit]

Info Skip this step in Qubes-Whonix ™.

Add Whonix ™ Repository.

Choose either: Option A, Option B OR Option C.

Option A: Add Whonix ™ Onion Repository.

To add Whonix ™ Repository over Onion please press on expand on the right.

Install apt-transport-tor from the Debian repository.

sudo apt install apt-transport-tor

Add Whonix ™ APT repository for default Whonix ™ using Debian stable. At the time of writing this was bullseye.

echo "deb [signed-by=/usr/share/keyrings/derivative.asc] tor+http://deb.dds6qkxpwdeubwucdiaord2xgbbeyds25rbsgr73tbfpqpt4a6vjwsyd.onion bullseye main contrib non-free" | sudo tee /etc/apt/sources.list.d/derivative.list

Option B: Add Whonix ™ Clearnet Repository over Tor.

To add Whonix ™ Repository over torified clearnet please press on expand on the right.

Install apt-transport-tor from the Debian repository.

sudo apt install apt-transport-tor

Add Whonix ™ APT repository for default Whonix ™ using Debian stable. At the time of writing this was bullseye.

echo "deb [signed-by=/usr/share/keyrings/derivative.asc] tor+https://deb.whonix.org bullseye main contrib non-free" | sudo tee /etc/apt/sources.list.d/derivative.list

Option C: Add Whonix Clearnet Repository over clearnet.

To add Whonix ™ Repository over clearnet please press on expand on the right.

Add Whonix ™ APT repository for default Whonix ™ using Debian stable. At the time of writing this was bullseye.

echo "deb [signed-by=/usr/share/keyrings/derivative.asc] https://deb.whonix.org bullseye main contrib non-free" | sudo tee /etc/apt/sources.list.d/derivative.list

Install LKRG[edit]

Testers only! Testers only!

Install LKRG.

Install lkrg-dkms linux-headers-amd64.

1. Update the package lists.

sudo apt update

2. Upgrade the system.

sudo apt full-upgrade

3. Install the lkrg-dkms linux-headers-amd64 package.

Using apt command line parameter --no-install-recommends is in most cases optional.

sudo apt install --no-install-recommends lkrg-dkms linux-headers-amd64

4. Done.

The procedure of installing lkrg-dkms linux-headers-amd64 is complete.

The LKRG installation procedure is complete. Interested users can learn more, consider additional hardening and so on; see here for further information.

Credits and Source Code[edit]

The original source software is maintained by Adam "pi3" Zabrocki. See also: LKRG authorship.

This website with Qubes instructions and LKRG Debian Package Website is the software fork homepage for LKRG, with a focus on easy installation, added user documentation, and integration with Whonix, Kicksecure, Debian, and other distributions. The software fork source code can be found here.

References[edit]

Qubes ticket: make Linux Kernel Runtime Guard (LKRG) easily avaialble in Qubes

  1. https://www.openwall.com/lkrg/
  2. cannot compile LKRG (Linux Kernel Runtime Guard) with Qubes dom0 kernel / broken gcc plugins structleak_plugin.so latent_entropy_plugin.so This probably occurs due to this recently closed issue which has only filtered through to Qubes OS master branches, but not the stable branches: kernel-devel package have broken gcc plugin. The dom0 kernel compilation bug might be fixed after upgrades. It is unclear if it would then be advisable to use dom0 kernel.
  3. https://forums.whonix.org/t/what-to-post-in-this-qubes-whonix-forum-and-what-not/2275
  4. Qubes feature request: Simplify and promote using in-vm kernel
  5. As experienced firsthand by Whonix ™ developer Patrick Schleizer.
  6. See Secure Downloads to understand why curl and the parameters --tlsv1.3 --proto =https are used instead of wget.