加密文件系统 (EFS) 是一个功能强大的工具,用于对客户端计算机和远程文件服务器上的文件和文件夹进行加密。它使用户能够防止其数据被其他用户或外部***者未经授权的访问。它是NTFS文件系统的一个组件,只有拥有加密钥和故障恢复代理可以读取数据。
EFS的应用条件:1、NTFS;2、具有系统属性的文件无法加密
故障恢复代理:指定用于进行EFS文件恢复的用户帐号,该帐号将申请一张文件故障恢复的证书,同是还有持有与这张证书相应的公钥私钥对,用于对加密文件进行故障恢复。
EFS加密过程:1、当一个用户第一次加密某个文件时,EFS会在本地证书产生一个EFS证书(非对称);2、EFS也会随机产生一个FEK(文件加密密钥,对称)3、EFS会用第一步产生的证书的公钥对FEK进行加密4、EFS会将加密后的FEK存储在DDF(数据解压区)(DDF区域大约能够存储近800个经过用户公钥加密的FEK)
实验环境:独立服务器R2RODC(安装好Windows Server 2008 R2)
实验要求:
EFS的基本操作
备份文件恢复密钥
新增故障恢复代理
操作步骤:
为了便于演示,我在C盘建立一个文件夹EFSFOLDER,并在这个文件夹下建立了一个文件1.txt
一、EFS的基本操作
启用EFS可以在图形界面完成,也可以通过命令Cipher完成。相比图形界面,Cipher更为加大。
加密完成后,默认情况加密后的文件(文件夹)会彩色显示。
我们也可以使用命令完成以上任务:
默认情况下Cipher加密文件夹命令并不会加密码文件夹中已存在的文件,而是让Windows加密文件中的新文件。所以要加加密C:\EFSFolder文件夹以及其中已存在的文件,需要输入以下命令
Cipher /E C:\EFSFolder
Cipher /E C:\EFSFolder\*
当然我们也可以输入以下命令Cipher /e /s:c:\efsfolder(
注意/s和后面的文件夹路径不能留空格)
解密
Cipher /d C:\EFSFolder(解密文件夹,不含文件)
Cipher /d C:\EFSFolder\* (解密文件下的文件)
二、备份密钥
图形方式
1、打开控制面版下的用户帐号,进行如下图操作
2、运行MMC,添加管理单元,选择“证书”,选择我的用户帐号
选择“个人”“证书”,操作如下图
3、通过Cipher命令备份
cipher /x
三、恢复代理
在操作之前,我先启用c:\efsfolder文件夹的EFS,下面通过操作增加故障恢复代理dcadmin,同时演示在增加前后对文件的影响
1、增加故障恢复代理
注销计算机,以EFSadmin登录计算机。
运行cipher /r:C:\Users\EFSAdmin\efsadmin
导入上一步操作产生efsadmin.pfx。打开这个文件所在文件夹,双击这个文件出现向导,选择导入(过程略)
注销计算机,以administrator登录计算机,运行Gpedit.msc,进行如下操作
现在注销administrator,以efsadmin登录,打开c:\efsfolder下的1.txt还是不能打开(这是因为故障恢复只能打开添加代理之后的文件,而1.txt是添加之前的文件)
重新以administrator登录,运行cipher /u然后以efsadmin登录,就可以打开1.txt文件了;或者先解密,然后再加密。
补充说明
1、启用右键快键中的加密
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"EncryptionContextMenu"=dword:00000001
"EncryptionContextMenu"=dword:00000001
2、域中计算机上的数据恢复代理
在建立第一个DC时,即将为该域配置一个默认的恢复策略,默认的恢复策略使用自签名证书,将域管理员帐号作为恢复代理。如果使用默认的恢复策略,则不需要使用再申请恢复证书。如果域中需要多个恢复代理,则需要颁布恢复证书。
要求:必须有CA;CA中的策略必须允许指定用户(代理)申请并获取文件恢复证书;每个用户必须申请一个文件恢复证书。
步骤:设置企业CA;为指定为恢复代理的用户创建安全组;将创建的安全组添加到EFS恢复模板中;申请文件恢复证书;将证书导出为.cer证书文件;将导出的证书文件添加到恢复策略中
3、禁止EFS
可以通过组策略或通过修改注册表
注册表键: | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EFS |
键值名称: | EfsConfiguration |
数据类型: | REG_DWORD (DWORD Value) |
数据内容: | (1 = disable EFS, 0 = enable EFS) |