في أحد الخوادم بحصر الدخول على خدمة SSH
لبعض الآيبيات IP Address المحددة مسبقاً في الخادم لزيادة الأمان، بتعطيل
محاولات كسر كلمات المرور الخاصة بأحد حساباتنا، وأيضاً منع الدخول للخادم
حتى وإن تمت سرقة كلمة المرور الخاصة بأحد منا.
تحديد آيبيات معينة سهل في حال كونك شركة أو قطاع لديه إتصال إنترنت يستخدم عدد من الآيبيات العامة Static Public IPs
ثابتة وليست متغيرة، بعكس الأفراد مستخدمي إتصالات الإنترنت المنزلية مثل
الدي إس إل DSL أو المتنقلة مثل البرودباند، حيث تتغير الأيبيات كل فترة Dynamic-Public IP، أو مع كل إتصال جديد!.
جاءت في بالنا فكرة، وهي إنشاء عناوين نطاقات ديناميكية Dynamic DNS
تُربط مع الأجهزة الخاصة بنا، حيث تُحدث هذة النطاقات بعناوين الآيبيات
الخاصة بنا بشكل دوري، ومن ثم نقوم بربط هذة النطاقات الديناميكية مع
الجدار الناري iptables لفلترة الدخول على خدمة الـ SSH فقط لهذة النطاقات.
الحمدلله، الفكرة كانت ناجحة وأكثر من فعالة، والآن تتم العملية بالشكل التالي:-
- يتم تركيب برنامج محدث النطاقات الديناميكية في جهاز الأدمن.
- يقوم البرنامج بأخذ الآي بي العام الخاص بي وربطه بالنطاق الديناميكي.
- يقوم الجدار الناري iptables بأخذ الآي بي من النطاق الديناميكي وإضافته إلى جدول الفلترة لدخول لخدمة SSH.
- في حالة وجود الآي بي مسبقاً في جدول الفلترة، لايتم إضافته أو تعديله، ويبقى كما هو.
- في حالة تغير الآي بي، يتم حذف الآي بي القديم وإضافة الجديد.
- تتم هذة العملية دورياً كل دقيقة واحدة.
قمت بكتابة Shell Script يقوم بهذة العملية، يمكنك تحميله من هنا، وتابع للأسفل لمعرفة كيف يتم تركيب وإستخدام السكريبت:-
- فك الضغط عن السكريبت تحت نفس المجلد
tar xzvf iptables_dyndnsv0.1.tgz -C /usr/local/share/
- ستجد مجموعة من الملفات، كالتالي:
- iptables_dyndns.sh ملف السكريبت
- iptables_ips_dyn.txt ملف نصي فارغ، سوف يحتوي على أسماء النطاقات الديناميكية كل نطاق بسطر
- iptables_ips_static.txt ملف نصي فارغ، سوف يحتوي على عناوين آيبيات ثابتة، في حال أردت إضافة آيبيات معينة بدلاً من أسماء نطاقات
- iptables_listofips.txt ملف نصي فارغ، لن نقوم بالتعامل معه، سوف يحتوي
على الآيبيات الخاصة بالنطاقات الديناميكية أو الآيبيات الثابتة
- عدل على محتويات الملف النصي iptables_ips_dyn.txt، وقم بإضافة النطاقات الديناميكية الخاصة بالكل، كل نطاق بسطر جديد.
- في حالة رغبتك بإضافة آيبيات عامة ثابتة، قم بتعديل الملف
iptables_ips_static.txt وأكتب الآي بي أو الشبكات التي تريد لها السماح
بالدخول لخادمك، كل آي بي أو شبكة بسطر جديد.
- الآن أضف الشرط أو القاعدة Rule التالية في الجدار الناري، والهدف من
هذه الشروط إخبار الجدار الناري أنه في حالة وصول طلب دخول على خدمة SSH،
قم بالقفز إلى مجموعة من القواعد تمت تسميتها SSH.
iptables -N SSH iptables -A INPUT -p tcp --dport ssh -j SSH
إنتهينا!.
الآن تبقي خطوتان:-
- التأكد من عمل هذة القواعد بشكل دوري كل دقيقة، كالتالي من خلال Cron:
crontab -e * * * * * sh /usr/local/share/iptables_dyndns/iptables_dyndns.sh > /dev/null 2>&1
- حفظ هذة القواعد حتى يتم إسترجاعها بعد إعادة تشغيل الخادم
Fedora / CentOS / RedHat /etc/init.d/iptables save chkconfig iptables on
Ubuntu / Debian iptables-save >
/etc/iptables.rules echo 'post-up iptables-restore <
/etc/iptables.rules' >> /etc/network/interfaces
جميع الخطوات بالأعلى تطبق مرة واحدة فقط، وقت تركيب
السكريبت، وكلما أردت أن تضيف نطاق ديناميكي جديد، فقط قم بتعديل الملف
iptables_ips_dyn.txt أو الملف iptables_ips_static.txt في حالة أردت أن
تضيف آي بي ثابتة أو نطاق شبكة.