Come misurare l'integrità del sistema operativo (Linux)?

2

Sto lavorando a un progetto che richiede la misura di integrità del sistema operativo (Linux). Un modo per farlo è utilizzare IMA, ma non sono sicuro che si adatti allo scenario seguente.

Lo scenario del progetto è un po 'come questo:

I sistemi si avviano e la misurazione viene eseguita usando trusted-grub. Quindi la PCR 0-7 viene riempita. Quindi il SO è caricato (linux). Quindi ho un software chiamato "Checker". Lo scopo di questo software è controllare se qualcosa è stato modificato nel sistema o meno. Quello che sto pensando è che memorizzerò i valori della PCR per il "correttore". Una volta riavviato il sistema e estesi i nuovi valori nel PCRS, i valori PCR esistenti (memorizzati) vengono quindi confrontati con i nuovi valori PCR.

Una cosa che ho fatto è che ho usato una funzionalità di file di controllo in trusted-grub per garantire l'integrità del mio software di "correttore" in quanto sarà un solo file eseguibile.

Il problema è che ora voglio misurare il sistema operativo (preferibilmente Linux) ed estendere la misurazione in una PCR. Ma non ho idea di come farlo. Sarei fantastico se potessi avere qualche commento su come risolvere questo problema.

    
posta user3130920 23.12.2013 - 23:42
fonte

1 risposta

1

Trusted-grub fornisce questa funzionalità.

Le PCR 0-7 vengono riempite se si dispone di un BIOS con conoscenza TPM. Trusted-grub riempirà i PCR 8-14 con grub config, opzioni, kernel, modulo hash - vedi sezione 2.4 Measurements .

Ecco come appare la PCR senza un boot loader sensibile al TPM:

    # cat /sys/devices/pnp0/00:09/pcrs 
    PCR-00: A8 5A 84 B7 38 FC C0 CF 3A 44 7A 5A A7 03 83 0B BE E7 BD D9 
    PCR-01: 11 40 C1 7D 0D 25 51 9E 28 53 A5 22 B7 1F 12 24 47 91 15 CB 
    PCR-02: A3 82 9A 64 61 85 2C C1 43 ED 75 83 48 35 90 4F 07 A9 D5 2C 
    PCR-03: B2 A8 3B 0E BF 2F 83 78 29 9A 5B 2B DF C3 1E A9 55 AD 72 36 
    PCR-04: 78 93 CF 58 0E E1 A3 8F DA 6F E0 3B C9 53 76 28 12 93 EF 82 
    PCR-05: 72 A7 A9 6C 96 39 38 52 D5 9B D9 12 39 75 86 44 3E 20 10 2F 
    PCR-06: 92 20 EB AC 21 CE BA 8A C0 AB 92 0E D0 27 E4 F8 91 C9 03 EE 
    PCR-07: B2 A8 3B 04 BF 2F 83 74 29 9A 5B 4B DF C3 1E A9 55 AD 72 36 
    PCR-08: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-09: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-11: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-12: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-13: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-14: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-16: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    PCR-17: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
    PCR-18: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
    PCR-19: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
    PCR-20: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
    PCR-21: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
    PCR-22: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
    PCR-23: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Come potete vedere, PCR 0-7 sono pieni ma da PCR 8 a 15 è vuoto a meno che un bootloader in grado di riconoscere TPM (ad esempio trusted-grub) li estenda (sono ancora resettati a 0). Se non hai questi PCR riempiti, c'è qualcosa che non va nella tua configurazione trusted-grub.

Un altro modo sarebbe usare TXT per caricare un sistema operativo fidato. In tal caso, le PCR 17-23 verrebbero riempite con le misurazioni del sistema operativo attendibile. Attualmente, poiché TXT non viene utilizzato, le PCR vengono riempite con 1s (f). Vengono ripristinati solo quando viene avviato TXT. Vedi tboot di Intel

di Intel.

    
risposta data 18.02.2014 - 22:33
fonte

Leggi altre domande sui tag