Tag Archives: Apache

إخفاء إصدار أباتش عن الزوار على أوبنتو

السلام عليكم،

أول خطوة يقوم بها المتسللون والقراصنة قبل محاولة الاختراق هي عادة البحث عن إصدار الخادم الذي يُشغل الموقع المراد اختراقه حتى يتسنى لهم معرفة الثغرات المحتملة الموجودة. في هذه التدوينة أقدم شرحا لإخفاء اسم الخادم وإصداره عن أعين المتسللين مما يزيد من صعوبة الاختراق. غني عن القول أن هذا لا يغني عن التحديث الدائم للخادم وإجراءات الأمان الأخرى. هي فقط خطوة من بين خطوات أخرى كثيرة.

معرفة إصدار خادم أباتش

إذا كانت لديك صلاحيات Root فإن بإمكانك معرفة إصدار أباتش المثبت لديك عبر الأمر

sudo apt-cache policy apache2

مثال على المُخرجات

[sudo] password for zeine77:
apache2:
Installed: 2.2.22-1ubuntu1.4
Candidate: 2.2.22-1ubuntu1.4
Version table:
*** 2.2.22-1ubuntu1.4 0
500 http://archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://archive.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
100 /var/lib/dpkg/status

كما يتضح فإن الإصدار المثبت هنا هو 2.2.22-1ubuntu1.4

وإذا لم تكن لدي صلاحيات Root ؟

 في الإعدادات الافتراضية فإن أباتش يظهر نظام التشغيل وإصدار الخادم أسفل صفحة الخطأ التي تظهر عند طلب صفحة غير موجودة، مثلا

Not Found

The requested URL /fail was not found on this server.

Apache/2.2.22 (Ubuntu) Server at myproject.localhost Port 80
 
توجد طريقة أخرى لمعرفة إصدار خادم الوب عبر الأمر
telnet <IP> 80
مع إبدال IP بقيمته، مثلا
telnet 127.0.0.1 80
ثم طلب طباعة HEADER عبر الأمر
HEAD / HTTP/1.1

ثم الضغط مرتين على زر Enter

مثال للمخرجات
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
HEAD / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Thu, 22 Aug 2013 13:51:27 GMT
Server: Apache/2.2.22 (Ubuntu)
Vary: Accept-Encoding
Connection: close
Content-Type: text/html; charset=iso-8859-1
Connection closed by foreign host.
نلاحظ رقم الإصدار.

إخفاء الإصدار والتوقيع

لإخفاء إصدار خادم أباتش من الظهور نغير بعض الإعدادات في الملف security الموجود طبقا للإعدادات الافتراضية في المجلد /etc/apache2/conf.d
الأمر:

sudo nano /etc/apache2/conf.d/security

نبحث عن السطر ServerTokens OS ونُبدل “OS” ب “Prod” فيصبح السطر كما يلي

ServerTokens Prod

نحفظ التغييرات (عبر الاختصار CTRL + O) ثم نغلق الملف (عبر الاختصار والتأكيد CTRL + X)

يجب إعادة تحميل أباتش حتى تؤخذ التغييرات بالاعتبار:

sudo service apache2 reload

الآن عند طلب صفحة غير موجودة تظهر صفحة الخطأ التالية

Not Found

The requested URL /fail was not found on this server.

Apache Server at myproject.localhost Port 80
 

نلاحظ أن رقم الإصدار اختفى، ولكن بقي “توقيع” الخادم، لحذفه نعيد تحرير الملف السابق ثم نبحث عن

#ServerSignature Off
ServerSignature On

نضع علامة # أمام ServerSignature On وننزعها من أمام ServerSignature Off
فيصبح السطران كالتالي

ServerSignature Off
#ServerSignature On

نعيد تحميل أباتش.

sudo service apache2 reload
الآن عند طلب صفحة غير موجودة تظهر صفحة الخطأ التالية

Not Found

The requested URL /fail was not found on this server.

رابط مختصر للمشاركة مع أصدقائك عبر شبكات التواصل الاجتماعي http://wp.me/p1vJeS-f1

