ما هو متخصص الأمن السيبراني؟

حامي الأنظمة والشبكات الرقمية

متخصص الأمن السيبراني يركز على حماية الأنظمة والشبكات من الهجمات باستخدام أدوات مثل OpenSSL و Wireshark، مع التركيز على التشفير، جدران الحماية، والاستجابة للحوادث.

الميزات الرئيسية:

حماية الأنظمة

منع الهجمات على الأنظمة والشبكات

التشفير

تأمين البيانات والتواصل

جدران الحماية

حماية الشبكات من التهديدات

تحليل التهديدات

اكتشاف ومنع الهجمات

اللغات والأدوات المستخدمة

Python

اللغة الأساسية للتعامل مع البيانات وتحليل النماذج

Bash/Shell Scripting

لأتمتة العمليات في أنظمة Linux/Unix

JSON/YAML

تكوين ملفات النماذج والمعلمات

OpenSSL

لتشفير البيانات وإدارة الشهادات الرقمية

Wireshark

تحليل حركة مرور الشبكة

Splunk

تحليل بيانات السجلات بشكل متقدم

مهارات متخصص الأمن السيبراني

1

التشفير

فهم التشفير المتناظر وغير المتناظر

2

جدران الحماية

إعداد وإدارة قواعد جدار الحماية

3

الاستجابة للحوادث

التعامل مع الحوادث السيبرانية

4

تحليل التهديدات

اكتشاف التهديدات وتحليلها

5

تحليل الشبكات

مراقبة وتحليل حركة الشبكة

6

أدوات الحماية

Snort, pfSense, ELK Stack

خارطة التعلم خطوة بخطوة

1

الخطوة 1: تعلم التشفير

التشفير هو علم تشفير البيانات لحمايتها من الوصول غير المصرح به. يتضمن تقنيات مثل التشفير المتناظر والتشفير غير المتناظر، والتواقيع الرقمية.

الأهمية:

الأساس لفهم كيفية حماية البيانات أثناء النقل والتخزين

الأدوات:

OpenSSL، GnuPG

أمثلة OpenSSL:

#!/bin/bash

# ===== التشفير باستخدام OpenSSL =====

echo "🔐 برنامج إدارة التشفير باستخدام OpenSSL"
echo "======================================="

# متغيرات التكوين
KEY_FILE="aes_key.bin"
IV_FILE="iv.bin"
INPUT_FILE="secret_data.txt"
ENCRYPTED_FILE="encrypted_data.enc"
DECRYPTED_FILE="decrypted_data.txt"

# 1. إنشاء مفتاح AES-256 عشوائي
echo -e "\n🔑 إنشاء مفتاح AES-256:"
openssl rand -hex 32 > $KEY_FILE
echo "✅ تم إنشاء المفتاح في: $KEY_FILE"

# 2. إنشاء IV (Initialization Vector)
echo -e "\n🔄 إنشاء متجه التهيئة (IV):"
openssl rand -hex 16 > $IV_FILE
echo "✅ تم إنشاء IV في: $IV_FILE"

# 3. إنشاء ملف بيانات سري (للتجربة)
echo -e "\n📝 إنشاء بيانات سرية للتجربة:"
cat > $INPUT_FILE << EOF
اسم المستخدم: admin
كلمة المرور: P@ssw0rd!2024
البيانات السرية: معلومات حساسة للشركة
رقم الحساب: 1234567890
التاريخ: $(date)
EOF
echo "✅ تم إنشاء البيانات في: $INPUT_FILE"

# 4. تشفير البيانات باستخدام AES-256-CBC
echo -e "\n🔒 تشفير البيانات:"
openssl enc -aes-256-cbc \
    -in $INPUT_FILE \
    -out $ENCRYPTED_FILE \
    -K $(cat $KEY_FILE) \
    -iv $(cat $IV_FILE) \
    -base64

echo "✅ تم تشفير البيانات في: $ENCRYPTED_FILE"

# 5. عرض البيانات المشفرة
echo -e "\n📄 البيانات المشفرة (Base64):"
echo "----------------------------------------"
head -c 200 $ENCRYPTED_FILE
echo -e "\n...\n----------------------------------------"

# 6. فك التشفير
echo -e "\n🔓 فك تشفير البيانات:"
openssl enc -d -aes-256-cbc \
    -in $ENCRYPTED_FILE \
    -out $DECRYPTED_FILE \
    -K $(cat $KEY_FILE) \
    -iv $(cat $IV_FILE) \
    -base64

