Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
C3 Konfiguration IMA und Aktivierung Appraise
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 4148
Location: Bavaria

PostPosted: Sat Oct 31, 2020 4:55 pm    Post subject: C3 Konfiguration IMA und Aktivierung Appraise Reply with quote

(Dieser Post ist Teil einer Installation-Anleitung. Falls nicht schon geschehen lies bitte: Installation Guide for Paranoid Dummies Post Nr. 2)

Hinweis: Alle Beschreibungen der C-Reihe wurden getestet mit einem signierten, monolithischen, (stub-) Kernel (*) der Version 5.9.0, 5.9.2, 5.9.3, 5.9.6, 5.9.8 und 5.9.10, der per SecureBoot von UEFI direkt geladen wird. (* das bedeutet B.2 und B.3 wurden komplett vorher umgesetzt)



C.3 Konfiguration IMA und Aktivierung Appraise


Warnung: Diese Anleitung kann sich noch ändern ! Es hat derzeit eher den Status eines proof-of-concept. Die letzten Änderungen im Kernel zu IMA sind noch sehr jung - mit weiteren sollte gerechnet werden.

Edit 2022-09-12: Nach knapp zwei Jahren im Einsatz gilt obiges einfach nicht mehr. Es ist stabil und schützt Dich absolut gegen alle automatisierten Attacken die ein Binary nachladen und versuchen dieses auszuführen, wie z.B.:
https://www.heise.de/news/Krypto-Malware-Shikitega-ueberlistet-den-herkoemmlichen-Linux-Schutz-7260803.html

Wie bereits im Installation Guide gesagt, ist diese Konfiguration NICHT als Schutz gegen Offline Tampering geeignet. Hierzu würde man IMA und EVM mit einem TPM-Chip benötigen. Wir haben aber keinen TPM-Chip ! Außerdem habe ich bereits in A.4 den Einsatz von Wechselplatten oder FDE (full disk encryption) als Schutz gegen Offline Tampering empfohlen.

Wir nutzen IMA lediglich als zusätzliche Maßnahme um uns vor Online Attacken zu schützen, indem wir alle ausführbaren Programme vor Veränderungen schützen. Deshalb werden wir auch nicht alle Files die root gehören schützen (wie in diversen Artikeln beschrieben), sondern nur ausführbare Dateien die root gehören. Du kannst dies natürlich jederzeit erweitern, indem Du die Policy anpasst.

Um IMA einsetzen zu können benötigen wir zwei Kernel: Einen "Every-Day"-Kernel und einen zweiten, den wir nur dann booten, wenn wir unsere Programme mit "emerge -u @world" ändern (=update) wollen. Dieser zweite kann sich entweder in unserem /boot/EFI-Verzeichnis oder auf einem USB-Stick befinden. Ich werde beide Möglichkeiten beschreiben und mit OPT1 und OPT2 kennzeichnen.


0. Voraussetzung ist die Kernel Konfiguration nach C.2 !


1. Wir benötigen als erstes die ima-evm-utils. Diese sind derzeit noch nicht stable.
Code:
ACCEPT_KEYWORDS="~amd64" emerge -v ima-evm-utils

Solange diese nicht stable sind, musst Du natürlich auch wieder Deine /etc/portage/package.accept_keywords anpassen:
Code:
# nano -w /etc/portage/package.accept_keywords
add this line =>
app-crypt/ima-evm-utils ~amd64


2. Anpassung /etc/fstab

Ergänze in der fstab den Parameter "iversion" für jede Partition, in der sich ausführbare binaries befinden die geschützt werden sollen (normalerweise nur root wenn Du nicht eine extra Partition für /usr hast). Verwende dies NICHT für /home. Folgendes sollte genügen:
Code:
PARTLABEL=root     /    ext4    defaults,noatime,iversion               0 1

3. Erstellen der Policy
Code:
# mkdir /etc/ima
# cd /etc/ima
# nano -w policy.conf
=>
dont_measure fsmagic=0x9fa0
dont_appraise fsmagic=0x9fa0
dont_measure fsmagic=0x62656572
dont_appraise fsmagic=0x62656572
dont_measure fsmagic=0x64626720
dont_appraise fsmagic=0x64626720
dont_measure fsmagic=0x1021994
dont_appraise fsmagic=0x1021994
dont_measure fsmagic=0x1cd1
dont_appraise fsmagic=0x1cd1
dont_measure fsmagic=0x42494e4d
dont_appraise fsmagic=0x42494e4d
dont_measure fsmagic=0x73636673
dont_appraise fsmagic=0x73636673
dont_measure fsmagic=0xf97cff8c
dont_appraise fsmagic=0xf97cff8c
dont_measure fsmagic=0x43415d53
dont_appraise fsmagic=0x43415d53
dont_measure fsmagic=0x27e0eb
dont_appraise fsmagic=0x27e0eb
dont_measure fsmagic=0x63677270
dont_appraise fsmagic=0x63677270
dont_measure fsmagic=0x6e736673
dont_appraise fsmagic=0x6e736673
measure func=MMAP_CHECK mask=MAY_EXEC
appraise func=MMAP_CHECK mask=MAY_EXEC
measure func=BPRM_CHECK mask=MAY_EXEC
appraise func=BPRM_CHECK mask=MAY_EXEC
<=
# chmod 0600 policy.conf

