这两天在论坛上又看到有网友提问,"能不能利用一些比较简单地方法实现对文件服务器上的私人文件/文件夹的保护呢?因为不想让别的用户浏览到自己的共享文件夹中的某些个文件!".
应对这种需求时,文件服务器管理员在平常一般都会采用在文件服务器上共享出来的大目录下新建子目录然后修改NTFS权限来实现.但是对于普通域用户,他们想更为灵活和简单地掌控自己文件档案的安全性和隐私性的话,权限的叠加或者设置对他们而言就有些难以掌握了.
其实,对于大量采用Windows XP作为客户端,Windows server 2003以上作为文件服务器操作系统并且有域环境的企业来说,让用户可以使用EFS对自己存储在远程服务器上的私有资料进行加密就成为了一种可供选择的方案.毕竟EFS对于用户操作的透明性和简易性比较于其他方案是有很大优势的.
下面我们就一起来看一下如何配置使得用户可以使用EFS对远程文件服务器上的文件加密.
本地计算机上使用EFS加密操作真的好简单.在要加密的档案上右键,选择"常规"-->;"属性"-->;"高级"-->;"加密内容以便保护数据"就完事了,同样的做法直接搬到远程文件服务器上呢?
加密失败
这里我使用一个名称为"cfo"的普通域用户账号登陆客户端(IP:172.16.0.201),先对他在文件服务器(IP:172.16.0.101,FQDN:contoso-sccm.contoso.com)上要访问的共享文件夹(共享名test, cfo对其拥有完全控制权限)做一个磁盘映射,然后对其中的档案试图进行EFS加密,可以看到
会直接提示"应用属性时出错",试图加密失败.
委派任务
其实动手之前稍微想一下,失败是必然的事情,远程服务器没有得到用户的信任和授权,同时也并不拥有用户的证书和密钥(如果您对证书及密钥的概念不是很理解请详细阅读我之前的博文),怎么可能就这样轻而易举地代替用户实现加密.
所以我们需要先对远程服务器进行委派的动作.来到域控上,
打开"Active Directory用户和计算机",找到文件服务器的机器名,右键选择"属性",然后点击"委派"选项卡,选择"仅信任此计算机来委派指定的服务",跟着单击"添加",然后单击"用户和计算机",浏览到文件服务器后点击"确定",这时会出现一个"可用服务"列表,选择添加其中的"cifs"和"protectedstorage"服务.完成操作后需要将文件服务器进行一次重启.
图2
证书和密钥
完成了委派的操作,就相当于对服务器进行了授权,允许它代表用户执行某种(或全部的)服务.下边需要做的就是让文件服务器拥有域用户的证书和密钥.关于这一步,有两种做法,
一,直接在文件服务器上使用域用户账号登录一次,并且随便加密一个文件,这样就可以生成域用户的证书和密钥了.
二,是在域用户拥有用户漫游配置文件(Roaming Users Profile)的情况下,直接将RUP下载到文件服务器上对应的位置即可.(此步图略,并且由于本人的实验环境问题,选择了第一种方式获得的用户证书及密钥).
做完了以上的操作,我们再在客户端试着用EFS来加密远程服务器上的共享文档看看.
咦,竟然还是图1的报错. 这时我们不妨到文件服务器上看看有没有相关的信息.
来到文件服务器上执行eventvwr.msc打开事件查看器,可以看到有这么一条报错信息:
图3
这是因为EFS不支持NTLM身份验证协议,而只能使用Kerberos协议.
小知识之NTLM概念:
NTLM是NT LAN Manager的缩写,这也说明了协议的来源。NTLM 是 Windows NT 早期版本的标准安全协议,Windows 2000 支持 NTLM 是为了保持向后兼容。Windows 2000内置三种基本安全协议之一。