echo "✅ تم فك التشفير في: $DECRYPTED_FILE"

# 7. التحقق من تطابق البيانات
echo -e "\n✅ التحقق من تطابق البيانات الأصلية والمشفرة:"
if diff $INPUT_FILE $DECRYPTED_FILE &>/dev/null; then
    echo "🎉 البيانات الأصلية والمشفرة متطابقة!"
else
    echo "⚠️ هناك خطأ في عملية التشفير/فك التشفير"
fi

# 8. إنشاء شهادة رقمية ذاتية التوقيع
echo -e "\n📜 إنشاء شهادة رقمية:"
openssl req -x509 -newkey rsa:2048 \
    -keyout private_key.pem \
    -out certificate.pem \
    -days 365 \
    -nodes \
    -subj "/C=SA/ST=Riyadh/L=Riyadh/O=MyCompany/CN=localhost"

echo "✅ تم إنشاء الشهادة في: certificate.pem"

# 9. التوقيع الرقمي
echo -e "\n✍️ إنشاء توقيع رقمي:"
openssl dgst -sha256 -sign private_key.pem \
    -out signature.bin \
    $INPUT_FILE

echo "✅ تم إنشاء التوقيع في: signature.bin"

# 10. التحقق من التوقيع
echo -e "\n🔍 التحقق من التوقيع الرقمي:"
openssl dgst -sha256 -verify <(openssl rsa -pubout -in private_key.pem) \
    -signature signature.bin \
    $INPUT_FILE

echo -e "\n📊 ملخص عمليات التشفير:"
echo "======================================="
echo "📁 الملفات المنشأة:"
ls -la | grep -E "\.(bin|enc|pem|txt)$"
echo ""
echo "🗝️  معلومات المفاتيح:"
echo "   - حجم مفتاح AES: 256 بت"
echo "   - حجم مفتاح RSA: 2048 بت"
echo "   - خوارزمية التشفير: AES-256-CBC"
echo "   - خوارزمية الهاش: SHA-256"
echo ""
echo "💡 نصائح أمنية:"
echo "   1. احفظ المفاتيح في مكان آمن"
echo "   2. استخدم كلمات مرور قوية"
echo "   3. تحديث المفاتيح بشكل دوري"
echo "   4. استخدم TLS/SSL للاتصالات"
echo "   5. احفظ نسخ احتياطية مشفرة"

# 11. تنظيف (اختياري)
read -p "🗑️  هل تريد حذف الملفات المؤقتة؟ (y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    rm -f $KEY_FILE $IV_FILE $ENCRYPTED_FILE $DECRYPTED_FILE signature.bin
    echo "✅ تم تنظيف الملفات المؤقتة"
fi

echo -e "\n🏁 انتهى برنامج التشفير بنجاح!"
                        
2

الخطوة 2: تعلم إعداد جدار الحماية

إعداد جدار الحماية هو عملية إعداد قواعد جدار الحماية لحماية الشبكات والأجهزة من الوصول غير المصرح به.

الأهمية:

ضروري لفهم كيفية تأمين الشبكات ومنع الهجمات السيبرانية

الأدوات:

iptables، pfSense

أمثلة iptables:

#!/bin/bash

# ===== برنامج إدارة جدار الحماية باستخدام iptables =====

echo "🛡️  نظام إدارة جدار الحماية iptables"
echo "=========================================="

# الألوان للخروج
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# متغيرات التكوين
LOG_DIR="/var/log/iptables"
BACKUP_DIR="/etc/iptables/backups"
RULES_FILE="/etc/iptables/rules.v4"

# تأكد من وجود المجلدات
mkdir -p $LOG_DIR $BACKUP_DIR

# دالة لعرض الحالة
show_status() {
    echo -e "\n📊 حالة جدار الحماية الحالية:"
    echo "----------------------------------------"
    
    # عرض السياسات الافتراضية
    echo -e "\n🎯 السياسات الافتراضية:"
    echo "INPUT: $(iptables -L INPUT -n | grep policy | awk '{print $4}')"
    echo "FORWARD: $(iptables -L FORWARD -n | grep policy | awk '{print $4}')"
    echo "OUTPUT: $(iptables -L OUTPUT -n | grep policy | awk '{print $4}')"
    
    # عرض عدد القواعد
    echo -e "\n📋 عدد القواعد:"
    echo "INPUT: $(iptables -L INPUT -n | grep -c '^[A-Z]')"
    echo "FORWARD: $(iptables -L FORWARD -n | grep -c '^[A-Z]')"
    echo "OUTPUT: $(iptables -L OUTPUT -n | grep -c '^[A-Z]')"
    
    # عرض المنافذ المفتوحة
    echo -e "\n🔓 المنافذ المفتوحة:"
    iptables -L INPUT -n | grep ACCEPT | grep -E "dpt:[0-9]+" | sort -u | head -10
}

