A ativação do FIPS em um sistema centOS luks criptografado quebra a senha de inicialização

2

Para um dos meus aplicativos, preciso ativar o FIPS para OpenSSL e, ao mesmo tempo, usar a criptografia de disco do software.

VM # 1

Eu iniciei uma instância de VM do CentOS que foi criptografada por software durante a instalação. O sistema inicializou bem (depois de digitar a senha de descriptografia de inicialização).

Em seguida, passei pelas etapas para ativar o FIPS-OpenSSL e reinicializei. O sistema não aceitaria minha senha de decodificação de boot (que era propositadamente fácil de digitar).

VM # 2

Eu configurei uma segunda VM com um OS / config idêntico, sem criptografia de software . Eu habilitei o FIPS usando as etapas acima, reiniciei e tudo funciona bem sem problemas na reinicialização.

VM # 3

Eu girei uma terceira instância de VM do CentOS, optando também por não usar a criptografia do sistema durante a instalação. Depois da instalação e da configuração básica, eu criptografei um volume de teste usando luks e, em seguida, reiniciei. Fui solicitado pela senha e o sistema inicializa normalmente.

Em seguida, eu habilitei o FIPS-OpenSSL , reiniciei - e receba uma infinidade de erros onde normalmente vejo a senha de inicialização e o sistema não inicializa.

Eu inicializei esta VM no modo de usuário único, obtive fips = 1 da linha do kernel e reiniciei. A senha de inicialização foi aceita desta vez.

...

Por que a ativação do FIPS para OpenSSL está causando a falha das senhas de inicialização?

    
por a coder 31.08.2015 / 21:28

1 resposta

2

O problema é que eu criptografei os volumes antes de ativar o FIPS. Como garethTheRed mencionado em comentário , LUKS usou um algoritmo aprovado não FIPS foi maluco.

A solução é para

  1. Ativar FIPS
  2. Criptografar volumes

nessa ordem.

Este guia também foi útil na solução do problema. É demorado com uma explicação extra, então não vou copiar e colar a coisa toda aqui. Aqui está o jist:

HABILITAR FIPS

  1. Verifique se o FIPS está ativado usando um dos dois métodos:

    cat /proc/sys/crypto/fips_enabled
    0 = not enabled
    1 = enabled
    
    openssl md5 /any/file
    valid hash = not enabled
    "Error setting digest md5" = enabled (likely)
    
  2. Verifique se você está preparando o prelinking.

    vi /etc/sysconfig/prelink
    
    Change
    PRELINKING=yes
    to
    PRELINKING=no
    
  3. Desfazer todos os pré-testes atuais

    [root@centos64]# prelink -ua
    
  4. Instale dracut-fips

    [root@centos64]# yum install dracut-fips
    
  5. Reconstrua seu initramfs

    [root@centos64]# dracut -f      
    
  6. Encontre o caminho do dispositivo de /boot

    [root@centos64]# df /boot
    Filesystem     1K-blocks   Used Available Use% Mounted on
    /dev/sda2         487652 115447    346605  25% /boot
    
  7. cp /etc/grub.conf /etc/grub.bak

  8. Edite o /etc/grub.conf

    Add in the "fips=1" and "boot=/dev/***" lines to the kernel command line 
    
    Example: 
    kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_centos6464bittempl-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=en_US.UTF-8 rd_LVM_LV=vg_centos6464bittempl/lv_swap rd_LVM_LV=vg_centos6464bittempl/lv_root rd_NO_MD crashkernel=auto SYSFONT=latarcyrheb-sun16 rd_NO_DM rhgb quiet fips=1 boot=/dev/sda2
    
  9. Reinicializar

  10. Verifique se o FIPS está ativado (consulte a Etapa 1 acima).

B. ENCRYPT VOLUME

  1. Tem certeza de que o FIPS está ativado? Caso contrário, não continue - volte para ENABLE FIPS e verifique se a peça está funcionando antes de continuar ...

  2. Obtenha o caminho do dispositivo do volume lógico que você deseja criptografar. No meu exemplo, isso é /dev/mapper/vg_mybox-LogVol03

  3. BACK UP TODOS OS DADOS DO VOLUME. Será DESTRUÍDO.

  4. umount volume.

    No meu caso, umount /db_fips

  5. shred -v -n1 /dev/mapper/vg_mybox-LogVol03

  6. Criptografar volume e definir frase secreta

    cryptsetup -v --verify-passphrase luksFormat /dev/mapper/vg_mybox-LogVol03
    

    OBSERVAÇÃO : uma instalação mínima do RHEL pode não incluir o cryptsetup por padrão. Apenas yum install cryptsetup para obter o que você precisa. O pacote mínimo de pacotes do CentOS 6.7 inclui cryptsetup .

  7. Abra o dispositivo e alias para "somename" de sua escolha (neste caso, "db_fips")

    cryptsetup luksOpen /dev/mapper/vg_mybox-LogVol03 db_fips
    
  8. Verificar se o mapeador tem o caminho

    [root@centos64]# ls /dev/mapper/db_fips
    
    At this point, treat /dev/mapper/db_fips as you would any ordinary filesystem or device
    
  9. Crie um sistema de arquivos como normalmente faria

    [root@centos64]# mkfs -t ext4 /dev/mapper/db_fips
    
  10. Monte-o e verifique-o

    [root@centos64]# mount /dev/mapper/db_fips /db_fips
    [root@centos64]# date >> /db_fips/today.txt
    
  11. ¡¡¡IMPORTANTE !!! : Comente a entrada /etc/fstab existente para o volume de destino, para evitar dores de cabeça durante a reinicialização. :-)

    vi /etc/fstab

    # /dev/mapper/vg_mybox-LogVol03 /some/path ext4 defaults 1,2

  12. Reinicialize para garantir que as etapas acima estejam funcionando.

  13. obtenha UUID do volume criptografado

    blkid

    /dev/mapper/vg_mybox-LogVol03: UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded" TYPE="crypto_LUKS"

  14. Adicione volume criptografado a /etc/crypttab - para que ele possa ser descriptografado na inicialização. Você pode especificar um passfile aqui, mas não é recomendado. Instale o DRAC no servidor, se ele for administrado remotamente (para que você possa inserir a frase secreta durante a inicialização). página de manual do crypttab

    [root@centos64]# vi /etc/crypttab
    
    db_fips UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded" 
    
  15. Reinicialize para testar.

por 01.09.2015 / 18:19