Skip to content

Latest commit

Β 

History

History
376 lines (280 loc) Β· 8.39 KB

File metadata and controls

376 lines (280 loc) Β· 8.39 KB

🚨 Windows Server Disaster Recovery Guide

🎯 What You'll Learn

  • Backup and recovery strategies
  • Business continuity planning
  • Disaster recovery procedures
  • High availability solutions

πŸ“‹ Prerequisites

  • Working Windows Server environment
  • Administrative access
  • Basic understanding of backup concepts
  • Completed previous guides

πŸ’Ύ Backup Strategies

1. System State Backup

  1. Windows Server Backup

    # Install Windows Server Backup
    Install-WindowsFeature -Name Windows-Server-Backup
    
    # Create system state backup
    wbadmin start systemstatebackup -backuptarget:E:
  2. Verify Backup

    # List backup versions
    wbadmin get versions
    
    # Verify backup integrity
    wbadmin get status

2. Active Directory Backup

  1. System State Backup

    # Create AD backup
    wbadmin start systemstatebackup -backuptarget:E: -quiet
  2. Verify AD Backup

    # Check backup status
    wbadmin get status
    
    # List backup details
    wbadmin get versions

πŸ”„ Recovery Procedures

1. System Recovery

  1. Bare Metal Recovery

    # Start system recovery
    wbadmin start systemstaterecovery -version:MM/DD/YYYY-HH:MM
  2. Verify Recovery

    # Check system status
    Get-Service | Where-Object Status -ne "Running"
    
    # Verify AD functionality
    repadmin /showrepl

2. Active Directory Recovery

  1. Directory Services Restore Mode

    # Boot into DSRM
    bcdedit /set safeboot dsrepair
    
    # Restore system state
    wbadmin start systemstaterecovery -version:MM/DD/YYYY-HH:MM
  2. Authoritative Restore

    # Start ntdsutil
    ntdsutil
    
    # Perform authoritative restore
    activate instance ntds
    authoritative restore
    restore object "CN=User,CN=Users,DC=domain,DC=com"

πŸ—οΈ High Availability

1. Failover Clustering

  1. Install Failover Clustering

    # Install feature
    Install-WindowsFeature -Name Failover-Clustering
    
    # Validate cluster
    Test-Cluster -Node Server1,Server2
  2. Create Cluster

    # Create new cluster
    New-Cluster -Name Cluster1 -Node Server1,Server2 -StaticAddress 192.168.1.100

2. Always On Availability Groups

  1. Configure SQL Server

    # Enable Always On
    Enable-SqlAlwaysOn -Path "SQLSERVER:\SQL\Server1\Default"
  2. Create Availability Group

    # New availability group
    New-SqlAvailabilityGroup -Name AG1 `
                            -Path "SQLSERVER:\SQL\Server1\Default" `
                            -AvailabilityMode "SynchronousCommit"

πŸ“‹ Business Continuity Planning

1. Recovery Time Objectives (RTO)

  1. Define RTO

    • Critical systems: < 4 hours
    • Important systems: < 24 hours
    • Standard systems: < 72 hours
  2. Recovery Point Objectives (RPO)

    • Critical data: < 15 minutes
    • Important data: < 4 hours
    • Standard data: < 24 hours

2. Disaster Recovery Plan

  1. Document Procedures

    DR-Plan
    β”œβ”€β”€ Initial Response
    β”‚   β”œβ”€β”€ Assess situation
    β”‚   β”œβ”€β”€ Notify stakeholders
    β”‚   └── Activate DR team
    β”œβ”€β”€ Recovery Steps
    β”‚   β”œβ”€β”€ Restore systems
    β”‚   β”œβ”€β”€ Verify functionality
    β”‚   └── Document progress
    └── Business Resumption
        β”œβ”€β”€ Test systems
        β”œβ”€β”€ Verify data
        └── Resume operations
    
  2. Communication Plan

    Communication
    β”œβ”€β”€ Internal
    β”‚   β”œβ”€β”€ IT team
    β”‚   β”œβ”€β”€ Management
    β”‚   └── Staff
    └── External
        β”œβ”€β”€ Customers
        β”œβ”€β”€ Vendors
        └── Partners
    

