أداة تثبيت OpenVPN لأنظمة Debian وUbuntu وFedora وCentOS وArch Linux وOracle Linux وRocky Linux وAlmaLinux.
سيتيح لك هذا البرنامج النصي إعداد خادم VPN الآمن الخاص بك في ثوانٍ معدودة.
يمكنك أيضًا الاطلاع على Wireguard-install، وهو برنامج تثبيت بسيط لبروتوكول VPN أبسط وأكثر أمانًا وأسرع وأكثر حداثة.
أولاً، احصل على البرنامج النصي واجعله قابلاً للتنفيذ:
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
ثم قم بتشغيله:
./openvpn-install.sh
تحتاج إلى تشغيل البرنامج النصي كجذر وتمكين وحدة TUN.
في المرة الأولى التي تقوم فيها بتشغيله، سيتعين عليك اتباع المساعد والإجابة على بعض الأسئلة لإعداد خادم VPN الخاص بك.
عند تثبيت OpenVPN، يمكنك تشغيل البرنامج النصي مرة أخرى، وسيكون لديك خيار:
في الدليل الرئيسي الخاص بك، سيكون لديك ملفات .ovpn
. هذه هي ملفات تكوين العميل. قم بتنزيلها من الخادم الخاص بك واتصل باستخدام عميل OpenVPN المفضل لديك.
إذا كان لديك أي سؤال، توجه إلى الأسئلة الشائعة أولاً. يرجى قراءة كل شيء قبل فتح الموضوع.
من فضلك لا ترسل لي رسائل البريد الإلكتروني أو الرسائل الخاصة لطلب المساعدة. المكان الوحيد للحصول على المساعدة هو القضايا. قد يتمكن أشخاص آخرون من المساعدة، وفي المستقبل، قد يواجه مستخدمون آخرون أيضًا نفس المشكلة التي تواجهك. وقتي ليس متاحًا مجانًا لأجلك فقط، فأنت لست مميزًا.
من الممكن أيضًا تشغيل البرنامج النصي بدون رأس، على سبيل المثال دون انتظار إدخال المستخدم، بطريقة آلية.
مثال على الاستخدام:
AUTO_INSTALL=y ./openvpn-install.sh
# or
export AUTO_INSTALL=y
./openvpn-install.sh
سيتم بعد ذلك تعيين مجموعة افتراضية من المتغيرات، عن طريق تمرير الحاجة إلى إدخال المستخدم.
إذا كنت تريد تخصيص التثبيت الخاص بك، فيمكنك تصديره أو تحديده على نفس السطر، كما هو موضح أعلاه.
APPROVE_INSTALL=y
APPROVE_IP=y
IPV6_SUPPORT=n
PORT_CHOICE=1
PROTOCOL_CHOICE=1
DNS=1
COMPRESSION_ENABLED=n
CUSTOMIZE_ENC=n
CLIENT=clientname
PASS=1
إذا كان الخادم خلف NAT، فيمكنك تحديد نقطة النهاية الخاصة به باستخدام متغير ENDPOINT
. إذا كانت نقطة النهاية هي عنوان IP العام الموجود خلفها، فيمكنك استخدام ENDPOINT=$(curl -4 ifconfig.co)
(سيكون البرنامج النصي هو هذا افتراضيًا). يمكن أن تكون نقطة النهاية IPv4 أو مجالًا.
يمكن تعيين متغيرات أخرى حسب اختيارك (التشفير، الضغط). يمكنك البحث عنها في وظيفة installQuestions()
للبرنامج النصي.
لا يتم دعم العملاء المحميين بكلمة مرور بواسطة طريقة التثبيت بدون رأس نظرًا لأن إدخال المستخدم متوقع بواسطة Easy-RSA.
يعد التثبيت بدون رأس غير فعال إلى حد ما، حيث إنه أصبح آمنًا للتشغيل عدة مرات بنفس المعلمات، على سبيل المثال بواسطة مزود حالة مثل Ansible/Terraform/Salt/Chef/Puppet. لن يقوم بتثبيت وإعادة إنشاء Easy-RSA PKI إلا إذا لم يكن موجودًا بالفعل، وسيقوم بتثبيت OpenVPN والتبعيات الأولية الأخرى فقط إذا لم يكن OpenVPN مثبتًا بالفعل. سيقوم بإعادة إنشاء كافة التكوينات المحلية وإعادة إنشاء ملف العميل في كل عملية تشغيل بدون رأس.
من الممكن أيضًا أتمتة إضافة مستخدم جديد. المفتاح هنا هو توفير القيمة (السلسلة) لمتغير MENU_OPTION
مع المتغيرات الإلزامية المتبقية قبل استدعاء البرنامج النصي.
يضيف البرنامج النصي Bash التالي foo
جديدًا إلى تكوين OpenVPN موجود
#! /bin/bash
export MENU_OPTION= " 1 "
export CLIENT= " foo "
export PASS= " 1 "
./openvpn-install.sh
nobody
/ nogroup
يدعم البرنامج النصي توزيعات Linux التالية:
يدعم | |
---|---|
ألما لينكس 8 | ✅ |
أمازون لينكس 2 | ✅ |
آرتش لينكس | ✅ |
سينت أو إس 7 | ✅ |
تيار CentOS >= 8 | ✅ ؟ |
ديبيان> = 10 | ✅ ؟ |
فيدورا >= 35 | ✅ ؟ |
أوراكل لينكس 8 | ✅ |
روكي لينكس 8 | ✅ |
أوبونتو >= 18.04 | ✅ ؟ |
تجدر الإشارة إلى:
amd64
.systemd
. يعتمد هذا السيناريو على العمل الرائع الذي قام به Nyr والمساهمين فيه.
منذ عام 2016، اختلف النصان ولم يعدا متشابهين، خاصة تحت الغطاء. كان الهدف الرئيسي من البرنامج النصي هو تعزيز الأمن. ولكن منذ ذلك الحين، تمت إعادة كتابة السيناريو بالكامل وتمت إضافة الكثير من الميزات. النص متوافق فقط مع التوزيعات الحديثة، لذا إذا كنت بحاجة إلى استخدام خادم أو عميل قديم جدًا، فإنني أنصحك باستخدام نص Nyr.
المزيد من الأسئلة والأجوبة في التعليمات.md.
س: ما هو المزود الذي توصي به؟
ج: أوصي بهذه:
س: ما هو عميل OpenVPN الذي توصي به؟
ج: إذا أمكن، عميل OpenVPN 2.4 رسمي.
openvpn
من توزيعتك. يوجد مستودع APT رسمي للتوزيعات المستندة إلى Debian/Ubuntu.س: هل أنا آمن من وكالة الأمن القومي باستخدام البرنامج النصي الخاص بك؟
ج: يرجى مراجعة نماذج التهديد الخاصة بك. حتى لو كان هذا البرنامج النصي يأخذ الأمان في الاعتبار ويستخدم أحدث التشفير، فلا ينبغي عليك استخدام VPN إذا كنت تريد الاختباء من وكالة الأمن القومي.
س: هل هناك وثائق OpenVPN؟
ج: نعم، يرجى التوجه إلى دليل OpenVPN، الذي يشير إلى جميع الخيارات.
المزيد من الأسئلة والأجوبة في التعليمات.md.
تتوفر الحلول التي توفر خادم OpenVPN جاهز للاستخدام استنادًا إلى هذا البرنامج النصي دفعة واحدة لما يلي:
openvpn-terraform-install
openvpn-ephemeral
يرجى فتح مشكلة قبل إرسال العلاقات العامة إذا كنت تريد مناقشة التغيير، خاصة إذا كان كبيرًا.
نحن نستخدم Shellcheck وshfmt لفرض إرشادات تصميم bash والممارسات الجيدة. يتم تنفيذها لكل التزام/علاقات عامة باستخدام إجراءات GitHub، لذا يمكنك التحقق من التكوين هنا.
تحذير لم يتم تحديث هذا لإصدار OpenVPN 2.5 والإصدارات الأحدث.
إعدادات OpenVPN الافتراضية ضعيفة جدًا فيما يتعلق بالتشفير. يهدف هذا البرنامج النصي إلى تحسين ذلك.
كان OpenVPN 2.4 تحديثًا رائعًا فيما يتعلق بالتشفير. وأضاف دعمًا لـ ECDSA وECDH وAES GCM وNCP وtls-crypt.
إذا كنت تريد المزيد من المعلومات حول أحد الخيارات المذكورة أدناه، فتوجه إلى دليل OpenVPN. انها كاملة جدا.
تتم إدارة معظم الأشياء المتعلقة بالتشفير في OpenVPN بواسطة Easy-RSA. المعلمات الافتراضية موجودة في ملف vars.example.
بشكل افتراضي، لا يقوم OpenVPN بتمكين الضغط. يوفر هذا البرنامج النصي دعمًا لخوارزميات LZ0 وLZ4 (v1/v2)، وتعتبر الأخيرة أكثر كفاءة.
ومع ذلك، لا يُنصح باستخدام الضغط نظرًا لأن هجوم VORACLE يستخدمه.
يقبل OpenVPN TLS 1.0 افتراضيًا، والذي يبلغ عمره 20 عامًا تقريبًا.
باستخدام tls-version-min 1.2
نقوم بتطبيق TLS 1.2، وهو أفضل بروتوكول متاح حاليًا لـ OpenVPN.
يتم دعم TLS 1.2 منذ OpenVPN 2.3.3.
يستخدم OpenVPN شهادة RSA بمفتاح 2048 بت بشكل افتراضي.
أضاف OpenVPN 2.4 دعمًا لـ ECDSA. يعد التشفير بالمنحنى الإهليلجي أسرع وأخف وزنًا وأكثر أمانًا.
يوفر هذا البرنامج النصي:
prime256v1
/ secp384r1
/ secp521r1
2048
/ 3072
/ 4096
بت يتم تعيينه افتراضيًا على ECDSA مع prime256v1
.
يستخدم OpenVPN SHA-256
باعتباره تجزئة التوقيع بشكل افتراضي، وكذلك يفعل البرنامج النصي. ولا يوفر أي خيار آخر حتى الآن.
افتراضيًا، يستخدم OpenVPN BF-CBC
كشفرة لقناة البيانات. السمكة المنتفخة هي خوارزمية قديمة (1993) وضعيفة. حتى وثائق OpenVPN الرسمية تعترف بذلك.
الإعداد الافتراضي هو BF-CBC، وهو اختصار لـ Blowfish في وضع Cipher Block Chaining.
لم يعد استخدام BF-CBC موصى به، نظرًا لحجم الكتلة الذي يبلغ 64 بت. يسمح حجم الكتلة الصغير هذا بهجمات تعتمد على الاصطدامات، كما هو موضح بواسطة SWEET32. راجع https://community.openvpn.net/openvpn/wiki/SWEET32 للحصول على التفاصيل. نشر باحثون أمنيون في INRIA هجومًا على تشفيرات كتلية 64 بت، مثل 3DES وBlowfish. لقد أظهروا أنهم قادرون على استعادة النص العادي عندما يتم إرسال نفس البيانات في كثير من الأحيان، ويظهرون كيف يمكنهم استخدام ثغرات البرمجة النصية عبر المواقع لإرسال البيانات ذات الأهمية في كثير من الأحيان. يعمل هذا عبر HTTPS، ولكنه يعمل أيضًا مع HTTP-over-OpenVPN. راجع https://sweet32.info/ للحصول على شرح أفضل وأكثر تفصيلاً.
يتأثر التشفير الافتراضي لـ OpenVPN، BF-CBC، بهذا الهجوم.
في الواقع، AES هو المعيار اليوم. إنه التشفير الأسرع والأكثر أمانًا المتاح اليوم. SEED وCamellia ليسا عرضة للخطر حتى الآن ولكنهما أبطأ من AES وأقل ثقة نسبيًا.
من بين الأصفار المدعومة حاليًا، توصي OpenVPN حاليًا باستخدام AES-256-CBC أو AES-128-CBC. سوف يدعم OpenVPN 2.4 والإصدارات الأحدث أيضًا GCM. بالنسبة للإصدار 2.4+، نوصي باستخدام AES-256-GCM أو AES-128-GCM.
AES-256 أبطأ بنسبة 40% من AES-128، ولا يوجد أي سبب حقيقي لاستخدام مفتاح 256 بت على مفتاح 128 بت مع AES. (المصدر: 1،2). علاوة على ذلك، فإن AES-256 أكثر عرضة لهجمات التوقيت.
AES-GCM هو تشفير AEAD مما يعني أنه يوفر في نفس الوقت ضمانات السرية والنزاهة والأصالة على البيانات.
البرنامج النصي يدعم الأصفار التالية:
AES-128-GCM
AES-192-GCM
AES-256-GCM
AES-128-CBC
AES-192-CBC
AES-256-CBC
والإعدادات الافتراضية هي AES-128-GCM
.
أضاف OpenVPN 2.4 ميزة تسمى "NCP": معلمات التشفير القابلة للتفاوض . هذا يعني أنه يمكنك توفير مجموعة تشفير مثل HTTPS. تم ضبطه على AES-256-GCM:AES-128-GCM
افتراضيًا ويتجاوز معلمة --cipher
عند استخدامه مع عميل OpenVPN 2.4. من أجل التبسيط، قام البرنامج النصي بتعيين كلا من --cipher
و --ncp-cipher
على التشفير المختار أعلاه.
سيتفاوض OpenVPN 2.4 على أفضل تشفير متاح افتراضيًا (على سبيل المثال ECDHE+AES-256-GCM)
يقترح البرنامج النصي الخيارات التالية، اعتمادًا على الشهادة:
TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
يتم تعيينه افتراضيًا على TLS-ECDHE-*-WITH-AES-128-GCM-SHA256
.
يستخدم OpenVPN مفتاح DH بطول 2048 بت بشكل افتراضي.
أضاف OpenVPN 2.4 دعمًا لمفاتيح ECDH. يعد التشفير بالمنحنى الإهليلجي أسرع وأخف وزنًا وأكثر أمانًا.
كما أن إنشاء مفاتيح DH الكلاسيكية يمكن أن يستغرق وقتًا طويلاً جدًا. مفاتيح ECDH سريعة الزوال: يتم إنشاؤها بسرعة.
يوفر البرنامج النصي الخيارات التالية:
prime256v1
/ secp384r1
/ secp521r1
2048
/ 3072
/ 4096
بت مفاتيح يتم تعيينه افتراضيًا على prime256v1
.
من موقع OpenVPN wiki، حول --auth
:
مصادقة حزم قناة البيانات و(إذا تم تمكينها) حزم قناة التحكم في مصادقة tls مع HMAC باستخدام خوارزمية ملخص الرسائل alg. (الافتراضي هو SHA1). HMAC هي خوارزمية مصادقة رسائل شائعة الاستخدام (MAC) تستخدم سلسلة بيانات وخوارزمية تجزئة آمنة ومفتاحًا لإنتاج توقيع رقمي.
إذا تم اختيار وضع تشفير EAAD (مثل GCM)، فسيتم تجاهل خوارزمية --auth المحددة لقناة البيانات، ويتم استخدام طريقة المصادقة الخاصة بتشفير EAAD بدلاً من ذلك. لاحظ أن alg لا يزال يحدد الملخص المستخدم لمصادقة tls.
يوفر البرنامج النصي الخيارات التالية:
SHA256
SHA384
SHA512
يتم تعيينه افتراضيًا على SHA256
.
tls-auth
و tls-crypt
من موقع OpenVPN wiki، حول tls-auth
:
أضف طبقة إضافية من مصادقة HMAC أعلى قناة التحكم TLS للتخفيف من هجمات DoS والهجمات على مكدس TLS.
باختصار، يتيح --tls-auth نوعًا من "جدار الحماية HMAC" على منفذ TCP/UDP الخاص بـ OpenVPN، حيث يمكن إسقاط حزم قناة التحكم TLS التي تحمل توقيع HMAC غير صحيح على الفور دون استجابة.
حول tls-crypt
:
قم بتشفير جميع حزم قنوات التحكم والمصادقة عليها باستخدام المفتاح من ملف المفتاح. (راجع --tls-auth لمزيد من المعلومات الأساسية.)
تشفير (وتوثيق) حزم قنوات التحكم:
- يوفر المزيد من الخصوصية عن طريق إخفاء الشهادة المستخدمة لاتصال TLS،
- يجعل من الصعب تحديد حركة مرور OpenVPN على هذا النحو،
- يوفر أمان "الرجل الفقير" بعد الكم، ضد المهاجمين الذين لن يعرفوا أبدًا المفتاح المشترك مسبقًا (أي لا توجد سرية أمامية).
لذلك يوفر كلاهما طبقة إضافية من الأمان ويخفف من هجمات حجب الخدمة. ولا يتم استخدامها افتراضيًا بواسطة OpenVPN.
tls-crypt
هي إحدى ميزات OpenVPN 2.4 التي توفر التشفير بالإضافة إلى المصادقة (على عكس tls-auth
). إنه أكثر ملاءمة للخصوصية.
يدعم البرنامج النصي كليهما ويستخدم tls-crypt
افتراضيًا.
يمكنك أن تقول شكرا إذا كنت تريد!
شكرا جزيلا للمساهمين والعمل الأصلي لنير.
هذا المشروع تحت رخصة MIT