CentOS安装使用VeraCrypt及创建整个加密硬盘详解


    前一阶段看了一些关于数据安全,系统安全,以及社会工程学的书籍,突然觉得数据加密是一项十分重要的工作,由其是公司的敏感数据、商业机密,或者个人的重要文件都应该随时进行加密;就算是平时的备份数据也要进行合理的加密,以保证数据安全。VeraCrypt是目前一款比较流行,而且安全性和效能都比较好的软件,最重要是的开源、免费,并不断进行更新。 
    此前我一直在使用Veracrypt的Windows版本,效果不错。Mac、Linux也有图形化的版本,因为使用比较简单,这里就不进行介绍了。这里主要是介绍Veracrypt的Linux console也就是命令行版本的命令的使用,这也是我们平时在运维中的主要操作环境。 
    这篇文档是介绍如何使用Veracrypt命令的第一部分,这里介绍安装及加密单个磁盘。后面会分几个部分逐渐深入介绍Veracrypt中相关的概念、Veracrypt命令的用法及自动化处理磁盘的加密和解密等等。
    一、准备实验环境
    1、在VirtualBox中安装好CentOS 6.8并升级到最新版本后,关机; 
    2、在该虚拟机中添加一块新的磁盘,建议大小为8GB因为在使用VeraCrypt加密的时候,虽然你在新建虚拟磁盘时设置了“动态分配”虚拟磁盘大小,但虚拟磁盘所占用的空间大小和你设置的大小会一样大。 
    如图:
    
    
    二、安装VeraCrypt
    (一)、下载安装包并解压
    VeraCrypt最新版本为1.19,单击此处进入项目主页 
    在下载页面找到Linux安装包,如图: 
    
    使用wget命令下载安装包:
    cd /usr/local/src
    wget https://launchpad.net/veracrypt/trunk/1.19/+download/veracrypt-1.19-setup.tar.bz2
    解压文件:
    tar -jxvf veracrypt-1.19-setup.tar.bz2
    解压后有四个文件: 
    
    (二)、安装
    因为我安装的CentOS是64位的,并且没有安装GUI,所以安装veracrypt-1.19-setup-console-x64
    ./veracrypt-1.19-setup-console-x64
    1、选择安装模式
    安装程序弹出提示:问你是安装veracrypt(选项1)还是将安装包解压到/tmp目录下,这里选择“1”,并回车:
    VeraCrypt 1.19 Setup
    ____________________
    Installation options:
    1) Install veracrypt_1.19_console_amd64.tar.gz
    2) Extract package file veracrypt_1.19_console_amd64.tar.gz and place it to /tmp
    To select, enter 1 or 2:
    2、查看并接受用户许可
    接下来弹出提示,让你输入回车查看用户许可:
    Before you can use, extract, or install VeraCrypt, you must accept the
    terms of the VeraCrypt License.
    Press Enter to display the license terms...
    单击回车后就可以看到用户许可的全文,如果不想看完,可以按q退出; 这时程序会问你是否接受许可,输入yes.
    Do you accept and agree to be bound by the license terms? (yes/no): yes
    Uninstalling VeraCrypt:
    -----------------------
    To uninstall VeraCrypt, please run 'veracrypt-uninstall.sh'.
    Installing package...
    usr/
    usr/share/
    usr/share/veracrypt/
    usr/share/veracrypt/doc/
    usr/share/veracrypt/doc/License.txt
    usr/share/veracrypt/doc/VeraCrypt User Guide.pdf
    usr/share/pixmaps/
    usr/share/pixmaps/veracrypt.xpm
    usr/share/applications/
    usr/share/applications/veracrypt.desktop
    usr/bin/
    usr/bin/veracrypt
    usr/bin/veracrypt-uninstall.sh
    Press Enter to exit...
    此时,输入回车就完成安装。
    3、验证安装
    输入如下命令:
    [root@localhost src]# veracrypt --version
    VeraCrypt 1.19
    如果此时程序出现如下错误提示
    eracrypt -version
    veracrypt: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory
    则需要安装fuse-libs
    yum install -y fuse-libs
    三、创建整个加密硬盘
    现在使用fdisk -l命令就可以看到我们之前添加的那块8GB的虚拟硬盘:
    Disk /dev/sdb: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000目前还没有进行分区操作。  其实我们也没有必要对待加密的整个磁盘进行分区操作,除非我们只是想加磁盘的一部分进行加密操作的话,那么可以先对磁盘进行分区,然后使用veracrypt针对某一分区进行加密。
    (一)创建加密硬盘
    创建加密硬盘使用veracrypt -t -c  -t的意思是使用文件向导创建加密盘,-c的意思是create创建加密盘
    1、启动加密盘创建向导
    [root@localhost src]# veracrypt -t -c
    Volume type:
    1) Normal
    2) Hidden
    Select [1]: 1
    这里面是创建普通加密盘,还是隐藏加密盘。这里选择第1项,创建普通加密盘
    2、输入待加密磁盘的路径
    向导会提示你输入加密的磁盘路径,由于我们这里是加密整块硬盘,然后只输入设备名,不用输入分区名:
    Enter volume path: /dev/sdb
    3、选择加密算法
    接下来,向导会提示你选择加密算法和哈希算法,这里我们选择AES SHA-512:
    Encryption Algorithm:
    1) AES
    2) Serpent
    3) Twofish
    4) Camellia
    5) Kuznyechik
    6) AES(Twofish)
    7) AES(Twofish(Serpent))
    8) Serpent(AES)
    9) Serpent(Twofish(AES))
    10) Twofish(Serpent)
    Select [1]: 1
    Hash algorithm:
    1) SHA-512
    2) Whirlpool
    3) SHA-256
    4) Streebog
    Select [1]: 1
    4、选择加密后的文件系统格式
    由于我们将加密磁盘用于Linux系统的,因此选择Linux Ext4
    Filesystem:
    1) None
    2) FAT
    3) Linux Ext2
    4) Linux Ext3
    5) Linux Ext4
    6) NTFS
    7) exFAT
    Select [2]: 5
    5、输入密码
    Enter password:
    WARNING: Short passwords are easy to crack using brute force techniques!
    We recommend choosing a password consisting of 20 or more characters. Are you sure you want to use a short password? (y=Yes/n=No) [No]: yes
    Re-enter password:
    由于我这里用于演示的密码太短,系统提示我当前密码很容易被暴力破解,建议使用20个字符以上的密码,是否还要使用当前密码。这里输入yes  接着系统会让你再次输入一次密码:Re-enter password:
    6、输入PIM
    接下来系统会让你输入PIM。
    Enter PIM:
    这个PIM是什么?我上网查了一下,就是Personal Iterations Multiplier”的缩写。通俗地说就是:你可以自定义“加密盘的头部密钥生成时的迭代次数”。这个“迭代次数”越大,计算头部密钥的时间就越长,因此挂载加密盘的过程就越慢;表面上看,这是一个缺点。但其好处在于:如果某个攻击者想要采用暴力破解的方式对“头部”进行穷举解密,每次一次尝试也同样需要花很长时间(同样要迭代 N 次)。所以,当 N 足够大,暴力破解就变得不可行。  如果你设置的密码过于简短,那么 VeraCrypt 会强制让你输入一个比较大的 PIM 数值(大于 485)。  如果你创建加密盘的时候,指定了 PIM 数值,那么在挂载的时候,需要输入【相同的】PIM 数值。 如果输入的数值与创建时指定的 PIM 数值不一致,则挂载失败。  这里我们直接回车就可以.
    7、输入keyfile
    接下来,指定keyfile
    Enter keyfile path [none]:
    这里我们先不指定,所以直接回车。
    8、输入320个随机字符
    在键盘上随意输入字符,如果不知道输入的数量够不够,可以回车,向导就会提示你还剩多少个字符没有输入了:
    Please type at least 320 randomly chosen characters and then press Enter:
    Characters remaining: 277
    Characters remaining: 172
    Characters remaining: 88
    Characters remaining: 31
    当输入的随机字符数量符合要求后,向导就开始创建加密盘了:
    Done: 9.946% Speed: 89 MB/s Left: 81 s
    全部完成后会有如下提示
    Done: 100.000% Speed: 88 MB/s Left: 0 s
    The VeraCrypt volume has been successfully created.
    (二)挂载加密磁盘
     1、挂载加密磁盘
    挂载由veracrypt加密的磁盘和挂载普通磁盘的命令不一样,不能使用mount。  在未挂载前使用fdisk -l命令查看的话,磁盘还是没有分区和格式化的状态:
    Disk /dev/sdb: 8589 MB, 8589934592 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x330ad122在这种状态下是没有办法使用mount命令的。
    正确的方法是使用命令 veracrypt /dev/sdb /mnt:
    [root@localhost src]# veracrypt /dev/sdb /mnt
    Enter password for /dev/sdb:
    Enter PIM for /dev/sdb:
    Enter keyfile [none]:
    Protect hidden volume (if any)? (y=Yes/n=No) [No]:这时系统会提示是输入加密磁盘时预留的密码,后三项可以直接回车略过。
    2、查看磁盘挂载情况
    这里再使用fdisk -l命令查看的话,在原来的磁盘/dev/sda、/dev/sdb的基础上会多出一个/dev/mapper/veracrypt1磁盘,这就是挂载上来加密磁盘:
    Disk /dev/mapper/veracrypt1: 8589 MB, 8589672448 bytes
    255 heads, 63 sectors/track, 1044 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    使用 df -h命令查看可以看到/dev/mapper/veracrypt1已经挂载到/mnt目录上了。
    [root@localhost src]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 47G 1001M 43G 3% /
    tmpfs 939M 0 939M 0% /dev/shm
    /dev/sda1 976M 80M 845M 9% /boot
    /dev/mapper/veracrypt1
    7.8G 18M 7.4G 1% /mnt3、尝试访问和写入文件
    3、尝试访问和写入文件
    [root@localhost src]# cd /mnt
    [root@localhost mnt]# ll
    总用量 16
    drwx------. 2 root root 16384 2月 6 21:35 lost+found
    [root@localhost mnt]# touch 1.txt
    [root@localhost mnt]# ll
    总用量 16
    -rw-r--r--. 1 root root 0 2月 6 21:48 1.txt
    drwx------. 2 root root 16384 2月 6 21:35 lost+found
    [root@localhost mnt]# echo "text" >2.txt
    [root@localhost mnt]# ll
    总用量 20
    -rw-r--r--. 1 root root 0 2月 6 21:48 1.txt
    -rw-r--r--. 1 root root 5 2月 6 21:49 2.txt
    drwx------. 2 root root 16384 2月 6 21:35 lost+found
    没有问题,挂载成功。
    (三)卸载加密硬磁盘
    既然挂载加密磁盘有专用的命令,那么卸载加密磁盘也一定有专用的命令:
    veracrypt -d /mnt
    如果要卸载系统中挂载的全部veracrypt加密磁盘,则使用:
    veracrypt -d
    不指定挂载目录即可。  再次查看系统中已经挂载的磁盘:
    [root@localhost ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda3 47G 1001M 43G 3% /
    tmpfs 939M 0 939M 0% /dev/shm
    /dev/sda1 976M 80M 845M 9% /boot
    veracrypt加密磁盘已经被卸载掉了。