Hosts.deny - قيادة لينكس - قيادة يونيكس

اسم

hosts_access - تنسيق ملفات التحكم في الوصول إلى المضيف

وصف

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

تم وصف إصدار موسع من لغة التحكم في الوصول في المستند hosts_options (5). يتم تشغيل الإضافات في وقت إنشاء البرنامج من خلال البناء مع -DPROCESS_OPTIONS.

في النص التالي ، البرنامج الخفي هو اسم عملية عملية daemon للشبكة ، والعميل هو اسم و / أو عنوان خدمة طلب المضيف. يتم تحديد أسماء عمليات الشبكة الخفية في ملف تكوين inetd.

ملفات التحكم بالوصول

يستشير برنامج التحكم بالوصول ملفين . توقف البحث في المباراة الأولى:

*

سيتم منح الوصول عندما يتطابق زوج (daemon ، client) مع إدخال في الملف /etc/hosts.allow .

*

وإلا ، سيتم رفض الوصول عندما يتطابق زوج ( daemon ، client) مع إدخال في الملف /etc/hosts.deny .

*

خلاف ذلك ، سيتم منح الوصول.

يتم التعامل مع ملف التحكم في الوصول غير الموجود كما لو كان ملفًا فارغًا . وبالتالي ، يمكن إيقاف التحكم في الوصول من خلال عدم توفير ملفات تحكم في الوصول.

قواعد التحكم في الوصول

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

*

يتم تجاهل حرف السطر الجديد عندما يسبقها حرف خط مائل عكسي. هذا يسمح لك بتفكيك الخطوط الطويلة بحيث يسهل تحريرها.

*

يتم تجاهل الخطوط الفارغة أو الأسطر التي تبدأ بحرف '#'. هذا يسمح لك بإدخال التعليقات والمسافات البيضاء بحيث تكون الجداول أسهل في القراءة.

*

يجب أن تحقق جميع الأسطر الأخرى التنسيق التالي ، الأشياء بين [] اختياري:


daemon_list: client_list [: shell_command]

daemon_list عبارة عن قائمة واحدة أو أكثر من أسماء العمليات الخفية (قيم argv [0]) أو أحرف البدل (انظر أدناه).

تعد client_list قائمة بأسماء مضيف واحد أو أكثر أو عناوين المضيف أو الأنماط أو أحرف البدل (انظر أدناه) التي سيتم مطابقتها مع اسم مضيف العميل أو عنوانه.

تم شرح النماذج الأكثر تعقيدًا daemon host و host @ host في الأقسام الموجودة على أنماط نقاط النهاية للملقم وعلى عمليات البحث عن اسم المستخدم للعميل ، على التوالي.

يجب فصل عناصر القائمة بالفراغات و / أو الفواصل.

وباستثناء عمليات البحث الصافية لمجموعة NIS (YP) ، تكون كافة عمليات التحقق من التحكم في الوصول غير حساسة لحالة الأحرف.

أنماط - رسم

تطبق لغة التحكم بالوصول الأنماط التالية:

*

سلسلة تبدأ بـ "." حرف. تتم مطابقة اسم المضيف إذا كانت المكونات الأخيرة لاسمه تطابق النمط المحدد. على سبيل المثال ، يتطابق النمط `.tue.nl 'مع اسم المضيف` wzv.win.tue.nl'.

*

سلسلة تنتهي بـ `. حرف. تتم مطابقة عنوان المضيف في حالة تطابق الحقول الرقمية الأولى مع السلسلة المحددة. على سبيل المثال ، النمط "131.155". تطابق عنوان (تقريبًا) كل مضيف في شبكة جامعة أيندهوفن (131.155.xx).

*

يتم التعامل مع السلسلة التي تبدأ بحرف "@" على أنها اسم مجموعة Net NIS (سابقًا YP). تتم مطابقة اسم مضيف إذا كان عضو مضيف في مجموعة Netgroup المحددة. لا يتم اعتماد تطابقات Netgroup لأسماء العمليات الخفية أو لأسماء مستخدمي العميل.

*

يتم تفسير تعبير عن النموذج `nnnn / mmmm 'على أنه زوج` صافي / قناع'. تتم مطابقة عنوان مضيف IPv4 إذا كانت `net 'تساوي Bitwise AND من العنوان و` mask'. على سبيل المثال ، يطابق نمط net / mask "131.155.72.0/255.255.254.0" كل عنوان في النطاق "131.155.72.0" عبر "131.155.73.255".

