Linux Security Policy HowTo
السلام عليكم ورحمة الله وبركاته ..
مراحل تطبيق الحمايه ..
1)
Physical Security
كثيرا
من مدراء السيرفرات لا يعيرون اهميه بالغه
لهذا النوع من الحمايه ولهذا غالبا ما
يقعون في مشاكل كثيره سأتناول بعض منها
من واقع محلي والبعض الاخر من الدراسه
والبحث اول امر هو غرفة السيرفر هل هو
محمي ام لا ؟ بمعنى هل هناك ضوابط لدخوله
ام هي مجرد يدخلها الرايح والجاي بالمصطلح
العامي ..
ثانيا
هل السيرفر يقع في بيئه مناسبه له للعمل
لساعات طويله ؟ اي يجب وضعه في غرفه ذات
درجة حراره تسمح له بالعمل دون توقف إن
ارتفاع درجة حرارة الغرفه يؤدي الى وقف
عمل السيرفر سواءا ذاتيا او قسريا ولذلك
ينصح ان تكون الغرفه تحت درجة حرارة 16-17
درجة
مئويه ..
وايضا
مسأله اخرى وهي الخادم الاحتياطي ويفضل
ان يكون هناك خادم في مكان خارجي ...
يعني
يفضل تكون مجهز امورك لاي مشكله قد تطري
على الخادم الرئيسي مما يؤدي الى وقف
العمل ..
طبعا
كل هذا يعتمد على طبيعة واهمية العمل الذي
لديك من هذه الامور والمشاكل التي قد تحدث
الكوارث الطبيعيه كالحرائق والفياضانات
وايضا مشاكل قطع العتاد hardware
وغيرها
كل
ما يتم ذكره يعتبر اقتراق لامن الخادم
والمعلومات التي عليه ..
اي
تلف او توقف يعتبر بحد ذاته تقصير في الامن
والتي تقع ظمن مفهوم التقصير في ال
availability
ايضا
وقبل ان انسى امرا مهما في physical
sec وهو
الحمايه على مستوى ال BIOS
ووضع
كلمات سريه للوصول الى اي اداتها وايضا
وضع كلمات سريه على ال BOOT
loeder لكي
لا تسمح للاخرين من تمرير خيارات معينه
الى ال kernel
2
) User Security
هنا
ايضا مسأله يغفل عنها الكثيرون بحيث يتم
استعمال المستخدم root
لتنفيذ
جميع العمليات ومن جميع المدراء الموجودين
في الشركه مثلا ...
يعني
لو نفرض لدينا 3
مدراء
admin
في
مؤسسه واحد للشبه وآخر لقواعد البيانات
والثالث هو الرئيس مثلا ..
الحين
قام احدهم باستخدام المستخدم root
لتنفيذ
مسأله معينه وادت الى توقف عمل الخادم ..
كيف
نعرف من هو المسؤول من هؤلاء الثلاثه ؟
ستقول لي من ال log
file اقول
مضبوط عرفت المستخدم على الجهاز لكنك لم
تعرف من هو ال admin
الذي
استعمل هذا المستخدم root
وحصلت
المشكله بسببه لذلك يفضل عمل مستخدمين
ويحصل كل مستخدم على صلاحيات ليؤدي وظيفته
فقط ..
يعني
admin
الشبكه
له صلاحيات على اوامر الشبكه فقط وال
admin
الي
على قواعد البيانات له صلاحيات على اوامر
القواعد فقط ..
وهكذا
..
يمكنك
ان تعمل هذا من خلال الامر sudo
مثلا
الان ستسهل عليك مراقبة الجميع ومعرفة
كلٍ ماذا عمل ..
لانه
حصلت معي مره في احدى المسؤسسات كانوا
admins
يدخلون
ويعملون من المستخدم root
في
نفس الوقت وكل واحد يخرب على عمل الثاني
دون قصد ..
3 ) File & Filesystem Security
عند
الحديث عن الحمايه على مستوى ال fs
فانه
يجب علينا ان نكون مدركين لنوعية البيانات
التي ستوضع عليه وايضا ماهي الخيارات
المستعمله لل mount
عليه
نأتي لنوضح اكثر ..
البيانات
هي هي مهم جدا ؟
ان
كان الجواب نعم ممكن استعمال خواص التشفير
ليقوم بتشفير جميع ما يكتب على هذا ال fs
لكن
يجب ان تأخذ بنظر الاعتبار الكفاءة والسرعة
في القراءة والكتابة ولن تكون عالية بسبب
مسألة تشفير البيانات عند الكتابه وفك
تشفيرها عند القراءة في هذا ال fs
.. اما
الخيارات المستعمله لعملية ال mount
ايضا
يجب ان يكون اختيارها بدقه يعني لنفرض
لديك ملفات لا تريد مشاركتها داخل مؤسسه
او جامعه ولا تريد ان يتم التلاعب بها من
اي شخص فبالتأكيد ستقوم بوضع خيار ro
بدل
من rw
على
هذا ال fs
. ايضا
مسأله اخرى بالنسبه لل mount
و
umount
لهذا
ال fs
وغيرها
من الامور المهمه ينصح بمراجعة man
mount و
man
fs
بالنسبه
للحمايه على مستوى الملفات فهناك ثلاث
مستويات :
1
) المستوى
الاول وهو المستوى الذي تكون فيه الحمايه
عاليه جدا بحيث تسمح لل ownerبان
ياخذ من صلاحيات مطلقه وان لا تعطي صلاحيات
اخرى لاي شخص
2
) المستوى
الثاني وتكون الحمايه فيه متوسطه وهذا
هو المستوى الاساسي في اغلب الانظمه حيث
يكون للمالك owner
كامل
الصلاحيات وللاعضاء في نفس المجموعه
القراءة والتنفيذ وكذلك بالنسبه للمستخدمين
الآخرين الذين هم ليسوا المالكين ولا
يقعون ظمن نفس مجموعة المالك
3
) المستوى
الثالث والذي يكون اضعف بكثير مما سبق
بحيث يكون للجميع حق القراءة والكتابة
والتنفيذ
يمكنك
الانتقال من مستوى الى آخر من خلال umask
ولكن
عليك ان تختاره بصوره جيده لكي لا يقع في
مشاكل لاحقا ..
هناك
امور اخرى على مستوى الملفات بحيث في
الانظمه الحديثه مثل ext3
تم
اضافة محكمات اخرى على مستوى الملف والتي
تسمى attributes
بحيث
يمكنك استعمالها ايضا لغرض زيادة الحمايه
مثلا
chattr +i file
هذه
ستضيف خاصيه اسمها immutable
بحيث
تمنع اي شخص من حذف او الكتابه على الملف
نهائيا الا لو قمت برفع الخيار هذا عنه
..
ويوجد
خيارات اخرى كثيره لا مجال لحصرها هنا
ايضا قبل ان انسى يجب ان تراعي ال stickybit
وال
setGUID
وال
SUID
بحيث
تراعي اين ستقوم بوضعها ؟ وما هي البرامج
مثلا التي سوف تمتلك صلاحيات SUDI
؟
هذه امور مهمه جدا من خلالها بامكانك
زيادة قوة الحمايه لديك ايضا يفضل استعمال
Integrity
checker لكي
تتاكد من سلامة البرامج binaries
التي
لديك لانه ممكن يكون برنامج مثلا mount
لديك
يقوم بوظائف اخرى غير المخصص لها ..
طبعا
هذه البرامج التي تساعدك هي tripwire
وعلى
حد علمي لم يعد مجاني مثل الاول لذلك ابحث
عن برنامج opentripewire
في
sourceforge
سيقوم
هذا البرنامج بمقارنة ملفاتك مع ملفات
موجوده في قاعدة البيانات يتم المقارنه
معها للتأكد من صحة هذه البرامج التي لديك
...
قبل
ان نختم هذا الجزء احب التنويه الى حصان
طرواده trojan
horse حيث
ممكن يكون المخترق قام بتوزيع برنامج
معين على النت ويطلب استعماله وتنفيذه
باستخدام صلاحيات root
لكن
فعليا هو ينفذ امور اخرى في الخفاء او
الظهر ستقول لي كيف اكتشف ذلك ؟ اقول لك
ابسط الطرق هي استعمال تواقيع ال MDS
checksum وال
GPG
التي
تاتي مع ال rpm
التي
ستقوم بتنصيبها يعني بعباره اخرى لا تنزل
برنامج على سيرفر مهم دون التاكد من
التوقيع الخاص بهذا البرنامج ...
4 ) Password Security & Encryption
هذا
الجزء متشعب وكبير جدا نظرا للتقنيات
الكثيره المتوفره على النت ولهذا ساحاول
الاختصار قدر الامكان
اولا
..
لو
كان لديك معلومات ممه يتم ارسالها من خلال
الشبكات المفتوحه Public
Network والذي
هنا نقصد به الانترنت استعمل PGP
وال
Public
Key Eneryption في
التشفير ..
وان
كان ما ترسله على النت مهم جدا كأن يكون
اموال الكترونيه اطلب توقيع من شركة وسيطه
بحيث توقع على ال public
key الخاص
بك وال public
key الخاص
بالطرف الاخر وهي ستكون Main
Authority بينكم
مثال على هذه الشركات Verisign
ثانيا
..
استعمل
ال ssl
وال
https
لزيادة
الحمايه على الاتصالات الي تطلب verification
مثلا
للدخول الى حساب بنكي ومن هذه الامور
ويفضل ان تقوم بربطهم مع شركة ثالثه الوسيط
كما ذكرنا في الاعلى وايضا استعمال MIME
type التي
لا تفرض بعض الصغرات او تكون هي بحد ذاتها
ثغره امنيه عليك ..
وايضا
لا تستعمل MIME
type غير
معروف وغير تابع الى standard
معينه
لانه سيجلب لك نفس المشكلة التي ذكرتها
..
ثالثا
..
استعمل
secure
shell في
الاتصال بالسيرفر من مكان آخر remotely
.. حيث
يمكنك من خلال ال ssh
ان
توفر قناه امنيه الى حد كبير جدا عند
اتصالك بالسيرفر ..
وايضا
يمكنك التحديد من مسموح المرور ومن لا من
خلال التوقيع المستعمل Signiture
رابعا
..
استعمال
ال PAM
الي
تمثل ..
Pluggable Authentication Modules حيث
يمكنك التحكم بالكثير من وسائل الحماية
على السيرفر من خلال هذه ال Modules
ايضا
عند تطوير نظام معين او برنامج لا حاجة
لك لتطوير وسائل حماية له لانك ممكن ان
تشغل له وسائل حمايه من خلال PAM
5 ) Kernel Security
يعتبر
الكيرنل من الامور المهمه التي يجب ان
تنتبه لها من حيث الامن لانه ما فائدة
نظام محمي بشكل كبير لكن الكيرنل المستعمل
فيه مشاكل وثغرات ؟؟ وكما تعلمون الكيرنل
اساس لينوكس ولهذا هو مهم جدا ان يكون على
درجه عاليه من الحمايه ..
تخيل
بناء جميل جدا ولكن اساس هذا البناء هش
..
؟
اكيد سينهار في لحظه معينه ..
هذه
اللحظه في لينوكس خطيره جدا لانه اذا
استطاعوا ايقاف الكيرنل فذلك يعني انهيار
النظام بالكامل ..
الخطوات
المتبعه لتقوية حماية الكيرنل لديك
وبالتاكيد النظام هي :
1
) تحديث
الكيرنل من فتره الى اخرى لانه 90
% من
التحديثات التي تطرأ على الكيرنل هي
تحديثات امنيه
2
) تشغيل
الجدار الناري Firewall
وإعداده
بشكل صحيح لكي يقوم بالتصدي للهجمات
الموجهة على ال Box
3
) إعداد
خيارات الكيرنل بشكل جيد ومدروس من خلال
sysctle
.conf مثال
على ذلك
عمل
ايقاف لل ping
على
السيرفر من خلال
echo "1" > /proc/sys/net/ipv4/icmp-ignore-all
او
تشغيل tcp-syn****ies
لمنع
الهجمات من نوع DOS
الذي
يستهلك المصادر التي لديك مما يجبر الكيرنل
لعمل اعادة تشغيل للسيرفر لديك ..
هناك
الكثير من الخيارات الأخرى التي ممكن
تعمل لها اعداد على مستوى الكيرنل .....
لمزيد
من المعلومات راجع google
...
مسأله
اخيره احب ذكرها عندما نتحدث عن الحمايه
على مستوى الكيرنل هو Kernel
Devices نعم
هما جهازان
/dev/urandome
و
/dev/random
حيث
توفر هذه الاجهرزه Random
Number's في
اي وقت تطلب منها ذلك ...
يتم
استعمالهما عند عمل مفاتيح من نوع PGP
keys او
تواقيع الخاصه بال ssh
وغيرها
الكثير من البرامج ...
هذا
ما لدي على مستوى الكيرنل وانا متاكد ان
هناك المزيد لكن عليكم بال ..
Google ...
6 ) Network Security
اعتقد
ان هذا من اكبر الجوانب الامنيه التي يصعب
علي حصرها لكم ..
لكن
سأحوال جاهدا ان اذكر لكم اهم الامور فيه
والتوسع متروك لكم ..
على
بركة الله ..
اولا
..
تشغيل
الجدار النار لديك بشكل ممتاز من خلال
iptables
ويمكن
الرجوع الى شرح الاخ sAFA7_eLNeT
في
هذا الامر على الرابط التاليه
هنا
ثانيا
..
تشغيل
ال tcp-wrappers
وعمل
امداد لها بصوره جيده بحيث تطبق قاعدة
معينة اما انك تسمع للكل وتمنع البعض او
انك تمنع الكل وتسمح للبعض من خلال ملفات
/etc/hosts.deny
او
/etc/hosts.allow
طبعا
هناك الكثير من الخدمات التي يمكن التحكم
بها من هذه النقطه مثلها ال FFp
وال
ssh
وال
pop3
وغيرها
...
وأيضا
هناك شرح للأخ sAFA7_eLNeT
له
هنا
ثالثا
..
عمل
الحمايه اللازمه على ال DNS
التي
لديك بحيث لا تسمح لجهاز خارجي من تسجيل
نفسه على ال DNS
الذي
لديك ...
رابعا
..
عمل
الحمايه اللازمة على مستوى ال MTA
والي
هو (
Mail Transport Agent ) بحيث
لا تسمح للناس بعمل overlog
من
سيرفرك وبالتالي ينتج مشاكل السبام
الخارجه منه ...
خامسا
..
عمل
حمايه على مستوى ال Network
file system الي
هو NFS
.. بحيث
تعمل الحمايه اللازمه لكي يتم عمل mount
فقط
للاشخاص المصرح لهم بذلك والبقيه لا ..
للمزيد
راجع NFSHowTo
...
سادسا
..
عمل
حماية على نظام Network
Information Service الي
هو NIS
والذي
كان يسمى YP
من
كلمة Yallow
Pages بحيث
لا يتم كشف المعلومات التي يقدمها هذا
النظام للعالم الخارجي سوى لمن هم مصرحين
بذلك ..
لانك
كما تعلم هذا النظام عمل تصاريح الدهول
الكاملة للسيرفر ان كان موجود ولذلك
السيطرة عليه معناه كارثه ..
طبعا
لم يعد NIS
محمي
كثيرا مثل السابق لذلك يفضل استعمال LDAP
بدلا
منه ..
سابعا
..
استعمل
برامج مهمه لكشف العيوب التي لديك ..
مثلا
نضرب مثال :
قمت
بتعيين ports
لخدمات
معينه كيف ستجربها ؟ استعمل برنامج مثل
nmap
لشكف
ما خي ال ports
المفتوحه
وماهي المغلقه على سيرفرك ...
ويوجد
الكثير من البرامج لكن بالنسبة لي هذا هو
البرنامج رقم واحد ..
ما
ذكرناه هو لمراقبة المنافذ ports
الحين
لكي تقوم بمراقبة وتحليل الشبكه لديك
وماهي البرامج الخارجه وما هي الداخله
على جهازك استعمل برامج التحليل packets
او
ما يسمى بالــــ sniffers
... منها
dsniff
و
ethreal
وتفرج
على المعلومات التي تدخل وتخرج من سيرفرك
...
لتقرأ
أكثر على ال sniffers
أيضا
الأخ sAFA7_eLNeT
الله
يجزيه الخير له موضوع في ذلك هنا
نقطه
صحيح تذكرتها الحين ...
لا
تقوم انت بعمل فحص المنافذ port
scanning التي
على سيرفرك من داخله ..
بل
اطلب من صديق او اعملها انت من مكان خارجي
..
! ! لا
تسألني لماذا ..
أكتشف
هذه المسأله انت بنفسك ...
اعتقد
كما ذكرت لكم مهما كتبت هنا فلم اكتب
بالحقيقه شيء لكن ممكن يكون ما كتبته محل
فائده للبعض وعدم الفائدة للاخرين ..
7 ) Before Going Public
الى
حد الآن قمنا بالكثير من التحضيرات
والفحوصات لكي نذهب Online
... لكن
هناك نقاط مهمه يفضل النظر اليها قبل ان
تجعل سيرفرك مشبوك الى العالم الخارجي
Plugged
to the outworld وهي
كالتالي :
1
) اختيار
خطة مناسبة لعمل ال Backup
وهذه
صراحه متغيره من خدمه الى اخرى لهذا صعب
احصائها هنا لكن الاضرار فيها ذكر مثال
على ما اقصد ..
يعني
لنفرض لديك شركة تقدم خدمات بنكية ..
هنا
يفضل يكون الفتره التي يتم اخذ النسخه
الاحتياطيه Backup
قليله
جدا لكثرة التغيرات المهمه التي تحصل
على رصيد العميل ...
وطبعا
هذا على حساب الاداء والمساحه لذلك انتبه
الى ذلك ..
2
) اوكي
أخذت باك اب وصار عندك مشكلة اتيت ترجع
الباك اب وجدته فيه مشكله ..
هنا
كارثه ولهذا ينصح تجربته قبل ان تغيير
نفسك لديك نسخه احتياطيه اصلا ..
3
) عمل
فحوصات دوريه على المستخدم لديك وعلى
ملفات ال log
الخاصه
بالسيرفر والخدمات التي عليه ويمكنك ان
تعمل تقارير من هذه الفحوصات يتم ارسالها
لك على البريد من خلال إعدادات الخاصه
بال syslogd
وايضا
باستعمال ال crond
4
) متابعة
التحديثات الامنيه التي تصدر هي احدى
اهم نقاط المهمه التي يجب متابعتها لانه
كما تعلم مهما وصلت الى درجه من الحمايه
العاليه فانه ممكن تصدر ثغره جديده انت
لم تقوم بترقية الخدمة التي تنفذ عليها
ويروح السيرفر عندك في داهيه ..
.. .. طبعا
ممكن تعمل برامج تتابع لك هذه الامور
ولكن هذه من اختصاص السفاحين ..
هههههههههه
في
الختام اتمنى ان ينال الموضوع رضاكم
واعجابكم الموضوع مهدى لمجتمع لينوكس
العربي بصوره عامه وللاخ amine00
بصوره
خاصه وآخيرا وليس اخرا إن شاء الله مهما
وصلت من قوة الحماية فلن تصل الى 100
% ولا
حتى 99
% هذا
رأيي المتواضع والعالم كله يخضع لقانون
مهم جدا وهو "الكمال
لله سبحانه وتعالى"
...
اخوكم .. ابو محمد ...