RHCE系列之磁盤加密—-LUKS加密

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1436460

       LUKS (Linux Unified Key Setup)為 Linux 硬盤加密提供了一種標準,它不僅能通用于不同的 Linux 發行版本,還支持多用戶/口令,并且由于它的加密密鑰獨立于口令,所以即使口令失密,我們也無需重新加密整個硬盤,只需要及時的改變口令即可重獲安全!

       由于 LUKS 提供了一個標準的磁盤加密格式,使得它不僅兼容性高,而且還提供了多用戶密碼管理的安全機制。


      在我們的操作系統中,負責對磁盤做加密的工具為 Cryptsetup ,默認我們的系統已經安裝了該工具。

      由于 Cryptsetup 是分區級別的加密,比文件系統級別工作在更底層的位置,是在經過加密的塊設備上,創建文件系統,最后掛載使用。因此凡是使用 Cryptsetup 對分區進行加密之后,這個分區就不能再被直接掛載了。

      LUKS 也是一種基于 device mapper(dm) 機制的加密方案。如果要使用加密后的分區,就必須對加密后的分區做一個映射,映射到 /dev/mapper 這個目錄下。映射完成之后,我們也只能掛載這個映射來進行使用,并且在做映射的時候還需要輸入加密分區的加密密碼。

       因此,我們通常把較為敏感的文件放在加密分區當中,從而增強文件的安全性。



這里簡單介紹下  Crypsetup 工具的加密特點

1、加密后不能直接掛載

2、加密后硬盤丟失也不用擔心數據被盜

3、加密后必須做映射才能掛載



下面就開始加密分區創建和使用的相關操作:


1、使用fdisk工具創建一個新的分區

使用 fdisk 分區的步驟(略)!

[root@nolinux ~]# 
dd if=/dev/urandom of=/dev/sda6   # 可選步驟

3、使用工具 Cryptsetup 對分區進行加密。在該步驟會出現警告信息,提示操作人員此步驟可能會損害/dev/sda6里面的數據。如果我們確定該分區或者磁盤是干凈的,就大膽的敲入YES。注意一定是大寫的YES!接著,輸入兩遍密碼即可,此密碼一定不能忘記!

[root@nolinux ~]# cryptsetup luksFormat /dev/sda6
WARNING!
========
This will overwrite data on /dev/sda6 irrevocably.
Are you sure? (Type uppercase yes): YES   # 請輸入YES,表示確定
Enter LUKS passphrase:                    # 輸入你加密的密碼
Verify passphrase:                        # 再次輸入你加密的密碼

4、繼續使用 Cryptsetup 對我們剛才的加密分區 /dev/sda6 做映射,映射文件將放到 /dev/mapper 目錄中。此步映射必須做,不做將無法使用加密分區。另外,映射的時候,它還會提示你需要輸入上一步加密的密鑰。

[root@nolinux ~]# cryptsetup luksOpen /dev/sda6 nolinux  #回車后會提示你輸入密碼
Enter passphrase for /dev/sda6: 
[root@nolinux ~]# ll /dev/mapper/nolinux    #查看我們生成的映射設備文件
lrwxrwxrwx 1 root root 7 7月   9 21:06 /dev/mapper/nolinux -> ../dm-0

       做映射的過程就相當于打開加密分區的過程。因此,當我們做完映射之后,就表示已經將加密分區打開。此時,我們通過訪問映射,對映射的設備文件做操作就等于對我們的加密分區做操作。


5、在解密的映射文件上創建文件系統(此處使用ext4文件系統)

[root@nolinux ~]# mkfs -t ext4 /dev/mapper/nolinux
mke2fs 1.41.12 (17-May-2010)
。。。  # 過程省略
This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

6、掛載解密后的映射設備上的文件系統

[root@nolinux ~]# mkdir /nolinux   #創建掛載點
[root@nolinux ~]# mount /dev/mapper/nolinux /nolinux  #掛載加密分區

7、對掛載后的分區進行文件讀寫測試

[root@nolinux ~]# echo redhat > /nolinux/test
[root@nolinux ~]# cat /nolinux/test
redhat

以上就為一個 LUKS 加密分區的完整創建過程,加入你已經使用完畢,要將加密分區關閉時,要做什么操作呢?請看下面


1、卸載掛載點

[root@nolinux ~]# cryptsetup luksClose nolinux
[root@nolinux ~]# cryptsetup luksClose nolinux

注意:如果我們想要再次訪問該加密分區,重復上面創建中的第4和第6步操作即可。


OK!上面就是介紹了一個加密分區的打開使用和關閉保護的過程。假如你經常使用,你需要在系統開機啟動的時候就能自動掛載你的加密分區,此時該怎么辦呢?

我們知道,經過 LUKS 加密的分區必須要做映射,并且做映射的時候需要輸入密碼。

LUKS 默認為我們提供了這樣的解決方案,請看下面的操作:


永久掛載加密分區

1、使用 Cryptsetup 做加密分區映射

