Moja priljubljena “desktop” in “server” Linux distribucija je Debian. Trenutno na “desktopih” uporabljam Debian 11 in na le-teh imam vklopljen SecureBoot. Za arhiviranje najraje uporabljam program Veeam oz. Veeam Linux Agent Free, ki j za moje potrebe odličen in trenutno še zastonj.
Veeam Linux Agent v različici 5.0.1 deluje končno tudi na Debian 11, ampak zatakne pa se s SecureBoot, saj ob namestitvi repozitorija in namestitvi paketov veeam in veeamsnap, konfiguraciji programa in zagonu javi takoj na začetku napako :
Failed to load module [veeamsnap] with parameters [zerosnapdata=1 debuglogging=0 snapstore_b…
Po prebiranju namestitvene dokumentacije za Debian 11 sem ugotovil, da potrebujem nameščene:
linux-image-*-dbg in linux-headers-$(uname -r)
pakete, toda namestitev modula veeamsnap je še vedno javljala napako. Ugotovil sem, da je kernel zaklenjen z opcijo kernel_lockdown, ki se avtomatično vklopi kadar je vklopljen SecureBoot in namestitev nepodpisanih modulov, kot je veeamsnap ni mogoča. Tukaj smo postavljeni pred dilemo, ali onemogočit SecureBoot ali se poigrat s podpisom.
Po prebiranju dokumentacije, končno ugotovim, da je crt certifikat od Veeamsnap na voljo v datoteki:
https://repository.veeam.com/.private/rpm/el/8/x86_64/veeamsnap-ueficert-5.0.1.4493-1.noarch.rpm
in obstaja samo za RPM sisteme. Zato sem snel omenjeno datoteko in jo s porgramom alien pretvoril v DEB obliko in po odprtju DEB paketa skopiral certifikat na moj sistem.
Nato sem pognal še ukaz:
sudo mokutil –import veeamsnap-ueficert.crt
in vpisal ključ med zaupanja vredne.
Ampak to ni vse, saj zgornji certifikat velja samo za module, ki jih je izdal Veeam. Modul na našem sistemu je kreiran s pomočjo DKMS in to pomeni, da ga ni ustvaril Veeam ampak mi sami. Zato moramo najprej kreirat svoj par ključev za podpis s pomočjo ukazov:
- ustvarimo imenik, kjer bomo shranjevali ključe in se prestavimo vanj:
mkdir -p /var/lib/shim-signed/mok/
- v tem imeniku kreiramo ključe:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj “/CN=PoljubnoIme/” -nodes
openssl x509 -inform der -in MOK.der -out MOK.pem
- ne pozabimo namestit ukaza sbsingtool:
apt install sbsigntool
- uvozimo certifikat:
sudo mokutil –import MOK.der
- pregledamo ali je le ta uvožen:
sudo mokutil –list-new
- prestavimo se v imenik, kjer so z DKMS kreirani moduli:
cd /lib/modules/$(uname -r)/updates/dkms
- in module podpišemo:
for i in *.ko ; do /usr/lib/linux-kbuild-5.10/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der “$i” ; done
- pregledamo ali je modul podpisan:
modinfo veeamsnap
- in ponovno zaženemo računalnik.
Po ponovnem zagonu se nam odpre UEFI zaslon “SHIM UEFI Key Management”, kjer uvozimo certifikat (Enroll MOK) in izvedemo ponovi zagon. Po ponovnem zagonu je certifikat podpisan in program Veeam Agent oz. arhiviranje deluje brez napak.
V pomoč vam bodo ukazi za pregled ali je SecureBoot vklopljen:
sudo mokutil –sb-state
seznam zaupanja vrednih ključev:
sudo keyctl list %:.builtin_trusted_keys
in ključi, ki so na voljo vašemu sistemu:
sudo keyctl list %:.platform
Edina težava tega je v tem, da je proceduro podpisa modulov in uvoza ključev potrebno izvajati ob vsaki nadgradnji kernela.
Na ta način sem rešil težavo z uporabo nepodpisanih kernel modulov drugih proizvajalcev, kar nam lahko pride prav tudi pri strežnikih, ki imajo dodatne module za upravljanje s strojno opremo – recimo IBM in HP strežniki.