# دالة للنسخ الاحتياطي
backup_rules() {
    local timestamp=$(date +"%Y%m%d_%H%M%S")
    local backup_file="$BACKUP_DIR/iptables_backup_$timestamp.rules"
    
    echo -e "\n💾 إنشاء نسخة احتياطية..."
    iptables-save > $backup_file
    echo -e "${GREEN}✅ تم حفظ النسخة الاحتياطية في: $backup_file${NC}"
}

# دالة لاستعادة القواعد
restore_rules() {
    local latest_backup=$(ls -t $BACKUP_DIR/*.rules 2>/dev/null | head -1)
    
    if [ -z "$latest_backup" ]; then
        echo -e "${RED}❌ لا توجد نسخ احتياطية${NC}"
        return 1
    fi
    
    echo -e "\n🔄 استعادة القواعد من: $latest_backup"
    iptables-restore < $latest_backup
    echo -e "${GREEN}✅ تم استعادة القواعد${NC}"
}

# دالة لتفريغ جميع القواعد
flush_all() {
    echo -e "\n🗑️  تفريغ جميع القواعد..."
    iptables -F
    iptables -X
    iptables -t nat -F
    iptables -t nat -X
    iptables -t mangle -F
    iptables -t mangle -X
    echo -e "${GREEN}✅ تم تفريغ جميع القواعد${NC}"
}

# دالة لإعداد سياسات افتراضية آمنة
set_default_policies() {
    echo -e "\n⚙️  إعداد السياسات الافتراضية..."
    
    # رفض كل شيء ثم السماح لما نحتاجه
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    
    # السماح بالاتصال على المنفذ المحلي
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    
    # السماح بالاتصالات القائمة
    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    echo -e "${GREEN}✅ تم إعداد السياسات الافتراضية${NC}"
}

# دالة لإضافة قواعد الخدمات الأساسية
add_basic_services() {
    echo -e "\n🌐 إضافة قواعد الخدمات الأساسية..."
    
    # SSH (منفذ 22)
    read -p "🔧 هل تريد فتح منفذ SSH (22)؟ (y/n): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        iptables -A INPUT -p tcp --dport 22 -j ACCEPT
        echo -e "${GREEN}✅ تم فتح منفذ SSH (22)${NC}"
    fi
    
    # HTTP (منفذ 80)
    read -p "🔧 هل تريد فتح منفذ HTTP (80)؟ (y/n): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        iptables -A INPUT -p tcp --dport 80 -j ACCEPT
        echo -e "${GREEN}✅ تم فتح منفذ HTTP (80)${NC}"
    fi
    
    # HTTPS (منفذ 443)
    read -p "🔧 هل تريد فتح منفذ HTTPS (443)؟ (y/n): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        iptables -A INPUT -p tcp --dport 443 -j ACCEPT
        echo -e "${GREEN}✅ تم فتح منفذ HTTPS (443)${NC}"
    fi
    
    # DNS (منفذ 53)
    read -p "🔧 هل تريد فتح منفذ DNS (53)؟ (y/n): " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        iptables -A INPUT -p udp --dport 53 -j ACCEPT
        iptables -A INPUT -p tcp --dport 53 -j ACCEPT
        echo -e "${GREEN}✅ تم فتح منفذ DNS (53)${NC}"
    fi
}

# دالة لحماية من هجمات معينة
add_security_rules() {
    echo -e "\n🛡️  إضافة قواعد حماية متقدمة..."
    
    # حماية من Ping Flood
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    
    # حماية من SYN Flood
    iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
    iptables -A INPUT -p tcp --syn -j DROP
    
    # منع IP Spoofing
    iptables -A INPUT -s 10.0.0.0/8 -j DROP
    iptables -A INPUT -s 172.16.0.0/12 -j DROP
    iptables -A INPUT -s 192.168.0.0/16 -j DROP
    iptables -A INPUT -s 127.0.0.0/8 -j DROP
    
    # منع هجمات Port Scanning
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
    iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
    
    echo -e "${GREEN}✅ تم إضافة قواعد الحماية${NC}"
}

# دالة لحظر IP معين
block_ip() {
    read -p "🚫 أدخل عنوان IP للحظر: " ip_address
    
    if [[ $ip_address =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
        iptables -A INPUT -s $ip_address -j DROP
        echo -e "${GREEN}✅ تم حظر IP: $ip_address${NC}"
        
        # تسجيل الحظر
        echo "$(date): Blocked IP: $ip_address" >> $LOG_DIR/blocked_ips.log
    else
        echo -e "${RED}❌ عنوان IP غير صالح${NC}"
    fi
}

# دالة لحظر منفذ معين
block_port() {
    read -p "🚫 أدخل رقم المنفذ للحظر: " port_number
    
    if [[ $port_number =~ ^[0-9]+$ ]] && [ $port_number -ge 1 ] && [ $port_number -le 65535 ]; then
        iptables -A INPUT -p tcp --dport $port_number -j DROP
        iptables -A INPUT -p udp --dport $port_number -j DROP
        echo -e "${GREEN}✅ تم حظر المنفذ: $port_number${NC}"
    else
        echo -e "${RED}❌ رقم المنفذ غير صالح${NC}"
    fi
}

# دالة لحفظ القواعد الدائمة
save_rules() {
    echo -e "\n💾 حفظ القواعد بشكل دائم..."
    
    # حفظ القواعد الحالية
    iptables-save > $RULES_FILE
    
    # تحميل القواعد عند بدء التشغيل (لأنظمة Systemd)
    if command -v iptables-persistent &>/dev/null; then
        netfilter-persistent save
    fi
    
    echo -e "${GREEN}✅ تم حفظ القواعد في: $RULES_FILE${NC}"
    echo "📝 سيتم تحميل القواعد تلقائياً عند إعادة التشغيل"
}

# القائمة الرئيسية
while true; do
    echo -e "\n${YELLOW}===== القائمة الرئيسية =====${NC}"
    echo "1. عرض حالة جدار الحماية"
    echo "2. نسخ احتياطي للقواعد الحالية"
    echo "3. استعادة القواعد من نسخة احتياطية"
    echo "4. تفريغ جميع القواعد"
    echo "5. إعداد سياسات افتراضية آمنة"
    echo "6. إضافة قواعد الخدمات الأساسية"
    echo "7. إضافة قواعد حماية متقدمة"
    echo "8. حظر عنوان IP"
    echo "9. حظر منفذ"
    echo "10. حفظ القواعد الدائمة"
    echo "0. الخروج"
    
    read -p "🔧 اختر خياراً (0-10): " choice
    
    case $choice in
        1) show_status ;;
        2) backup_rules ;;
        3) restore_rules ;;
        4) flush_all ;;
        5) set_default_policies ;;
        6) add_basic_services ;;
        7) add_security_rules ;;
        8) block_ip ;;
        9) block_port ;;
        10) save_rules ;;
        0) 
            echo -e "\n${GREEN}🚪 مع السلامة!${NC}"
            break
            ;;
        *) 
            echo -e "${RED}❌ خيار غير صالح${NC}"
            ;;
    esac
done

echo -e "\n${GREEN}🏁 انتهى برنامج إدارة جدار الحماية${NC}"
                        
3

الخطوة 3: تعلم الاستجابة للحوادث

الاستجابة للحوادث هو عملية الاستجابة للحوادث السيبرانية مثل الهجمات أو الاختراقات. يشمل تحديد الحادث، احتوائه، واستعادة النظام.

الأهمية:

ضروري لفهم كيفية التعامل مع الحوادث السيبرانية بشكل فعال

الأدوات:

Splunk، ELK Stack

أمثلة Splunk:

#!/bin/bash

# ===== نظام الاستجابة للحوادث باستخدام Splunk =====

echo "🚨 نظام إدارة ومراقبة الحوادث الأمنية"
echo "=========================================="

# متغيرات التكوين
INCIDENT_DIR="/var/log/incidents"
REPORT_DIR="/var/reports/security"
BACKUP_DIR="/backup/incidents"
LOG_SOURCES=("/var/log/auth.log" "/var/log/syslog" "/var/log/secure")

# إنشاء المجلدات المطلوبة
mkdir -p $INCIDENT_DIR $REPORT_DIR $BACKUP_DIR

# دالة لتحليل سجلات المصادقة
analyze_auth_logs() {
    echo -e "\n🔍 تحليل سجلات المصادقة..."
    
    local auth_log="/var/log/auth.log"
    local report_file="$REPORT_DIR/auth_analysis_$(date +%Y%m%d).txt"
    
    if [ ! -f "$auth_log" ]; then
        echo "❌ ملف السجل غير موجود: $auth_log"
        return 1
    fi
    
    echo "📊 تحليل سجلات المصادقة:" > $report_file
    echo "تاريخ التقرير: $(date)" >> $report_file
    echo "========================================" >> $report_file
    
    # 1. محاولات تسجيل فاشلة
    echo -e "\n🔴 محاولات تسجيل فاشلة:" >> $report_file
    grep "Failed password" $auth_log | tail -20 >> $report_file
    
    local failed_attempts=$(grep -c "Failed password" $auth_log)
    echo "📈 إجمالي محاولات الفشل: $failed_attempts" >> $report_file
    
    # 2. عمليات تسجيل ناجحة
    echo -e "\n🟢 عمليات تسجيل ناجحة:" >> $report_file
    grep "Accepted password" $auth_log | tail -20 >> $report_file
    
    # 3. حسابات غير موجودة
    echo -e "\n⚠️  محاولات دخول بحسابات غير موجودة:" >> $report_file
    grep "invalid user" $auth_log | tail -20 >> $report_file
    
    # 4. عناوين IP مشبوهة
    echo -e "\n🌍 عناوين IP المشبوهة (أكثر من 10 محاولات فاشلة):" >> $report_file
    grep "Failed password" $auth_log | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | \
        sort | uniq -c | sort -rn | head -10 >> $report_file
    
    echo -e "✅ تم إنشاء التقرير في: $report_file"
}

# دالة للكشف عن الهجمات الشائعة
detect_common_attacks() {
    echo -e "\n🎯 الكشف عن الهجمات الشائعة..."
    
    local detection_file="$INCIDENT_DIR/detections_$(date +%Y%m%d_%H%M%S).log"
    
    echo "🔍 نتائج الكشف عن الهجمات:" > $detection_file
    echo "الوقت: $(date)" >> $detection_file
    echo "========================================" >> $detection_file
    
    # 1. كشف هجمات Brute Force
    echo -e "\n💥 كشف هجمات Brute Force:" >> $detection_file
    local brute_force_ips=$(grep "Failed password" /var/log/auth.log 2>/dev/null | \
        grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | \
        sort | uniq -c | sort -rn | awk '$1 > 10')
    
    if [ -n "$brute_force_ips" ]; then
        echo "🚨 تم اكتشاف هجمات Brute Force:" >> $detection_file
        echo "$brute_force_ips" >> $detection_file
    else
        echo "✅ لا توجد هجمات Brute Force مكتشفة" >> $detection_file
    fi
    
    # 2. كشف Port Scanning
    echo -e "\n🔎 كشف محاولات Port Scanning:" >> $detection_file
    local port_scan_detected=$(grep -i "port scan" /var/log/syslog 2>/dev/null | tail -5)
    
    if [ -n "$port_scan_detected" ]; then
        echo "🚨 تم اكتشاف محاولات Port Scanning:" >> $detection_file
        echo "$port_scan_detected" >> $detection_file
    else
        echo "✅ لا توجد محاولات Port Scanning مكتشفة" >> $detection_file
    fi
    
    # 3. كشف هجمات SQL Injection
    echo -e "\n💉 كشف هجمات SQL Injection:" >> $detection_file
    local sql_injection_detected=$(grep -i "sql\|union\|select\|insert" /var/log/apache2/access.log 2>/dev/null | \
        grep -i -E "('|--|#|;)" | tail -5)
    
    if [ -n "$sql_injection_detected" ]; then
        echo "🚨 تم اكتشاف هجمات SQL Injection محتملة:" >> $detection_file
        echo "$sql_injection_detected" >> $detection_file
    else
        echo "✅ لا توجد هجمات SQL Injection مكتشفة" >> $detection_file
    fi
    
    # 4. كشف هجمات XSS
    echo -e "\n🕷️  كشف هجمات XSS:" >> $detection_file
    local xss_detected=$(grep -i "