الرئيسية
» لينوكس
»
كيفية إعداد خادم TFTP على خادم أوبونتو باستخدام tftpd-hpa
كيفية إعداد خادم TFTP على خادم أوبونتو باستخدام tftpd-hpa
قم بتثبيت خادم tftpd-hpa وعميل tftp-hpa الخاصين بنظام أوبونتو . يقوم هذا الإعداد بنقل الملفات من وإلى الخادم /srv/tftp، ويحفظ الملفات المرفوعة في مجلد منفصل. راجع قائمة حزم الخادم والعميل في أوبونتو .
الأمان: لا يتطلب بروتوكول TFTP تسجيل دخول أو تشفير. يُنصح بتقييد الوصول إلى شبكة محلية موثوقة؛ حيث يمكن للعملاء المتاحين قراءة الملفات المتاحة وتحميلها عند توفر الصلاحيات. يُمنع نقل البيانات السرية. توضح مواصفات TFTP حدود الأمان الخاصة به.
قم بإعداد خادم TFTP
1. قم بتثبيت الخادم والعميل
قم بتحديث بيانات تعريف APT، ثم قم بتثبيت الحزمتين:
--secureيُقيّد هذا الخيار عمل البرنامج الخفي في جذره المُهيأ، --createويسمح برفع الملفات، --umask 027ويُقيّد الملفات الجديدة المرفوعة بوضع معين 0640. يُوثّق دليل Ubuntu tftpd هذه الخيارات. احفظ التغييرات بالضغط على Ctrl+O، ثم اضغط على Enter، ثم Ctrl+X.
لأن TFTP --secureيجعل /srv/tftpالمجلد الجذر مرئيًا للعميل، فإن أسماء الملفات تكون نسبية إليه: استخدم TFTP hello.txt، وليس TFTP /srv/tftp/hello.txt. لا تتصفح عملاء TFTP الدلائل، لذا احتفظ بقائمة بأسماء الملفات المنشورة ومساراتها.
قم بتقييد الملفات وتعيين قناع التحميل.
3. أنشئ مجلد الجذر ومجلد التحميل
احتفظ بالمجلد الرئيسي مملوكًا للمستخدم root، وامنح حق الوصول للكتابة فقط إلى مجلد التحميل:
يمكن للبرنامج قراءة المجلد الجذر، ولكن tftpالحساب فقط هو من يملك صلاحية الكتابة فيه /srv/tftp/upload. تجنب جعل الشجرة بأكملها قابلة للكتابة من قبل جميع المستخدمين باستخدام صلاحيات مثل 777.
يجب أن تُعامل الملفات الموجودة في المجلد الرئيسي العام على أنها قابلة للقراءة من قِبل جميع العملاء المسموح لهم. يجب حصر هذا المجلد في صور الإقلاع، والبرامج الثابتة، أو أي مواد أخرى مخصصة لتلك الشبكة. بالنسبة لعمليات النقل الخاصة، اختر بروتوكولًا يتضمن المصادقة والتشفير.
المجلد الفرعي الخاص بالتحميل فقط هو القابل للكتابة.
4. أضف ملفًا لتقديمه
أنشئ ملفًا معروفًا في المجلد الجذر. تتطلب عمليات التحقق الافتراضية للقراءة في بروتوكول نقل الملفات البسيط (TFTP) أن تكون الملفات المُخدَّمة قابلة للقراءة العامة، لذا اضبط الوضع على 0644:
echo 'TFTP test file' | sudo tee /srv/tftp/hello.txt
sudo chmod 0644 /srv/tftp/hello.txt
أنشئ ملفًا معروفًا لاختبار التنزيل.
5. قم بتمكين الخدمة وإعادة تشغيلها
قم بتمكين الوحدة عند بدء التشغيل، وأعد تشغيلها لتطبيق الإعدادات، ثم افحص حالتها:
في حالة فشل بدء التشغيل، تحقق من سجل الخدمة باستخدام sudo journalctl -u tftpd-hpa -b --no-pager.
أعد تشغيل الخدمة بعد تغيير إعداداتها.
6. تقييد الوصول إلى جدار الحماية
في حال تفعيل جدار الحماية UFW، اسمح بالطلب الأولي فقط من الشبكة الفرعية الخاصة بجهازك. استبدل الشبكة المذكورة في المثال بنطاق شبكة LAN الموثوقة لديك.
sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
sudo ufw status
راجع دليل UFW الخاص بنظام Ubuntu للاطلاع على قواعد شبكة المصدر. يبدأ بروتوكول TFTP على منفذ UDP رقم 69، ثم يستخدم منفذ UDP يختاره الخادم لنقل بيانات الملفات، كما هو موضح في مواصفات البروتوكول . قد يسمح جدار الحماية أو جهاز التوجيه أو جهاز NAT الصارم بالطلب ولكنه يمنع النقل. في حال انقطاع اتصال العملاء، استخدم خاصية تتبع الاتصالات المتوافقة مع TFTP أو سياسة جدار حماية مناسبة؛ لا تفتح جميع منافذ UDP أو تعرض TFTP للإنترنت. يضيف هذا الأمر قاعدة؛ ولا يُفعّل UFW. إذا كنت تُدير الخادم عبر SSH وتعتزم تشغيل جدار حماية غير نشط، فاسمح لـ SSH أولاً للحفاظ على الوصول عن بُعد.
السماح بالطلبات الأولية من شبكة فرعية موثوقة.
اختبار عمليات التنزيل والتحميل
7. التنزيل من عميل أوبونتو
على الخادم، شغّل البرنامج ip -brief addressوسجّل عنوان الشبكة المحلية (LAN) الخاص به. على جهاز عميل أوبونتو، ثبّت البرنامج إذا لزم الأمر. استبدل 192.0.2.10العنوان أدناه بعنوان الخادم الحقيقي:
يُحفظ الملف في المجلد الحالي للعميل. يُوثّق دليل عميل TFTP في أوبونتو ذلك . يُنصح باستخدام الوضع الثنائي للبرامج الثابتة وصور الإقلاع والملفات التي يجب أن تبقى بايتاتها دون تغيير. أسماء ملفات لينكس حساسة لحالة الأحرف، لذا أدخل كل اسم ملف عن بُعد بدقة.binaryget
اطلب الملف المعروف في الوضع الثنائي.
8. قم بتحميل الملف إلى المجلد المقيد
على جهاز العميل، أنشئ ملف اختبار، ثم أرسله إلى مسار ضمن دليل التحميل الخاص بالخادم:
استخدم عنوان الخادم الفعلي. المسار البعيد نسبي إلى عنوان /srv/tftpالخادم؛ تحقق من التحميل على الخادم باستخدام الأمر المناسب sudo ls -l /srv/tftp/upload/. تستخدم برامج TFTP أسماء الملفات المعروفة بدلاً من استعراض قائمة الدليل.
تبقى الملفات المرفوعة داخل المجلد الفرعي القابل للكتابة.
استكشاف الأخطاء الشائعة وإصلاحها
لم يتم العثور على الملف: تحقق من اسم الملف بالنسبة إلى الموقع /srv/tftpوتأكد من وجوده.
انتهاك الوصول: اجعل الملفات المقدمة قابلة للقراءة بشكل عام؛ بالنسبة لعمليات التحميل، تحقق من tftpملكية الوجهة وتأكد --createمن تعيينها.
مهلة زمنية: تأكد من أن العميل يستخدم عنوان الخادم الذي يمكن الوصول إليه، وأن الخدمة نشطة، وأن جدار الحماية يسمح بتدفق بيانات UDP المتفاوض عليه.
لعزل مشكلة في الشبكة، اختبر أولاً من جهاز عميل على نفس الشبكة المحلية. إذا نجح ذلك ولكن حدث انقطاع في اتصال العميل المتصل، فتحقق من جهاز التوجيه أو جدار الحماية للتأكد من دعمه لبروتوكول نقل الملفات البسيط (TFTP) عند التعامل مع منفذ البيانات المتفق عليه.
بالنسبة للخدمة التي تعمل للقراءة فقط، قم بإزالتها --createمن TFTP_OPTIONSثم أعد تشغيلها tftpd-hpa.