【引子】

手机中熟悉的旋律响起,接起电话,传来的消息却让人很是不快:紧急故障,有客户处发生AD对象意外删除的灾难,共计百余计算机帐号被误删,涉及全国范围诸多生产系统,如不及时处理,将造成大范围业务瘫痪。

刻不容缓,马上“全副武装”直奔现场。经过几近通宵的鏖战,终于完成灾难恢复。

【思考】

AD作为企业IT基础架构管理的核心,其重要程度不言而喻。能够对AD灾难恢复场景进行冷静的对待及气定神闲的处理,无疑是揽大厦之将倾的重要功劳,也是对一位系统管理员的极大考验。

本文将结合诸多项目经验及AD的理论基础,分享AD管理中可能遇到的灾难场景以及应对策略。声明一点,本文讨论的前提条件是至少有两台DC的合理的AD架构,如果因为只有一台DC,造成部份情况下不可挽回的灾难,请自备香火烧香拜佛。

注:本文只讨论不同的AD灾难场景,及应对思路,并不涉及技术细节,望读者朋友们,以全局为重,多想多练,关于技术细节的实现,将另外介绍。

1、场景一:误删除对象,有备份,但操作尚未通步至其他DC。

如果异致对象丢失的操作发现及时,尚未同步至其他DC,此时能及时切断该DC与其他DC的联系,则可以将故障限制在一台DC 上,只需要恢复备份(要进入目录服务还原模式),然后正常开机联网,让它与其他DC同步数据,则可以恢复故障。

2、场景二:误删除对象,有备份,操作已通步至其他DC。

通常情况下,当我们发现AD对象损坏或丢失,都已经同步至其他DC,而此时,如果单纯的利用还原备份的方法,会导致失败。原因为:被删除的对象的数据并不是真正的被删除,而是有一个墓碑生存时间,而此时进行还原操作,还原后的DC是旧的未删除的对象,其他DC上面,是新的,已经被删除的对象,当数据同步时,按照后应用有效的原则,是会以被删除为准的,所以还原后的对象还是会被删除。

此时,我们需要一种还原方法,叫做授权还原,简单说,就是将还原回来的对象的版本号人为的提高,将其强行改为最新的数据,使其同步时作为权威数据。

授权还原的思路如下:

  • 进入目录服务还原模式,还原备份(注意:不要选择授权还原AD数据库,以免导致所有数据被还原到备份状态);

  • 还原成功后,不要重启DC,进入命令行工具,准备进行授权还原;

  • 命令及关键参数如下:ntdsutil/authoritative restore

  • 提示:一定要熟悉被还原对象的LDAP名称的语法。

3、场景三:误删除对象,但无备份。

对于无备份的对象还原,主要有两种解决方法:AD回收站和墓碑还原。

对于林功能级别低于Windows 2008R2的环境,还原无备份的AD对象则只能通过墓碑还原来完成,默认情况下,被删除的对象,会成为Tombstone对象,而这类对象会被删除除登录名及SID以外的多数属性,包括密码,如果想要还原,则可以通过ldp.exe工具,修改如下两个属性即可:isdeleted、distinguishedname。

如果林功能级别达到windows 2008R2,强烈建议开启AD回收站功能,这样可以非常容易的实现AD对象的无损还原,如果服务器是Windows 2008R2,则AD回收站需要在Windows Powershell 中完成,如果服务器是Windows 2012及以上版本,AD回收站可以在图形界面下完成,就如同桌面系统传统的回收站一样方便。

关于AD回收站的几点注意事项:

AD回收站一旦开启,则无法禁用;

无法还原在AD回收站功能开启前,被删除的对象;

需要林功能级别达到Windows 2008R2才可以开启该功能;

开启AD回收站后,LDP工具则不可以再使用;

AD回收站中的对象保留期限是180天。

4、场景四:DC损坏。

对于DC损坏,又无法快速修复的情况,可以考虑重建DC,但是原DC在数据中会成为垃圾数据,需要将其清理。

可以使用命令ntdsutil来进行垃圾服务器对象清理,具体参数是metadatacleanup。如果清理的过程中,发现被清理对象是操作主机,则会弹出提示框,并可以直接迁移操作主机角色。

本文转自天鬼皇 51CTO博客,原文链接:http://blog.51cto.com/ghostlan/1570412,如需转载请自行联系原作者