*

تعبير عن النموذج `[n: n: n: n: n: n: n: n] / m 'يتم تفسيره على أنه زوج` [net] / prefixlen'. تتم مطابقة عنوان مضيف IPv6 إذا كانت وحدات البت "prefixlen" من `net 'تساوي بتات" prefixlen "للعنوان. على سبيل المثال ، يطابق [net] / prefixlen pattern `[3ffe: 505: 2: 1 ::] / 64 'كل عنوان في النطاق` 3ffe: 505: 2: 1 ::' عبر `3ffe: 505: 2: 1: FFFF: FFFF: FFFF: FFFF.

*

يتم التعامل مع السلسلة التي تبدأ بحرف `/ 'كاسم ملف. تتم مطابقة اسم المضيف أو عنوانه إذا كان يطابق أي اسم مضيف أو نمط عنوان مدرج في الملف المحدد. تنسيق الملف هو صفر أو أكثر مع صفر أو أكثر من اسم المضيف أو أنماط العناوين مفصولة بمسافة بيضاء. يمكن استخدام نمط اسم ملف في أي مكان يمكن استخدام اسم المضيف أو نمط العنوان.

*

أحرف البدل `* 'و`؟ يمكن استخدامها لمطابقة أسماء المضيفين أو عناوين IP. لا يمكن استخدام طريقة المطابقة هذه مع مطابقة `net / mask '، ومطابقة اسم المضيف التي تبدأ بـ`.' أو عنوان IP المطابق الذي ينتهي بـ ".".

البدل

تدعم لغة التحكم في الدخول أحرف البدل الصريحة:

الكل

كلمة البدل العامة ، تتطابق دائمًا.

محلي

تتطابق مع أي مضيف لا يحتوي اسمه على رمز النقطة.

غير معروف

يتطابق مع أي مستخدم غير معروف اسمه ، ويتطابق مع أي مضيف غير معروف اسمه أو عنوانه. يجب استخدام هذا النمط بحذر: قد تكون أسماء المضيفين غير متوفرة بسبب مشاكل خوادم الأسماء المؤقتة. لن يكون عنوان الشبكة متاحًا عندما يتعذر على البرنامج معرفة نوع الشبكة التي يتحدث إليها.

معروف

تتطابق مع أي مستخدم معروف اسمه ، ويتطابق مع أي مضيف يُعرف اسمه وعنوانه. يجب استخدام هذا النمط بحذر: قد تكون أسماء المضيفين غير متوفرة بسبب مشاكل خوادم الأسماء المؤقتة. لن يكون عنوان الشبكة متاحًا عندما يتعذر على البرنامج معرفة نوع الشبكة التي يتحدث إليها.

المذعور

تتطابق مع أي مضيف لا يتطابق اسمه مع عنوانه. عندما يتم إنشاء tcpd مع -DPARANOID (الوضع الافتراضي) ، فإنه يسقط الطلبات من مثل هؤلاء العملاء حتى قبل النظر إلى جداول التحكم بالوصول. أنشئ بدون DRARANOID عندما تريد المزيد من التحكم في مثل هذه الطلبات.

العاملين

إلا

الاستخدام المقصود هو النموذج: `list_1 باستثناء list_2 '؛ يتطابق هذا البناء مع أي شيء يطابق list_1 ما لم يطابق list_2 . يمكن استخدام عامل التشغيل EXCEPT في daemon_lists وفي قوائم_العميل. يمكن أن يتداخل عامل EXCEPT: إذا كانت لغة التحكم تسمح باستخدام الأقواس ، فإن 'EXCEPT b EXCEPT c' سوف يتم تحليلها كـ ((باستثناء (EXCEPT c)).

أوامر الشيل

