Usando xfsslower para expor operações de sistema de arquivo inesperadamente lentas
CAPÍTULO 11. AUMENTAR A SEGURANÇA COM O SUBSISTEMA DE INTEGRIDADE DO KERNEL
4. Para carregar a chave confiável do blob de espaço do usuário, use o sub-comando add com o blob como argumento:
11.5. POSSIBILITANDO A ARQUITETURA DE MEDIÇÃO DE INTEGRIDADE E MÓDULO DE VERIFICAÇÃO AMPLIADO
A arquitetura de medição de integridade (IMA) e o módulo de verificação estendida (EVM) pertencem ao subsistema de integridade do núcleo e aumentam a segurança do sistema de várias maneiras. A seção seguinte descreve como habilitar e configurar a IMA e EVM para melhorar a segurança do sistema operacional.
Pré-requisitos
Verifique se o sistema de arquivos securityfs está montado no diretório /sys/kernel/security/ CAPÍTULO 11. AUMENTAR A SEGURANÇA COM O SUBSISTEMA DE INTEGRIDADE DO KERNEL
Verifique se o sistema de arquivos securityfs está montado no diretório /sys/kernel/security/ e se o diretório /sys/kernel/security/integrity/ima/ existe.
# mount …
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) …
Verifique se o gerente de serviços systemd já está remendado para apoiar a IMA e a EVM no momento da inicialização:
# dmesg | grep -i -e EVM -e IMA
[ 0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-167.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap
rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
[ 0.000000] kvm-clock: cpu 0, msr 23601001, primary cpu clock
[ 0.000000] Using crashkernel=auto, the size chosen is a best effort estimation. [ 0.000000] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-
167.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel- swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet
[ 0.911527] ima: No TPM chip found, activating TPM-bypass! [ 0.911538] ima: Allocated hash algorithm: sha1
[ 0.911580] evm: Initialising EVM extended attributes: [ 0.911581] evm: security.selinux
[ 0.911581] evm: security.ima [ 0.911582] evm: security.capability [ 0.911582] evm: HMAC attrs: 0x1
[ 1.715151] systemd[1]: systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT
+GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy)
[ 3.824198] fbcon: qxldrmfb (fb0) is primary device [ 4.673457] PM: Image not found (code -22)
[ 6.549966] systemd[1]: systemd 239 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT
+GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=legacy)
Procedimento
1. Adicione os seguintes parâmetros de linha de comando do kernel:
# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="ima_policy=appraise_tcb ima_appraise=fix evm=fix"
O comando permite a IMA e EVM no modo fix para a entrada de inicialização atual e permite aos usuários reunir e atualizar as medidas da IMA.
O parâmetro de linha de comando do kernel ima_policy=appraise_tcb garante que o kernel utilize a política de medição padrão da Trusted Computing Base (TCB) e a etapa de avaliação. A parte de avaliação proíbe o acesso a arquivos, cujas medidas anteriores e atuais não
correspondem.
3. Opcionalmente, verificar se os parâmetros foram adicionados à linha de comando do kernel: # cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-167.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet ima_policy=appraise_tcb ima_appraise=fix evm=fix
4. Criar uma chave mestra do núcleo para proteger a chave EVM:
# keyctl add user kmk dd if=/dev/urandom bs=1 count=32 2> /dev/null @u 748544121
A chave-mestra do kernel (kmk) é mantida inteiramente na memória de espaço do kernel. O valor de 32 bytes da chave-mestra do kernel kmk é gerado a partir de bytes aleatórios do arquivo /dev/urandom e colocado no chaveiro do usuário ( @u). O número de série da chave está na segunda linha da saída anterior.
5. Criar uma chave EVM criptografada com base na chave kmk: # keyctl add encrypted evm-key "new user:kmk 64" @u 641780271
O comando usa kmk para gerar e criptografar uma chave de usuário de 64 bytes (chamada evm-key) e a coloca no chaveiro do usuário ( @u). O número de série da chave está na segunda linha da saída anterior.
IMPORTANTE
É necessário nomear a chave do usuário como evm-key porque esse é o nome que o subsistema EVM está esperando e com o qual está trabalhando.
6. Criar um diretório para chaves exportadas: # mkdir -p /etc/keys/
7. Procure a chave kmk e exporte seu valor para um arquivo: # keyctl pipe keyctl search @u user kmk > /etc/keys/kmk *
O comando coloca o valor não criptografado da chave-mestra do kernel (kmk) em um arquivo de localização previamente definida (/etc/keys/).
8. Procure a chave do usuário evm-key e exporte seu valor para um arquivo: # keyctl pipe keyctl search @u encrypted evm-key > /etc/keys/evm-key
O comando coloca o valor codificado do usuário evm-key em um arquivo de localização arbitrária. O evm-key foi criptografado pela chave-mestra do kernel anteriormente. 9. Opcionalmente, veja as chaves recém-criadas:
# keyctl show Session Keyring
974575405 --alswrv 0 0 keyring: ses 299489774 --alswrv 0 65534 \ keyring: uid.0 748544121 --alswrv 0 0 \ user: kmk
641780271 --alswrv 0 0 \_ encrypted: evm-key Você deve ser capaz de ver um resultado semelhante.
10. Ativar o EVM:
# echo 1 > /sys/kernel/security/evm
11. Opcionalmente, verificar se a EVM foi inicializada: # dmesg | tail -1
[…] evm: key initialized Recursos adicionais
Para mais informações sobre o subsistema de integridade do kernel, veja Seção 11.1, “O subsistema de integridade do kernel”.
Para mais informações sobre a Arquitetura de Medição de Integridade, veja Seção 11.2, “Arquitetura de medição de integridade”.
Para mais informações sobre o Módulo de Verificação Estendida, veja Seção 11.3, “Módulo de verificação ampliado”.
Para mais informações sobre a criação de chaves criptografadas, veja Seção 11.4, “Chaves confiáveis e criptografadas”.