إنه عام 2017 ، وأصبح استخدام VPN غير محبّب. بين الكثير من مخاوف الخصوصية الخارجية ومزود خدمة الإنترنت الخاص بك الذي يمكنه بيع سجل التصفح الخاص بك ، لا يوجد حقًا أي مبرر لعدم استخدام واحدة.
بالتأكيد ، يمكنك دفع واحدة من مئات خدمات VPN الموجودة هناك ، لكن مرة أخرى ، أنت تعتمد على شخص آخر مع بياناتك. معظمها رائع ، في الواقع ، ولكن إذا كنت تريد التحكم الكامل ، فيمكنك إنشاء VPN الخاص بك على V irtual P rivate S erver (VPS) أو استئجار خادم خاص بك ، إذا كنت ترغب في أن تكون متشددًا معه.
كل ما تحتاجه لإنشاء VPN هو برنامج OpenVPN مفتوح المصدر و Linux (أو BSD). يمكن المشاركة في التهيئة ، لكن ليس من المستحيل مع شخص لديه حتى مهارات لينكس الأساسية الدخول في توزيع مثل أوبونتو.
بالنسبة لهذا الدليل ، ستحتاج إلى VPS يقوم بتشغيل Ubuntu. يمكنك اختيار واحدة بسهولة من شخص مثل DigitalOcean أو Linode . اتبع أدلة الأمان الأساسية للحصول على الإعداد. تأكد من عدم ارتكاب الأخطاء الأساسية مثل السماح بوصول الجذر عبر SSH.
أيضًا ، ضع في اعتبارك أنك ستقوم بهذا الإعداد الكامل في سطر الأوامر عبر SSH إلى VPS الخاص بك. لا يوجد أي شيء يتطلب مقدارًا مجنونًا من معرفة Linux ، لكن كن مستعدًا للكتابة بدلاً من النقر.
الحصول على ما تحتاجه
روابط سريعة
- الحصول على ما تحتاجه
- إعداد جدار الحماية
- العثور على واجهة
- أساسيات Iptables
- إعداد القواعد الخاصة بك
- الاسترجاع
- بينغ
- SSH
- المسنجر
- DNS
- HTTP / S
- NTP
- TUN
- تسجيل
- رفض كل شيء آخر
- NAT تنكر
- إلى الأمام IPv4 المرور
- أوقف جميع اتصالات IPv6
- استيراد وحفظ إلى Iptables
حزم 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 قبول -A INPUT! -i lo -s 127.0.0.0/8 -j REJECT -A OUTPUT -o lo -j ACCEPT
بينغ
المقبل ، والسماح بينغ. يجب أن تكون قادرًا على اختبار اتصال الخادم الخاص بك للتأكد من أنه متصل بالإنترنت في حالة تعذر الوصول إليه بخلاف ذلك. في هذه الحالة ، يُسمح فقط بطلبات الصدى ، وسيسمح الخادم لنفسه بإرسال إخراج ICMP.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m state --state ESTATELISH، RELATED -J ACCEPT -A OUTPUT -p icmp -j ACCEPT
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 --state ESTABLISHED --sport 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 --state ESTABLISHED --sport 1194 -j ACCEPT
DNS
الآن ، اسمح لاتصالات DNS عبر UDP و TCP. تريد أن يتعامل VPN مع DNS ، وليس مزود خدمة الإنترنت. هذا جزء من السبب وراء قيامك بإعداد VPN في المقام الأول.
-A INPUT -i eth0 -p udp -m state --state estate --stport 53 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW، ESTABLISHED --dport 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m state - تم تأسيس الولايات -sport 53 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW، ESTABLISHED --dport 53 -j ACCEPT
HTTP / S
لكي يتمكن Ubuntu من تحديث نفسه ، تحتاج إلى إضافة مجموعة من القواعد للسماح بالاتصال الخارجي HTTP و HTTPS. لاحظ أن هذه القواعد تسمح فقط للخادم ببدء اتصالات HTTP ، لذلك لا يمكنك استخدامه كخادم ويب أو الاتصال به عبر المنفذ 80 أو المنفذ 443
-A INPUT -i eth0 -p tcp -m state --state estate - sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state ESTATEMED --sport 443 -j ACCEPT -A OUTPUT - o eth0 -p tcp -m state - الدولة الجديدة ، تم إنشاؤها - dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW، ESTABLISHED --dport 443 -j ACCEPT
NTP
للحفاظ على تشغيل ساعة الخادم بشكل صحيح ، ستحتاج إلى NTP. يسمح NTP لخادمك بالمزامنة مع خوادم الوقت في جميع أنحاء العالم. وجود ساعة غير صحيحة على الخادم الخاص بك يمكن أن يسبب مشاكل في الاتصال ، وبالتالي فإن تشغيل NTP فكرة جيدة. مرة أخرى ، يجب أن تقبل فقط الاتصالات الصادرة والموجودة بالفعل.
-A INPUT -i eth0 -p udp -m state --state estate - --port 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW، ESTABLISHED --dport 123 -j ACCEPT
TUN
قم بإلغاء تأمين واجهة TUN التي يستخدمها OpenVPN لنقل حركة المرور عبر الأنفاق.
-A INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEP -A OUTPUT -o tun0 -j ACCEPT
أنت بحاجة إلى السماح لـ TUN بإعادة توجيه حركة المرور إلى الواجهة العادية لشبكة VPN. ستجد عنوان IP هذا في تكوين OpenVPN. إذا قمت بتغييره في التكوين ، فقم بتغييره في قواعدك أيضًا.
-A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT -A FORWARD -m state --state ESTATELISH، RELATED -j ACCEPT
تسجيل
إنها لفكرة جيدة الاحتفاظ بسجلات كل شيء يتم رفضه بواسطة iptables. في هذه الحالة ، يعني أي شيء لا يلائم أي من هذه القواعد. تتيح لك السجلات معرفة ما إذا كان هناك أي نشاط ضار أو أي محاولات لفعل أي شيء ضار ضد خادمك.
-A INPUT -m بحد أقصى 3 دقائق - سجل -j - بادئة سجل "iptables_INPUT_denied:" - مستوى السجل 4
- حد FORWARD - m - حد أقصى 3 / دقيقة -j LOG - سجل البادئة "iptables_FORWARD_denied:" - مستوى السجل 4
-AUTPUT -m حد-حد أقصى 3 / دقيقة -j LOG- سجل البادئة "iptables_OUTPUT_denied:" –log-level 4
رفض كل شيء آخر
أخيرًا ، تحتاج إلى حظر أي شيء لا يلائم قواعدك. هذا هو الغرض من وجود جدار حماية في المقام الأول.
-A INPUT -J REJECT -A FORWARD -J REJECT -A OUTPUT -J REJECT
أغلق الملف باستخدام COMMIT لإعلام 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.
ابحث عن السطر أدناه وأزله عن طريق إزالة #.
أوقف جميع اتصالات 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.
* filter -A INPUT -J REJECT -A FORWARD -J REJECT -A OUTPUT -J REJECT COMMIT
انظر ، إنها بسيطة. رفض كل شيء.
استيراد وحفظ إلى Iptables
تحتاج إلى استيراد هذه القواعد من أجل أن تفعل أي شيء. لذلك ، لقد حان الوقت للقيام بذلك.
ابدأ من خلال مسح كل شيء آخر موجود. أنت لا تريد أي قواعد قديمة في الطريق.
$ sudo iptables -F && sudo iptables -X
قم باستيراد كل من قواعد IPv4 و IPv6 الخاصة بك.
$ sudo iptables-restore </ tmp / ipv4 $ sudo iptables-restore </ tmp / ipv6
ربما لن ترغب في القيام بذلك مرة أخرى. لذلك ، ستحتاج إلى حزمة جديدة لحفظ قواعدك بشكل دائم.
sudo $ تثبيت iptables- الثابتة
أثناء التثبيت ، ستطلب منك الحزمة حفظ القواعد الحالية. أجب بـ "نعم".
إذا قمت بإجراء تغييرات في وقت لاحق ، يمكنك تحديث التكوينات المحفوظة أيضًا.
خدمة sudo $ netfilter- حفظ مستمر
استغرق الأمر بعض الوقت ، لكن جدار الحماية جاهز للعمل. في الصفحة التالية ، سنقوم بمعالجة إنشاء مفاتيح التشفير الضرورية.
انقر هنا: الصفحة التالية