نسخ ملف تهيئة ليس نسخة احتياطية، والنسخة الاحتياطية التي لا يستطيع أحد استعادتها ليست خطة. يجب أن تحتوي الحزمة على هوية الخدمة والسياسة المحيطة بها والحالة التي تحدّد الأجهزة التي ما زال مسموحاً لها بالاتصال. ويجب أيضاً حمايتها، لأن الحزمة في معظم عمليات النشر تمنح بالضبط ما يمنحه الـ VPN. تحديد ما يجب أن يكون قابلاً للاستعادة يأتي أولاً؛ وقائمة الملفات تتبع ذلك القرار.

ابدأ من هدف إعادة البناء

اكتب ما يجب أن يفعله الخادم المُعاد بناؤه قبل أن تسرد ملفاً واحداً: إنهاء الأنفاق نفسها، وتقديم الهوية نفسها، ورفض الأجهزة الملغاة حالياً. تلك الجملة تستبعد معظم النسخ الساذجة، لأن دليل التهيئة نادراً ما يحتوي قائمة الإلغاء أو اعتماد الهوية الخارجي. وهي تكشف أيضاً الأجزاء التي تعيش خارج المضيف، مثل سجلات DNS وقواعد جدار الحماية السحابي والدليل الذي تصادق البوابة عليه. خطة تتجاهلها تنتج خادماً مُستعاداً يبدو سليماً ولا يقبل أحداً.

جمّع المواد في ثلاث سلال: الهوية والتهيئة والحالة. الهوية هي المفاتيح والشهادات والجهة التي توقّعها. التهيئة هي إعدادات الخدمة والمجموعات والمسارات وسياسة جدار الحماية، أما الحالة فهي مجموعة الأقران والحسابات والإلغاءات التي تتغير كل يوم.

الهوية هي الجزء الذي لا يمكنك توليده من جديد

لا يمكن إعادة إنشاء المفاتيح الخاصة من الذاكرة، والشهادات التي تعتمد عليها تنتهي وفق جدول ترثه ولا تختاره. خذ نسخة احتياطية من مفتاح الخادم ومواد تجهيز العملاء وجهة إصدار الشهادات، ثم سجّل أيّها يُفترض أن يبقى خارج الشبكة. مفتاح الجهة الذي يعيش فقط على البوابة العاملة يفصله اختراق واحد عن إعادة ضبط الهوية بالكامل لكل عميل. سجّل ما يُخزَّن عمداً في مكان آخر حتى لا ينسخه أحد إلى حزمة أقل حماية.

الإلغاء يستحق سطراً خاصاً في الخطة. استعادة تهيئة الأمس يمكن أن تعيد هوية أزلتها اليوم، وهو ما يحوّل الاستعادة إلى حادث أمني. احفظ حالة الإلغاء الحالية في مكان مستقل عن اللقطة التي قد تعود إليها، وافحصها بعد أي استعادة.

التقط الحالة في لحظة واحدة

النسخة المأخوذة أثناء كتابة الخدمة تنتج جرداً غير متسق، وبيانات الهوية غير المتسقة أسوأ من نسخة قديمة نظيفة. استخدم مسار التصدير المدعوم لكل مخزن، ثم سجّل وقت اللقطة، لأن كل سؤال لاحق عن الاستعادة يعتمد عليه.

wg showconf wg0 > /srv/backup/wg0.runtime.conf
sqlite3 /var/lib/vpn/admin.db ".backup '/srv/backup/admin.db'"
cp -a /etc/wireguard /srv/backup/etc-wireguard
sha256sum /srv/backup/*.conf > /srv/backup/MANIFEST

الأمر الأول يطبع الواجهة العاملة كتهيئة، وهو أسرع طريقة لالتقاط الأقران الذين أُضيفوا يدوياً بدلاً من أداة إدارة، ويوثّق ذلك دليل wg(8). سطر sqlite هو النمط المناسب لقاعدة بيانات إدارة: يولّد أمر النسخ الاحتياطي نسخة متسقة بينما يستمر الكاتب في العمل. نسخ الدليل يحافظ على الأذونات، وهذا مهم لأن ملفات المفاتيح تلك لا يقرأها إلا root. والبيان هو ما يتيح لك التمييز بين حزمة كاملة وحزمة مقطوعة.

اجعل الاستعادة ممكنة ثم جرّبها

شفّر الحزمة واحفظ مفتاح الاستعادة في مكان غير الجهاز الذي جاءت منه. نسخة احتياطية توجد عبارتها السرية فقط على الخادم المعطّل هي نسخة لن يفتحها أحد. اقصر الاسترداد على الأشخاص الذين كانوا يديرون البوابة بالفعل، وسجّل كل عملية استرداد. اختبر الاستعادة على شبكة معزولة، لأن هوية مستنسخة تُشغَّل بجوار الإنتاج تنشئ خادمين يجيبان عن المفتاح نفسه للقرين.

وثّق الاستثناءات بعناية توثيقك للمحتويات. قواعد جدار الحماية السحابي وسجلات DNS والدليل الخارجي قد يحتاج كل منها خطوة استعادة خاصة. نجاح نسخ الملفات ليس دليلاً على عودة الخدمة؛ الدليل الوحيد المعتبر هو نقطة نهاية مُعاد بناؤها تجتاز اختبار القبول نفسه الذي اجتازه الأصل.

مقالات ذات صلة