TCPD(8)

الاسم
tcpd - مرفق التحكم في الوصول لخدمات الإنترنت

الوصف

يمكن إعداد برنامج tcpd لمراقبة الطلبات الواردة لخدمات telnet وfinger وftp وexec وrsh وrlogin وtftp وtalk وcomsat وغيرها من الخدمات التي لها تطابق واحد لواحد مع الملفات القابلة للتنفيذ.

يدعم البرنامج كلًا من المقابس بنمط 4.3BSD وTLI بنمط System V.4. قد تكون الوظائف محدودة عندما لا يكون البروتوكول الأساسي لـTLI بروتوكول إنترنت.

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

الميزات الاختيارية هي: التحكم في الوصول القائم على الأنماط، استعلامات اسم مستخدم العميل باستخدام بروتوكول RFC 931 وغيره، الحماية ضد المضيفين الذين يتظاهرون بأن لديهم اسم مضيف شخص آخر، والحماية ضد المضيفين الذين يتظاهرون بأن لديهم عنوان شبكة شخص آخر.

التسجيل
يتم الإبلاغ عن الاتصالات التي يراقبها tcpd من خلال مرفق syslog(3). يحتوي كل سجل على طابع زمني واسم مضيف العميل واسم الخدمة المطلوبة. يمكن أن تكون المعلومات مفيدة لاكتشاف الأنشطة غير المرغوب فيها، خاصة عند دمج معلومات ملف السجل من عدة مضيفين.

لمعرفة أين تذهب سجلاتك، افحص ملف تكوين syslog، عادةً /etc/syslog.conf.

التحكم في الوصول
اختياريًا، يدعم tcpd شكلاً بسيطًا من التحكم في الوصول يعتمد على مطابقة الأنماط. يوفر برنامج التحكم في الوصول خطافات لتنفيذ أوامر الصدفة عند تفعيل نمط. للتفاصيل، راجع صفحة الدليل hosts_access(5).

التحقق من اسم المضيف
يعتمد مخطط الاستيثاق لبعض البروتوكولات (rlogin, rsh) على أسماء المضيفين. تصدق بعض التطبيقات اسم المضيف الذي تحصل عليه من أي خادم أسماء عشوائي؛ تطبيقات أخرى أكثر حذرًا ولكنها تستخدم خوارزمية معيبة.

يتحقق tcpd من اسم مضيف العميل الذي يعيده خادم DNS من عنوان->اسم من خلال النظر إلى اسم المضيف والعنوان اللذين يعيدهما خادم DNS من اسم->عنوان. إذا تم اكتشاف أي تباين، يستنتج tcpd أنه يتعامل مع مضيف يتظاهر بأن لديه اسم مضيف شخص آخر.

إذا تم تجميع المصادر مع -DPARANOID، فإن tcpd يقطع الاتصال في حالة عدم تطابق اسم المضيف/العنوان. وإلا، يمكن مطابقة اسم المضيف مع حرف البدل PARANOID، وبعد ذلك يمكن اتخاذ الإجراء المناسب.

انتحال عنوان المضيف
اختياريًا، يعطل tcpd خيارات المقبس لتوجيه المصدر على كل اتصال يتعامل معه. هذا يعتني بمعظم الهجمات من المضيفين الذين يتظاهرون بأن لديهم عنوانًا ينتمي لشبكة شخص آخر. خدمات UDP لا تستفيد من هذه الحماية. يجب تفعيل هذه الميزة في وقت التجميع.

RFC 931
عند تمكين استعلامات RFC 931 وغيرها (خيار وقت التجميع)، يحاول tcpd تحديد اسم مستخدم العميل. ينجح هذا فقط إذا كان مضيف العميل يشغل خفيًا متوافقًا مع RFC 931. لا تعمل استعلامات اسم مستخدم العميل للاتصالات الموجهة للبيانات، وقد تسبب تأخيرات ملحوظة في حالة الاتصالات من أجهزة الكمبيوتر الشخصية.

أمثلة
تعتمد تفاصيل استخدام tcpd على معلومات مسار الملف التي تم تجميعها في البرنامج.

مثال 1
ينطبق هذا المثال عندما يتوقع tcpd أن الخفيات الشبكية الأصلية سيتم نقلها إلى مكان "آخر".

