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.178linux.com/1962

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

相关推荐

  • 前三天基础-Linux文件系统概论

    Linux之我见     在2016农历丙申年2016年猴年,对于小白的我来说接触到了江湖流传的武功秘籍之-Linux心法,第一次接触到命令行,知道在键盘上随便敲击命令就可以满屏跑数据,就像看过的美国大片里黑客帝国里面的画面,感觉学会好后可以装逼了,废话不多说了,允许在下斗胆介绍Linux文件系统。     &nbsp…

    Linux干货 2016-03-24
  • 文件管理命令以及bash特性之命令行展开

    一 Linux文件管理 Linux中对文件管理的命令主要有:mkdir rmdir mv rm cp touch file stat等命令 创建目录mkdir mkdir [OPTION]… DIRECTORY… [root@MiWiFi-R3-srv testdir]# mkdir /root/dirtest 在/root下创建一个dirtest的…

    Linux干货 2017-08-13
  • VIM命令 总结

    VIM命令总结

    2017-11-25
  • 学习宣言

    别人笑我太疯癫,我笑他人看不穿。不见五陵豪杰墓,无花无酒锄作田。

    Linux干货 2016-10-24
  • select循环与菜单的用法

    select循环与菜单的用法 1、select循环主要用于创建菜单,其按数字顺序排列并且显示在标准错误输出上,并显示PS3提示符,等待用户输入选择内容,用户一旦输入菜单中的某个数字,则执行相应菜单中的命令。用户输入的内容被保存在内置变量REPLY中。 select的用法: select variable [in list] ; do   …

    Linux干货 2016-08-21
  • 磁盘配额的限制

    用一个块新的分区当做硬盘进行磁盘的配额限制实验 堆一块新的硬盘进行三步骤 分区,格式化,挂载 以/dev/sdb为例  (1) 分区: fdisk /dev/sdb sdb 8:16 0 200G 0 disk └─sdb1 8:17 0 10G 0 part (2) 格式化: mkfs.ext4 /dev/sdb1 /dev/sdb1: UUID…

    Linux干货 2017-04-30