لە دۆخی هەڕەشەکانی ئەمڕۆدا، ڕانسۆموێر (ransomware) لە هێرشی هەلپەرستانەی سادەوە گۆڕاوە بۆ هەڵمەتی زۆر ئامانجدار و فرە-هەڕەشە. ئێستا گرووپە تاوانکارییەکانی ڕانسۆموێر و هەڕەشە پێشکەوتووە بەردەوامەکان (APTs) بە چالاکانە بەدوای ژێرخانی یەدەگ (backup) و ئەرشیفی بنکەدراوەکاندا دەگەڕێن لە کاتی مانەوەیان لە تۆڕەکەدا. ئەگەر هێرشبەرێک دەستی بەسەر بنکەدراوە سەرەکییەکەتدا گرت و هاوکات یەدەگەکانت بسڕێتەوە یان کۆدکردن (encrypt) بکات، ڕێکخراوەکەت ڕووبەڕووی لەدەستدانی کارەساتباری داتا دەبێتەوە.
بۆ بەڕێوەبەرانی بنکەدراوە (DBAs) و ئەندازیارانی DevOps، ستراتیژی کۆنی 3-2-1 بۆ یەدەگگرتن ئیتر بەس نییە. بۆ مسۆگەرکردنی مانەوەی داتا، تیمەکانی ژێرخان دەبێت ڕێسای 3-2-1-1 پەیڕەو بکەن، کە تێیدا “1”ـی کۆتایی ئاماژەیە بۆ کۆگای نەگۆڕ (immutable storage).
ئەم وتارە بە وردی و بە شێوازێکی تەکنیکی باس لە دیزاین، جێبەجێکردن و بەڕێوەبردنی کۆگای نەگۆڕ بۆ ئەرشیفی بنکەدراوەکان دەکات بۆ دڵنیابوون لە بەرگری تەواو بەرامبەر ڕانسۆموێر.
میکانیزمی کۆگای نەگۆڕ
کۆگای نەگۆڕ پشت بە تەلارسازی “یەکجار نووسین، چەندجار خوێندنەوە” (WORM) دەبەستێت. کاتێک داتا دەنووسرێتە ناو ئامانجێکی نەگۆڕ، ناتوانرێت لەلایەن هیچ بەکارهێنەرێکەوە دەستکاری بکرێت، کۆد بکرێت، یان بسڕێتەوە—تەنانەت بەڕێوەبەرانی خاوەن دەسەڵاتی ڕەگ (root) یان ئەکاونتە خزمەتگوزارییە دەستبەسەرداگیراوەکان—تا ئەو کاتەی ماوەی دیاریکراوی قفڵەکە بەسەر دەچێت.
دۆخی پابەندبوون (Compliance Mode) بەرامبەر دۆخی بەڕێوەبردن (Governance Mode)
کاتێک کۆگای نەگۆڕ جێبەجێ دەکەیت، بەتایبەت لە کۆگای هەوری وەک AWS S3، Azure Blob، یان SAN-ی ناوخۆیی کە لەگەڵ S3 گونجاوە، دەبێت جیاوازی نێوان دۆخەکانی مانەوە (retention modes) بزانیت:
- دۆخی بەڕێوەبردن (Governance Mode): ڕێگری لە بەکارهێنەرانی ئاسایی دەکات لە سڕینەوە یان گۆڕینی ئۆبژێکتەکان. بەڵام، بەکارهێنەرانی خاوەن دەسەڵاتی تایبەتی IAM (بۆ نموونە
s3:BypassGovernanceRetention) دەتوانن قفڵەکە تێپەڕێنن. ئەمە بۆ تاقیکردنەوە بەسوودە بەڵام بۆ پاراستن لە ڕانسۆموێر بەس نییە، چونکە هێرشبەران زۆرجار دەسەڵاتەکانیان بۆ ئاستی بەڕێوەبەری دۆمەین یان ڕەگ بەرز دەکەنەوە. - دۆخی پابەندبوون (Compliance Mode): ستانداردی زێڕینە بۆ بەرگری لە ڕانسۆموێر. کاتێک ئۆبژێکتێک لەم دۆخەدا قفڵ دەکرێت، ماوەی مانەوەکەی کورت ناکرێتەوە و ئۆبژێکتەکە لەلایەن هیچ کەسێکەوە ناسڕێتەوە، تەنانەت ئەکاونتی ڕەگی AWS-یش. قفڵەکە لە ئاستی کۆگاکەدا جێبەجێ دەکرێت.
تەلارسازیکردنی بۆرییەکی یەدەگی نەگۆڕ
تەلارسازییەکی بەهێزی ئەرشیفی بنکەدراوە، کارە چالاکەکانی بنکەدراوە لە ئاستی ئەرشیفی نەگۆڕ جیا دەکاتەوە. ناتوانیت نەگۆڕی (immutability) بەکاربهێنیت بۆ فایلە چالاکەکانی بنکەدراوە (وەک .mdf/.ldf لە SQL Server یان بوخچەی pg_data لە PostgreSQL) چونکە بنکەدراوەکان پێویستیان بە دەستگەیشتنی بەردەوامی خوێندنەوە/نووسین هەیە.
بەڵکو، نەگۆڕی بۆ ئەم خوارەوە بەکاردێت:
1. فایلەکانی یەدەگی تەواو و جیاوازی (Full and Differential Backup Files): وێنە ساتەوەختییەکانی بنکەدراوەکە.
2. لۆگەکانی مامەڵە / فایلەکانی WAL: ئەو ڕێڕەوە بەردەوامەی گۆڕانکارییەکانی بنکەدراوە کە پێویستن بۆ گەڕاندنەوە بۆ کاتێکی دیاریکراو (PITR).
ئامانجەکانی کۆگا بۆ نەگۆڕی
دەتوانیت کۆگای نەگۆڕ لە ئاستە جیاوازەکانی ژێرخاندا جێبەجێ بکەیت:
* کۆگای هەوری (Cloud Object Storage): AWS S3 Object Lock، Azure Blob Immutable Storage، سیاسەتەکانی مانەوەی Google Cloud Storage.
* کۆگای ناوخۆیی (On-Premises): MinIO، Cloudian، یان Pure Storage FlashBlade کە پشتگیری لە S3 Object Lock APIs دەکەن.
* کۆگای بلۆک/فایل: ZFS لەگەڵ وێنە ساتەوەختییەکانی تەنها-خوێندنەوە (read-only snapshots) و بەڕێوەبردنی دابەشکراو، یان تایبەتمەندییەکانی فایلی لینوکس.
جێبەجێکردنی کۆگای نەگۆڕ: ڕێنمایی تەکنیکی
1. کۆگای هەوری: AWS S3 Object Lock
بۆ پاراستنی دەرخستەکانی بنکەدراوە (dumps) و لۆگەکانی مامەڵە لە AWS، دەبێت Object Lock لە کاتی دروستکردنی بوخچەکە (bucket) چالاک بکەیت.
سەرەتا، بوخچەکە دروست بکە لەگەڵ چالاککردنی Object Lock:
aws s3api create-bucket
--bucket prod-db-archive-immutable
--region us-east-1
--object-lock-enabled-for-bucket
دواتر، سیاسەتی بنەڕەتی مانەوە ڕێکبخە. بۆ ئەرشیفی بنکەدراوە، قفڵێکی پابەندبوونی 30 ڕۆژە ستانداردێکی باشە، کە دڵنیات دەکاتەوە لەوەی یەدەگێکی بێگۆڕانی مانگێکت هەیە.
aws s3api put-object-lock-configuration
--bucket prod-db-archive-immutable
--object-lock-configuration '{
"ObjectLockEnabled": "Enabled",
"Rule": {
"DefaultRetention": {
"Mode": "COMPLIANCE",
"Days": 30
}
}
}'
کاتێک سکریپتی یەدەگی بنکەدراوەکەت فایلێک دەنێرێتە ئەم بوخچەیە، S3 بە خۆکاری Retain Until Date (مانەوە تا بەرواری) دیاری دەکات بەپێی کاتی دروستکردنی فایلەکە بە زیادکردنی 30 ڕۆژ.
2. نەگۆڕی ناوخۆیی: ZFS و تایبەتمەندییەکانی لینوکس
ئەگەر بنکەدراوەکان ئەرشیف دەکەیت بۆ سێرڤەرێکی یەدەگی لینوکسی ناوخۆیی، دەتوانیت نەگۆڕییەکی ساختە بەدەست بهێنیت بە بەکارهێنانی فەرمانی chattr، یان نەگۆڕییەکی ڕاستەقینە بە بەکارهێنانی وێنە ساتەوەختییەکانی ZFS.
بەکارهێنانی chattr لە لینوکس:
ئاڵای +i (نەگۆڕ) ڕێگری لە دەستکاریکردن، سڕینەوە، یان ناونانی دووبارەی فایلەکە دەکات.
# Dump the database
pg_dump -U postgres -Fc mydb > /backups/mydb_$(date +%F).dump
# Make the backup immutable
sudo chattr +i /backups/mydb_$(date +%F).dump
# Verify the attribute
lsattr /backups/mydb_$(date +%F).dump
# Output: ----i---------e------- /backups/mydb_2023-10-27.dump
تێبینی: هەرچەندە chattr ڕێگری لە سکریپتە سادەکانی ڕانسۆموێر دەکات، بەڵام هێرشبەرێکی شارەزا بە دەسەڵاتی ڕەگ دەتوانێت بە ئاسانی chattr -i بەکاربهێنێت. بۆیە، ئەمە دەبێت لەگەڵ RBAC-ی توند و تۆڕی یەدەگی جیاکراوەدا بەکاربهێنرێت.
بەکارهێنانی وێنە ساتەوەختییەکانی ZFS:
ZFS بەرگرییەکی زۆر بەهێزتر دابین دەکات. بە گرتنی وێنەیەکی ساتەوەختی و دانانی “hold” لەسەری، ڕێگری لە سڕینەوەی وێنەکە دەکەیت.
# Take a snapshot of the backup dataset
zfs snapshot tank/db_backups@archive_$(date +%F)
# Place a hold on the snapshot to prevent deletion
zfs hold keep_30_days tank/db_backups@archive_$(date +%F)
# Even root cannot destroy this snapshot without releasing the hold
zfs destroy tank/db_backups@archive_$(date +%F)
# Output: cannot destroy 'tank/db_backups@archive_...': dataset is busy
ستراتیژییەکانی ئەرشیفکردنی تایبەت بە بنکەدراوە
بۆ بەدەستهێنانی گەڕاندنەوە بۆ کاتێکی دیاریکراو (PITR)، دەبێت بەردەوام لۆگەکانی مامەڵە بۆ کۆگای نەگۆڕەکەت ئەرشیف بکەیت.
ئەرشیفکردنی WAL-ی PostgreSQL لەگەڵ pgBackRest
pgBackRest ئامرازێکی زۆر متمانەپێکراوی یەدەگگرتنە بۆ PostgreSQL کە بە شێوەیەکی سروشتی پشتگیری لە کۆگای گونجاو لەگەڵ S3 دەکات. بۆ پاراستنی لۆگەکانی پێش-نووسین (WAL)، pgBackRest ڕێکبخە بۆ ئەوەی ڕاستەوخۆ بنێرێت بۆ بوخچەی نەگۆڕی S3-ەکەت.
لە pgbackrest.conf-ەکەتدا:
[global]
repo1-type=s3
repo1-s3-bucket=prod-db-archive-immutable
repo1-s3-region=us-east-1
repo1-s3-endpoint=s3.amazonaws.com
repo1-s3-key=AKIAIOSFODNN7EXAMPLE
repo1-s3-key-secret=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# Ensure retention aligns with your S3 Object Lock configuration
repo1-retention-full=2
repo1-retention-archive=2
[prod_cluster]
pg1-path=/var/lib/postgresql/14/main
سەرنجی گرنگ: ئەگەر بوخچەی S3-ەکەت قفڵێکی پابەندبوونی 30 ڕۆژەی هەبێت، بەڵام pgBackRest هەوڵ بدات لۆگەکانی WAL دوای 14 ڕۆژ بسڕێتەوە بەپێی repo1-retention-archive، ئەوا داواکارییەکانی سڕینەوە شکست دەهێنن. دەبێت دڵنیا بیت کە سیاسەتی مانەوەی نەرمەکاڵای یەدەگەکەت یەکسان یان گەورەترە لە قفڵی نەگۆڕی ئاستی کۆگاکە.
Microsoft SQL Server: یەدەگگرتن بۆ URL
SQL Server پشتگیری لە یەدەگگرتنی ڕاستەوخۆ بۆ کۆگای ئۆبژێکتی گونجاو لەگەڵ S3 دەکات. دەتوانیت کارێکی SQL Server Agent ڕێکبخەیت بۆ نووسینی فایلەکانی .bak و .trn ڕاستەوخۆ بۆ بوخچەیەکی نەگۆڕ.
CREATE CREDENTIAL [s3://prod-db-archive-immutable.s3.us-east-1.amazonaws.com]
WITH IDENTITY = 'S3 Access Key',
SECRET = 'AccessKeyID:SecretAccessKey';
GO
BACKUP DATABASE [ProductionDB]
TO URL = 's3://prod-db-archive-immutable.s3.us-east-1.amazonaws.com/ProductionDB_Full.bak'
WITH FORMAT, COMPRESSION, STATS = 10;
GO
ئۆتۆماتیککردن و ڕێکخستن لەگەڵ CloudSave
بەڕێوەبردنی ئاڵاکانی مانەوەی نەگۆڕ، سووڕاندنی کلیلەکانی دەستگەیشتن، و دڵنیابوون لە هاوکاتبوون لە نێوان سیاسەتەکانی مانەوەی بنکەدراوە و قفڵەکانی کۆگا لە ڕێگەی سکریپتی تایبەتەوە، کارێکی پڕ لە هەڵەیە. یەک هەڵەی ڕێکخستن لە cron job یان API دەتوانێت ئەرشیفەکانت بخاتە مەترسییەوە یان ببێتە هۆی بەرزبوونەوەی تێچووی کۆگای هەوری بەهۆی ئۆبژێکتە قفڵکراوە بێخاوەنەکانەوە.
پلاتفۆرمەکانی یەدەگی کۆمپانیاکان وەک CloudSave ئەم تەلارسازییە ئاسان دەکەن. CloudSave بە شێوەیەکی سروشتی لەگەڵ AWS S3 Object Lock، Azure Blob Immutable Storage، و API-یە ناوخۆییە گونجاوەکان لەگەڵ S3 یەکدەگرێت.
کاتێک پلانی یەدەگی بنکەدراوە لە CloudSave ڕێکدەخەیت:
1. پلاتفۆرمەکە بە خۆکاری VSS (Volume Shadow Copy Service) بۆ SQL Server یان API-ی pg_start_backup() بۆ PostgreSQL بەڕێوەدەبات.
2. داتای یەدەگی کۆدکراو و کەمکراوە (deduplicated) ڕاستەوخۆ دەنێرێت بۆ ئامانجی کۆگا.
3. CloudSave بە شێوەیەکی دینامیکی بانگەوازەکانی WORM API (وەک PutObjectRetention) بۆ هەر ئۆبژێکتێک جێبەجێ دەکات، بە تەواوی ماوەی قفڵی کۆگاکە لەگەڵ خشتەی مانەوەی دیاریکراو لە سیاسەتەکەدا هاوتەریب دەکات.
4. ئەگەر هێرشبەرێک دەستی بەسەر کۆنسۆڵی بەڕێوەبردنی CloudSave-دا گرت، هێشتا ناتوانێت یەدەگەکان بسڕێتەوە، چونکە قفڵی پابەندبوون لەلایەن ژێرخانی کۆگاکەوە جێبەجێ دەکرێت، نەک نەرمەکاڵای یەدەگەکە.
باشترین ڕێکارەکان بۆ ئەرشیفی نەگۆڕی بنکەدراوە
بۆ دڵنیابوون لەوەی تەلارسازی نەگۆڕەکەت بەڕاستی بەرگریکارە، پابەند بەم باشترین ڕێکارانەی ئەندازیاری سیستەمەکان بن:
1. هاوکاتکردنی توندی NTP
قفڵە نەگۆڕەکان بە شێوەیەکی بیرکاری بە بەروار و کاتەوە بەستراونەتەوە. ئەگەر خزمەتگوزاری NTP (پرۆتۆکۆلی کاتی تۆڕ) لەسەر کۆگاکەت یان سێرڤەری یەدەگەکەت دەستکاری بکرێت یان کاتەکەی بگۆڕێت، دەبێتە هۆی ئەوەی قفڵەکان زووتر یان هەرگیز بەسەر نەچن. دڵنیا ببە کە ژێرخانی کۆگاکەت سەرچاوەی NTP-ی متمانەپێکراو و دووبارە بەکاردەهێنێت.
2. جیاکردنەوەی ڕۆڵەکانی IAM و بڕوانامەکان
ئەو بڕوانامانەی بۆ نووسین لە بوخچەی نەگۆڕ بەکاردێن تەنها دەبێت دەسەڵاتی s3:PutObject و s3:PutObjectRetention-یان هەبێت. نابێت هەرگیز دەسەڵاتی s3:DeleteObject یان s3:PutBucketObjectLockConfiguration-یان هەبێت.
نموونەی سیاسەتێکی IAM بە کەمترین دەسەڵات بۆ بریکاری یەدەگی بنکەدراوە:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetBucketObjectLockConfiguration"
],
"Resource": [
"arn:aws:s3:::prod-db-archive-immutable",
"arn:aws:s3:::prod-db-archive-immutable/*"
]
}
]
}
3. دیاریکردنی قەبارەی ماوەی مانەوە
قفڵی پابەندبوون بۆ ماوەیەکی زۆر درێژ (بۆ نموونە 7 ساڵ بۆ پابەندبوون) لەسەر ئاستی گەڕاندنەوەی خێرای سەرەکیت دامەنێ. بنکەدراوەکان بڕێکی زۆر لە داتای WAL/لۆگی مامەڵە دروست دەکەن. قفڵکردنی ئەم داتایانە بۆ چەندین ساڵ دەبێتە هۆی بەرزبوونەوەی خێرای تێچووی کۆگا.
بەڵکو، ڕێبازێکی ئاستبەندی بەکاربهێنە:
* ئاستی گەڕاندنەوەی کارپێکردن: 14 بۆ 30 ڕۆژ مانەوەی نەگۆڕ بۆ یەدەگی تەواو و لۆگەکان.
* ئاستی ئەرشیفی درێژخایەن: یەدەگی تەواوی مانگانە بگوازەرەوە بۆ Glacier/Deep Archive لەگەڵ Vault Lock بۆ ماوەی 1-7 ساڵ.
4. تاقیکردنەوەی بەردەوامی گەڕاندنەوە لە VPC-ی جیاکراو (Air-Gapped)
نەگۆڕی دڵنیایی دەدات کە داتا ناسڕێتەوە، بەڵام دڵنیایی نادات کە داتا بێ گەندەڵی لۆژیکییە. دەبێت گەڕاندنەوەی ئەرشیفی بنکەدراوە نەگۆڕەکانت بۆ ناو VPC یان VLAN-ێکی جیاکراو و دابڕاو (air-gapped) ئۆتۆماتیک بکەیت. فەرمانی DBCC CHECKDB (SQL Server) یان pg_amcheck (PostgreSQL) لەسەر داتا گەڕێنراوەکان جێبەجێ بکە بۆ دڵنیابوون لە یەکپارچەیی پێکهاتەیی.
کۆتایی
بەرگری لە ڕانسۆموێر بریتییە لە گریمانەکردنی ئەوەی کە هێرش ڕوویداوە. تا ئەو کاتەی ئاگادارکەرەوەیەک لە SIEM-ەکەتدا دەردەکەوێت، هێرشبەران ئەگەری زۆرە پێشتر هەوڵی دەستبەسەرداگرتنی ژێرخانی یەدەگەکەت دابێت. بە دیزاینکردنی ئەرشیفی بنکەدراوەکانت بە بەکارهێنانی کۆگای نەگۆڕ لە دۆخی پابەندبووندا، تۆ هێرشبەران لە سەرەکیترین ئامرازی فشارەکەیان بێبەش دەکەیت. جا چ API-یە سروشتییەکانی هەور بەکاردەهێنیت، یان ZFS holds، یان پلاتفۆرمێکی ڕێکخستنی کۆمپانیاکان وەک CloudSave، جێبەجێکردنی کۆگای WORM ئیتر هەڵبژاردە نییە—بەڵکو پایەیەکی ناچاری بەڕێوەبردنی مۆدێرنی بنکەدراوە و گەڕاندنەوەی کارەساتەکانە.