إذا كانت قاعدة التحكم في الوصول المطابقة الأولى تحتوي على أمر shell ، فسيتعرض هذا الأمر إلى٪ substitutions (راجع القسم التالي). يتم تنفيذ النتيجة بعملية / bin / sh child مع الإدخال القياسي والإخراج والخطأ المتصل بـ / dev / null . حدد `& 'في نهاية الأمر إذا كنت لا تريد الانتظار حتى اكتماله.

يجب أن لا تعتمد أوامر Shell على إعداد PATH inetd. بدلاً من ذلك ، يجب أن يستخدموا أسماء مسارات مطلقة ، أو يجب أن يبدأوا بـ PATH صريح = عبارة مهما كانت.

يصف المستند hosts_options (5) لغة بديلة تستخدم حقل أمر shell بطريقة مختلفة وغير متوافقة.

التوسعات ٪

التوسعات التالية متوفرة داخل أوامر shell:

٪ a (٪ A)

عنوان مضيف العميل (الخادم).

ج٪

معلومات العميل: user @ host ، أو user @ address ، أو اسم مضيف ، أو مجرد عنوان ، اعتمادًا على مقدار المعلومات المتوفرة.

٪د

اسم عملية daemon (قيمة argv [0]).

٪ح ح)

اسم المضيف أو عنوان العميل (الخادم) ، إذا كان اسم المضيف غير متوفر.

٪ n (٪ N)

اسم مضيف العميل (الخادم) (أو "غير معروف" أو "بجنون العظمة").

٪ ع

معرف عملية الخفي.

٪ الصورة

معلومات الخادم: daemon @ host ، أو daemon @ address ، أو مجرد اسم خفي ، اعتمادًا على مقدار المعلومات المتوفرة.

٪ ش

اسم المستخدم العميل (أو "غير معروف").

٪٪

يتوسع إلى حرف واحد "٪".

يتم استبدال الأحرف الموجودة في٪ التوسعات التي قد تؤدي إلى إرباك shell بواسطة الشرطات السفلية.

طرز ENDPOINT PATTERS

لتمييز العملاء بواسطة عنوان الشبكة الذي يتصلون به ، استخدم نماذج النموذج:


process_name @ host_pattern: client_list ...

يمكن استخدام أنماط مثل هذه عندما يكون لدى الجهاز عناوين إنترنت مختلفة بأسماء مضيفين مختلفة على الإنترنت. يمكن لمزودي الخدمة استخدام هذا المرفق لتقديم محفوظات FTP أو GOPHER أو WWW بأسماء الإنترنت التي قد تنتمي حتى إلى منظمات مختلفة. راجع أيضًا خيار "التواء" في المستند hosts_options (5). يمكن أن تحتوي بعض الأنظمة (Solaris و FreeBSD) على أكثر من عنوان إنترنت واحد على واجهة فعلية واحدة؛ مع أنظمة أخرى قد تضطر إلى اللجوء إلى واجهات SLIP أو PPP pseudo التي تعيش في مساحة عنوان شبكة مخصصة.

يتلقى host_pattern قواعد النحو نفسها مثل أسماء المضيفين وعناوينهم في سياق client_list. عادة ، لا تتوفر معلومات نقطة النهاية للملقم إلا مع الخدمات الموجهة للاتصال.

العميل USERNAME LOOKUP

عندما يدعم المضيف العميل بروتوكول RFC 931 أو أحد أحفاده (TAP و IDENT و RFC 1413) ، يمكن لبرامج المجمّع استرداد معلومات إضافية حول مالك الاتصال. يتم تسجيل معلومات اسم مستخدم العميل ، عند توفرها ، مع اسم مضيف العميل ، ويمكن استخدامها لمطابقة الأنماط مثل:


daemon_list: ... user_pattern @ host_pattern ...

يمكن تكوين أغلفة daemon في وقت التحويل البرمجي لتنفيذ عمليات البحث في اسم المستخدم المستندة إلى القواعد (افتراضي) أو لاستجواب مضيف العميل دائمًا. في حالة عمليات البحث عن اسم المستخدم المستندة إلى القواعد ، فإن القاعدة الواردة أعلاه قد تتسبب في البحث عن اسم المستخدم فقط عندما يتطابق كل من daemon_list و host_pattern .

يحتوي نمط المستخدم على نفس بنية نمط عملية daemon ، لذا يتم تطبيق نفس أحرف البدل (عضوية netgroup غير مدعومة). لا ينبغي للمرء أن تسترول مع البحث عن اسم المستخدم ، على الرغم من.

*

لا يمكن الوثوق بمعلومات اسم المستخدم للعميل عند الحاجة إليها ، أي عند اختراق نظام العميل. بشكل عام ، تعتبر ALL و (UN) KNOWN هي أنماط اسم المستخدم الوحيدة التي لها معنى.

*

عمليات البحث عن اسم المستخدم ممكنة فقط مع الخدمات المستندة إلى TCP ، وفقط عندما يقوم مضيف العميل بتشغيل البرنامج الخفي المناسب ؛ في جميع الحالات الأخرى ، تكون النتيجة "غير معروفة".

*

قد يتسبب خطأ kernel UNIX المعروف في فقد الخدمة عند حظر عمليات البحث عن اسم المستخدم بواسطة جدار حماية. يصف المستند README المجمع إجراء لمعرفة ما إذا كان kernel الخاص بك به هذا الخطأ.

*

قد تتسبب عمليات البحث في اسم المستخدم في تأخيرات ملحوظة للمستخدمين غير التابعين لـ UNIX. المهلة الافتراضية لعمليات البحث عن اسم المستخدم هي 10 ثوان: قصيرة للغاية للتعامل مع الشبكات البطيئة ، ولكنها طويلة بما يكفي لإزعاج مستخدمي الكمبيوتر الشخصي.

يمكن أن تساعد عمليات البحث عن اسم المستخدم الانتقائي في تخفيف المشكلة الأخيرة. على سبيل المثال ، قاعدة مثل:


daemon_list:pcnetgroup ALL @ ALL

يتطابق مع أعضاء netgroup الكمبيوتر دون القيام عمليات البحث اسم المستخدم ، ولكن إجراء عمليات البحث اسم المستخدم مع جميع الأنظمة الأخرى.

الكشف عن عناوين الهجمات الهجومية

يسمح العيب في مولد رقم التسلسل للعديد من عمليات تنفيذ TCP / IP للمتطفلين بانتحال هوية المضيفات الموثوقة بسهولة وكسرها عبر ، على سبيل المثال ، خدمة shell عن بعد. يمكن استخدام خدمة IDENT (RFC931 وما إلى ذلك) للكشف عن مثل هذه الهجمات وغيرها من هجمات انتحال عنوان المضيف.

قبل قبول طلب العميل ، يمكن أن تستخدم الأغلفة خدمة IDENT لمعرفة أن العميل لم يرسل الطلب على الإطلاق. عندما يوفر مضيف العميل خدمة IDENT ، فإن نتيجة بحث IDENT سالبة (العميل يطابق `UNKNOWN @ host ') هي دليل قوي على هجوم انتحال مضيف.

