debian-bootstrap

تجهيز وتقوية سيرفر Debian 12 خطوة خطوة

Python 3.11BashUFWfail2banDockersystemd

كود المصدر على GitHub

رخصة: MIT

الفكرة

في كل مرة استلمت سيرفر جديد، كنت أعيد نفس الخطوات يدويًا: مستخدم، SSH، جدار ناري، fail2ban… ومع كل تكرار، بنسى خطوة أو أختلف في ترتيبهم. الحل: سكربت تكرار (idempotent) يعرف الحالة الأول ولا يغيّر غير اللي لازم يتغير.

التصميم

المنطق مكتوب بـ Python (قراءة الإعداد من TOML، التسجيل، dry-run، ترتيب المراحل)، بينما العمليات النظامية في سكربتات Bash مستقلة تقدر تقراها وتراجعها. كل مرحلة من المراحل التسعة بتفحص الحالة الأول: لو المضبوطات موجودة صحيحة بتروح بعدها من غير لمس.

الأمان بالترتيب

  1. SSH: تعطيل دخول root والمصادقة بالكلمة، والتحقق من sshd -t قبل أي reload مع نسخة احتياطية لكل ملف يُستبدل.
  2. UFW: رفض الوارد افتراضيًا مع فتح 22/80/443 فقط.
  3. fail2ban ضد تخمين الـ sshd، وتحديثات أمنية تلقائية عبر unattended-upgrades.

الاستخدام

sudo ./bootstrap.sh --dry-run   # استعراض كامل بدون أي تعديل
sudo ./bootstrap.sh --only docker   # مرحلة محددة
sudo ./bootstrap.sh --skip docker,swap

كل تشغيل يسجّل كل سطر في logs/bootstrap-<timestamp>.log.