Tag Archives: حماية

حذف ملف بشكل تام وآمن على لينكس

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

استكمالا لذلك الحديث أقدم بين يديكم اليوم طريقتين لحذف ملف بشكل نهائي من على القرص الصلب وبذلك يكون من شبه المستحيل استعادته.

تحديث بتاريخ 10 سبتمبر لإضافة طريقة  التعامل مع المجلدات عبر الأمر shred

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

حذف الملفات مع إضافة nautilus-wipe

عند تثبيت هذه الإضافة فإنها ستُدرج في القائمة الظرفية التي تظهر عند النقر بزر الفأرة

الأيمن على اسم الملف أو المجلد. للتثبيت على أوبنتو ننفذ الأمر التالي

sudo apt-get install nautilus-wipe

بعد التثبيت سيظهر الخياران التاليان في القائمة الظرفية عند النقر بالزر الأيمن على اسم ملف أو مجلد.

nautilus-wipe

nautilus-wipe

  • الخيار الأول wipe والذي يحذف بشكل آمن الملفات المُحددة. يمكن التحكم في عدد مرات إعادة الكتابة عبر الخيار Number of passes. الإعداد الافتراضي هو مرتان. وهو إعداد كاف بنظري فالمبالغة في مرات إعادة الكتابة قد تضر بالقرص الصلب على المدى الطويل.

    تأكيد الحذف وخيارات wipe

    تأكيد الحذف وخيارات wipe

  • الخيار الثاني wipe available disk space يسمح بحذف الملفات التي سبق محوها بطريقة غير آمنة من على تجزئة أو قرص صلب. هذه العملية قد تأخذ بعض الوقت.

حذف الملفات بأداة shred عبر سطر الأوامر

نستخدم أمر shred لهذا الغرض ويعمل بنفس مبدأ عمل الإضافة السابقة وذلك بالشكل التالي

shred -n 2 -z -u file

حيثُ

  • الخيار n- يُمكن من تحديد عدد مرات إعادة الكتابة. (2 في مثالنا هذا). إذا لم يحدد هذا الخيار فإن الأداة ستعيد الكتابة 3 مرات (الإعداد الافتراضي)
  • الخيار z- لكتابة أصفار مكان بيانات الملفات
  • الخيار u- لحذف الملف
  • file مسار الملف المراد حذفه

ما تقوم به shred هنا هو كتابة أصفار مكان بيانات الملف ثم حذفه (وهذا هو دور الخيار u-). في حالة حاول أحدهم استعادة الملف فإنه إن نجح سيحصل على ملف مليئ بالأصفار فقط.

يمكن إجراء التجربة التالية لفهم آلية العمل. أنشئ ملفا وليكن اسمه test.txt واكتب فيه شيئا ما للتجربة ثم أغلقه واحفظه. افتح الطرفية ثم تنقل إلى مسار الملف test.txt ونفذ الأمر

shred -n 2 -z test.txt

لاحظ أني لم أضف خيار u- . جرب فتح الملف مرة أخرى بمحرر نصوص. جرب الأمر مرة أخرى ولكن بإضافة خيار u- ثم ابحث عن الملف، لن تجدَه 🙂 .

حذف المجلدات بواسطة shred

الأمر shred لا يتعامل مع المجلدات،
لحذف مجلد يمكن تنفيذ الطريقة التالية، من خطوتين.
للشرح سأفترض وجود مجلد testA بداخله ملف testA1 ومجلد آخر testB وبداخل المجلد الأخير يوجد ملفان testB1 و testB2


testA
-- testA1
-- testB
---- testB1
---- testB2

نريد حذف testA بكل محتوياته بشكل آمن.

  • الخطوة الأولى حذف جميع الملفات (تبقى فقط المجلدات)

نفتح المجلد testA ثم ننفذ الأمر التالي


find -type f -execdir shred -n 2 -z -u '{}' \;

الذي سيبحث عن جميع الملفات الموجودة في المجلد الحالي، أي testA في مثالنا، ومجلداته الفرعية. ثم يطبق الأمر shred -n 2 -z -u على كل ملف من تلك الملفات.

يمكن سرد محتويات المجلد testA أو testB وستلاحظ أنه لا توجد بها ملفات.

  • الخطوة الثانية ستكون حذف المجلد testA ومجلداته الفرعية عبر الأمر (تأكد من الخروج من المجلد testA قبل تنفيذ الأمر)

rm -rf /pat/to/testA

حيث /pat/to/testA هو المسار نحو المجلد testA .

إلى الملتقى.

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

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

مصادر

http://www.crowd42.info/supprimer-fichier-definitivement-ordinateur-debian-gnulinux-ubuntu

http://www.solver.io/wp/2012/11/06/linux-how-to-recursively-shred-a-directory/

Advertisements

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

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

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

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

إذا كانت لديك صلاحيات 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.

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