نتيجة بحث IDENT موجبة (العميل يطابق `KNOWN @ host ') أقل موثوقية. من الممكن أن يقوم متطفل بتحريف كل من اتصال العميل والبحث IDENT ، على الرغم من أن القيام بذلك أصعب بكثير من انتحال اتصال العميل فقط. قد يكون أيضًا أن خادم IDENT للعميل يكذب.

ملاحظة: لا تعمل عمليات البحث الخاصة بـ IDENT مع خدمات UDP.

أمثلة

اللغة مرنة بدرجة كافية بحيث يمكن التعبير عن أنواع مختلفة من سياسة التحكم في الوصول بأقل ضجة. على الرغم من أن اللغة تستخدم جدولين للتحكم في الوصول ، يمكن تنفيذ أكثر السياسات شيوعًا حيث يكون أحد الجداول بسيطًا أو حتى فارغًا.

عند قراءة الأمثلة أدناه ، من المهم أن ندرك أن جدول السماح يتم مسحه ضوئيًا قبل جدول الرفض ، وأن ينتهي البحث عندما يتم العثور على مطابقة ، وأن يتم منح الوصول عند عدم العثور على أي تطابق على الإطلاق.

تستخدم الأمثلة أسماء المضيف والمجال. يمكن تحسينها من خلال تضمين معلومات العنوان و / أو الشبكة / الشبكة ، لتقليل تأثير فشل البحث عن خادم الأسماء المؤقت.

مغلق قريبًا

في هذه الحالة ، يتم رفض الوصول افتراضيًا. يسمح فقط للمضيفين المصرح لهم بشكل صريح بالدخول.

يتم تنفيذ السياسة الافتراضية (بدون وصول) مع ملف قديم.

/etc/hosts.deny: ALL: ALL

يؤدي هذا إلى رفض جميع الخدمات لجميع المضيفين ، ما لم يتم السماح لهم بالدخول عن طريق الإدخالات في ملف السماح.

يتم سرد المضيفات المصرح بها بشكل صريح في ملف السماح. فمثلا:

/etc/hosts.allow: ALL: LOCALsome_netgroup
ALL: .foobar.edu EXCEPT terminalserver.foobar.edu

تسمح القاعدة الأولى بالوصول من المضيفين في المجال المحلي (لا "." في اسم المضيف) ومن أعضاء مجموعة net_netgroup . تسمح القاعدة الثانية بالوصول من جميع المضيفين في النطاق foobar.edu (لاحظ النقطة الرائدة) ، باستثناء terminalserver.foobar.edu .

مفتوحة في الغالب

هنا ، يتم منح الوصول بشكل افتراضي. فقط يتم رفض المضيفين المحدد صراحة الخدمة.

السياسة الافتراضية (الوصول الممنوح) تجعل الملف المسموح به احتياطيًا بحيث يمكن حذفه. يتم سرد المضيفات غير المصرح بها بشكل صريح في ملف الرفض. فمثلا:

/etc/hosts.deny: ALL: some.host.name، .some.domain
كل ما عدا in.fingerd: other.host.name ، .other.domain

القاعدة الأولى تحرم بعض المضيفين والمجالات من كل الخدمات ؛ القاعدة الثانية لا تزال تسمح طلبات الإصبع من المضيفين والمجالات الأخرى.

BOOBY TRAPS

المثال التالي يسمح بطلبات tftp من المضيفين في المجال المحلي (لاحظ النقطة الرائدة). يتم رفض الطلبات من أي مضيفين آخرين. بدلاً من الملف المطلوب ، يتم إرسال مسبار إصبع إلى المضيف المخالف. يتم إرسال النتيجة بالبريد إلى المستخدم المتميز.

/etc/hosts.allow:

in.tftpd: LOCAL، .my.domain /etc/hosts.deny: in.tftpd: ALL: spawn (/ some / where / safe_finger -l @٪ h | \ / usr / ucb / mail -s٪ d-٪ ج الجذر) و

يأتي الأمر safe_finger مع غلاف tcpd ويجب تثبيته في مكان مناسب. فهو يحد من التلف المحتمل من البيانات المرسلة من خادم الإصبع البعيد. يوفر حماية أفضل من الأمر الإصبع القياسي.

تم وصف توسع٪ h (مضيف العميل) وتتابعات٪ d (اسم الخدمة) في القسم الموجود بأوامر shell.

تحذير: لا تقوم بخدعة خدعة الأصبع ، إلا إذا كنت مستعدًا لحلقات الأصابع اللانهائية.

على أنظمة جدار الحماية الشبكة يمكن أن تتم هذه خدعة أبعد من ذلك. لا يوفر جدار الحماية الشبكي النموذجي سوى مجموعة محدودة من الخدمات للعالم الخارجي. جميع الخدمات الأخرى يمكن "التنصت عليها" تماما مثل المثال أعلاه tftp. والنتيجة هي نظام ممتاز للإنذار المبكر.

هام: استخدم الأمر man ( ٪ man ) لمعرفة كيفية استخدام أمر ما على جهاز الكمبيوتر الخاص بك.

مقالات ذات صلة