AD灾难恢复情景及方案相关推荐

  1. AD+邮件服务器搭建方案

    企业邮箱与企业的AD同步,能提升生产效率.促进有序管理.(AD全称为Active Directory,用来集中管理域环境下面的所有计算机.所有用户以及其它资源诸如共享文件夹.打印机之类.)应用AD在企 ...

  2. samba and AD

    背景: 在上次的背景之下(见上一文章),管理员发现公司内现有部门不多,但员工数量非常的多.如果按照用户一个一个的去创建用户并用smbpasswd增加samba的登陆用户非常的麻烦.而且公司内已经存在一 ...

  3. ASP.NET Core和Blazor Code Venture:配置Azure AD身份验证

    目录 介绍 背景 安装开发环境 先决条件 安装框架和工具 安装Azure Active Directory 创建一个新用户 使用Azure AD进行服务器端Blazor身份验证 第一次运行 下载ToD ...

  4. 单片机按键连接方法总结(五种按键扩展方案详细介绍)

    http://blog.sina.com.cn/s/blog_634771fd0100hd1h.html 单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种.不同的设计方法,有着不同的优 ...

  5. 蓝牙智能窗帘(天猫精灵生态)方案

    系统简介 蓝牙智能窗帘是带有一定调节.语音控制功能的电动窗帘. 翼数信息使用自主开发的BCB01智能蓝牙模块,对接了天猫精灵蓝牙Mesh生态,成功的应用在窗帘上.该模块较高的接收灵敏度满足了窗帘应用对 ...

  6. macOS 非 PC, 为何一定要绑定AD?

    需要绑定 AD 的理由 企业环境内,相信大家用的都是传统PC比较多:然而,随着macOS在工作场所的普及,越来越多的组织开始考虑需要管理macOS.管理流程中的一个要求就是对macOS进行绑定AD(A ...

  7. FusionCloud 桌面云时钟同步方案介绍

    FusionCloud 桌面云时钟同步方案介绍 时钟同步是桌面云系统稳定运行的必备条件.如果时钟不同步,会导致桌面云系统管理混乱.时钟同步保证桌面云系统时钟.虚拟机时钟一致. 当客户未提供外部时钟源, ...

  8. 【嵌入式设计】嵌入式低功耗设计

    本文转自https://www.amobbs.com/thread-4932393-1-1.html 文章目录 前言 1.低功耗的概念 1.1.一种AD采样功耗优化方案 2.硬件低功耗设计概述 3.软 ...

  9. 集成OpenLDAP与Kerberos实现统一认证(三):基于SASL/GSSAPI深度集成

    文章目录 1. 写作背景 2. 既定目标 3. 重要概念 3.1 SASL 3.2 GSSAPI 3.3 SASL与GSSAPI的关系 3.4 saslauthd 3.5 Kerberos化 4. 核 ...

最新文章

  1. 常用API-String、包装类、System
  2. pythonchar中的拟合方法_Python字符串魔法方法
  3. 大数据技术 学习之旅_如何开始您的数据科学之旅?
  4. 前端学习(2574):vuex最佳实践
  5. 用Jenkins自动化搭建测试环境_jenkins基础搭建_入门试炼02
  6. 解决twisted客户端连接过多导致崩溃问题(too many file descriptors in  select)
  7. NOIP2011选择客栈[递推]
  8. [读码时间] css函数设置读取对象的属性
  9. Python numpy 多维数组切片
  10. java shuffle list_static void shuffle(Listlt;?gt; list)_Java.util包|WIKI教程
  11. 关于FbinstTool加入360急救盘见解
  12. Setup Factory 卸载 Invalid Start mode :archive filename
  13. 文本去重Linux,Shell实现文本去重并操持原有顺序
  14. python pytz模块_python pytz
  15. Django重写User模型修改明文密码加密方法
  16. 超级科技富豪:张朝阳跌宕起伏的人生
  17. 2.5维电子地图关键技术研究与实现
  18. 使用 PHP 和 MySQL 的安全登录系统
  19. 表单输入框聚焦输入内容显示叉叉清除效果
  20. gof23 设计模式 各个模式代码demo

热门文章

  1. element中根据条件判断按钮是否禁用_从零动手封装一个通用的vue按钮组件
  2. 理解JavaScript的宏微任务
  3. html表单的课后心得体会,web前端学习心得体会范文
  4. c++突破网关屏蔽_通过API网关实现微服务管控-限流,熔断和降级
  5. (纯CSS)悬浮一个元素,让另一个元素改变属性
  6. js获取el表达式的值_Vue.js
  7. 会计电算化是对用电子计算机处理,会计电算化的意义是什么
  8. 20200301:快乐数(leetcode202)
  9. java 对象排重_现代化的 Java (八)——重说对象序列化
  10. java线程本地变量_Java并发编程示例(九):本地线程变量的使用