πŸ” Testing and Validation

1. Recovery Testing

  1. Test Types

    • Full recovery test
    • Partial recovery test
    • Component test
    • Tabletop exercise
  2. Test Schedule

    • Quarterly: Full recovery
    • Monthly: Component tests
    • Weekly: Backup verification
    • Daily: Backup monitoring

2. Documentation

  1. Recovery Procedures

    # Document recovery steps
    $recoverySteps = @{
        "Step1" = "Verify backup availability"
        "Step2" = "Restore system state"
        "Step3" = "Verify AD functionality"
        "Step4" = "Test critical services"
    }
  2. Contact Information

    Contacts
    β”œβ”€β”€ Primary
    β”‚   β”œβ”€β”€ IT Manager
    β”‚   β”œβ”€β”€ System Admin
    β”‚   └── Network Admin
    └── Secondary
        β”œβ”€β”€ Backup Admin
        β”œβ”€β”€ Security Team
        └── Vendor Support
    

πŸ›‘οΈ Data Protection

1. Backup Storage

  1. Storage Types

    • Local storage
    • Network storage
    • Cloud storage
    • Offsite storage
  2. Retention Policy

    Retention
    β”œβ”€β”€ Daily backups: 7 days
    β”œβ”€β”€ Weekly backups: 4 weeks
    β”œβ”€β”€ Monthly backups: 12 months
    └── Yearly backups: 5 years
    

2. Security Measures

  1. Backup Security

    # Encrypt backup
    wbadmin start backup -backuptarget:E: -include:C: -quiet -encrypt
    
    # Secure backup location
    $acl = Get-Acl "E:\Backups"
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("BackupAdmins","FullControl","Allow")
    $acl.SetAccessRule($rule)
    Set-Acl "E:\Backups" $acl
  2. Access Control

    # Restrict backup access
    $backupFolder = "E:\Backups"
    $admins = "Domain\BackupAdmins"
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($admins,"FullControl","Allow")
    $acl = Get-Acl $backupFolder
    $acl.SetAccessRule($rule)
    Set-Acl $backupFolder $acl

πŸ“Š Monitoring and Alerts

1. Backup Monitoring

  1. Status Checks

    # Check backup status
    Get-WBJob | Select-Object State, StartTime, EndTime
    
    # Monitor backup space
    Get-WBVolume | Select-Object VolumePath, TotalSize, UsedSize
  2. Alert Configuration

    # Create backup alert
    $action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
                                    -Argument "Send-MailMessage"
    $trigger = New-ScheduledTaskTrigger -AtStartup
    Register-ScheduledTask -TaskName "BackupAlert" `
                          -Action $action `
                          -Trigger $trigger

2. Recovery Testing

  1. Automated Testing

    # Test backup restoration
    $testPath = "E:\TestRestore"
    wbadmin start recovery -version:MM/DD/YYYY-HH:MM `
                          -itemtype:volume `
                          -items:C: `
                          -recursive `
                          -quiet
  2. Validation Scripts

    # Verify recovery
    $services = Get-Service | Where-Object Status -ne "Running"
    if ($services) {
        Send-MailMessage -Subject "Recovery Test Failed" `
                        -Body "Services not running: $($services.Name)"
    }

🎯 Best Practices

1. Planning

  • Document procedures
  • Regular testing
  • Update contacts
  • Review RTO/RPO

2. Implementation

  • Secure backups
  • Monitor status
  • Test recovery
  • Document changes

3. Maintenance

  • Regular reviews
  • Update procedures
  • Train staff
  • Test systems

πŸ“š Next Steps

πŸ”— Additional Resources