558 lines
15 KiB
Markdown
558 lines
15 KiB
Markdown
# 🔐 المرحلة 1: تأمين وإعداد اللابتوب (Ubuntu)
|
|
|
|
## 📋 نظرة عامة
|
|
هذه المرحلة تركّز على تحويل اللابتوب إلى **محطة إدارة آمنة** لإدارة السيرفرات.
|
|
|
|
---
|
|
|
|
## 🛠️ الخطوة 1: تثبيت Ubuntu بشكل آمن
|
|
|
|
### 1.1 التثبيت الأساسي
|
|
```bash
|
|
# أثناء التثبيت:
|
|
# ✅ فعّل Full Disk Encryption (LUKS)
|
|
# ✅ استخدم كلمة مرور قوية للتشفير (20+ حرف)
|
|
# ✅ اختر "Minimal Installation"
|
|
# ✅ فعّل التحديثات التلقائية
|
|
```
|
|
|
|
### 1.2 بعد التثبيت مباشرة
|
|
```bash
|
|
# تحديث النظام
|
|
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 إنشاء مجلد آمن للمفاتيح
|
|
```bash
|
|
# إنشاء مجلد مشفر للمفاتيح
|
|
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 توليد المفتاح الرئيسي
|
|
```bash
|
|
# توليد مفتاح 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 توليد مفتاح احتياطي (للطوارئ)
|
|
```bash
|
|
# مفتاح ثانوي للطوارئ (بكلمة مرور!)
|
|
ssh-keygen -t ed25519 -C "fortress-backup-$(date +%Y%m%d)" -f backup_key
|
|
|
|
# هذا المفتاح:
|
|
# ✅ يُحفظ في مكان آمن منفصل
|
|
# ✅ له passphrase قوية
|
|
# ✅ يُستخدم فقط للطوارئ
|
|
```
|
|
|
|
### 2.4 حماية المفاتيح
|
|
```bash
|
|
# صلاحيات صارمة
|
|
chmod 600 fortress_master backup_key
|
|
chmod 644 fortress_master.pub backup_key.pub
|
|
|
|
# تحقق من الصلاحيات
|
|
ls -la | grep fortress
|
|
# يجب أن ترى: -rw------- (600)
|
|
```
|
|
|
|
---
|
|
|
|
## 💾 الخطوة 3: النسخ الاحتياطي الآمن للمفاتيح
|
|
|
|
### 3.1 استخدام KeePassXC (موصى به!)
|
|
```bash
|
|
# تثبيت 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 مشفرة
|
|
```bash
|
|
# تشفير 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
|
|
```bash
|
|
# تكوين 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 تعطيل الخدمات غير الضرورية
|
|
```bash
|
|
# إيقاف 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 للحماية المحلية
|
|
```bash
|
|
# تثبيت وتفعيل
|
|
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 تفعيل التحديثات التلقائية
|
|
```bash
|
|
sudo apt install -y unattended-upgrades
|
|
sudo dpkg-reconfigure -plow unattended-upgrades
|
|
# اختر YES
|
|
```
|
|
|
|
---
|
|
|
|
## 📦 الخطوة 5: تثبيت أدوات الإدارة
|
|
|
|
### 5.1 CLI Tools للإدارة
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
# تثبيت 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
|
|
```bash
|
|
# تثبيت 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 (للتنبيهات)
|
|
```bash
|
|
# تثبيت 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 إنشاء ملف المعلومات
|
|
```bash
|
|
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
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ نقاط التحقق النهائية
|
|
|
|
```bash
|
|
# سكريبت فحص شامل
|
|
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**
|
|
|
|
---
|
|
|
|
## 🆘 استكشاف الأخطاء
|
|
|
|
### مشكلة: صلاحيات المفاتيح خاطئة
|
|
```bash
|
|
chmod 600 ~/FORTRESS_KEYS/fortress_master
|
|
chmod 600 ~/FORTRESS_KEYS/backup_key
|
|
```
|
|
|
|
### مشكلة: SSH لا يقبل المفتاح
|
|
```bash
|
|
# تأكد من fingerprint
|
|
ssh-keygen -lf ~/FORTRESS_KEYS/fortress_master.pub
|
|
|
|
# تأكد من تنسيق المفتاح
|
|
head -1 ~/FORTRESS_KEYS/fortress_master.pub
|
|
# يجب أن يبدأ بـ: ssh-ed25519 AAAA...
|
|
```
|
|
|
|
### مشكلة: Telegram Bot لا يعمل
|
|
```bash
|
|
# اختبار يدوي
|
|
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!
|
|
═══════════════════════════════════════════
|