تأمين السيرفر: الأساسيات التي لا غنى عنها
الخادم المتصل بالإنترنت يتعرض يومياً لآلاف الهجمات الآلية (Bots) التي تحاول التخمين العشوائي لكلمات المرور. إذا لم تقم بتأمين الخادم، فمسألة اختراقه هي مسألة وقت فقط.
1. إعداد الجدار الناري UFW (Uncomplicated Firewall)
الجدار الناري هو حارس البوابة؛ يقوم بإغلاق جميع المنافذ ويفتح فقط ما تسمح به. لتطبيقات الويب، نحن نحتاج فقط لمنفذ الويب (80 HTTP و 443 HTTPS) ومنفذ التحكم (22 SSH).
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
بهذه الأوامر البسيطة، تم عزل السيرفر عن أي خدمات أخرى قد تعمل في الخلفية ويمكن استغلالها.
2. تعطيل الدخول بكلمة المرور واستخدام مفاتيح SSH
كلمات المرور يمكن تخمينها (Brute-Force Attack)، لكن مفاتيح التشفير مستحيل كسرها بالتقنيات الحالية.
قم بتوليد مفتاح على جهازك الشخصي، وارفعه للسيرفر، ثم قم بتعطيل الدخول بكلمات المرور تماماً عن طريق تعديل ملف /etc/ssh/sshd_config:
# ابحث عن السطر التالي وقم بتغييره إلى no
PasswordAuthentication no
ثم أعد تشغيل خدمة الـ SSH: sudo systemctl restart ssh.
3. الحماية ببرنامج Fail2Ban
ماذا لو حاول أحدهم مهاجمة السيرفر آلاف المرات؟ برنامج Fail2Ban يقوم بمراقبة سجلات السيرفر، وإذا لاحظ محاولات فاشلة متكررة (مثلاً 5 محاولات لدخول SSH بكلمات مرور خاطئة)، يقوم بحظر عنوان الـ IP الخاص بالمهاجم تلقائياً.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
أتمتة المهام (Cron Jobs)
كمدير سيرفر، لا يمكنك الدخول يومياً لتنفيذ مهام مكررة مثل عمل نسخ احتياطي أو تنظيف السجلات. نظام Cron في لينكس يقوم بتنفيذ السكربتات نيابة عنك في أوقات محددة.
كيفية كتابة مهمة مجدولة
افتح محرر المهام المجدولة بكتابة الأمر:
crontab -e
تتكون صيغة الـ Cron من 5 حقول تحدد الوقت، متبوعة بالأمر المراد تنفيذه:
* * * * * command_to_execute
- - - - -
| | | | |
| | | | +----- يوم في الأسبوع (0 - 7) (الأحد=0 أو 7)
| | | +------- الشهر (1 - 12)
| | +--------- اليوم من الشهر (1 - 31)
| +----------- الساعة (0 - 23)
+------------- الدقيقة (0 - 59)
أمثلة عملية لمطوري الويب
1. تشغيل مجدول مهام Laravel (Laravel Scheduler) كل دقيقة:
* * * * * cd /var/www/my-laravel-app && php artisan schedule:run >> /dev/null 2>&1
2. أخذ نسخة احتياطية يومية لقاعدة البيانات عند الساعة 3 صباحاً:
0 3 * * * mysqldump -u root -p'PASSWORD' my_database > /backups/db_backup_$(date +\%F).sql
بهذا نكون قد غطينا أهم الجوانب العملية لاحتراف إدارة سيرفرات لينكس، بدءاً من هيكلة الملفات والصلاحيات، مروراً بتهيئة بيئة الاستضافة لـ Laravel، وصولاً لأعلى درجات الأمان والأتمتة.
💬 التعليقات
0 تعليقات