للحصول على آخر الإضافات مباشرة بعد نشرها يُرجى الاشتراك في تغذيات RSS.

تدوينات ذات علاقة

Advertisements

تثبيت وإعداد قاعدة بيانات PostGreSQL وربطها بخادم Apache على أوبنتو

السلام عليكم،
سأشرح من خلال هذه التدوينة طريقة تهيئة بيئة تطوير PHP تعتمد على قاعدة بينات postgresql (بدلا من قاعدة بيانات MySQL كما جرت العادة لدى الكثيرين). أما عن أسباب اختيار posgresql فعديدة أهمها دعمها المتقدم  لمعايير SQL بالإضافة إلى أنها متوفرة تحت رخصة BSD (اضغط هنا للاطلاع على مقال يعرض تفاصيل أكثر عن postgresql).
الخطوات بسيطة وستكون كالتالي.

ملحوظة: جمعتُ الأوامر الواردة في هذه التدوينة في ملف نصي هنا حتى يمكن نسخها ثم لصقها دون مشاكل. النسخ من المتصفح قد يغير بعض الرموز. الأفضل النسخ من الملف النصي.

تثبيت  قاعدة بيانات postgresql

نفذ الأمر التالي (يجب أن تكون لديك صلاحيات root) لتثبيت آخر إصدر من قاعدة البيانات، 9.1.8 أثناء كتابة هذه السطور،

sudo apt-get install postgresql

ثم نثبت pgadmin3 وهي واجهة رسومية لإدارة خادم postgresql عبر الأمر

sudo apt-get install pgadmin3

    واجهة pgAdmin III لإدارة قواعد بيانات PostGreSQL

واجهة pgAdmin III لإدارة قواعد بيانات PostGreSQL

نثبت خادم أباتش وحزم PHP5

للتذكير Apache هو خادم وب حر ومفتوح المصدر تستخدمه الكثير من المواقع ويقدم العديد من الميزات. إذا كنت تريد تجربة تطوير صفحات بي أتش بي فسيكون ضروريا لك تثبيت خادم وب يُفسر سكربتات PHP ويحولها إلى صفحات HTML يرسلها لمتصفح المستخدم لعرضها.
الأمر التالي يثبت واجهة phpPgAdmin لإدارة قاعدة البيانات عن طريق واجهة وب (مماثل لعمل phpmyadmin مع قاعدة بيانات MySQL). ليس هذا فقط، بل إنه يُثبت أيضا خادم أباتش وآخر إصدارات PHP.

sudo apt-get install phppgadmin

بهذا نكون أنهينا المرحلة الأولى وهي تثبيت الأدوات. نكمل مع الإعدادات.

ما سنقوم به الآن هو إعداد خادم postgresQL حتى يمكننا الدخول إليه من الخادم المحلي (localhost). انتبه لمسار الملف إذ أنه يحوي مجلدا باسم رقم الإصدار، 9.1 في حالتي

gksudo gedit /etc/postgresql/9.1/main/postgresql.conf

بعد فتح الملف أضف السطر التالي في آخره

listen_addresses = 'localhost'

احفظ الملف ثم أغلقه. نفذ الأمر التالي بعد حفظ التغييرات في الملف المفتوح وإغلاقه

gksudo gedit /etc/postgresql/9.1/main/pg_hba.conf

إذا كان يوجد سطر “local all all ident sameuser” أبدله بالسطر التالي (إن لم يكن السطر المذكور موجودا أضف السطر التالي في نهاية الملف)

local   all         all                               md5
احفظ الملف ثم أغلقه.

إعداد phpPgAdmin

واجهة phpPgAdmin

واجهة phpPgAdmin

في الخطوة السابقة ثبتنا واجهة phpPgAdmin. الآن سنقوم بإعدادها للعمل مع خادم أباتش، لذا نفذ الأمر لفتح ملف إعداد الخادم.

gksudo gedit /etc/apache2/apache2.conf

