اسم
hosts_access - تنسيق الوصول إلى ملفات تحكم Linux للمضيف.
وصف
تصف هذه الصفحة دليل Linux كنظام تحكم بسيط في الوصول يستند إلى أنماط العميل (اسم المضيف / العنوان واسم المستخدم) والخادم (اسم العملية ، اسم / عنوان المضيف). يتم إعطاء أمثلة في النهاية. يتم تشجيع القارئ الصبور على التخطي إلى قسم الأمثلة للحصول على مقدمة سريعة. تم وصف نسخة موسعة من لغة التحكم في الوصول في 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) أو أحرف البدل (انظر أدناه).
قائمة العملاء قائمة واحدة أو أكثر من أسماء المضيف أو عناوين المضيف أو الأنماط أو أحرف البدل (انظر أدناه) التي سيتم مطابقتها مع اسم مضيف العميل أو عنوانه.
الأشكال الأكثر تعقيدًا الخفي @ المضيف و المستخدم @ المضيف موضحة في الأقسام على أنماط نقطة النهاية للخادم وعلى عمليات البحث عن اسم المستخدم للعميل ، على التوالي.
يجب فصل عناصر القائمة بالفراغات و / أو الفواصل.
وباستثناء عمليات البحث الصافية لمجموعة NIS (YP) ، تكون كافة عمليات التحقق من التحكم في الوصول غير حساسة لحالة الأحرف.
أنماط - رسم
تطبق لغة التحكم بالوصول الأنماط التالية:
سلسلة تبدأ بـ "." حرف. تتم مطابقة اسم المضيف إذا كانت المكونات الأخيرة لاسمه تطابق النمط المحدد. على سبيل المثال ، يتطابق النمط `.tue.nl 'مع اسم المضيف` wzv.win.tue.nl'.
سلسلة تنتهي بـ `. حرف. تتم مطابقة عنوان المضيف في حالة تطابق الحقول الرقمية الأولى مع السلسلة المحددة. على سبيل المثال ، النمط "131.155". تطابق عنوان (تقريبًا) كل مضيف في شبكة جامعة أيندهوفن (131.155.x.x).
يتم التعامل مع السلسلة التي تبدأ بحرف "@" على أنها اسم مجموعة Net NIS (سابقًا YP). تتم مطابقة اسم مضيف إذا كان عضو مضيف في مجموعة Netgroup المحددة. لا يتم اعتماد تطابقات Netgroup لأسماء العمليات الخفية أو لأسماء مستخدمي العميل.
يتم تفسير تعبير عن النموذج `n.n.n.n / m.m.m.m 'على أنه زوج` صافي / قناع'. تتم مطابقة عنوان مضيف 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 (راجع القسم التالي). يتم تنفيذ النتيجة بواسطة / بن / ش عملية الطفل مع المدخلات والمخرجات والخطأ القياسية المتصلة / ديف / لاغية . حدد `& 'في نهاية الأمر terminal إذا كنت لا تريد الانتظار حتى اكتماله.
يجب أن لا تعتمد أوامر Shell على إعداد PATH inetd. بدلاً من ذلك ، يجب أن يستخدموا أسماء مسارات مطلقة ، أو يجب أن يبدأوا بـ PATH صريح = عبارة مهما كانت.
ال hosts_options يصف المستند (5) لغة بديلة تستخدم حقل أمر shell بطريقة مختلفة وغير متوافقة.
التوسعات٪
التوسعات التالية متوفرة داخل أوامر shell:
٪ a (٪ A) - عنوان العميل (الخادم) المضيف.
ج٪ - معلومات العميل: user @ host ، أو user @ address ، أو اسم مضيف ، أو مجرد عنوان ، اعتمادًا على مقدار المعلومات المتوفرة.
٪د - اسم عملية daemon (قيمة argv 0).
٪ح ح) - اسم أو عنوان مضيف العميل (الخادم) ، إذا كان اسم المضيف غير متوفر.
٪ n (٪ N) - اسم مضيف العميل (الخادم) (أو "غير معروف" أو "بجنون العظمة").
٪ ع - معرف عملية daemon.
٪ الصورة - معلومات الخادم: daemon @ host ، أو daemon @ address ، أو مجرد اسم خفي ، اعتمادًا على مقدار المعلومات المتوفرة.
٪ ش - اسم المستخدم العميل (أو "غير معروف").
%% - يتوسع إلى حرف واحد "٪".
يتم استبدال الأحرف الموجودة في٪ التوسعات التي قد تؤدي إلى إرباك shell بواسطة الشرطات السفلية.
أنماط خادم النهاية
لتمييز العملاء بواسطة عنوان الشبكة الذي يتصلون به ، استخدم نماذج النموذج:
process_name @ host_pattern: client_list …
يمكن استخدام أنماط مثل هذه عندما يكون لدى الجهاز عناوين إنترنت مختلفة بأسماء مضيفين مختلفة على الإنترنت. يمكن لمزودي الخدمة استخدام هذا المرفق لتقديم محفوظات FTP أو GOPHER أو WWW بأسماء الإنترنت التي قد تنتمي حتى إلى منظمات مختلفة. راجع أيضًا خيار "التواء" في المستند hosts_options (5). يمكن أن تحتوي بعض الأنظمة (Solaris و FreeBSD) على أكثر من عنوان إنترنت واحد على واجهة فعلية واحدة؛ مع أنظمة أخرى قد تضطر إلى اللجوء إلى واجهات SLIP أو PPP pseudo التي تعيش في مساحة عنوان شبكة مخصصة.
يتلقى host_pattern قواعد النحو نفسها مثل أسماء المضيفين وعناوينهم في سياق client_list. عادة ، لا تتوفر معلومات نقطة النهاية للملقم إلا مع الخدمات الموجهة للاتصال.
العميل اسم المستخدم البحث
عندما يدعم المضيف العميل بروتوكول 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_netgroupALL: .foobar.edu EXCEPT terminalserver.foobar.edu تسمح القاعدة الأولى بالوصول من المضيفين في المجال المحلي (لا "." في اسم المضيف) ومن أعضاء some_netgroup netgroup. القاعدة الثانية تسمح بالوصول من جميع المضيفين في foobar.edu المجال (لاحظ النقطة الرائدة) ، باستثناء terminalserver.foobar.edu . هنا ، يتم منح الوصول بشكل افتراضي. فقط يتم رفض المضيفين المحدد صراحة الخدمة. السياسة الافتراضية (الوصول الممنوح) تجعل الملف المسموح به احتياطيًا بحيث يمكن حذفه. يتم سرد المضيفات غير المصرح بها بشكل صريح في ملف الرفض. فمثلا: /etc/hosts.deny: ALL: some.host.name، .some.domainكل ما عدا in.fingerd: other.host.name ، .other.domain القاعدة الأولى تحرم بعض المضيفين والمجالات من كل الخدمات ؛ القاعدة الثانية لا تزال تسمح طلبات الإصبع من المضيفين والمجالات الأخرى. المثال التالي يسمح بطلبات 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-٪ h root) &
يأتي الأمر safe_finger مع غلاف tcpd ويجب تثبيته في مكان مناسب. فهو يحد من التلف المحتمل من البيانات المرسلة من خادم الإصبع البعيد. يوفر حماية أفضل من الأمر الإصبع القياسي. تم وصف توسع٪ h (مضيف العميل) وتتابعات٪ d (اسم الخدمة) في القسم الموجود بأوامر shell. تحذير: لا تفخخ خدعة إصبعك ، إلا إذا كنت مستعدًا لحلقات الأصابع اللانهائية. على أنظمة جدار الحماية الشبكة يمكن أن تتم هذه خدعة أبعد من ذلك. لا يوفر جدار الحماية الشبكي النموذجي سوى مجموعة محدودة من الخدمات للعالم الخارجي. جميع الخدمات الأخرى يمكن "التنصت عليها" تماما مثل المثال أعلاه tftp. والنتيجة هي نظام ممتاز للإنذار المبكر. برنامج tcpd (8) برنامج tcp / ip daemon.tcpdchk (8) ، tcpdmatch (8) ، برامج الاختبار.
مهم: استخدم ال رجل أمر ( رجل٪ ) لمعرفة كيفية استخدام الأمر على جهاز الكمبيوتر الخاص بك. الكشف عن هجمات انتحال العنوان
أمثلة
مغلقة في الغالب
مفتوحة في الغالب
الفخاخ المفخخة
أنظر أيضا




