خطوات تأمين سيرفر اباتشي على سيرفر اوبنتو securing apache
التأكد من تحديث اباتشي
sudo apt install apache2
التأكد ان اباتشي يعمل بيوزر بصلاحيات محدودة مثلا حتى لا يتمكن المهاجم من الوصول لصلاحيات اعلى في حالة اختراق اليوزر
منع اباتشي من نشر معلومات عن السيرفر والنظام:
ندخل لملف اعدادات اباتشي ونعدله باستخدام التالي
sudo nano /etc/apache2/apache2.conf
نضع المجلد الذي نرغب بحمايته لو كان ووردبريس نضع التالي:
<Directory /var/www/wordpress>
AllowOverride All
Options -Indexes
ServerSignature off
</Directory>
الاوامر الثلاثة السابقة ، الاول يسمح بتعديل قواعد الامان في كل مجلد على حده ، والثاني يمنع عرض الملفات والمجلدات ، والثالث يمنع السيرفر من ارسال بيانات اصدار السيرفر ونظام التشغيل وغيرها
وكذلك نقوم بتفعيل الخيار التالي كذلك من نفس الملف حتى نتمكن من استخدامها داخل المجلدات
AccessFileName .htaccess
الآن نقوم باعادة تشغيل اباتشي
sudo systemctl restart apache2
السماح باستعراض الملفات او تعطيل ذلك داخل اي مجلد directory listing
نقوم بعمل هذا باستخدام .htaccess
نقوم بانشاء ملف .htaccess داخل المجلد المطلوب حمايته كالتالي
sudo nano .htaccess
ولمنع استعراض الملفات نكتب التالي
Options -Indexes
وللسماح باستعراض الملفات نكتب الامر التالي
Options Indexes
الآن نقوم بتغيير المالك لملف .htaccess الى www-data
sudo chown www-data:www-data .htaccess
وكذلك نعدل صلاحيات الملف ليصبح للقراءة فقط بدون كتابة باستخدام الامر التالي
sudo chmod 0444 .htaccess
وبهذا نكون انتهينا
منع الدخول لاي مجلد باستخدام .htaccess الا باستخدام كلمة مرور
نقوم بتثبيت اداة htpasswd الموجودة مع مكتبة اباتشي باستخدام الامر التالي:
sudo apt install apache2-utils
نقوم بانشاء اسم مستخدم وكلمة مرور خاصة للمجلد باستخدام الاوامر التالية
cd /etc/apache2/
sudo htpasswd -c /etc/apache2/.htpasswd UserName
الان نقوم بادخال كلمة المرور واعادة ادخالها للتأكيد
لو استعرضنا المجلد الحالي سنجد ملف جديد يحتوي على الباسورد باسم
.htpasswd
الآن نذهب لملف .htaccess في المجلد الذي نريد حمايته كالتالي
sudo nano .htaccess
ونكتب التالي
Options -Indexes
AuthType Basic
AuthName "Write anything here"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
وقم بحفظ الملف
الآن لن تستطيع الدخول للمجلد المقصود الا بعد ادخال اسم المستخدم وكلمة المرور
اضافات أمان مهمة على ملف كل موقع website.com.conf:
# Additional Security Settings
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
add_header Content-Security-Policy "default-src 'self'; font-src 'self'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none';";
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";
add_header Referrer-Policy "strict-origin";
add_header Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()";
add_header X-Content-Type-Options "nosniff";
ملاحظات هامة:
- يجب التأكد ان جميع صلاحيات الملفات والمجلدات التابعة للموقع هي 755 ووالقراءة فقط للملفات الحساسة
- يجب التأكد ان جميع صلاحيات ملفات .htaccess هي 0444
- يجب التأكد ان المالك لجميع المجلدات والملفات داخل مجلد الموقع هو www-data
في الموضوع القادم سأكتب عن modsecurity وطريقة تثبيته لحماية اكبر ضد الطلبات التخريبية للسيرفر
وبالتوفيق للجميع