luks로 암호화된 CentOS 시스템에서 FIPS를 활성화하면 부팅 비밀번호가 깨집니다.

luks로 암호화된 CentOS 시스템에서 FIPS를 활성화하면 부팅 비밀번호가 깨집니다.

내 애플리케이션 중 하나에서 소프트웨어 디스크 암호화를 사용하는 동안 OpenSSL용 FIPS를 활성화해야 합니다.

가상 머신 #1

설치 중에 소프트웨어 암호화를 사용하여 CentOS VM 인스턴스를 시작했습니다. 시스템이 정상적으로 시작됩니다(시작 암호 해독 비밀번호 입력 후).

다음으로 다음 단계를 완료했습니다.FIPS-OpenSSL 활성화그리고 다시 시작하세요. 시스템은 내 부팅 암호 해독 암호(의도적으로 입력하기 쉬운 암호)를 허용하지 않습니다.

가상 머신 #2

다른 동일한 OS/구성을 사용하여 두 번째 VM을 설정했습니다.소프트웨어 암호화 없음. 위 단계를 사용하여 FIPS를 활성화한 다음 재부팅했고 모든 것이 제대로 작동했으며 재부팅 시 문제가 없었습니다.

가상 머신 #3

세 번째 CentOS VM 인스턴스를 시작했으며 설치 중에 시스템 암호화를 사용하지 않기로 선택했습니다. 설치 및 기본 구성 후 luks를 사용하여 테스트 볼륨을 암호화하고 재부팅했습니다. 비밀번호를 묻는 메시지가 나타나면 시스템이 정상적으로 부팅됩니다.

다음으로 나는FIPS-OpenSSL 활성화, 재부팅 - 오류가 많이 발생합니다. 일반적으로 부팅 비밀번호가 표시되고 시스템이 부팅되지 않습니다.

이 VM을 단일 사용자 모드로 부팅하고 커널 라인에서 fips=1을 가져와 재부팅했습니다. 이번에는 시작 비밀번호가 승인되었습니다.

...

OpenSSL용 FIPS를 활성화하면 시작 암호화가 실패하는 이유는 무엇입니까?

답변1

문제는 FIPS를 활성화하기 전에 볼륨을 암호화했다는 것입니다. ~처럼가레스 레드에서 언급된논평, LUKS는 FIPS가 승인되지 않은 알고리즘을 사용하므로 FIPS가 활성화되면 상황이 이상해질 수 있습니다.

해결책은

  1. FIPS 활성화
  2. 암호화된 볼륨

그와 같은 순서로.

이 가이드문제 해결에도 유용합니다. 꽤 길고 추가 설명이 있으므로 여기에 전체 내용을 복사하여 붙여넣지는 않겠습니다. 요점은 다음과 같습니다.

A. FIPS 활성화

  1. 다음 두 가지 방법 중 하나를 사용하여 FIPS가 활성화되어 있는지 확인하십시오.

    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. 사전 연결이 켜져 있는지 확인하세요.

    vi /etc/sysconfig/prelink
    
    Change
    PRELINKING=yes
    to
    PRELINKING=no
    
  3. 현재의 모든 사전 링크 실행 취소

    [root@centos64]# prelink -ua
    
  4. 설치하다dracut-fips

    [root@centos64]# yum install dracut-fips
    
  5. initramfs를 다시 빌드하세요.

    [root@centos64]# dracut -f      
    
  6. 장치 경로 찾기/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. 편집하다/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. 재시작

  10. FIPS가 활성화되어 있는지 확인하십시오(위의 1단계 참조).

B. 암호화된 볼륨

  1. FIPS가 활성화되어 있습니까? 그렇지 않은 경우 계속하지 마십시오. - 돌아가기FIPS 활성화계속하기 전에 해당 부분이 작동하는지 확인하십시오.

  2. 암호화하려는 논리 볼륨의 장치 경로를 가져옵니다. 내 경우에는 이렇다/dev/mapper/vg_mybox-LogVol03

  3. 볼륨의 모든 데이터를 백업합니다. 그것은 파괴될 것이다.

  4. umount용량.

    나는umount /db_fips

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

  6. 볼륨 암호화 및 비밀번호 설정

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

    노트: RHEL 최소 설치에는 기본적으로 cryptsetup이 포함되지 않을 수 있습니다. yum install cryptsetup필요한 것을 얻으려면 . CentOS 6.7의 최소 패키지 세트에는 cryptsetup.

  7. 장치를 열고 원하는 "somename"(이 경우 "db_fips")으로 별칭을 지정합니다.

    cryptsetup luksOpen /dev/mapper/vg_mybox-LogVol03 db_fips
    
  8. 매퍼에 경로가 있는지 확인

    [root@centos64]# ls /dev/mapper/db_fips
    
    At this point, treat /dev/mapper/db_fips as you would any ordinary filesystem or device
    
  9. 평소대로 파일 시스템을 생성합니다.

    [root@centos64]# mkfs -t ext4 /dev/mapper/db_fips
    
  10. 설치 및 확인

    [root@centos64]# mount /dev/mapper/db_fips /db_fips
    [root@centos64]# date >> /db_fips/today.txt
    
  11. 중요한! ! !/etc/fstab: 재부팅 시 문제가 발생하지 않도록 대상 볼륨에 대한 기존 항목을 주석 처리합니다 .:-)

    vi /etc/fstab

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

  12. 위 단계가 작동하는지 확인하려면 재부팅하세요.

  13. UUID암호화된 볼륨 가져오기

    blkid

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

  14. /etc/crypttab부팅 시 해독될 수 있도록 암호화된 볼륨을 -에 추가합니다 . 여기에서 비밀번호 파일을 지정할 수 있지만 이는 권장되지 않습니다. 서버를 원격으로 관리하려면 서버에 DRAC를 설치하세요(부팅 중에 비밀번호를 입력할 수 있도록). crypttab 매뉴얼 페이지

    [root@centos64]# vi /etc/crypttab
    
    db_fips UUID="2e52ffee-7a02-4c91-b6bf-223b05f90ded" 
    
  15. 테스트를 위해 다시 시작하세요.

관련 정보