ضبط أمن أنظمه التشغيل لتوفير أمن برمجيات السجل
From CoCCA Registry Services (NZ) Limited
Contents |
تحديث نظام التشغيل والخدمات باستمرار
يجب أن نحرص على تحديث نواه نظام التشغيل باستمرار وتحديث جميع الخدمات المرتبطه ببرمجيات السجل، بحيث نضمن أن نحصل على التحديثات الأمنية الخاصة بنظام التشغيل والحزم البرمجية التي تعتمد عليهاوالخدمات المشغله على نظام التشغيل، ويمكن لمدير نام التشغيل متابعه أخر التهديدات والثغرات الأمنية المرتبطه بنام التشغيل على الموقع http://cve.mitre.org/ والقوام البريدية الخاصة بأنظمة التشغيل.
من أهم المخاطر الأمنية التي هرت مؤخراً:
التهديد الأمني POODLE
يعتبر هذا التهديد ثغرة في بروتوكول SSLv3، والتي تسمح لهجوم من نوع اعتراض الخدمه من قبل طرف ثالث man-in-the-middle لفك تشفير الرساءل، وبالتالي فجميع الخدمات التي تعتمد على بروتوكول SSLv3 ستكون عرضه للخطر وبالتالي الحل هو بتعطيل استخدام بروتوكول SSLv3، في هذه الخدمات، ولضمان أمن خدمه الويب يمكن تعطيل هذا البروتوكول ببساطه في مخدم resin بإضافه السطر التالي إلى ملف التوصيف resin.xml:
<protocol>TLSv1,TLSv1.1,TLSv1.2</protocol>
ويجب داما تحديث نظام التشغيل لديك:
yum update
التهديد الأمني GHOST glibc
يعتبر هذا التهديد من أهم المخاطر التي تواجه نظام التشغيل والخدمات المعتمده على حزمه البرمجيات glibc وتسبب هذه الثغرة بهجوم يؤدي إلى اغراق المكدس وضياع البيانات من الذاكرة buffer overflow، وذلك من خلال اكتشاف وجود مشكلة في كل من التوابع gethostbyname وgethostbyname2 في مكتبه glibc، ولذلك هر هنالك العديد من التحديثات للحزم البرمجيه وحتى لنواه التشغيل لسد هذه المشكله، فالمهاجم يمكنه استخدام التوابع المذكورة واستدعاءها لتنفيذ تطبيقات عشواءيه باستخدام صلاحيه المستخدم الذي يستخدمه التطبيقات للوصول لمصادر نظام التشغيل.
لاصلاح هذه المشكلة يجب أن نقوم بتحديث كل من المكتبات glibc و nscd على نظام التشغيل باستخدام الأداه yum update ، وبعد ذلك يجب إعادة تشغيل نظام التشغيل, او في حال استطعت معرفه الخدمات التي تستخدم هذه المكتبات واستطعت اعادة تشغيلها لتأخد التحديث الأخير.
التهديدات الأمنية المرتبطه ببرمجيات Bind9
هنالك عدد من التهديدات الأمنية الخاصة بحزمة برمجيات Bind9 وبالتالي يجب تحديث هذه الحزمة بشكل دوري ويمكن الإطلاع على اهم الثغرات الأمنية من خلال موقع : https://www.isc.org/downloads/software-support-policy/security-advisory .
التهديدات الأمنية الخاصة بمحرك قاعدة المعطيات postgresql
أيضاً هنالك تحديثات دورية لبرمجيات postgresql الهدف منها تحسين أداء وأمن هذه البرمجيات ويجب تحديث البرمجيات بشكل دوري، ويمكن متابعة الموقع : الثغرات الأمنية المكتشفة والتي يجب متابعتها : http://www.postgresql.org/support/security/
ايقاف وتعطيل الخدمات غير المستخدمه
يفضل الاطلاع على الخدمات التي تعمل في نظام التشغيل في ادارة السجل وإيقاف الخدمات التي لانريدها وتعطيلها بحيث لاتعمل عند إعادة تشغيل المخدم، ففي بية عمل نظام السجل فالخدمات التي يمكنك ابقاءها تعمل هي :ssh,epp,whois,named,http,https وبالتالي فإي خدمه أخرى يمكن إيقافها وتعطيلها. فمثلاً للتأكد بأن الخدمات التي نحتاجها هي فقط التي تعمل عند بدء تشغيل المخدم في المستوى 3 يمكننا تنفيذ الأمر التالي:
'chkconfig --list | grep '3:on
طبعا يفضل التأكد من أن خدمات السجل يجب أن تكون جميعها تعمل في حال إعاده تشغيل المخدم، ولإيقاف والغاء تفعيل أي خدمه في نظام التشغيل لينكس يمكننت تنفيذ الأمر التالي:
. ($service serviceName stop & chkconfig serviceName off).
استخدام جدار الحماية الخاص بنظام التشغيل لتقييد الوصول للخدمات
يتم استخدام جدار الحماية الخاص بنظام التشغيل لتقييد الوصول إلى بعض الخدمات الموجوده على المخدم سواء بحجب الوصول إلى هذه الخدمة أو ممن خلال السماح لعناوين محددة أو لمجال محدد من العناوين للوصول لهذه الخدمات، وبما أن أهم الخدمات التي يقدمها السجل تتضمن وجود فتح المنافذ الخاصة بالبروتوكولات التالية :http,https,epp,whois, named، فيجب تقييد الوصول لهذه الخدمات كمايلي:
(حيث يتم اضافه قاعده لفتح او اغلاق منفذ معين من خلال تعديل الملف /etc/sysconfig/iptables وفق القواعد التالية)
- بالنسبة لخدمة named فيتم فتح المنفذ 53/UDP/TCP على مخدم السجل ليسمح فقط للمخدمات الثانوية بنقل المناطق الخاصة بالنطاق العلوي الخاص
بالسجل، ويجب أن لايترك مفتوح للعموم.
A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
- بالنسبة لخدمة EPP فيتم فتح المنفذ 700/EPP over TLS على المخدم ليستطيع فقط المسجلين registrar للوصول إلى خدمه EPP من عناوين محددة خاصة بهم
ويجب أن لايتم فتح هذه الخدمه لكافه العناوين.
-A INPUT -s Registrar_Registry_IP -p tcp -m state --state NEW -m tcp --dport 700 -j ACCEPT
- بالنسبة لخدمة WHOIS يفضل أن تكون على عنوان انترنت مختلف تماما عن العناوين التي تعمل عليها الخدمات المذكورة سابقاُ لانها تتطلب وصول عام من
قبل الجميع، ولذلك سيتم فتح المنفذ 43 للعموم، ولكن يجب أن نستخدم واجه السجل لتقييد عملية استخدام هذه الخدمه وربطها بعدد محدد من الطلبات
خلال فترة زمنية محددة.
A INPUT -p tcp -m state --state NEW -m tcp --dport 43 -j ACCEPT
- بالنسبة لخدمة HTTP حيث يتم فتح المنفذ 80/TCP على المخدم للوصول للعموم للوصول لخدمه الاستعلام عن نطاق من خلال الويب، و وفق الممارسات العملية
الأفضل يفضل أن يتم توجيه كل طلبات HTTP إلى HTTPS وتقيد عدد طلبات الخدمه من قبل عنوان انترنت محدد او من قبل مجموعه عناوين.
A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
- بالنسبة لخدمه HTTPS حيث يتم فتح المنفذ 443 على المخدم ليسمح فقط للمسجلين ومن لديهم حسابات ادارة للوصول إلى واجهة السجل، ويجب هنا تقييد
الوصول لهذه الواجه من عناوين انترنت محدده خاصة بادارة السجل وبعناوين المسجلين.
-A INPUT -s Registrar_Registry_IP -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
- بالنسبة لخدمة SSH حيث يتم فتح المنفذ 22/tcp على المخدم ليسمح بالوصول لمدراء النظام إلى نظام التشغيل.
-A INPUT -p tcp -s Your_IP_Range --dport ssh -j ACCEPT
ملاحظه:
- يمكن متابعه قاعده معطيات في الموقع sans.edu/blocked للاستفاده من قاعده المعطيات لديهم والتي تتضمن عدد من عناوين الانترنت سيئة والتي تقوم
بعمليات مسح للمستخدمين على انظمه التشغيل، فيمكن الاستفاده من الرماز الذي تم كتابته من قبل الكوكا لاضافه العناوين على جدار الحماية الخاص
بنظام التشغيل، ويجب تعديل المتحول التالي في الرماز : YOUR_IP_RANGE .
you can download the script here:File:Block SSH SCANNER.png
تخفيض عدد البرمجيات المثبته على المخدم بهدف تخفيف المخاطر الأمنية
يفضل عدم تثبيت البرمجيات غير الضرورية على مخدم السجل والمخدمات الأخرى، وذلك بهدف تخفيف المخاطر الأمنية التي قد تنجم عن وجود هذه البرمجيات، ومنها برمجيات الواجهات البيانية متل (Desktop GUI X Windows) والتي تعتبر عبأً على المخدم وزيادة للمخاطر الأمنية واستهلاك موارد النظام، ويمكننا استخدام حزمه برمجيات ادارة الحزم البرمجية المثبته على النظام RPM لمعرفه ماهي البرمجيات المثبته، ويمكن استخدام الادوات التالية: (# yum list installed #yum list packageName, #yum remove packageName) في لينكس لحذف الحزم غير المستخدمه وغير الضرورية، ويمكن مثلا حذف X Windows إذا قد تم تثبيتها على سبيل المثال من خلال الاوامر التاليه: ففي البداية يتم تعديل الملف /etc/inittab ليتم اقلاع المخدم في المرحلة القادمه بمستوى تشغيلي خاص بالمستخدم رقم 3، ومن ثم حذف الواجهة البيانية باستخدام الأمر : # yum groupremove "X Window System".
ضبط أمن خدمة الوصول للمخدم عن بعد SSH
تعتبر جميع الخدمات التي يمكن الوصول إليها من خلال الانترنت عرضه للهجوم، فخدمه الوصول عن بعد SSH لادارة نظام التشغيل تسمح للمستخدمين بالدخول إلى نظام عن طريق الانترنت، فبالإضافه لتأمين الخدمة من خلال جدار الحماية الموجود في نظام التشغيل يمكننا ضبط امن هذه الخدمة بشكل أكبر من خلال برمجيات وتقنيات مساعده سنعرضها في الفقرات التالية.
اعداد ملف sshd_config لتحقيق مستوى أمان أعلى
يمكن أن يتم ذلك من خلال خطوات بسيطه تتضمن:
- أن يتم تعطيل امكانية الدخول للنظام عن بعد باستخدام مستخدم root، فالاعدادات الافتراضية للملف sshd_config تتضمن السماح للمستخدم root بالدخول
عن بعد للنظام وهذا يعتبر تهديد كبير يمكن للمهاجم استثمار خوارزميات كسر كلمات السر للدخول للنظام، ولذلك يجب تعديل الملف:
/etc/ssh/sshd_config والغاء امكانية الدخول كمستخدم root بتعديل السطر PermitRootLogin yes ليصبح PermitRootLogin no.
- تحديد المستخدمين والمجموعات المسموح لهم بالوصول للنظام عن بعد، فبشكل افتراضي جميع المستخدمين الذي يتم اضافتهم للنظام يمكنهم الدخول عن بعد، ولكننا يمكن تحديد من هم المستخدمين المسموح لهم بالدخول من خلال تعديل الملف sshd_config واضافه السطر التالي عليه:AllowUsers admin1 admin2فبهذه الحالة فقط يستطيع المستخدمين admin1 و admin2 الدخول للنظام عن بعد. وكما يمكن أن نقوم بمنع مستخدمين من الدخول للنام من خلال اضافه سطر أخر على نفس الملف بالشكل التالي:DenyUsers named apache
- تعطيل أمكانية قراءه ملفات المستخدم ~/.rhosts و ~/.shosts وذلك من خلال تعديل ملف الاعداد الخاص بخدمة SSH sshd_config باضافه الاسطر التالية:
IgnoreRhosts yes
- تعطيل التوثق المعتمد على المضيف host وذلك من خلال تحديث ملف الاعداد sshd_config والتأكد من أنه تم تعطيل عملية التوثق لتصبح كالتالي:
HostbasedAuthentication no
- تفعيل لائحة التحذير عند الدخول للمستخدم للتذكير بأن كل الاوامر وأن عملية الدخول الخاصة به مسجله بملفات التسجيل الخاصة بالمخدم وبالتالي سيكون
مسؤول عن أي عمل يضر بالمخدم. وذلك من خلال تعديل الملف sshd_config وازاله التعليق عن السطر Banner /etc/Your_txt_warinign_file
منع هجوم استخلاص كلمات السر من نوع brute force attack
يتم تنفيذ هجوم brute force attack من خلال تجريب عدد كبير من محاولات الدخول للنظام، ويمكن تجنب هذا الهجوم والتخلص منه من خلال استخدام عدة تقنيات، سنذكر منها fail2ban واستخدام التوثق ثناءي المعامل وكمثال google authenticator.
برمجيات Fail2ban
تقوم برمجيات Fail2ban بالمساعده والحد من هجوم كسر كلمات المرور وتنبيه مدير للنظام من خلال ارسال رساله إلكترونية وحجب عنوان الانترنت الذي يحاول المهاجم من خلاله الدخول للنظام باستخدام جدار الحماية الخاص بنظام التشغيل. يمكن اعداد وتثبيت هذه البرمجيات بسهولة على مخدم لينكس وسنأخذ مثال على ذلك نظام التشغيل Centos 7/6 وفق الخطوات التالية:
تتوفر حزمة البرمجيات من خلال مخزن الحزم البرمجيه لنظام فيدورا ويمكن تحميل واتثبيت هذا المخزن على Centos من خلال الأمر التالي:
yum install epel-release
ومن ثم يمكننا تثبيت البرمجيات Fail2ban من خلال برمجيات تثبيت الحزم البرمجيه:
yum install fail2ban
بشكل افتراضي يكون توصيف هذه البرمجيات بسيط وهي تعتمد على مبدأ تفعيل مراقبة خدمه معينه jail، فيمكن مثلا مراقبة خدمة http,smtp,pop3,imap و ssh ومبدأ عمله هو مراقبة ملفات التسجيل الخاصة بهذه الخدمات واستخدام التعابير النظامية لمعرفه فيما اذا كان هنالك عنوان انترنت يحاول الدخول للبريد الالكتروني بعدد كبير من المحاولات الفاشلة او الدخول للنام من خلال خدمه SSH فيقوم fail2ban بمراقبة ملف secure لكشف عناوين الانترنت التي تحاول الوصول بطريقة ما إلى النظام. ويمكن اعداد اغلب هذه الخدمات في الملف التوصيف الخاص fail2ban التالي: etc/fail2ban/jail.local/، فمثلا لمراقبة خدمة SSH سيكون لدينا الجزء التالي ضمن ملف التوصيف (في Centos 7 يختلف الوضع قليلا اذا يمكننا اضافه ملف بالاعدادات التالية /etc/fail2ban/jail.d/sshlocal)
[ssh-iptables]
enabled = true
filter = sshd
[ action = iptables[name=SSH, port=ssh, protocol=tcp
["sendmail-whois[name=SSH, dest=noc@your_domains, sender=sshmonitor@your_domains, sendername="sshmonitor
logpath = /var/log/secure
maxretry = 5
<bantime = 86400
التوثق ثناءي المعامل باستخدام Google Authenticator
يمكننا زيادة الأمان والوثوقية لأنظمه التشغيل بإضافه معامل أخر للتوثق بالإضافه لكلمة المرور، وهي عبارة عن رمز توثق يقوم النظام بطلبه بالاضافه لكلمة المرور.
طبعا هنالك العديد من المراجع لعميل اعداد وتثبيت هذه الخدمه reference، وسنذكر الخطوات الأساسية كالتالي:
ملاحظه هامة:
- في حال البدء بتثبيت google authenticator لاتقوم باغلاق الاتصال مع المخدم حتى تتأكد بأنك قادر على الدخول من خلال تجريب فتح اتصال اخر مع المخدم، فبعض الاحيان عدم التزامن بين المخدم ومخدمات google أو خطأ بالاعدادات قد يكلفك أن تضطر للوصول الفيزياءي للمخدم.
الخطوات هي كالتالي:
- تثبت الأدوات اللازمه لترجمع وتثبيت الرماز المصدر لبرمجيات google authenticator وذلك من خلال تثبيت مجموعه الحزم البرمجية Development Tools كالتالي:
yum -y groupinstall "Development Tools"
نحتاج أيضاً لتثبيت حزمة برمجيات pam-devel كالتالي:
yum -y install pam-devel
تثبيت حزمة برمجيات بروتوكول NTP للحفا على المزامنه مع مخدمات google كون أن رمز التوثق يعتمد على الزمن وستغير حتى الاعدادات الافتراضيه كل 30 ثانية:
yum -y install ntp
تفعيل الحزم البرمجية ليتم تشغيلها عند اعادة الاقلاع
systemctl enable ntpd (for centos 6.x use:chkconfig ntpd on)
systemctl start ntpd (for centos 6.x use: /etc/init.d/ntpd start)
سنقوم الأن باستخدام الأداة wget للحصول على رماز المصدر للبرمجيات google authenticator وتحميلها على المسار /opt/ بالشكل التالي:
cd /opt
wget https://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
سنقوم بفك ضغط ملف الرماز والبدء بترجمته وتثبيت الخدمه كالتالي:
bunzip2 libpam-google-authenticator-1.0-source.tar.bz2
tar -xvf libpam-google-authenticator-1.0-source.tar
rm -f libpam-google-authenticator-1.0-source.tar
cd libpam-google-authenticator-1.0
make
make install
الأن البرمجيات تم تثبيتها وسنقوم بالبدء بتنفيذها واعداد خدمه SSH لتفعيل طلب ادخال معاملين من المستخدم عند محاولته الوصول للمخدم:
su - user (نقوم بالدخول لحساب كل مستخدم نرغب بتفعيل هذه البرمجيات لديه)
google-authenticator
ملاحظه هامه:
عند تنفيذ google-authenticator فإنه تظهر لك نافذه تبين لك ماهو عنوان الويب الذي يمكنك استخدامه على هاتفك الجوال للبدء بتوليد رموز التوثق المعتمده على الزمن، فيمكنك تحميل تطبيق اداة المصادقه google-authenticator من google store وبعدها تستخدم عنوان الويب المذكور، وبالإضافه لموقع الويب يهر لديك خمس رموز توثق تستخدم للطوارىء في حال عدم نجاح عملية الدخول باستخدام رماز التوثق التي يتم توليدها من أداه المصادقه المستخدمه على الهاتف المحمول.
الأن يجب أن نفعل عملية الدخول باستخدام المعاملين لذلك سنقوم باجراء تعديل بسيط على ملف اجراءية التوثق باستخدام كلمه المرور PAM من خلال تعديل الملف :
vi /etc/pam.d/sshd
ومن ثم إضافه السطر التالي لبدايه الملف:
auth required pam_google_authenticator.so
الخطوة التالية هي تفعيل عملية التوثق ثناءي المعامل من خلال ملف sshd_config لذلك سنقوم بفتح الملف
vi /etc/ssh/sshd_config
ثم إيجاد السطر ChallengeResponseAuthentication واعطاءه قيمه yes بالشكل التالي:
ChallengeResponseAuthentication yes
اخيرا يجب اعادة تشغيل خدمة SSH لتأخذ التعديلات مجراها والبدء بالتجريب للخدمه.
systemctl reload sshd (for centos 6.x use /etc/init.d/sshd reload)
