หลังจากที่เราได้ทำ VM Backup ไป เราจะมาทำ Archive เพื่อเก็บเป็นไฟล์ต้นฉบับ เวลาเกิดเหตุการณ์ถูกโจมตี โดยเฉพาะ VM ที่เป็น ISPConfig เราจะหาสาเหตุได้ยาก หากไม่มีไฟล์ต้นฉบับในการเปรียบเทียบ เพราะไม่ได้ดูในส่วนนี้โดยตรง
Backup Policy
เนื่องการทำ Backup ตาม Retention ที่กำหนด ข้อมูลจะถูกเปลี่ยนแปลงอยู่ตลอดเวลา หากถูกโจมตีทางด้าน Security เราจะทำการหาสาเหตุได้ยาก จึงคิดว่าควรทำ Archive เพื่อใช้ในการเก็บไฟล์ต้นฉบับ โดยกำหนด Retention เป็นระยะเวลา 1 ปี แต่เนื่องจาก VM ที่จะทำ Archive เป็นระบบ ISPConfig ซึ่งไม่ได้อยู่ในความดูแล จึงไม่สามารถตอบได้ว่าควรทำ Archive เวลาใด จึงจะใช้วิธีการให้ผู้ที่รับผิดชอบเลือกเวลามา
แต่กรณีที่เราได้ทำ Backup โดยปกติอยู่แล้ว ซึ่ง Backup Frequency ของ ISPConfig คือรายสัปดาห์ Weekly โดยมี Data Retention เป็น 1 เดือน เราก็จะนำไฟล์นั้นมา Rename เป็นชื่อ Archive แทน
Directory Structure
C:\powershell-script
├───Credential/
│ └───vcsa.lab.local.clixml
├───VM-List/
│ └───Archive.txt
├───VM-Log/
│ └───Archive/
│ └───Backup-Archive-yyyyMMdd.log
└───VM-Script/
├───Backup-Archive.ps1
├───Configuration.ps1
└───Delete.ps1
Get Started
- ทำการเพิ่ม Global Variable ในไฟล์ Configuration.ps1
# VMware Parameter
$Global:folder_archive = 'Archive'
# VM-List
$Global:vm_archive = Get-Content ($root + 'VM-List\Archive.txt')
# VM-Log
$Global:path_log_archive = $root + 'VM-Log\Archive\Backup-Archive-' + $date + '.log'
- ทำการสร้างไฟล์ Backup-Archive.ps1
. "$PSScriptRoot\Configuration.ps1"
Connect-VIServer -Server $server -Credential $credential
$vm = $vm_archive
$path = $path_log_archive
$folder = $folder_archive
$date = '20181231'
$yyyy = '2018'
foreach ($line in $vm) {
try {
$name = 'Backup-Weekly-' + $date + '-' + $line
$new = 'Archive-' + $yyyy + '-' + $line
Get-Template -Name $name | Move-Template -Destination (Get-Folder -Name $folder)
Set-Template -Template $name -Name $new
} catch {
# $ErrorMessage = $_.Exception.Message
# $FailedItem = $_.Exception.ItemName
# $error += $line + "`r`n"
}
}
Disconnect-VIServer -Server $server -Confirm:$false
อ่านเพิ่มเติม : https://bit.ly/2TC5Isg
Leave a Reply