اذهب لآخر الملف وأضف ما يلي في سطر جديد

Include /etc/phppgadmin/apache.conf

لقد أنهينا الإعدادت، أعد تشغيل Apache و PostGreSQL عبر الأمرين التاليين لأخذ الإعدادت بالاعتبار.(انتبه للأمر الثاني إذ أنه قد يحوي رقم إصدار PostGreSQL، اكتب المسار /etc/init.d/postgresql ثم استخدم زر Tab على يسار لوحة المفاتيح لتشغيل الإكمال التلقائي )

sudo /etc/init.d/apache2 restart
sudo /etc/init.d/postgresql restart

للدخول إلى الصفحة الرئيسية لخادم أباتش العنوان هو http://localhost  ولواجهة phpPgAdmin العنوان هو http://localhost/phppgadmin .

المجلد الذي يجب وضع السكربتات فيه ليُفسرها خادم أباتش هو var/www/ حيث يوجد بشكل افتراضي ملف index.html يعرض عند الدخول لعنوان أباتش. يمكنك تغييره. شخصيا أقوم بوضع صفحة تحوي سكريبت PHP يعرض محتويات المجلد حتى يمكنني الوصول إلى مختلف المشاريع بسهولة.
إذا رغبتَ في فعل نفس الشيء إليك السكربت (احفظه باسم index.php وغير اسم الملف index.html إلى indexA.html على سبيل المثال).

<?php
$dirname = getcwd();
$dir = opendir($dirname);
while($file = readdir($dir)) {
if($file != ‘.’ && $file != ‘..’ && !is_dir($dirname.$file)) {
echo ‘- <a href=”‘.$file.'”>’.$file.'</a>’.'<br /><br />’;
}
}
closedir($dir);
?>

خطوات أخرى ليست ضرورية ولكنها مفيدة وأنصح بتنفيذها.

تغيير كلمة مرور المستخدم root ل PostGreSQL.

المستخدم root الذي أتحدث عنه هنا هو المستخدم الأعلى SuperUser لخادم PostGreSQL وليس مستخدم النظام. المستخدم الجذر ل PostGreSQL هو postgres ويأتي بشكل افتراضي دون كلمة مرور. الأمر  التالي يحدد كلمة مرور لهذا المستخدم. (حيث password هي كلمة المرور. ضع كلمة المرور التي تختارها مكانها دون حذف الظفرين ‘ ‘)

sudo -u postgres psql template1
ALTER USER postgres with encrypted password ‘password’;
\q

إنشاء مستخدم جديد في PostGreSQL

لإنشاء مستخدم جديد باسم username ننفذ الأمر (اختر اسم مستخدم مناسبا لك). بعد تنفيذ الأمر سيُطلب منك إدخال كلمة مرور ثم تأكيدها بعدها سيسألك إن كنت تريد إعطاء صلاحيات “المستخدم الأعلى” SuperUser للمستخدم الجديد، أدخل y لإعطاء تلك الصلاحيات أو n لإنشاء مستخدم عادي.

sudo -u postgres createuser -d -R -P username

كما يمكنك إنشاء قاعدة بيانات جديدة وجعل المستخدم الجدية مالكا لها عبر الأمر (حيث database_name اسم قاعدة البيانات و username اسم المستخدم الذي أنشأته بالأمر السابق).

sudo -u postgres createdb -O username database_name

الجدير بالذكر هنا أنه بالإمكان القيام بهذه الأمور – إنشاء مستخدمين، إنشاء قواعد بيانات وأمور أخرى – بطرق عدة. إحداها سطر الأوامر كما رأينا أو الواجهة الرسومية pgadmin  أو واجهة وب phpPgAdmin. أنتَ وما تختار 🙂

أترككم على أمل أن تكون هذه التدوينة أفادتكم.

مصادر

http://bdhacker.wordpress.com/2011/05/06/postgresql-phppgadmin-php5-ubuntu/

مُتعلقات

تهيئة بيئة تطوير PHP وتثبيت ووردبرس WordPress