web-dev-qa-db-ja.com

luks暗号化CentOSシステムでFIPS)を有効にすると、ブートパスワードが壊れます

私のアプリの1つでは、ソフトウェアディスク暗号化を同時に使用しながら、OpenSSLに対してFIPS)を有効にする必要があります。

VM#1

インストール中にソフトウェアで暗号化されたCentOS VMインスタンスを起動しました。システムは正常に起動しました(起動復号化パスワードを入力した後)。

次に、手順を実行しました FIPS-OpenSSLを有効にするため そして再起動しました。システムは私のブート復号化パスワードを受け入れませんでした(意図的に入力するのは簡単でした)。

VM#2

2番目のVMを、ソフトウェア暗号化なしで他の点では同一のOS/configでセットアップしました。FIPS上記の手順を使用して再起動すると、再起動に問題なくすべてが正常に機能します。

VM#3

3番目のCentOS VMインスタンスを起動し、インストール中にシステム暗号化を使用しないことも選択しました。インストールと基本構成の後、luksを使用してテストボリュームを暗号化し、再起動しました。プロンプトが表示されます。その後、パスワードとシステムは正常に起動します。

次に、私は FIPS-OpenSSLを有効にした 、再起動しました-そして、通常は起動パスワードが表示され、システムが起動しないというエラーが多数発生します。

これをVMシングルユーザーモードで起動し、カーネルラインからfips = 1をプルして再起動しました。今回は、起動パスワードが受け入れられました。

.。

OpenSSLに対してFIPSを有効にすると、ブートパスワードが失敗するのはなぜですか?

2
a coder

問題は、FIPSを有効にする前にボリュームを暗号化したことでした。 garethTheRedcomment でほのめかされているように、LUKSはFIPS承認されていないアルゴリズムを使用したため、FIPS =有効にされたものは大騒ぎになりました。

解決策は

  1. FIPSを有効にする
  2. ボリュームを暗号化する

その順番で。

このガイド 問題の解決にも役立ちました。余分な説明が付いているので、ここにすべてをコピーして貼り付けることはしません。これが要点です:

A。 ENABLE FIPS

  1. 次の2つの方法のいずれかを使用して、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有効ですか?そうでない場合は、先に進まないでくださいENABLE 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
    

    [〜#〜] note [〜#〜]:RHELの最小インストールには、デフォルトでcryptsetupが含まれていない場合があります。必要なものを入手するには、yum install cryptsetupだけです。 CentOS6.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. 再起動してテストします。

2
a coder