تأمين خادم ويب NGINX على أوبنتو 16.04
يعتبر خادم ويب NGINX واحدًا من أشهر الخوادم في مجال تقديم المواقع الإلكترونية، ويتميز بكفاءته العالية في معالجة عدد كبير من الطلبات في وقت واحد، مما يجعله الخيار المفضل للعديد من المواقع التي تتطلب أداءً عالياً. ومع ذلك، فإن تأمين هذا الخادم على أنظمة مثل أوبنتو 16.04 يعد خطوة أساسية لضمان حماية البيانات وسلامة الأداء. في هذا المقال، سنتناول كيفية تأمين خادم NGINX على أوبنتو 16.04، من خلال مجموعة من الخطوات والإعدادات التي تضمن أمان الخادم وفاعليته.
تحديث النظام
أولى الخطوات في تأمين خادم NGINX على أوبنتو 16.04 هي التأكد من أن النظام محدث بالكامل. إن تحديث النظام لا يقتصر فقط على تحسين الأداء، بل يشمل أيضاً تصحيح الثغرات الأمنية التي قد تكون موجودة في الإصدار الحالي للنظام أو البرمجيات المثبتة عليه.
تحديث النظام:
لتحديث النظام بشكل كامل، قم بتنفيذ الأوامر التالية في الطرفية:
bashsudo apt update sudo apt upgrade sudo apt dist-upgrade sudo apt autoremove
تضمن هذه الأوامر تحديث جميع الحزم المثبتة على النظام إلى أحدث الإصدارات المتاحة.
تثبيت NGINX
إذا لم يكن NGINX مثبتًا على النظام بعد، يمكنك تثبيته باستخدام الأمر التالي:
bashsudo apt install nginx
ستتمكن من التحقق من حالة الخادم بعد التثبيت عبر متصفحك عن طريق الوصول إلى عنوان IP الخاص بالخادم. يجب أن ترى صفحة الترحيب الخاصة بـ NGINX إذا تم التثبيت بنجاح.
تكوين الجدار الناري (Firewall)
تفعيل الجدار الناري يُعد أحد الخطوات الأساسية في تأمين الخوادم، خاصة إذا كانت متصلة بالإنترنت. في أوبنتو 16.04، يمكنك استخدام UFW (Uncomplicated Firewall) للتحكم في وصول البيانات إلى الخادم.
إعداد الجدار الناري:
أولاً، تأكد من أن UFW مثبت ومفعّل:
bashsudo apt install ufw
sudo ufw enable
ثم، قم بتمكين الوصول إلى NGINX عبر UFW. يمكنك السماح بإعدادات الوصول الآمن التي توفرها NGINX على الشكل التالي:
bashsudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
لا تنسى التحقق من حالة الجدار الناري بعد التكوين:
bashsudo ufw status
إعداد HTTPS باستخدام SSL/TLS
من الأمور الحيوية لتأمين خادم NGINX هو استخدام بروتوكول HTTPS. للقيام بذلك، يجب أولاً الحصول على شهادة SSL، والتي يمكن الحصول عليها مجانًا عبر خدمة مثل Let’s Encrypt.
تثبيت Certbot للحصول على شهادة SSL:
أولاً، قم بتثبيت Certbot، وهي أداة لتكوين شهادة SSL من Let’s Encrypt:
bashsudo apt install certbot python-certbot-nginx
ثم، استخدم Certbot للحصول على شهادة SSL وتكوين NGINX لاستخدامها:
bashsudo certbot --nginx
سيطلب منك Certbot بعض المعلومات مثل عنوان البريد الإلكتروني واسم النطاق. بمجرد اكتمال العملية، سيقوم Certbot بتحديث إعدادات NGINX تلقائيًا لاستخدام شهادة SSL.
تجديد الشهادات بشكل تلقائي:
Let’s Encrypt تقدم شهادات صالحة لمدة 90 يومًا فقط، لذا من الضروري تجديد الشهادات بانتظام. يمكنك إعداد تجديد تلقائي باستخدام Cron:
bashsudo crontab -e
أضف السطر التالي لتجديد الشهادات تلقائيًا كل يوم:
bash0 0 * * * certbot renew --quiet
تقوية إعدادات NGINX
من أجل تقوية أمان NGINX، من الضروري تعديل بعض الإعدادات التي يمكن أن تشكل تهديدًا للأمان. تشمل هذه الإعدادات تعطيل بعض البروتوكولات القديمة، وتعزيز التشفير، وتفعيل بعض السياسات الأمنية.
تعطيل بروتوكولات SSL القديمة:
يمكنك تعديل إعدادات NGINX لتفعيل فقط البروتوكولات الحديثة مثل TLS 1.2 و 1.3، بينما تعطيل البروتوكولات القديمة مثل SSLv2 و SSLv3.
افتح ملف إعدادات NGINX الرئيسي:
bashsudo nano /etc/nginx/nginx.conf
أضف أو عدل السطور التالية في القسم http:
nginxssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
تعطيل الوصول إلى الخادم عبر HTTP:
من أجل ضمان استخدام HTTPS فقط، يمكنك فرض إعادة التوجيه من HTTP إلى HTTPS. افتح ملف تكوين الموقع:
bashsudo nano /etc/nginx/sites-available/default
أضف التوجيه التالي:
nginxserver {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
تمكين HSTS (HTTP Strict Transport Security):
HSTS يساعد على حماية الخادم ضد هجمات MITM (Man-in-the-Middle). يمكنك تفعيل HSTS في NGINX بإضافة السطر التالي في قسم server داخل ملف التكوين:
nginxadd_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
حماية الخادم من الهجمات DDOS:
أحد أنواع الهجمات التي يمكن أن تواجهها الخوادم هو هجوم DDOS (توزيع الرفض للخدمة). لتقوية الخادم ضد هذا النوع من الهجمات، يمكنك تعديل إعدادات NGINX للتأكد من أن الخادم يمكنه التعامل مع عدد كبير من الطلبات في وقت قصير.
قم بتعديل ملف التكوين nginx.conf وأضف السطور التالية لتحديد الحد الأقصى للطلبات:
nginxhttp {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
limit_req zone=mylimit burst=5;
}
مراقبة الخادم وتسجيل الأحداث
مراقبة الخادم تعد جزءًا هامًا في تأمينه. من خلال مراقبة حركة المرور والتسجيل الدقيق للأحداث، يمكنك اكتشاف الهجمات أو الأنشطة غير المعتادة في وقت مبكر.
إعداد سجلات NGINX:
يمكنك تخصيص إعدادات السجلات في ملف التكوين nginx.conf:
nginxlog_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
تأكد من أن لديك أدوات مراقبة مثل fail2ban لمراقبة محاولات الدخول غير المصرح بها.
تثبيت fail2ban:
Fail2ban هو أداة مهمة لحماية الخوادم ضد محاولات الدخول غير المصرح بها. لتثبيت fail2ban، استخدم الأوامر التالية:
bashsudo apt install fail2ban
بعد التثبيت، يمكنك تعديل إعدادات fail2ban لحظر العناوين التي تحاول الوصول إلى الخادم بشكل متكرر.
تكوين fail2ban لحماية NGINX:
افتح ملف تكوين jail.local:
bashsudo nano /etc/fail2ban/jail.local
أضف الإعدادات الخاصة بـ NGINX:
bash[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
الحفاظ على أمان الخادم
تأمين الخادم لا يتوقف عند إجراء التعديلات الأولية فقط، بل يتطلب أيضًا اهتمامًا مستمرًا من خلال:
-
التحقق من وجود الثغرات الأمنية بشكل دوري: قم بمراجعة سجل الأمان بشكل دوري للبحث عن أي ثغرات قد تحتاج إلى تصحيح.
-
استخدام الأدوات الأمنية: مثل
fail2banوrkhunterلفحص النظام ضد البرمجيات الخبيثة. -
النسخ الاحتياطي المنتظم: تأكد من إجراء نسخ احتياطية دورية للبيانات والملفات الهامة في حال حدوث أي مشاكل.
الخاتمة
تأمين خادم NGINX على أوبنتو 16.04 يعد خطوة أساسية في حماية موقعك أو تطبيقك من التهديدات الإلكترونية. من خلال تطبيق الإعدادات الأمنية المناسبة، مثل تحديث النظام، استخدام HTTPS، إعداد الجدار الناري، وتعزيز حماية الخادم ضد الهجمات المختلفة، يمكنك ضمان أمان الخادم واستقرار أداءه.

