متخصص الأمن السيبراني
ما هو متخصص الأمن السيبراني؟
حامي الأنظمة والشبكات الرقمية
متخصص الأمن السيبراني يركز على حماية الأنظمة والشبكات من الهجمات باستخدام أدوات مثل OpenSSL و Wireshark، مع التركيز على التشفير، جدران الحماية، والاستجابة للحوادث.
الميزات الرئيسية:
حماية الأنظمة
منع الهجمات على الأنظمة والشبكات
التشفير
تأمين البيانات والتواصل
جدران الحماية
حماية الشبكات من التهديدات
تحليل التهديدات
اكتشاف ومنع الهجمات
اللغات والأدوات المستخدمة
Python
اللغة الأساسية للتعامل مع البيانات وتحليل النماذج
Bash/Shell Scripting
لأتمتة العمليات في أنظمة Linux/Unix
JSON/YAML
تكوين ملفات النماذج والمعلمات
OpenSSL
لتشفير البيانات وإدارة الشهادات الرقمية
Wireshark
تحليل حركة مرور الشبكة
Splunk
تحليل بيانات السجلات بشكل متقدم
مهارات متخصص الأمن السيبراني
التشفير
فهم التشفير المتناظر وغير المتناظر
جدران الحماية
إعداد وإدارة قواعد جدار الحماية
الاستجابة للحوادث
التعامل مع الحوادث السيبرانية
تحليل التهديدات
اكتشاف التهديدات وتحليلها
تحليل الشبكات
مراقبة وتحليل حركة الشبكة
أدوات الحماية
Snort, pfSense, ELK Stack
خارطة التعلم خطوة بخطوة
الخطوة 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: تعلم إعداد جدار الحماية
إعداد جدار الحماية هو عملية إعداد قواعد جدار الحماية لحماية الشبكات والأجهزة من الوصول غير المصرح به.
الأهمية:
ضروري لفهم كيفية تأمين الشبكات ومنع الهجمات السيبرانية
الأدوات:
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: تعلم الاستجابة للحوادث
الاستجابة للحوادث هو عملية الاستجابة للحوادث السيبرانية مثل الهجمات أو الاختراقات. يشمل تحديد الحادث، احتوائه، واستعادة النظام.
الأهمية:
ضروري لفهم كيفية التعامل مع الحوادث السيبرانية بشكل فعال
الأدوات:
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 "