اذهب إلى المحتوى

لوحة المتصدرين

  1. Naser Dakhel

    Naser Dakhel

    الأعضاء


    • نقاط

      1

    • المساهمات

      51


  2. محمد أحمد العيل

    • نقاط

      1

    • المساهمات

      308


  3. عبدالرحمن التميمي2

    • نقاط

      1

    • المساهمات

      75


  4. Madani Boutitaou

    Madani Boutitaou

    الأعضاء


    • نقاط

      1

    • المساهمات

      2


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 06/30/22 في كل الموقع

  1. كفاني خداع لنفسي أنا اريد التعلم الصحيح و الأساس المتين للبرمجة ليس التقليد التطبيقي خلف المدرب بحيث يستعمل خاصية ضمن عشرة تعلمها والباقي لا , موضع من مواضع إستخدامها تعرفه و الباقي لا , كم يكفيك للتطبيق خلف المدرب وما عساه يطبق معك ؟ ’ بعد إنهاء المسار معه وإعادته عدة مرات وحفظه عن ظهر قلب تصبح قادرا على مشروع بنفس الخصائص وفقط بل ربما ان واجهتك مشكلة لخطأ مجهول تعجز عن حلها , أبسط المشاكل تعجز أمامها ولكن لماااذا لأنني أفتقر إلى مبادئ البرمجة و أساسياتها وأقحمت نفسي شيء أكبر , رغم أنني أخدت كل ما ورد في الأساسيات وطبقت عليه التطبيق الجيد وحفظته إنتقلت بعده المسارات التي تليه , أنا مستعد لبذل المزيد من الوقت في سبيل التعلم دلوني يرحمكم الله على الطريق الصحيح , المصادر كثيرة وكلٌ يقول انا , فكيف لي ان لا أتشتت
    1 نقطة
  2. السلام عليكم لدي مشكلة في مشروع الشركة في احد مسارات الدورة حاولت تشغيله لكنه لايعمل بشكل جيد حيث يقوم بعمل ريفريش تلقائي متكرر و لم افهم ما المشكلة هل يمكن المساعدة ؟ company.zip
    1 نقطة
  3. لدي نموذج Model يحتوي على عدد من الحقول بالشكل التالي: Class MyModel(models.Model): f1 = models.CharField(max_length=199) f2 = models.CharField(max_length=199) f3 = models.CharField(max_length=199) # ... الآن أقوم بعمل نسخة instance من هذا النموذج Model وأريد أن أعدل على قيمة أكثر من حقل دفعة واحدة، مع العلم أن لدي قاموس dictionary يحتوي على اسم كل حقل والقيمة الجديدة الخاصة بهذا الحقل: values = { "f1": "new value for f1", "f2": "new value for f2", "f3": "new value for f3" } هل توجد طريقة لتحديث قيمة أكثر من حقل من خلال إستخدام القاموس السابق في جانغو Djangoِ؟
    1 نقطة
  4. ما هي افضل لغة برمجة مواقع؟ (أقصد أفضل من حيث الإمكانيات وسهولة التعلم) وهل لغة برمجة الموقع تختلف عن لغة تصميمه؟ وهل يمكن إنشاء لوحة تحكم خاصة له؟
    1 نقطة
  5. سأدخل دورة تطوير تطبيقات الويب باستخدام لغة PHP بدون ما ادخل دورة تطوير واجهات المستخدم وهل دورة طوير تطبيقات الويب باستخدام لغة PHP تستلزم front END او لا بمعنى اخر html css js ليس لدي خبرة كافية في هاته اللغات هل يمكن دخول الدورة مباشرة او تعلم html css js قبل الدورة
    1 نقطة
  6. يمكن اعتبار كل مُبدل Switch مع الأجهزة الموصولة به شبكة محلية منفصلة LAN تملك مجال عناوين IP الخاص بها، ودور الموجه الأساسي هو الوصل بين الشبكات الفرعية الموصولة على كل واجهة Interface ضمنه، يمكن تقسيم مجال العناوين 192.168.0.0/16 إلى ثلاث شبكات فرعية يُعنون منها الأجهزة (والواجهات على الموجه) على كل شبكة LAN على حدى وتكون كالتالي: LAN 1: address: 192.168.0.0/17 subnet: 255.255.128.0 IPs range: 192.168.0.1 - 192.168.127.254 LAN 2: address: 192.168.128.0/18 subnet:255.255.192.0 IPs range: 192.168.128.1 - 192.168.191.254 LAN 3: address: 192.168.192.0/18 subnet:255.255.192.0 IPs range: 192.168.192.1 - 192.168.255.254 من مجالات العناوين range السابقة يجب عنونة الأجهزة والواجهات وضبط الشبكة على هذا الأساس، يمكنك الاستفادة من قراءة المقالات التالية:
    1 نقطة
  7. السلام عليكم ورحمة الله وبركاته ذكرتم أن من مميزات دوراتكم أني إذا لم اجد عملا بعد ٦ أشهر من الانتهاء من الدورة يغطي تكاليف الدورة فإنكم ستعيدون لي مالي سؤالي ما هو طبيعة العلم الذي من الممكن أن أحصل عليه بعد إتمام دورة علوم الحاسوب كاملة أعني مثلا بعد إتمام دورة تطوير واجهات المستخدم فإني أحصل على وظيفة في مجال front end فما هي الوظيفة التي يجب أن أبحث عنها بعد انتهائي من دورة علوم الحاسوب
    1 نقطة
  8. يعطّل معظم الأشخاص التأمين المُعزَّز في لينكس Security-Enhanced Linux -أو اختصارًا سي لينوكس SELinux- إذا واجهتهم أي مشكلة خلال عملهم على بيئة لينكس، إذ يبدو أن تعطيلها يحل المشاكل بصورةٍ مفاجئة، لكن هذا يتسبب بخسارتهم لأداة حماية فائقة القوّة والأهميّة. تتزايد التهديدات الأمنية مع تزايد استخدام الحاويات Containers والخدمات المصغرة Microservices ومعمارية الحوسبة الموزّعة Distributed Architecture، وذلك بسبب مشكلة قديمة ومعروفة جيّدًا، ألا وهي: التسارع velocity؛ إذ تتميز الحاويات بمنحك القدرة على التحرك بسرعة وإنجاز المزيد والتغير بسرعة أيضًا. وهذا يعني أن تطبيق الحاويات انتشر بصورةٍ كبيرة، ولكن سرعة تطبيقها محدودة. وستواجهك الكثير من المشاكل ونقاط الضعف خلال استخدامها؛ فهذا أمرٌ طبيعي عندما تسعى لإنجاز الأمور على نحوٍ أسرع. كيف تخفف من التهديدات؟ يقول سن تزو: "المحارب الحكيم يتفادى المعركة". ينطبق هذا الاقتباس على عملية حماية الحاويات بصورةٍ مثالية؛ إذ لتفادي المشكلات (المعارك)، عليك التأكد أن مضيف الحاوية آمن ويستخدَم سي لينكس مثل خط دفاعٍ أوّل. أُطلِق سي لينكس على أنه مشروعٌ مفتوح المصدر في عام 2000، ودُمج مع نواة لينكس في عام 2003. ووفقًا لموقع Red Hat's explainer، فإن سي لينكس هو معماريّة أمان لأنظمة لينكس، تسمح لمسؤولي النظام بالتحكم بمن لديه صلاحية الولوج للنظام، وقد طوِّرت البرمجية من قبل وكالة الأمن القومي United States National Security Agency -أو اختصارًا NSA-، بكونها سلسلةً ضمن مجموعةٍ من الرُقع Patches لـ نواة لينكس باستخدام وحدات أمن لينكس Linux Security Modules -أو اختصارًا LSM". البداية عندما تسمع كلمة حاويات، سيتبادر لذهنك أولًا دوكر Docker، فقد بدأ دوكر بثورةٍ ساهمت بتبنٍ واسعٍ لتقنية الحاويات بعد ظهوره في عام 2013؛ فهو من أبرز الأسباب التي ساهمت بانتشار شعبية الحاويات. وكما ذكرنا سابقًا، ساهم تزايد معدل تبنّي هذه التقنية بتزايد معدل الثغرات الأمنية. قبل البدء بعملية تأمين حاويات دوكر باستخدام سي لينكس، عليك تجهيز بعض الأشياء. المتطلبات نظام تشغيل سينت أو إس CentOS إصدار 8/RHEL مُثبت ومهيّأ. دوكر Docker CE مُثبَّت ومهيّأ. حسابين مستخدم، إحداها بصلاحيات الجذر root والآخر بدون؛ وهو موجود باسم mcalizo في الأمثلة ضمن هذه المقالة. يمكنك اتباع التعليمات، إذا أردت تثبيت دوكر على خادم CentOS RHEL/8؛ وإذا كنت تعمل على RHEL 8، فعليك إزالة الحزمتين المثبّتتين تلقائيًّا Podman وrunc قبل البدء. دعنا نتأكد أوّلًا من أن سي لينكس يعمل: mcalizo@Rhel82 ~]$ sestatus] SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed (Memory protection checking: actual (secure Max kernel policy version: 31 $ [ ~ mcalizo@Rhel82] من ثم، تأكد أن إصدار نظام التشغيل الخاص بك ودوكر يعملان. سجّل الدخول مثل مستخدمٍ بصلاحيات الجذر، ونفّذ التعليمات التالية: root@rhel82 ~]# cat /etc/redhat-release] (Red Hat Enterprise Linux release 8.2 (Ootpa [root@rhel82 ~]# root@rhel82 ~]# systemctl status docker] docker.service - Docker Application Container Engine ● (Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled Active: active (running) since Wed 2020-10-28 19:10:14 EDT; 15s ago Docs: https://docs.docker.com (Main PID: 30768 (dockerd Tasks: 8 Memory: 39.0M CGroup: /system.slice/docker.service └─ 30768 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Oct 28 19:10:13 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:13.889602941-04:00" level=error msg="> Oct 28 19:10:13 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:13.903413613-04:00" level=warning msg> Oct 28 19:10:13 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:13.903427451-04:00" level=warning msg> Oct 28 19:10:13 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:13.903538271-04:00" level=info msg="L> Oct 28 19:10:14 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:14.132060506-04:00" level=info msg="D> Oct 28 19:10:14 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:14.308943088-04:00" level=info msg="L> Oct 28 19:10:14 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:14.319438549-04:00" level=info msg="D> Oct 28 19:10:14 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:14.319570298-04:00" level=info msg="D> Oct 28 19:10:14 rhel82.home.labs.com dockerd[30768]: time="2020-10-28T19:10:14.333419209-04:00" level=info msg="A> Oct 28 19:10:14 rhel82.home.labs.com systemd[1]: Started Docker Application Container Engine تحقق من إصدار دوكر لديك: root@rhel82 ~]# docker --version] Docker version 19.03.13, build 4484c46d9d اخترق المضيف أفضل الطرق للتعلم هي خوض التجربة، لذلك سنبيّن في هذه الفقرة سهولة اختراق مضيف دوكر باستخدام شيفرة حقن Injection خبيثة، إذا لم يكن أمن الحاوية مُعدًّا على النحو الصحيح. لكي تكون قادرًا على إجراء هجومٍ ما على المضيف، يجب أن يكون المستخدم الخبيث الذي لا يملك صلاحيات الجذر (باسم mcalizo في أمثلتنا) منتميًا للمجموعة التي أنشأت حاويات دوكر. وللتأكد من ذلك، نتفقّد المجموعة التي ينتمي إليها الحساب mcalizo عن طريق: root@Rhel82 ~]# groups mcalizo] mcalizo : mcalizo تُظهِر رسالة الخَرج أن الحساب mcalizo ينتمي لمجموعته الخاصة، وهذا يعني أنه لا يمكنه إنشاء حاوية دوكر. وإذا حاولت إنشاء حاوية دوكر باستخدام الحساب سيظهر الخطأ التالي: mcalizo@Rhel82 ~]$ docker run -it --rm centos:latest /bin/sh] docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'. للسماح لحساب mcalizo بإنشاء الحاوية، أضِف المستخدم لمجموعة docker: root@Rhel82 ~]# usermod -G docker -a mcalizo] root@Rhel82 ~]# groups mcalizo] mcalizo : mcalizo docker ثم أنشئ حاويةً من نوع fedora:latest وادخل إليها لتكتشفها: mcalizo@Rhel82 ~]$ docker run -it --rm fedora:latest /bin/sh] Unable to find image 'fedora:latest' locally latest: Pulling from library/fedora ee7e89337106: Pull complete Digest: sha256:b9ec86d36fca7b1d3de39cd7c258e8d90c377d312c21a7748071ce49069b8db4 Status: Downloaded newer image for fedora:latest sh-5.0# cat /etc/redhat-release (Fedora release 33 (Thirty Three ستُسجَّل مثل مستخدم بصلاحيات الجذر تلقائيًّا، عندما تسجل الدخول لحاوية منشأة جديدًا: sh-5.0# whoami root sh-5.0# تستطيع فعل أي شيء بداخل الحاوية بصفتك مستخدمًا بصلاحيات الجذر؛ وهذا يعني أنك تستطيع إساءة استخدام مضيف الحاوية وتتسبّب بكثيرٍ من الضرر. تعني قدرتك على إنشاء الحاويات أنّك تستطيع فعل أي شيء للمضيف، حتى إن لم تكن جزءًا من المستخدمين بصلاحيات الجذر على الجهاز المضيف. لتوضيح الثغرة الأمنية هذه، أُخرج من الحاوية التي أنشأتها وأنشئ حاويةً جديدة: mcalizo@Rhel82 ~]$ docker run -it --rm -v /:/exploit fedora:latest /bin/bash] #[root@131043f2e306 /] ينقل الخيار ‎-v مسار المضيف الرئيس الخاص بدوكر / إلى مسار الحاوية المدعوّ exploit/: /root@131043f2e306 /]#ls exploit] bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var بسبب عملية النقل هذه، تستطيع فعل أي شيء على جهاز دوكر المضيف؛ إذ يمكنك مثلًا حذف الملفات، أو تعديل ملفات الضبط بهدف إلحاق الضرر بالنظام، أو تثبيت تطبيق حصان طروادة أو برمجيات خبيثة مشابهة لسرقة البيانات المهمة. سبب هذه الثغرة لعلك تتسائل عن سبب حدوث ذلك بالرغم من أن سي لينكس مفعّل، إذ نستطيع فهم ما السبب بالتحديد، من خلال النظر الدقيق لكيفية عمل سي لينكس. تأكد من أن سي لينكس يحتوي على سياق دوكر Docker Context: mcalizo@Rhel82 ~]$ ps -eZ | grep docker] system_u:system_r:container_runtime_t:s0 30768 ? 00:00:04 dockerd $[~ mcalizo@Rhel82] يحتوي سي لينكس على السياق كما توقعنا؛ وهذا يعني أن سي لينكس مسؤولٌ عن إدارة عفريت دوكر Docker daemon. افحص عفريت دوكر للتحقُّق مما إذا كان سي لينكس مفعّلًا تلقائيًا: mcalizo@Rhel82 ~]$ docker info | grep Security -A3] :Security Options seccomp Profile: default Kernel Version: 4.18.0-193.el8.x86_64 كما نلاحظ، سي لينكس غير مفعَّل تلقائيًا، بالتالي لقد وجدنا المشكلة، وكل ما علينا فعله هو تفعيل سي لينكس لسد الثغرة؛ بحيث يتحكّم ويدير دوكر. ولتفعيل سي لينكس، أنشئ ملفًّا في المسار etc/docker/daemon.json كما هو موضح هنا، ولكن يجب أن تمتلك صلاحيات الجذر لتفعيله: root@Rhel82 ~]# cat /etc/docker/daemon.json] { "selinux-enabled": true } #[~ root@Rhel82] root@Rhel82 ~]# systemctl restart docker] بعد إنشائك للملف أو تحديثه، وإعادة تشغيل دوكر؛ يجب أن ترى أن سي لينكس مفعّل في عفريت دوكر: root@Rhel82 ~]# systemctl restart docker] mcalizo@Rhel82 root]$ docker info | grep Security -A3] :Security Options seccomp Profile: default selinux [mcalizo@Rhel82 root]$ على الرغم من أنّ وصل مسارات ملفات filesystem معيّنة لمضيف دوكر داخل حاوية دوكر ما زال ممكنًا، إلّا أنّ تحديث الملفات أو الوصول إليها أصبح غير متاحًا الآن: mcalizo@Rhel82 root]$ docker run -it --rm -v /:/exploit fedora:latest /bin/bash] root@ecb5836da1f6 /]# touch /exploit/etc/shadow.sh] touch: cannot touch '/exploit/etc/shadow.sh': Permission denied #[/ root@ecb5836da1f6] تعتمد درجة أمان حاويتك على قوة أمان نظام تشغيل مضيف الحاوية. وهناك كثيرٌ من الوسائل لتأمين نظام لينكس، والعديد منها متاحٌ بهدف زيادة أمان نظامك. يتواجد سي لينكس افتراضيًا مع توزيعات لينكس ليضيف طبقةً إضافية من الحماية؛ فتأكد من تفعيله وعمله صحيحًا للاستفادة منه ومن الحماية التي يقدمها لنظامك. ترجمة -وبتصرف- للمقال Secure your containers with SELinux لصاحبه Mike Calizo. اقرأ أيضًا بدء تشغيل واستعمال حاويات لينكس (LXC) التعامل مع حاويات Docker إجراء مهام معينة عند مختلف مراحل دورة حياة حاويات لينكس (LXC) مدخل إلى حاويات لينكس LXC
    1 نقطة
  9. يشرح هذا المقال كيفية استخدام Tinc، وهي أداة مفتوحة المصدر، لإنشاء شبكات خاصة افتراضية Virtual Private Network, VPN آمنة تستخدمها الخواديم والأجهزة للتواصل كما لو أنها في شبكة محليّة. يوضح المقال أيضا كيفية استخدام Tinc لإعداد نفق tunnel آمن نحو شبكة خاصة. سنستخدم خواديم Ubuntu 14.04 إلا أن الإعدادات صالحة للتطبيق والتكييف على أنظمة أخرى. يتضمن Tinc ميزات تجعله مفيدا؛ منها التعمية Encryption، الضغط Compression الاختياري للبيانات، التوجيه Routing التلقائي للشبكة (تُوجَّه حركة البيانات مباشرة إلى الخواديم المتصلة إن أمكن ذلك) واليسر في قابلية التمدد. تفرق هذه الميزات بين أداة Tinc وحلول الشبكات الخاصة الافتراضية الأخرى مثل OpenVPN وتجعلها مناسبة لإنشاء شبكة خاصة افتراضية مكوّنة من شبكات صغيرة موزَّعة على مناطق جغرافية متباعدة. تعمل أداة Tinc على نظم تشغيل مختلفة بما فيها لينوكس، وندوز و Mac OS X. المتطلباتيتطلب هذا المقال صلاحيات إدارية للوصول إلى ثلاثة خواديم Ubuntu 14.04 على الأقل. توجد تعليمات هذا الإعداد في الدرس التالي (الخطوات 3 و4): الإعداد الابتدائي لخادوم أوبنتو 14.04. إن كنت تريد استخدام الخطوات المشروحة في هذا الدرس في بيئة عملك فيجب عليك التخطيط للكيفية التي تريد لكل خادوم أن يتصل عن طريقها بالخواديم الأخرى، وتكييف الأمثلة المقدَّمة مع احتياجاتك الخاصة. تأكد عند تكييف الخطوات مع إعداداتك الخاصة من تغيير القيم إلى تلك الخاصة بك. لاتباع هذا الدرس دون تغيير يجب إنشاء خادومين خاصّين افتراضيين ضمن نفس مركز البيانات مع وضعهما في نفس الشبكة المحلية، وإنشاء خادوم آخر ضمن مركز بيانات منفصل. سنعد خادومين في مركز بيانات NYC2 وواحد في مركز بيانات AMS1 بالأسماء التالية: externalnyc: يجب أن تتصل جميع الأجهزة ضمن الشبكة الافتراضية بهذا الخادوم وتحافظ على الاتصال حتى تعمل الشبكة الافتراضية بطريقة صحيحة. يمكن أن تضبَط خواديم أخرى بطريقة مشابهة لضمان التكرار.internalnyc: يتصل بالخادوم externalnyc باستخدام واجهة الشبكة المحلية.ams1: يتصل بexternalnyc عبر الإنترنت.الهدففي المخطَّط أدناه توضيح للشبكة الخاصة الافتراضية التي نريد إعدادها والموصوفة في فقرة المتطلبات أعلاه: يمثل الأخضر شبكتنا الخاصة الافتراضية، البني شبكة الإنترنت والبرتقالي الشبكة المحلية. تستطيع الخواديم الثلاثة التخاطب عبر الشبكة الخاصة الافتراضية، على الرغم من أن ams1 غير متصل بالشبكة المحلية. نبدأ بتثبيت Tinc. تثبيت Tincثبت tinc على كل خادوم تود إلحاقه بالشبكة الخاصة الافتراضية. نبدأ بتحديث فهرس الحزم: sudo apt-get updateثم تثبيت حزمة tinc: sudo apt-get install tincننتقل بعد التثبيت إلى الإعداد. إعداد Tincيستخدم Tinc “اسم شبكة” netname للتفريق بين شبكات خاصة افتراضية عدّة في حالة وجودها. يُنصَح باستخدام أسماء شبكات حتى ولو لم تكن تخطط لإعداد شبكات خاصة افتراضية عدّة. سنسمي شبكتنا الاخاصة الافتراضية hsoub. يتطلب كل واحد من الخواديم التي ستكون جزءا من الشبكة الخاصة الافتراضية العناصر الثلاثة التالية: ملفات الإعداد: مثل tinc-up، tinc-down وtinc.conf.زوجا من المفاتيح (عمومي وخصوصي) للتعمية والاستيثاق.ملفات إعداد المستضيف: تتضمن المفاتيح العمومية وإعدادات أخرى للشبكة الخاصة الافتراضيةنبدأ بإعداد الجهاز الأول من شبكتنا الخاصة الافتراضية وهي externalnyc. إعداد externalnycأنشئ هيكل مجلّد الإعداد الخاص بالشبكة الخاصة الافتراضية hsoub على الخادوم externalnyc: sudo mkdir -p /etc/tinc/hsoub/hostsافتح ملف tinc للتعديل عليه: sudo nano /etc/tinc/hsoub/tinc.confأضف الأسطر التالية: Name = externalnyc AddressFamily = ipv4 Interface = tun0تعد التعليمات جهازا باسم externalnyc بواجهة شبكة تسمى tun0 تستخدم الإصدار الرابع من بروتوكول IP. احفظ الملف ثم أغلقه. ثم ننشئ ملفا لإعداد المستضيفات على الخادوم externalnyc: sudo nano /etc/tinc/netname/hosts/externalnycأضف الأسطر التالية إلى الملف (حيث externalnyc_public_IP عنوان IP العمومي للخادوم): Address = externalnyc_public_IP Subnet = 10.0.0.1/32تستخدم الخواديم الأخرى الملف للتخاطب مع الخادوم externalnyc. تحدد التعليمة Addressعنوان IP المُستخدّم للاتصال بهذا الخادوم فيما تعين Subnet الشبكة الفرعية التي سيستخدمها Tinc. احفظ الملف ثم أغلقه. أنشئ الآن زوج المفاتيح الخاصة بالمستضيف: sudo tincd -n hsoub -K4096ينشئ الأمر مفتاحا خاصا (يوجد على المسار etc/tinc/hsoub/rsa_key.priv/) ويضيف المفتاح العمومي إلى ملف إعداد المستضيف externalnyc الذي أنشأناه قبل قليل (etc/tinc/hsoub/hosts/externalnyc/). يجب الآن أن ننشئ tinc-up وهو سكربت يعمل على أي خادوم تشغَّل عليه شبكتنا الخاصة الافتراضية. sudo nano /etc/tinc/hsoub/tinc-upأضف الأسطر التالية: #!/bin/sh ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0يعمل هذا السكربت على إنشاء واجهة شبكة تستخدمها الشبكة الخاصة الافتراضية عند تشغيلها. سيكون عنوان هذا الخادوم على الشبكة الخاصة الافتراضية 10.0.0.1. سننشئ أيضا سكربت لحذف واجهة الشبكة الخاصة الافتراضية عند إيقاف هذه الأخيرة: sudo nano /etc/tinc/hsoub/tinc-downأضف الأسطر التالية: #!/bin/sh ifconfig $INTERFACE downاحفظ الملف ثم أغلقه. نجعل سكربتات tinc قابلة للتنفيذ: sudo chmod 755 /etc/tinc/netname/tinc-*احفظ الملف ثم أغلقه. ننتقل لإعداد بقية الأجهزة الموجودة في الشبكة الخاصة الافتراضية. إعداد internalnyc وams1يتوجب تنفيذ هذه الخطوات على كل من الخادومين internalnyc وams1 مع اختلافات طفيفة بينهما سنشير إليها. أنشئ هيكل مجلد إعداد الشبكة الخاصة الافتراضية المسماة hsoub على الخادومين internalnyc وams1 وعدل ملف إعداد Tinc: sudo mkdir -p /etc/tinc/hsoub/hosts sudo nano /etc/tinc/hsoub/tinc.confأضف الأسطر التالية (أبدل node_name باسم الخادوم): Name = node_name AddressFamily = ipv4 Interface = tun0 ConnectTo = externalnycتعد التعليمات الخواديم لمحاولة الاتصال بexternalnyc (العقدة التي أنشأناها قبل هذا). احفظ الملف ثم أغلقه. ملحوظة: يستخدم Tinc مصطلح العقدة Node للدلالة على جهاز مربوط بالشبكة الخاصة الافتراضية.. ننشئ ملف إعداد المستضيف: sudo nano /etc/tinc/hsoub/hosts/node_nameبالنسبة لinternalnyc أضف السطر التالي: Subnet = 10.0.0.2/32وبالنسبة لams1: Subnet = 10.0.0.3/32لاحظ الفرق بين العنوانين. احفظ الملف ثم أغلقه. ثم ولّد زوج المفاتيح: sudo tincd -n hsoub -K4096وأنشئ السكربت الخاص ببدء تشغيل واجهة الشبكة: sudo nano /etc/tinc/hsoub/tinc-upبالنسبة لinternalnyc أضف السطر التالي: ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0وبالنسبة لams1: ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0تستخدم عناوين IP المذكورة للاتصال بالشبكة الخاصة الافتراضية. احفظ الملف ثم أغلقه. أنشئ سكربت الإيقاف الخاص بواجهة الشبكة: sudo nano /etc/tinc/hsoub/tinc-downأضف السطر التالي: ifconfig $INTERFACE downاحفظ الملف ثم أغلقه. في الأخير نجعل السكربت قابلا للتنفيذ: sudo chmod 755 /etc/tinc/hsoub/tinc-*يجب الآن أن نوزع ملفات إعدادات المستضيف على كل عقدة من الشبكة الخاصة الافتراضية. توزيع المفاتيحلكي يستطيع جهازان التخاطب مباشرة ضمن الشبكة الخاصة الافتراضية فيجب عليهما تبادل المفاتيح العمومية التي توجد في ملف إعدادات المستضيف الخاص بكل جهاز. في حالتنا فقط الخادوم externalnyc يحتاج لتبادل المفاتيح العمومية مع بقية الخواديم. يسهل نقل كل مفتاح عمومي إلى جميع الأجهزة إدارة الشبكة الخاصة الافتراضية. ينبغي الانتباه إلى أنه يجب تغيير قيمة التعليمة Address ضمن ملف الإعداد الخاص بexternalnyc بعد نسخه على الخادوم internalnyc وإبدالها بعنوان IP المحلي للخادوم externalnyc لكي يُجرى الاتصال عبر الشبكة المحلية. توجد ملفات إعدادات المستضيف على المسار etc/tinc/hsoub/hosts/ حيث hsoub اسم الشبكة الخاصة الافتراضية. تبادل المفاتيح بين الخادومين externalnyc وinternalnycانسخ ملف إعداد المستضيف على الخادوم internalnyc إلى externalnyc (يُنفَّذ الأمر على الخادوم internalnyc): scp /etc/tinc/hsoub/hosts/internalnyc user@externalnyc_private_IP:/tmpثم انقل الملف إلى المجلَّد المناسب على الخادوم externalnyc (يُنفَّذ الأمر على الخادوم externalnyc): cd /etc/tinc/hsoub/hosts; sudo cp /tmp/internalnyc .نكرر نفس الخطوات في الاتجاه المعاكس. انسخ ملف إعداد المستضيف على الخادوم externalnyc إلى internalnyc(يُنفَّذ الأمر على الخادوم externalnyc): scp /etc/tinc/hsoub/hosts/externalnyc user@internalnyc_private_IP:/tmpثم انقل الملف إلى المجلَّد المناسب على الخادوم internalnyc (يُنفَّذ الأمر على الخادوم internalnyc): cd /etc/tinc/hsoub/hosts; sudo cp /tmp/externalnyc .نعدّل على ملف إعداد المستضيف externalnyc بعد نسخه على الخادوم internalnyc ونغير قيمة التعليمة Address ونبدلها بعنوان IP الخادوم externalnycضمن الشبكة المحلية (وهو ما يعني أن internalnyc سيتصل بexternalnyc عبر الشبكة المحلية): sudo nano /etc/tinc/hsoub/hosts/externalnycأعط القيمة externalnyc_private_IP للتعليمة Address(حيث externalnyc_private_IP عنوان externalnyc في الشبكة المحلية): Address = externalnyc_private_IPاحفظ الملف ثم أغلقه. ننتقل الآن للعقدة المتبقية، ams1. تبادل المفاتيح بين الخادومين externalnyc وams1نتبع نفس الخطوات السابقة. نبدأ بنسخ ملف إعداد المستضيفات الخاص بams1 على الخادوم externalnyc: scp /etc/tinc/hsoub/hosts/ams1 user@externalnyc_public_IP:/tmpثم انتقل إلى externalnyc وانقل الملف إلى المجلد المناسب: cd /etc/tinc/hsoub/hosts; sudo cp /tmp/ams1 .نكرر نفس الخطوات في الاتجاه المعاكس؛ فننسخ ملف إعدادات المستضيف الخاص ب externalnyc على ams1: scp /etc/tinc/hsoub/hosts/externalnyc user@ams1_public_IP:/tmpوننقل الملف إلى المجلد المناسب على الخادوم ams1: cd /etc/tinc/hsoub/hosts; sudo cp /tmp/externalnyc . تبادل المفاتيح بين العقد الإضافيةإن كانت الشبكة الخاصة الافتراضية التي تعدها تتضمن عقدا إضافية فيجب تبادل المفاتيح العمومية بينها بنفس الطريقة المشروحة في الفقرات السابقة. تذكر أنه يجب على عقدتين من الشبكة تبادل المفاتيح العمومية (ملفات إعداد المستضيف) إن كنت تريد أن يكون التخاطب بينهما مباشرا. اختبار الإعدادشغل أداة Tinc على كل واحد من الخواديم، بدءا بالخادوم externalnyc، مع تفعيل وضع التنقيح Debug: sudo tincd -n hsoub -D -d3يجب بعد تشغيل البرنامج أن تظهر أسماء العقد في المخرجات حال اتصالها بالخادوم externalnyc. في ما يلي نختبر الاتصال عبر الشبكة الخاصة الافتراضية. افتح نافذة جديدة لسطر الأوامر على الخادوم ams1 وجرب تنفيذ أمر ping مع إعطائه عنوان IP الخادوم internalnyc ضمن الشبكة الخاصة الافتراضية (أي 10.0.0.2 الذي ضبطناه سابقا): ping 10.0.0.2ينبغي أن يعمل الأمر دون مشاكل. سترى في نافذة سطر الأوامر الأولى بعض المخرجات المتعلقة بالاتصال عبر الشبكة الخاصة الافتراضية. يعني هذا أن ams1 قادر على التخاطب مع internalnyc عبر الشبكة الخاصة الافتراضية مرورا بexternalnyc. اضغط الزرين CTRL وC لتوقيف أمر ping في النافذة الجديدة. يمكن استخدام واجهات الشبكة الخاصة الافتراضية في أمور مثل اتصالات التطبيقات و SSH. لإيقاف وضعية التنقيح اضغط الزرين CTRL و\. ملحوظة: تأكد من إعدادات الجدار الناري لديك إن لم تعمل الاتصالات في الشبكة الخاصة الافتراضية. إعداد Tinc للعمل مع بدء تشغيل النظاميجب وضع اسم الشبكة الخاصة الافتراضية في ملف الإعداد nets.boot لكي تعمل بطريقة صحيحة. حرر ملف nets.boot على كل عقدة: sudo nano /etc/tinc/nets.bootأضف أسماء الشبكات الخاصة الافتراضية التي تستعملها، بالنسبة للمثال اسم الشبكة هو hsoub: # This file contains all names of the networks to be started on system startup. hsoubاحفظ الملف ثم أغلقه. Tinc معد الآن للعمل مع بدء تشغيل النظام؛ ويمكن اسخدام سطر الأوامر للتحكم فيه. استخدم الأمر التالي على كل عقدة إن أردت تشغيله الآن: sudo service tinc startخاتمةقدمنا في هذا المقال الخطوات الأساسية لإنشاء شبكة خاصة افتراضية باستخدام Tinc. يمكن البناء على ما أعددناه هنا لإنشاء شبكة تلبي احتياجاتك. يتميز Tinc بالمرونة ويمكن إعداد أي عقدة للاتصال بعقدة أخرى وبالتالي إنشاء شبكة غير مركزية لا تعتمد على خادوم واحد للتوجيه. ترجمة -وبتصرف- للمقال How To Install Tinc and Set Up a Basic VPN on Ubuntu 14.04 لصاحبه Mitchell Anicas.
    1 نقطة
×
×
  • أضف...