2026-02-05/1
This commit is contained in:
557
PHASE_1_LAPTOP_SETUP.md
Normal file
557
PHASE_1_LAPTOP_SETUP.md
Normal file
@@ -0,0 +1,557 @@
|
||||
# 🔐 المرحلة 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!
|
||||
═══════════════════════════════════════════
|
||||
Reference in New Issue
Block a user