定制自己的Windows Deployment Services安装镜像

WDS除了可以使用标准的安装镜像之外,也可以使用自己制作的安装镜像,方便整个企业中快速的进行部署。

从Windows Vista开始,微软取消了让人讨厌的Hardware Abstraction Layer(HAL,硬件抽象层)。还记得在xp年代,需要进行系统封装才能做成镜像,部署完成后需要等待漫长的oobe过程。Vista开始,已经可以奔放的直接把硬盘换到另一台机器上了,当然为了避免蓝屏,还是尽量不要装驱动的好。

现在分两种情况讨论了,第一种是企业中有一批机器硬件一致。

这种情况应该是ITer最喜欢的了,当年的ghost最擅长干这事了,现在交给wds也一样。

第一步还是装一台电脑出来,装好所有软件和驱动,然后开始准备下一步。

第二部,安装Windows Automatic Installation Kit (WinAIK,下载地址:http://www.microsoft.com/download/en/details.aspx?id=5753),个头不大,1.8G而已。。安装完成后,在C:\Program Files\Windows AIK\Tools\PETools\下能看到x86和amd64的文件夹,名称应该够标准了吧。这次我用了x86的pe,文件在C:\Program Files\Windows AIK\Tools\PETools\x86\winpe.wim。

第三步,修改PE镜像,添加我们需要的一些工具。

考虑到amd64平台的电脑依旧可以跑x86模式,因此只需要自定义x86的PE就足够应对所有需求了。把winpe.wim放到一个比较方便的位置,因为后面的操作都需要在命令行下完成。我就直接丢在d:\wimpe.wim了。然后还需要创建一个空文件夹,这里用d:\pe\。接下来,去开始菜单,找到Microsoft Windows AIK,对着Deployment Tools Command Prompt右键猛击Run as administrator,就可以打开一个管理员权限的cmd窗口了。注意了~开始变形了。。

imagex /mountrw d:\winpe.wim 1 d:\pe

这里解释一下,mountrw是挂载为读写模式,然后跟wim的位置,再跟上wim中想要修改的系统的序号,这个序号其实是有意义的,因为wim实际上可以包含不止一个可以安装的系统,不过,目前暂时只需要用1。最后跟上的是刚才创建的空文件夹。

然后就可以把WinAIK的文件夹塞进PE了,默认路径是C:\Program Files\Windows AIK\Tools\x86,整个文件夹中其实最重要的是imagex.exe,很多操作都是用imagex来完成的,不过整个文件夹也不大,就一起塞进pe吧。

最后,卸载并提交更改

imagex /unmount /commit d:\pe

第四步,去WDS的控制台添加一个boot image。

添加过程就很简单了,一路下一步,完事。

第五步,去到那台作为标本的机器,开机,用PXE启动,选PE作为启动镜像。

到达PE后,先用cd进到刚才的x86文件夹,别告诉我你忘了。。

然后,开始对C盘做镜像了。

imagex /capture c: d:\my.wim “My Image”

命令应该足够简单明了了,把C盘的镜像写到d:\my.wim中,默认名称是My Image。

当然,这里也可以用网络路径,命令如下: net use z: \\server\share,然后给用户名密码就可以用Z盘了。

如果提示没有网卡驱动。。就需要给pe塞驱动了,具体方法下期分解。。

回到正题,镜像制作完成后,可以用任何喜欢的方式弄到WDS那只机器去,然后添加一个安装镜像,同样是一路下一步。

这里有个小经验分享:一个Image Group中最好只有一个镜像,不然。。哼哼。。添加速度会让你很难受的。

最后,就可以开始用定制的镜像进行部署了。

再多嘴句:

制作镜像的标本机安装完所有东西以后,记得退出域,随便写个工作组名称,然后再制成镜像,不然,要付出多重启一次的代价。。(退域,重启,加域,再重启)

第二种情况:硬件不一致,唯一的区别在于标本机最好不要安装任何驱动,这样能有效避免各种蓝屏。。悄悄说一句,集成网卡驱动的驱动精灵很好使的。。

利用Windows Deployment Services远程安装系统

正常情况下,重装系统一般是塞一张光盘给光驱,然后选光盘启动,开工。

文艺一点的会用u盘启动,一样的开装。

但是,如果你面对的是远在半个地球之外的美国某机房中系统挂掉的一只机器的时候,一切就会变得那么苍白无力了。。

设想一下,某天晚上你睡得正香的时候,老板打电话过来说美国客户发现某个网站不能访问,ping了一下发现不通,第一个标准动作肯定是用kvm上去看一下,哇,一个非常标准的蓝屏。。

好吧,蓝屏是小事儿,重启下服务器就是,你运气很好,机房有部署IP开关,先断掉A线,然后断掉B线,再启动A线,B线,好了,服务器开始启动了。漫长的BIOS屏幕飘过,直接就到启动修复了。别问我是什么,被08R2折腾过的都懂的。。一个黑乎乎的cmd窗口就是你的一切。。

这时候你会想,好吧,我认输了,重装总可以吧,仔细想想,惨了,系统是OEM的,没安装介质。打电话给机房,机房的小伙子倒是很乐意帮你,但是需要你自己提供安装介质,他们可以去人。。是不是觉得走投无路了?

还好,还有救命的Windows Deployment Services。

WDS是个windows server 2008 R2的角色,在windows server 2008被引入,作为Remote Installation Services的升级版本出现。

WDS本来是用来方便IT人员大批量的在局域网中windows出现的,本质上就是利用intel提出的pxe(http://en.wikipedia.org/wiki/Preboot_Execution_Environment)进行网络启动的安装。

部署wds非常简单,准备好os的iso,然后在server manager中添加wds的角色,然后完事。当然,网络中也要有dhcp才行,没有?马上装一个呗。

然后,展开wds控制台,添加至少一个启动镜像和一个安装镜像,文件位于os的安装iso\sources下面的boot.wim和sources.wim。

添加完成,就可以用kvm去那只可怜的机器了,重启,选择pxe网络启动,后面的事情就很简单了。。

WDS还可以做其他一些事情,下次继续

利用Google Authenticator提高WordPress博客的安全性

去wp后台,Plugins~Add New,Google Authenticator,目前版本0.3.9

装完,启用,然后去自己profile,找到Google Authenticator Settings,勾上active,随便写点description,狠狠的捅一次Create new secret,然后就可以show QR code,拿出手机开扫了。

插件似乎对中文支持不够好,扫下来乱了,不过无所谓,可以自己在手机上改。

如果没有摄像头,直接添加一个基于时间的类型的账户,记得给对密钥,完事

下次登陆就需要authenticator了

利用平板电脑+鼠标简化IT工作

最近入手一个android的平板,功能类似大号MP4,不过对于我最实用的莫过于可以支持远程桌面以及外挂鼠标。

挂上鼠标以后,将远程桌面分辨率设置为1024*768,屏幕再缩小一些就可以开始roll了

在日常工作中经常有这样的情形:路人甲叫我过去他/她电脑看看出了什么状况,仔细一看发现需要连接到某只服务器做点修改,于是一路小跑回去自己位置,改,然后再回去路人甲乙丙丁那边,看看是否正常,不正常的话。。重复上述过程。有些比较熟的就会直接用他们电脑连自己,总感觉有些不舒服。。

拿上平板以后,接到投诉直接带上板子过去,如果需要在服务器上处理,直接用平板连服务器或者从自己电脑绕过去,甚是方便。加上鼠标可以非常精确的点击,感觉完美

改日补图。。

聊聊双因素认证(two factors authentication)

Google为了增强账户的安全性,防止账号被盗用,引入了双因素认证。

话说这双因素认证,居然还是密码学的一个概念,其实在密码学理论中是三因素认证:

第一个要素(所知道的内容):需要使用者记忆的身份认证内容,例如密码和身份证号码等。

第二个要素(所拥有的物品):使用者拥有的特殊认证加强机制,例如动态密码卡,IC卡,磁卡等。

第三个要素(所具备的特征):使用者本身拥有的惟一特征,例如指纹、瞳孔、声音等。
通常来说,第三个要素的认证是最为强大的,但是需要比较昂贵的设备,例如指纹识别机、虹膜扫描机等等。曾经去银行办业务就有看到过柜员在不停的摸一个和USB Token差不多大小的指纹识别机,没记错的话应该是招行,需要主管授权时候,主管过来看了看,摸了一下就走了。

但是,这个第三个因素有个最大的危险就是拥有者本身容易被攻击,例如。。手指被砍下来。。在各种美片中经常看到用砍下来的手指应付各种指纹门,也有直接用枪顶着人头过去识别虹膜的。。因此,应用这个因素还是有风险的。

在顶级安全的应用中,通常会采用前两个因素共同验证,就被称为双因素认证。

最典型的双因素认证系统就是ATM机。使用ATM机时,需要银行卡和PIN,银行卡就是你拥有的东西,而PIN就是你知道的东西。

google账户的双因素认证中,引入了一个大家都有硬件设备:手机,作为要素二。

在启用双因素认证后,需要输入手机上的动态口令才可以通过验证。手机上的验证码是一个6位数字,按照google的文档,这个数字是和时间关联的,同时需要一个与服务器共享的key作为种子。

google的authenticator在第一次使用时,会要求扫描一个服务器提供的二维码,其中包含了一个用base32方式编码的key。如果硬件设备不支持扫描,也可以手动输入这个key,长度是16bits。然后就可以按照服务器设置的时间间隔生成动态口令了。生成的动态口令也是有生命周期的,常见的是30秒。

利用时间作为生成要素的一个缺点就在于必须保持服务器和令牌的时间一致,因此软件令牌都有时间校准功能。如果是硬件令牌,通常一颗纽扣电池够用几年,所以绝大部分情况下不需要考虑时间校准,确实要校准,估计是要返厂了。。

由于维持时间绝对一致是需要成本的,所以通常情况下,双因素验证中会允许时间稍有误差,google的设置不知道是多少,腾讯的手机令牌是允许两分钟。如果这个时间是两分钟,实际上就有4个动态口令可以通过验证(2*60/30)。

为了避免时间不准确,google的authenticator也支持基于计数器的动态口令,在客户端点击按钮后生成一个口令,同时计数器+1。

这个方案的好处就是不需要考虑时间,缺点也显而易见:如果客户端误按按钮,必然会引起客户端计数器和服务器端不一致,要恢复使用状态,要么调整计数器,要么换一个口令的key。前一种方式很显然会丧失一部分安全性,可能引起重放攻击,而后一种方案代价会比较高,必须要IT管理人员参与。所以google账户的登陆不支持这种方式。

为了防止手机遗失、故障等情况,google也提供了alternative的验证方式。

第一种是用一个电话号码接受短信或者语音呼叫

第二种是利用一组共10个的一次性口令,google推荐打印下来

对于那些不支持双因素认证的程序,google允许生成16位的Application-specific password,用在邮件客户端等非web方式登陆的地方。

说完应用,最后总结思路:

双因素认其实就是给现有的密码认证体系加上一层额外的保护,通过与登陆窗口物理隔离(非常非常重要)的硬件(跑在手机里的软件就当硬件了,如果你非要跑电脑里,还是废了双因素验证吧。。)生成的6位动态口令进行认证。这个口令可以是基于时间的,也可以是基于计数器的。动态口令必须有生存周期,也必须是一次性的。为了防止动态口令生成设备故障,需要提供其他的可选项例如手机短信和电话。如果没有那么高的可用性要求,IT人员作为其他的可选项也是可以的。

这方面有一些规范和指导意见,如下:

Initiative for Open Authentication (OATH)

HMAC-Based One-time Password (HOTP) algorithm specified in RFC 4226

Time-based One-time Password (TOTP) algorithm currently in RFC draft.

下一步目标是开发出给wp用的双因素认证插件,估计要花点时间了。