it-swarm.dev

جنكينز الرقيق رقم المنفذ لجدار الحماية

نستخدم Jenkins 1.504 على Windows .

نحتاج إلى وجود Master و Slave في شبكات فرعية مختلفة مع وجود جدار حماية بينهما.
لا يمكننا امتلاك أي من قواعد جدار حماية المنفذ ، يجب تحديد أرقام المنافذ بالضبط.

أعرف أن المنفذ الرئيسي يستمع إليه.

أرى أيضًا أن Slave يفتح اتصالًا بالسيد Master من المنفذ التعسفي الذي يتم تعيينه بشكل حيوي لكل عملية تشغيل ، كما أن المنفذ على الجانب Master يكون تعسفيًا أيضًا.
يمكنني إصلاح منفذ الماجستير عن طريق تحديده في إدارة جنكينز> تكوين الأمن العالمي> TCP منفذ لوكلاء الرقيق JNLP).

كيفية إصلاح منفذ الرقيق؟


[~ # ~] تحديث [~ # ~]: تم العثور على آلية الاتصال الموصوفة هنا: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI#JenkinsCLI-Connectionmechanism

أعتقد أن هذا قد يكون مفيدًا لنا ، ولكن من الأفضل أن يكون لديك اتصال منافذ ثابتة ثابتة.

38
Ivan

كان لدينا موقف مشابه ، ولكن في حالتنا ، وافقت Infosec على السماح لأي من 1 ، لذلك لم يكن لدينا لإصلاح منفذ الرقيق ، بل إصلاح السيد إلى JNLP منفذ عالي المستوى 49187 عملت ("Configure Global Security" -> "TCP port لوكلاء الرقيق JNLP ").

TCP
49187 - Fixed jnlp port
8080 - jenkins http port

المنافذ الأخرى اللازمة لإطلاق الرقيق كخدمة ويندوز

TCP
135 
139 
445

UDP
137
138
38
Ganga

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

يجب أن تخبر قسم الأمن أن العبد ليس خادمًا ولكن عميلاً يتصل بالخادم وأنك بحاجة تمامًا إلى وجود قاعدة تقول العميل: ANY -> server: FIXED. يجب أن يكون رقم منفذ العميل> = 1024 ( تحتاج المنافذ من 1 إلى 1023 إلى أذونات خاصة ) ولكني لست متأكدًا مما إذا كنت تكتسب أي شيء بالفعل عن طريق إضافة قاعدة لذلك - إذا كان المهاجم يمكنه فتح منافذ مميزة ، لديهم أساسا بالفعل الجهاز.

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

10
Aaron Digulla

لديّ سيناريو مشابه ، ولم أواجه مشكلة في الاتصال بعد تعيين منفذ JNLP كما تصف ، وإضافة قاعدة جدار حماية واحدة تسمح بالاتصال على الخادم باستخدام هذا المنفذ. منحت أنه منفذ عميل تم اختياره بشكل عشوائي يذهب إلى منفذ خادم معروف (مضيف: ANY -> خادم: هناك حاجة إلى قاعدة واحدة).

من قراءتي للكود المصدري ، لا أرى طريقة لتعيين المنفذ المحلي لاستخدامه عند تقديم الطلب من العبد. إنه أمر مؤسف ، سيكون ميزة لطيفة.

البدائل:

استخدم وكيلًا بسيطًا على عميلك يستمع إلى المنفذ N ، ثم يقوم بإعادة توجيه كافة البيانات إلى خادم Jenkins الفعلي على المضيف البعيد باستخدام منفذ محلي ثابت. قم بتوصيل عبدك بهذا الوكيل المحلي بدلاً من خادم Jenkins الحقيقي.

قم بإنشاء بنية Jenkins مخصصة للعبيد تتيح خيار تحديد المنفذ المحلي الذي سيتم استخدامه.

تذكر أيضًا إذا كنت تستخدم HTTPS عبر شهادة موقعة ذاتيًا ، فيجب عليك تغيير ملف jenkins-slave.xml للتكوين على العبد لتحديد الخيار - noCertificateCheck في سطر الأوامر.

1
metaforge