[root@nolinux ~]# cryptsetup luksOpen /dev/sda6 nolinux  #回車后會提示你輸入密碼
Enter passphrase for /dev/sda6: 
[root@nolinux ~]# ll /dev/mapper/nolinux    #查看我們生成的映射設備文件
lrwxrwxrwx 1 root root 7 7月   9 37:06 /dev/mapper/nolinux -> ../dm-0

2、在etc目錄下有一個crypttab文件,該文件負責處理經過cryptsetup加密分區的映射以及對應的密碼文件。因此我們需要向 /etc/crypttab 文件里添加一條條目。

[root@nolinux ~]# echo 'nolinux /dev/sda6 /root/passwd' >> /etc/crypttab # 映射關系以及密碼文件的路徑
[root@nolinux ~]# cat /etc/crypttab
nolinux /dev/sda6 /root/passwd

3、創建密碼文件

   創建密碼文件有2種方式,一種是直接把密碼放到我們上面在/etc/crypttab文件中指定的密碼文件中,另外一種是使用系統自帶的隨機數生成設備/dev/random 去生成一個4K的隨機數文件。

[root@nolinux ~]# echo redhat > /root/passwd
或
[root@nolinux ~]# dd if=/dev/random of=/root/passwd bs=4096 count=1
記錄了0+1 的讀入
記錄了0+1 的寫出
128字節(128 B)已復制,0.000712986 秒,180 kB/秒

4、使用工具 Cryptsetup 為加密分區手動添加一次 LUKS 秘鑰文件。注意,此步驟會提示你輸入加密分區時的密碼!

[root@nolinux ~]# cryptsetup luksAddKey /dev/sda6 /root/passwd   # 回車后會提示你輸入密碼
Enter any passphrase:

5、在/etc/fstab里面添加永久掛載條目

[root@nolinux ~]# echo '/dev/mapper/nolinux /nolinux  ext4 defaults,_netdev 0 0' >> /etc/fstab
[root@nolinux ~]# tail -1 /etc/fstab
/dev/mapper/nolinux /nolinux  ext4 defaults,_netdev 0 0

注意:此處使用掛載參數_netdev目的是為了防止該設備出現問題掛不上而導致整個系統起不來,使用了_netdev之后,即可該加密分區掛不上,也不會影響我們整個系統的啟動。


6、執行掛載

[root@nolinux ~]# mount -a  # 由于掛載條目已經寫入/etc/fstab,因此我們可以直接執行mount -a來進行掛載操作
[root@nolinux ~]# df -h|tail -1
/dev/mapper/nolinux   95M  5.6M   85M   7% /nolinux

當然,這里你也可以直接重啟電腦來進行自動掛載的功能測試!


補充,對于 LUKS 加密的磁盤狀態,我們在加密分區打開的狀態下(即建立映射的情況下),我們可以使用如下命令來進行查看

[root@nolinux ~]# cryptsetup status /dev/mapper/nolinux 
/dev/mapper/nolinux is active and is in use.
  type:  LUKS1
  cipher:  aes-cbc-essiv:sha256
  keysize: 256 bits
  device:  /dev/sda6
  offset:  4096 sectors
  size:    200704 sectors
  mode:    read/write

  以上就是LUKS加密的相關內容,希望對大家有所幫助

轉自:http://nolinux.blog.51cto.com/4824967/1436460

原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/1962

(0)
s19930811s19930811
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。  cp -rf /etc/skel/  /home/ mv /home/skel /home/tuser1 chmod  -R 700 /home/tuser1 或chmod -R  …

    Linux干貨 2016-12-03
  • Linux啟動流程

    Linux的啟動流程有以下部分組成,以下流程以CentOs 6.8為例 1、POST加電自檢,檢測各項硬件工作是否正常,BIOS選擇啟動設備。 2、根據設備的前446字節,加載bootloader程序 3、initramfs是1.5階段,intramfs文件是創建系統時生成的文件。intramfs是一個過渡階段,initramfs加載系統的一些設備驅動,比如…

    2017-05-15
  • vim的使用

    本文主要講述vim的使用 一.vim是什么? vim是一個十分著名也十分強大的編輯器,是vi的增強版,是一個模式化的編輯器,英文名稱為 Visual Interface iMprove,在2000年2月Vim贏得了Slashdot Beanie的最佳開放源代碼文本編輯器的美稱。 二.vim的工作模式  (1)編輯模式:也叫命令模式,通過編輯命令實現…

    Linux干貨 2016-10-29
  • 手動自制Mini Linux

        linux系統內核非常的精簡,而且基于一切皆文件的思想,使得我們可以再現有系統上掛載一個空硬盤,利用現有系統編譯一個內核和相關程序文件并拷貝到空硬盤上。我們就可以用空硬盤來單獨運行一個精簡的linux系統,這對于依賴于注冊表的windows系統來說是不可能實現的。本文簡要介紹一下一個mini linux的安裝制…

    Linux干貨 2016-05-03
  • Yellow Dog! COMMAND && source

    linux程序包管理之yum        yum:之前命名為:yellow dog ,后來因為及其好用,很多發行版都以此為默認rpm程序前端管理工具,故此更名為:yellowdog update modifier,更牛的還有一個基于redhat的二次發行版也叫yellow dog 功能:…

    Linux干貨 2016-08-21
欧美性久久久久