لمراقبة الوصول إلى خدمة finger، انقل الخفي الأصلي لـ finger إلى المكان "الآخر" وقم بتثبيت tcpd في مكان الخفي الأصلي لـ finger. لا تتطلب أي تغييرات في ملفات التكوين.

# mkdir /other/place
# mv /usr/sbin/in.fingerd /other/place
# cp tcpd /usr/sbin/in.fingerd

يفترض المثال أن الخفيات الشبكية موجودة في /usr/sbin. في بعض الأنظمة، توجد الخفيات الشبكية في /usr/sbin أو في /usr/libexec، أو لا تحتوي على بادئة `in.' في اسمها.

مثال 2
ينطبق هذا المثال عندما يتوقع tcpd أن الخفيات الشبكية تُترك في مكانها الأصلي.

لمراقبة الوصول إلى خدمة finger، قم بإجراء التعديلات التالية على ملف تهيئة inetd (عادةً /etc/inetd.conf):

finger  stream  tcp  nowait  nobody  /usr/sbin/in.fingerd  in.fingerd

يصبح:

finger  stream  tcp  nowait  nobody  /usr/sbin/tcpd     in.fingerd

يفترض المثال أن برامج الشبكة الخفية موجودة في /usr/sbin. في بعض الأنظمة، توجد برامج الشبكة الخفية في /usr/sbin أو /usr/libexec، ولا تحتوي أسماء هذه البرامج على البادئة `in.'، أو لا يوجد حقل معرف مستخدم في ملف تهيئة inetd.

ستكون هناك حاجة لتغييرات مماثلة للخدمات الأخرى التي سيتم تغطيتها بواسطة tcpd. أرسل إشارة `kill -HUP' إلى عملية inetd(8) لتفعيل التغييرات.

مثال 3
في حالة البرامج الخفية التي لا توجد في دليل مشترك ("سري" أو غيره)، قم بتحرير ملف تهيئة inetd بحيث يحدد اسم مسار مطلق لحقل اسم العملية. على سبيل المثال:

    ntalk  dgram  udp  wait  root  /usr/sbin/tcpd  /usr/local/lib/ntalkd

سيتم استخدام المكون الأخير فقط (ntalkd) من اسم المسار للتحكم في الوصول وتسجيل الدخول.

العلل
بعض برامج UDP (و RPC) الخفية تبقى نشطة لفترة بعد انتهاء عملها، تحسبًا لورود طلب آخر. في ملف تهيئة inetd، يتم تسجيل هذه الخدمات مع خيار wait. سيتم تسجيل الطلب الذي بدأ مثل هذه البرامج الخفية فقط.

لا يعمل البرنامج مع خدمات RPC عبر TCP. يتم تسجيل هذه الخدمات كـ rpc/tcp في ملف تهيئة inetd. الخدمة الوحيدة غير التافهة المتأثرة بهذا القيد هي rexd، والتي يستخدمها أمر on(1). هذه ليست خسارة كبيرة. في معظم الأنظمة، rexd أقل أمانًا من حرف بدل في /etc/hosts.equiv.

تبدو طلبات البث RPC (على سبيل المثال: rwall, rup, rusers) دائمًا وكأنها قادمة من المضيف المستجيب. ما يحدث هو أن العميل يبث الطلب إلى جميع برامج portmap الخفية على شبكته؛ يقوم كل برنامج portmap خفي بإعادة توجيه الطلب إلى برنامج خفي محلي. بقدر ما تعرفه برامج rwall إلخ الخفية، فإن الطلب يأتي من المضيف المحلي.

الملفات

المواقع المبدئية لجداول التحكم في الوصول للمضيف هي:

/etc/hosts.allow
/etc/hosts.deny

انظر أيضًا
hosts_access(3)، الوظائف التي توفرها مكتبة libwrap.
hosts_access(5)، تنسيق جداول التحكم في الوصول لبرنامج tcpd.
syslog.conf(5)، تنسيق ملف التحكم لبرنامج syslogd.
inetd.conf(5)، تنسيق ملف التحكم لبرنامج inetd.

المؤلفون
ويتسي فينيما (wietse@wzv.win.tue.nl)،
قسم الرياضيات وعلوم الحوسبة،
جامعة أيندهوفن للتكنولوجيا
Den Dolech 2، ص. ب. 513،
5600 MB أيندهوفن، هولندا

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.