Hinweis: Du wirst später in dmesg das Laden dieser Daten sehen. Dabei schneidet der Kernel (5.9.2) die Ausgabe ab und es sieht so aus, wie wenn er nur die ersten 9 Zeilen geladen hätte. Das ist aber nicht der Fall; es wurden alle geladen - also keine Panik ! Du kannst dies auch nach dem Reboot mit "cat /sys/kernel/security/integrity/ima/policy" überprüfen.
Edit 2021-02-04: Wenn man in der sysctl.conf das "kernel.printk_ratelimit = 0" auf null setzt, wird wieder alles angezeigt. Sollte man aber nicht machen (ich habe dies nur bei Tests bemerkt).

4. Erstellung eines runscripts
Code:
# cd /etc/init.d
# nano -w loadimapolicy
=>
#!/sbin/openrc-run
# Copyright 1999-2020 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
 
description="Load in custom IMA policy"
 
depend()
{
        need sysfs localmount
}
 
start()
{
        ebegin "Loading custom IMA policy"
        cat /etc/ima/policy.conf > /sys/kernel/security/integrity/ima/policy
        eend $?
}
<=
# chmod 0700 loadimapolicy
# rc-update add loadimapolicy boot



5. Measure

Ändere jetzt in Deiner Kernel Konfig den Parameter auf "ima_appraise=fix" in der Built-in command line
. Edit 2022-12-14: Lasse es auf "ima_appraise=off" (wie in C.2 bereits konfiguriert) und compiliere diesen Kernel ALS "Unlocked"-Kernel. Wir starten kein Measure da es für ein signed IMA nicht funktioniert (und bei einem hashed IMA eine spezielle Policy notwendig wäre; es war damals einfach nur unnötig).
Code:
# cd /usr/src/linux
# make


6. Kopiere diesen neuen "Unlocked"-Kernel auf den USB-Stick - oder - nach /boot/EFI

OPT1:
Code:
# mount /boot
# cd /boot
# ls
! change to your EFI-dir with "cd EFI" -or- "cd Efi" -or- "cd efi"
# cd EFI
# mkdir unlocked
# cd unlocked
! If you have done B.3 SecureBoot use this to copy your kernel
# sbsign --key /etc/MY/efikeys/DB.key --cert /etc/MY/efikeys/DB.crt --output bzImage.efi /usr/src/linux/arch/x86/boot/bzImage
(! OR - without SecureBoot - use this to copy)
(# cp /usr/src/linux/arch/x86/boot/bzImage ./bzImage.efi)
# ls
# cd /
! Replace in next command sdX with your boot device (e.g. /dev/sda) and for Y your boot partition (e.g. 1)
# efibootmgr -c -d /dev/sdX -p Y -L "UNLOCKED" -l '\EFI\unlocked\bzImage.efi'
# umount /boot


OPT2:
Kopiere den Kernel wie in C.1 beschrieben auf den Stick.


7. Führe jetzt einen Reboot aus und boote den neuen Kernel !

Dazu musst Du natürlich beim Systemstart Deine Lieblings-Tastenkombination drücken um im BIOS die Boot-Reihenfolge temporär zu ändern. Prüfe gleich danach mit "dmesg | grep command" oder mit "cat /proc/cmdline" ob Du auch wirklich diesen gestartet hast.


8. Hash all binary files

Ich habe den find gesplittet, weil einiges sehr lange dauern wird (später machen wir das anders):
Code:
find  /bin -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /etc -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /lib -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /lib64 -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /opt -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /root -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /sbin -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;
find  /var -fstype ext4 -type f -uid 0 -executable -exec evmctl ima_hash '{}' \;

find  /usr -fstype ext4 -type f -uid 0 -exec evmctl ima_hash '{}' \;



9. Umstellung auf Appraise

Ändere nun in Deiner Kernel Konfig den Parameter "ima_appraise=off" um in "ima_appraise=enforce" in der Built-in command line:
Code:
Processor type and features  --->
 [*] Built-in kernel command line
 (root=PARTUUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro loglevel=8 lsm.debug ima_appraise=enforce) Built-in kernel command string

Compiliere den Kernel und installiere ihn ganz normal auf Deine boot-Partition, so wie Du es immer machst. Das wird Dein neuer "Every-Day"-Kernel. Boote diesen jetzt gleich. (ggf. musst Du nochmal im BIOS die Boot-Reihenfolge anpassen.)


Fertig ! Lies jetzt weiter in C.4


(Links habe ich mir diesmal gespart, weil a) fast alles veraltet ist und b) Du selbst in der Lage bist die Gentoo Wiki Artikel zu finden. Die derzeit beste Quelle für Informationen sind wirklich leider nur die Sourcen in /usr/src/linux/security/integrity/ima.)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum