إنه عام 2017 ، وأصبح استخدام VPN غير محبوب. بين الكثير من اهتمامات الخصوصية الخارجية ومزود خدمة الإنترنت الخاص بك الذي يمكنه بيع سجل التصفح الخاص بك ، لا يوجد حقًا أي مبرر لعدم استخدام واحدة.

بالتأكيد ، يمكنك دفع واحدة من مئات خدمات VPN هناك ، لكن مرة أخرى ، أنت تعتمد على شخص آخر مع بياناتك. معظمها رائع ، في الواقع ، ولكن إذا كنت تريد التحكم الكامل ، فيمكنك إنشاء VPN الخاص بك على خادم خاص افتراضي (VPS) أو استئجار خادم خاص بك ، إذا كنت تشعر بالفعل بالمتشددين معه.

كل ما تحتاجه لإنشاء VPN هو برنامج OpenVPN مفتوح المصدر و Linux (أو BSD). يمكن المشاركة في التهيئة ، لكن ليس من المستحيل مع شخص لديه حتى مهارات لينكس الأساسية الدخول في توزيع مثل أوبونتو.

بالنسبة لهذا الدليل ، ستحتاج إلى VPS يقوم بتشغيل Ubuntu. يمكنك اختيار واحدة بسهولة من شخص مثل DigitalOcean أو Linode. اتبع أدلة الأمان الأساسية للحصول على الإعداد. تأكد من عدم ارتكاب الأخطاء الأساسية مثل السماح بالوصول إلى الجذر عبر SSH.

أيضًا ، ضع في اعتبارك أنك ستقوم بهذا الإعداد بأكمله في سطر الأوامر عبر SSH إلى VPS الخاص بك. لا يوجد أي شيء يتطلب مقدارًا مجنونًا من معرفة Linux ، لكن كن مستعدًا للكتابة بدلاً من النقر.

الحصول على ما تحتاجه

حزم Ubuntu وتوزع OpenVPN في مستودعاتها. ما عليك سوى استخدام apt لتثبيته. ستحتاج أيضًا إلى أداة لإنشاء مفاتيح التشفير. تثبيتها على حد سواء.

sudo $ apt install openppn easy-rsa

إعداد جدار الحماية

بعد ذلك ، تحتاج إلى العناية بجدار الحماية. إنها جزء مهم في الحفاظ على أمان VPN ومنع تسرب البيانات والوصول غير المرغوب فيه.

Iptables هو جدار الحماية الرئيسي لنظام التشغيل Linux ، وهو أفضل خيار للتحكم في الوصول إلى منافذ Ubuntu. سيتم تثبيته بالفعل ، حتى تتمكن من البدء في إعداد قواعد جدار الحماية.

العثور على واجهة

قبل البدء في كتابة القواعد في iptables ، تعرف على الواجهة التي يتصل بها خادم الإنترنت الخاص بك. قم بتشغيل ifconfig لعرض واجهات الشبكة الخاصة بك. الشخص الذي يحتوي على add inet: مطابقة عنوان IP الذي تتصل به هو الواجهة الصحيحة.

أساسيات Iptables

ليس من الجيد عادةً نسخ الأشياء ولصقها بشكل عشوائي في الجهاز من الإنترنت. هذا صحيح بشكل خاص عندما تتعامل مع موضوعات الأمان. لذا ، خذ بعض الوقت هنا لتتعرف قليلاً على قواعد iptables قبل البدء في إدخالها.

ألقِ نظرة على هذا المثال لقاعدة iptables.

-A INPUT -i eth0 -p tcp -m state -state estate –sport 443 -j ACCEPT

حسنًا ، يعني ذلك -A أنك ستلحق قاعدة جديدة. ثم يعني INPUT أنها ستهتم بالإدخال إلى خادمك. هناك أيضا الإخراج. تخبر العلامة -i iptables عن الواجهة التي تستخدمها هذه القاعدة. يمكنك تحديد أي بروتوكول هو القاعدة مع -p. هذه القاعدة يعالج برنامج التعاون الفني. -m يحدد الشرط الذي يجب أن يفي به الاتصال. في هذه الحالة ، يجب أن يتطابق مع الحالة المحددة. بالطبع ، ثم –حدد الدولة ، في هذه الحالة اتصال ESTABLISHED. الجزء التالي يخبر iptables عن أي منفذ هذه القاعدة هو ل. إنه المنفذ 443 ، ومنفذ HTTPS ، هنا. العلم الأخير هو -j. إنها تعني "قفزة" ، وهي تخبر iptables ما يجب القيام به مع الاتصال. إذا كان هذا الاتصال يفي بجميع المتطلبات الواردة في القاعدة ، فإن iptables ستقبله.

إعداد القواعد الخاصة بك

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

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

قم بإنشاء ملف في الدليل / tmp لإنشاء قواعدك.

$ vim / tmp / ipv4

ابدأ تشغيل هذا الملف باستخدام عامل التصفية *. هذا يخبر iptables أن ما يلي سيكون قواعد لتصفية الحزم.

الاسترجاع

القسم الأول من القواعد قفل واجهة الاسترجاع. يخبرون iptables أن الخادم يجب أن يقبل حركة المرور من نفسه على واجهة الاسترجاع. يجب أيضًا رفض حركة المرور القادمة من نفسها والتي لا تأتي من الاسترجاع.

-A INPUT -i lo -j قبول
مدخلات! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j قبول

بينغ

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

-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m state - الدولة المنشأة ، ذات الصلة -J قبول
-A الإخراج -p icmp -j قبول

SSH

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

قد يكون من الجيد أيضًا تغيير اتصالات SSH الخاصة بك خارج المنفذ 22 ، لأن هذا هو الإعداد الافتراضي الذي سيحاول المهاجمون المحتملون استخدامه. إذا قمت بذلك ، تأكد من تغييره في قواعد iptables الخاصة بك أيضًا.

-A INPUT -i eth0 -p tcp -m state --state NEW، ESTABLISHED - dport 22 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state - الدولة المنشأة - الرياضة 22 -j ACCEPT

المسنجر

تسمح هذه القطعة التالية بحركة المرور من وإلى خادم OpenVPN عبر UDP.

-A INPUT -i eth0 -p udp -m state --state NEW، أنشأ --port 1194 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state - الدولة المنشأة - الرياضة 1194 - j قبول

DNS

الآن ، اسمح لاتصالات DNS عبر UDP و TCP. تريد أن يتعامل VPN مع DNS ، وليس مزود خدمة الإنترنت. هذا جزء من السبب وراء قيامك بإعداد VPN في المقام الأول.

-A INPUT -i eth0 -p udp -m state --state estateLISH --sport 53 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m state --state new، أنشأها - ميناء 53 -j قبول
-A INPUT -i eth0 -p tcp -m state - الدولة المنشئة - رياضة 53-j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state new، أنشأها - منفذ 53 -j ACCEPT

HTTP / S

لكي يتمكن Ubuntu من تحديث نفسه ، تحتاج إلى إضافة مجموعة من القواعد للسماح بالاتصال الخارجي HTTP و HTTPS. لاحظ أن هذه القواعد تسمح فقط للخادم ببدء اتصالات HTTP ، لذلك لا يمكنك استخدامه كخادم ويب أو الاتصال به عبر المنفذ 80 أو المنفذ 443

-A INPUT -i eth0 -p tcp -m state - وضع الدولة - رياضة 80-j ACCEPT
-A INPUT -i eth0 -p tcp -m state - الدولة المنشأة - الرياضة 443 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW، ESTABLISHED - dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m state --state NEW، أنشأ --port 443 -j ACCEPT

NTP

للحفاظ على تشغيل ساعة الخادم بشكل صحيح ، ستحتاج إلى NTP. يسمح NTP لخادمك بالمزامنة مع خوادم الوقت في جميع أنحاء العالم. وجود ساعة غير صحيحة على الخادم الخاص بك يمكن أن يسبب مشاكل في الاتصال ، وبالتالي فإن تشغيل NTP فكرة جيدة. مرة أخرى ، يجب أن تقبل فقط الاتصالات الصادرة والموجودة بالفعل.

-A INPUT -i eth0 -p udp -m state - الدولة المنشأة - الرياضة 123-ي قبول
-A OUTPUT -o eth0 -p udp -m state --state new، أنشأ --port 123 -j ACCEPT

TUN

قم بإلغاء تأمين واجهة TUN التي يستخدمها OpenVPN لنقل حركة المرور عبر الأنفاق.

-A INPUT -i tun0 -j قبول
إلى الأمام -i tun0 -j قبول
-A الإخراج -o tun0 -j قبول

أنت بحاجة إلى السماح لـ TUN بإعادة توجيه حركة المرور إلى الواجهة العادية لشبكة VPN. ستجد عنوان IP هذا في تهيئة OpenVPN. إذا قمت بتغييره في التكوين ، فقم بتغييره في قواعدك أيضًا.

-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -m الدولة - دولة المنشأة ، ذات الصلة -J قبول

تسجيل

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

-A INPUT -m limit - 3 / min -j log -log-log بادئة "iptables_INPUT_denied:" - مستوى تسجيل الدخول 4-A FORWARD -m حد-حد 3 / min -j LOG -log-log بادئة "iptables_FORWARD_denied:" - - مستوى تسجيل الدخول 4-A OUTPUT -m-limit-3 / min -j-log-log-prefix "iptables_OUTPUT_denied:" –log-level 4

رفض كل شيء آخر

أخيرًا ، تحتاج إلى حظر أي شيء لا يتوافق مع قواعدك. هذا هو الغرض من وجود جدار حماية في المقام الأول.

-A INPUT -J رفض
-A FORWARD -J رفض
-ناتج -جبر

أغلق الملف باستخدام COMMIT لإعلام iptables بالالتزام بكافة القواعد.

قواعد OpenVPN iptables

NAT تنكر

تحتاج إلى اتصالات من VPN لتبدو وكأنها قادمة من الخادم نفسه. لا يمكن تضمين هذه القطعة في ملف iptables العادي لأنها تستخدم جدولًا مختلفًا. هذا جيد ، رغم ذلك ، إنه سطر واحد فقط.

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

إلى الأمام IPv4 المرور

ستحتاج إلى تمكين إعادة توجيه حركة مرور IPv4 ، لذلك يمكن أن تمر بين VPN وواجهة الشبكة الفعلية للخادم الخاص بك. افتح /etc/sysctl.d/99-sysctl.conf مع sudo.

ابحث عن السطر أدناه وأزله عن طريق إزالة #.

net.ipv4.ip_forward = 1

أوقف جميع اتصالات IPv6

عذرًا ، لم تنته بعد من iptables. تحتاج إلى حظر كل حركة مرور IPv6. سيدعم خادم OpenVPN IPv4 فقط ، وهو أمر جيد ، حيث أنك لن تصطدم بموقف تحتاج فيه إلى IPv6. نتيجةً لذلك ، يمكن لأي اتصالات IPv6 أن تسرب المعلومات ، وهو عكس ما تريد عند استخدام VPN.

قبل إعداد قواعد iptables ، يجب عليك تعطيل IPv6 في أي مكان آخر على النظام.

أضف الأسطر التالية إلى /etc/sysctl.d/99-sysctl.conf. إذا قمت بإغلاقه من القسم السابق ، فقم بإعادة فتحه باستخدام sudo.

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1

تنشيط التغييرات الخاصة بك.

$ sudo sysctl -p

التعليق على جميع خطوط IPv6 في / الخ / المضيفين. سوف تحتاج إلى sudo هنا أيضًا.

# :: 1 ip6-localhost ip6-loopback
# fe00 :: 0 ip6-localnet
# ff00 :: 0 ip6-mcastprefix
# ff02 :: 1 ip6-allnodes
# ff02 :: 2 ip6-allrouters

أخيرًا ، يمكنك كتابة قواعد عناوين IPv6. قم بإنشاء ملف خاص بهم على / tmp / ipv6.

*منقي

-A INPUT -J رفض
-A FORWARD -J رفض
-ناتج -جبر

ارتكب

انظر ، إنها بسيطة. رفض كل شيء.

استيراد وحفظ إلى Iptables

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

ابدأ من خلال مسح كل شيء آخر موجود. لا ترغب في إعاقة أي قواعد قديمة.

$ sudo iptables -F && sudo iptables -X

قم باستيراد كل من قواعد IPv4 و IPv6 الخاصة بك.

$ sudo iptables-restore 

ربما لن ترغب في القيام بذلك مرة أخرى. لذلك ، ستحتاج إلى حزمة جديدة لحفظ قواعدك بشكل دائم.

sudo $ تثبيت iptables- الثابتة

أثناء التثبيت ، ستطلب منك الحزمة حفظ القواعد الحالية. أجب بـ "نعم".

إذا قمت بإجراء تغييرات لاحقًا ، يمكنك تحديث التكوينات المحفوظة أيضًا.

خدمة sudo $ netfilter- حفظ مستمر

استغرق الأمر بعض الوقت ، لكن جدار الحماية جاهز للعمل. في الصفحة التالية ، سنتناول إنشاء مفاتيح التشفير اللازمة.

انقر هنا: الصفحة التالية