15 KiB
15 KiB
🔐 المرحلة 1: تأمين وإعداد اللابتوب (Ubuntu)
📋 نظرة عامة
هذه المرحلة تركّز على تحويل اللابتوب إلى محطة إدارة آمنة لإدارة السيرفرات.
🛠️ الخطوة 1: تثبيت Ubuntu بشكل آمن
1.1 التثبيت الأساسي
# أثناء التثبيت:
# ✅ فعّل Full Disk Encryption (LUKS)
# ✅ استخدم كلمة مرور قوية للتشفير (20+ حرف)
# ✅ اختر "Minimal Installation"
# ✅ فعّل التحديثات التلقائية
1.2 بعد التثبيت مباشرة
# تحديث النظام
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
# تثبيت الأدوات الأساسية
sudo apt install -y \
build-essential \
git \
curl \
wget \
vim \
htop \
ufw \
fail2ban \
openssh-client \
gnupg2 \
rng-tools \
secure-delete \
cryptsetup \
tmux \
jq \
knockd
🔑 الخطوة 2: توليد المفاتيح الأمنية (الأهم!)
2.1 إنشاء مجلد آمن للمفاتيح
# إنشاء مجلد مشفر للمفاتيح
mkdir -p ~/FORTRESS_KEYS
chmod 700 ~/FORTRESS_KEYS
cd ~/FORTRESS_KEYS
# إنشاء ملف README لتوثيق المفاتيح
cat > README.md <<'EOF'
# 🔐 TRIPZ FORTRESS - Key Management
## المفاتيح المتوفرة:
- fortress_master: المفتاح الرئيسي للسيرفرات
- backup_key: مفتاح احتياطي للطوارئ
- vpn_keys/: مفاتيح WireGuard لكل سيرفر
## الاستخدام:
ssh -i fortress_master tripzadmin@SERVER_IP -p 2200
## النسخ الاحتياطي:
المفاتيح منسوخة على:
1. USB مشفر (Backup A)
2. KeePassXC Database
3. Cloud مشفر (اختياري)
EOF
2.2 توليد المفتاح الرئيسي
# توليد مفتاح Ed25519 (أقوى وأسرع من RSA)
ssh-keygen -t ed25519 -C "fortress-master-$(date +%Y%m%d)" -f fortress_master -N ""
# ملاحظات:
# ✅ Ed25519: أكثر أماناً وأسرع من RSA 4096
# ✅ لا passphrase: لأن اللابتوب نفسه مشفّر بالكامل
# ✅ Comment يحتوي على التاريخ للتتبع
# نتيجة:
# fortress_master (المفتاح الخاص - لا تشاركه أبداً!)
# fortress_master.pub (المفتاح العام - يُرفع للسيرفرات)
# عرض المفتاح العام
echo "========================================="
echo "🔑 المفتاح العام (لنسخه للسيرفر):"
echo "========================================="
cat fortress_master.pub
echo "========================================="
2.3 توليد مفتاح احتياطي (للطوارئ)
# مفتاح ثانوي للطوارئ (بكلمة مرور!)
ssh-keygen -t ed25519 -C "fortress-backup-$(date +%Y%m%d)" -f backup_key
# هذا المفتاح:
# ✅ يُحفظ في مكان آمن منفصل
# ✅ له passphrase قوية
# ✅ يُستخدم فقط للطوارئ
2.4 حماية المفاتيح
# صلاحيات صارمة
chmod 600 fortress_master backup_key
chmod 644 fortress_master.pub backup_key.pub
# تحقق من الصلاحيات
ls -la | grep fortress
# يجب أن ترى: -rw------- (600)
💾 الخطوة 3: النسخ الاحتياطي الآمن للمفاتيح
3.1 استخدام KeePassXC (موصى به!)
# تثبيت KeePassXC
sudo apt install -y keepassxc
# ✅ الميزات:
# - قاعدة بيانات مشفرة محلياً
# - دعم المفاتيح SSH مباشرة
# - Yubikey support
# - Cross-platform
# الإعداد:
# 1. افتح KeePassXC
# 2. أنشئ قاعدة بيانات جديدة: FORTRESS_KEYS.kdbx
# 3. استخدم كلمة مرور قوية (25+ حرف)
# 4. خزّن المفاتيح الخاصة داخل القاعدة
# 5. خزّن معلومات السيرفرات والـ API Keys
3.2 نسخة USB مشفرة
# تشفير USB stick
# ⚠️ سيحذف كل البيانات على USB!
# 1. التعرف على USB
lsblk
# افرض أنه /dev/sdb
# 2. تشفير USB بـ LUKS
sudo cryptsetup luksFormat /dev/sdb
# أدخل كلمة مرور قوية
# 3. فتح USB المشفر
sudo cryptsetup open /dev/sdb fortress_usb
# 4. إنشاء نظام ملفات
sudo mkfs.ext4 /dev/mapper/fortress_usb
# 5. تحميل ونسخ المفاتيح
sudo mkdir -p /mnt/fortress_backup
sudo mount /dev/mapper/fortress_usb /mnt/fortress_backup
sudo cp -r ~/FORTRESS_KEYS /mnt/fortress_backup/
sudo cp ~/keepassxc.kdbx /mnt/fortress_backup/
# 6. إلغاء التحميل والإغلاق
sudo umount /mnt/fortress_backup
sudo cryptsetup close fortress_usb
# ✅ الآن لديك نسخة احتياطية مشفرة كاملة!
🛡️ الخطوة 4: تأمين اللابتوب نفسه
4.1 تفعيل Firewall
# تكوين UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 192.168.1.0/24 # شبكتك المحلية فقط
sudo ufw enable
# التحقق
sudo ufw status verbose
4.2 تعطيل الخدمات غير الضرورية
# إيقاف SSH server (لا نحتاجه على اللابتوب)
sudo systemctl disable ssh
sudo systemctl stop ssh
# إيقاف الخدمات غير الضرورية
sudo systemctl disable bluetooth
sudo systemctl disable cups # طابعات
sudo systemctl disable avahi-daemon # اكتشاف الشبكة
4.3 Fail2Ban للحماية المحلية
# تثبيت وتفعيل
sudo apt install -y fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# تكوين بسيط
sudo cat > /etc/fail2ban/jail.local <<'EOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
[sshd]
enabled = false
[laptop-login]
enabled = true
filter = systemd-auth
maxretry = 5
EOF
sudo systemctl restart fail2ban
4.4 تفعيل التحديثات التلقائية
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
# اختر YES
📦 الخطوة 5: تثبيت أدوات الإدارة
5.1 CLI Tools للإدارة
# Tmux للجلسات المستمرة
cat > ~/.tmux.conf <<'EOF'
# تحسينات Tmux
set -g mouse on
set -g history-limit 10000
set -g base-index 1
# اختصارات
bind r source-file ~/.tmux.conf
EOF
# SSH Config للسيرفرات
mkdir -p ~/.ssh
cat > ~/.ssh/config <<'EOF'
# تكوين SSH للسيرفرات
Host fortress-*
User tripzadmin
Port 2200
IdentityFile ~/FORTRESS_KEYS/fortress_master
ServerAliveInterval 60
ServerAliveCountMax 3
Compression yes
# مثال:
# Host fortress-web1
# HostName 194.163.xxx.xxx
# LocalForward 8080 localhost:80
# Host fortress-db1
# HostName 194.163.xxx.xxx
EOF
chmod 600 ~/.ssh/config
5.2 Knock Client (للـ Port Knocking)
# تثبيت knockd client
sudo apt install -y knockd
# إنشاء سكريبت knock مخصص
cat > ~/FORTRESS_KEYS/knock.sh <<'EOF'
#!/bin/bash
# 🚪 Port Knocking Script
SERVER_IP=$1
KNOCK_SEQUENCE="7000 8000 9000" # سيتم تحديثها لاحقاً
if [ -z "$SERVER_IP" ]; then
echo "Usage: $0 <server-ip>"
exit 1
fi
echo "🚪 Knocking on $SERVER_IP..."
knock $SERVER_IP $KNOCK_SEQUENCE
echo "✅ Knocked! Wait 5 seconds then SSH..."
sleep 5
ssh -i ~/FORTRESS_KEYS/fortress_master -p 2200 tripzadmin@$SERVER_IP
EOF
chmod +x ~/FORTRESS_KEYS/knock.sh
5.3 تثبيت WireGuard Client
# تثبيت WireGuard
sudo apt install -y wireguard wireguard-tools
# إنشاء مجلد للـ VPN configs
mkdir -p ~/FORTRESS_KEYS/vpn_configs
chmod 700 ~/FORTRESS_KEYS/vpn_configs
# سيتم إنشاء الـ configs في المرحلة 2
🔍 الخطوة 6: أدوات المراقبة والتنبيهات
6.1 تثبيت Telegram CLI (للتنبيهات)
# تثبيت curl و jq
sudo apt install -y curl jq
# إنشاء سكريبت التنبيهات
cat > ~/FORTRESS_KEYS/telegram_notify.sh <<'EOF'
#!/bin/bash
# 📱 Telegram Notification Script
TELEGRAM_BOT_TOKEN="YOUR_BOT_TOKEN" # سيتم تحديثه
TELEGRAM_CHAT_ID="YOUR_CHAT_ID" # سيتم تحديثه
MESSAGE=$1
if [ -z "$MESSAGE" ]; then
echo "Usage: $0 'message'"
exit 1
fi
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-d chat_id="${TELEGRAM_CHAT_ID}" \
-d text="🛡️ FORTRESS ALERT: $MESSAGE" \
-d parse_mode="HTML" > /dev/null
echo "✅ Notification sent!"
EOF
chmod +x ~/FORTRESS_KEYS/telegram_notify.sh
6.2 إعداد Telegram Bot
📱 الخطوات اليدوية:
1. افتح Telegram وابحث عن: @BotFather
2. أرسل: /newbot
3. اختر اسم للبوت: TRIPZ Fortress Alert Bot
4. اختر username: tripz_fortress_bot
5. احفظ الـ TOKEN المعطى
6. للحصول على Chat ID:
- ابحث عن: @userinfobot
- أرسله أي رسالة
- احفظ الـ ID المعطى
7. حدّث السكريبت:
vim ~/FORTRESS_KEYS/telegram_notify.sh
# ضع TOKEN و CHAT_ID
8. اختبر:
~/FORTRESS_KEYS/telegram_notify.sh "Test Alert!"
📝 الخطوة 7: توثيق كامل
7.1 إنشاء ملف المعلومات
cat > ~/FORTRESS_KEYS/MASTER_INFO.txt <<EOF
═══════════════════════════════════════════
🔐 TRIPZ FORTRESS - معلومات اللابتوب الرئيسي
═══════════════════════════════════════════
تاريخ الإعداد: $(date)
النظام: $(lsb_release -d | cut -f2)
المستخدم: $(whoami)
🔑 المفاتيح المتوفرة:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. fortress_master (المفتاح الرئيسي)
- النوع: Ed25519
- Fingerprint: $(ssh-keygen -lf fortress_master.pub | awk '{print $2}')
2. backup_key (مفتاح احتياطي)
- النوع: Ed25519
- Fingerprint: $(ssh-keygen -lf backup_key.pub | awk '{print $2}')
📦 النسخ الاحتياطية:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ KeePassXC: ~/keepassxc.kdbx
✅ USB مشفر: تحقق من توفره
✅ Cloud: (اختياري)
🛠️ الأدوات المثبتة:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ SSH Client
✅ WireGuard
✅ Knock Client
✅ Telegram CLI
✅ Tmux
✅ UFW Firewall
✅ Fail2Ban
📱 التنبيهات:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Telegram Bot: @tripz_fortress_bot
Chat ID: [محدّث في السكريبت]
⚠️ ملاحظات أمنية:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. القرص الصلب مشفر بالكامل (LUKS)
2. المفاتيح الخاصة لا تغادر هذا الجهاز
3. نسخ احتياطية دورية على USB مشفر
4. لا ترسل المفاتيح الخاصة عبر الإنترنت!
5. استخدم VPN عند الاتصال من شبكات عامة
📞 الدعم:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
https://tripz-egypt.com
[email protected]
═══════════════════════════════════════════
EOF
# عرض الملف
cat ~/FORTRESS_KEYS/MASTER_INFO.txt
✅ نقاط التحقق النهائية
# سكريبت فحص شامل
cat > ~/FORTRESS_KEYS/check_laptop.sh <<'EOF'
#!/bin/bash
echo "🔍 فحص جاهزية اللابتوب..."
echo "══════════════════════════════════"
# 1. المفاتيح
echo "🔑 المفاتيح:"
if [ -f ~/FORTRESS_KEYS/fortress_master ]; then
echo " ✅ fortress_master موجود"
else
echo " ❌ fortress_master مفقود!"
fi
if [ -f ~/FORTRESS_KEYS/backup_key ]; then
echo " ✅ backup_key موجود"
else
echo " ❌ backup_key مفقود!"
fi
# 2. الصلاحيات
echo ""
echo "🔒 الصلاحيات:"
PERMS=$(stat -c %a ~/FORTRESS_KEYS/fortress_master)
if [ "$PERMS" == "600" ]; then
echo " ✅ صلاحيات المفاتيح صحيحة"
else
echo " ⚠️ صلاحيات المفاتيح: $PERMS (يجب 600)"
fi
# 3. الأدوات
echo ""
echo "🛠️ الأدوات:"
command -v ssh >/dev/null 2>&1 && echo " ✅ SSH Client" || echo " ❌ SSH Client"
command -v wg >/dev/null 2>&1 && echo " ✅ WireGuard" || echo " ❌ WireGuard"
command -v knock >/dev/null 2>&1 && echo " ✅ Knock" || echo " ❌ Knock"
command -v tmux >/dev/null 2>&1 && echo " ✅ Tmux" || echo " ❌ Tmux"
# 4. Firewall
echo ""
echo "🛡️ الحماية:"
sudo ufw status | grep -q "Status: active" && echo " ✅ UFW نشط" || echo " ⚠️ UFW غير نشط"
systemctl is-active --quiet fail2ban && echo " ✅ Fail2Ban نشط" || echo " ⚠️ Fail2Ban غير نشط"
# 5. النسخ الاحتياطية
echo ""
echo "💾 النسخ الاحتياطية:"
if [ -f ~/keepassxc.kdbx ]; then
echo " ✅ KeePassXC Database موجود"
else
echo " ⚠️ KeePassXC Database غير موجود"
fi
echo ""
echo "══════════════════════════════════"
echo "✅ الفحص مكتمل!"
EOF
chmod +x ~/FORTRESS_KEYS/check_laptop.sh
# تشغيل الفحص
~/FORTRESS_KEYS/check_laptop.sh
🎯 الخطوة التالية
بعد إتمام هذه المرحلة بنجاح، انتقل إلى: 📄 PHASE_2_SERVER_HARDENING.md
🆘 استكشاف الأخطاء
مشكلة: صلاحيات المفاتيح خاطئة
chmod 600 ~/FORTRESS_KEYS/fortress_master
chmod 600 ~/FORTRESS_KEYS/backup_key
مشكلة: SSH لا يقبل المفتاح
# تأكد من fingerprint
ssh-keygen -lf ~/FORTRESS_KEYS/fortress_master.pub
# تأكد من تنسيق المفتاح
head -1 ~/FORTRESS_KEYS/fortress_master.pub
# يجب أن يبدأ بـ: ssh-ed25519 AAAA...
مشكلة: Telegram Bot لا يعمل
# اختبار يدوي
curl "https://api.telegram.org/bot<TOKEN>/getMe"
# يجب أن ترى معلومات البوت
📚 مراجع مفيدة
- SSH Key Management: https://www.ssh.com/academy/ssh/keygen
- KeePassXC Guide: https://keepassxc.org/docs/
- Ubuntu Security: https://ubuntu.com/security
- WireGuard Setup: https://www.wireguard.com/quickstart/
═══════════════════════════════════════════ ✅ المرحلة 1 مكتملة - جاهز للمرحلة 2! ═══════════════════════════════════════════