ديف أوبس

الطرق على المنافذ أوبنتو IPTables

فهم إعدادات “الطرق على المنافذ” على أوبنتو باستخدام IPTables

مقدمة

يُعد أمن الشبكات من أولويات إدارة أنظمة التشغيل، وخاصة في بيئة تعتمد على نظام لينوكس مثل أوبنتو. من بين أبرز تقنيات الحماية المتقدمة، تبرز خاصية “الطرق على المنافذ” (Port Knocking)، وهي تقنية تهدف إلى تعزيز حماية المنافذ من خلال إخفائها ومنع الوصول إليها إلا بعد تنفيذ تسلسل معين من المحاولات أو “الطرق” على مجموعة محددة من المنافذ. تعتمد هذه التقنية على فكرة أن المنافذ تكون مغلقة وغير مرئية إلا في حالة طرقها بالتسلسل الصحيح، ما يجعلها تشبه نوعاً ما نظام “قفل الأبواب السرية”.

في هذا السياق، تُستخدم IPTables كأداة قوية لإدارة الجدار الناري (Firewall) في أوبنتو، حيث تُعد مرنة وفعالة لتطبيق سياسات التحكم في الوصول إلى الشبكة. من خلال تكاملها مع السكربتات أو الأدوات المساعدة مثل knockd، يمكن بناء نظام طرق على المنافذ فعال ومتقدم.

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


أولاً: ما هو طرق المنافذ Port Knocking؟

“الطرق على المنافذ” هي طريقة للتحكم في الوصول إلى الخدمات التي تعمل على النظام، حيث تبقى الخدمة مخفية وغير مرئية لأي مستخدم غير مصرح له حتى يقوم المستخدم بإرسال تسلسل معين من حزم البيانات إلى منافذ محددة مسبقاً. إذا كان التسلسل صحيحاً، يتم فتح المنفذ المستهدف تلقائياً لفترة زمنية معينة أو حتى يتم إغلاقه يدوياً.

تكمن قوة هذه التقنية في:

  • إخفاء الخدمات: الخدمات مثل SSH لا تكون مرئية للمهاجمين أو أدوات المسح الشبكي.

  • التوثيق الغير مباشر: يشكل الطرق على المنافذ نوعاً من المصادقة على هوية المستخدم.

  • تقليل الهجمات الآلية: تمنع البوتات وأدوات الهجوم من استهداف المنافذ المكشوفة.


ثانياً: المتطلبات الأساسية لإعداد Port Knocking على أوبنتو

للتمكن من تطبيق تقنية طرق المنافذ على أوبنتو باستخدام IPTables، تحتاج إلى الأدوات التالية:

العنصر الوظيفة
iptables أداة الجدار الناري الأساسية في أوبنتو
knockd أداة مراقبة حزم الطرق على المنافذ وتنفيذ الإجراءات عند استيفاء الشروط
tcpdump (اختياري) مراقبة وتحليل حزم الشبكة
صلاحيات الجذر (sudo) لتطبيق إعدادات الشبكة والجدار الناري

ثالثاً: إعداد IPTables كأساس لحماية المنافذ

قبل تنفيذ طرق المنافذ، يجب التأكد من أن IPTables يعمل بكفاءة وأن السياسات الافتراضية محددة بشكل صارم. فيما يلي إعدادات أولية أساسية:

bash
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT

ثم نسمح ببعض الاتصالات الأساسية مثل:

bash
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -i lo -j ACCEPT

بعد ذلك، نغلق منفذ SSH تماماً (مثلاً المنفذ 22):

bash
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

لن يتمكن أي شخص من الوصول إلى SSH ما لم يتم تنفيذ طرق المنافذ بطريقة صحيحة.


رابعاً: تثبيت وإعداد knockd على أوبنتو

1. تثبيت knockd

bash
sudo apt update sudo apt install knockd

2. تفعيل الخدمة

قد تكون الخدمة غير مفعلة افتراضياً. لتفعيلها، عدّل الملف /etc/default/knockd واجعل قيمة START_KNOCKD=1:

bash
sudo nano /etc/default/knockd

غيّر السطر:

bash
START_KNOCKD=0

إلى:

bash
START_KNOCKD=1

ثم أعد تشغيل الخدمة:

bash
sudo systemctl restart knockd sudo systemctl enable knockd

خامساً: إعداد ملف التكوين knockd.conf

الموقع: /etc/knockd.conf

فيما يلي مثال لإعداد تسلسل الطرق على المنافذ لفتح وغلق منفذ SSH:

ini
[options] logfile = /var/log/knockd.log [openSSH] sequence = 7000,8000,9000 seq_timeout = 15 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9000,8000,7000 seq_timeout = 15 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

شرح الإعداد:

  • sequence: تسلسل المنافذ الذي يجب الطرق عليه.

  • seq_timeout: المدة الزمنية المسموح بها لإتمام التسلسل.

  • command: الأمر الذي يتم تنفيذه عند النجاح (فتح أو غلق المنفذ).

  • %IP%: يتم استبدالها بعنوان IP الذي نفذ التسلسل.


سادساً: استخدام العميل للطرق على المنافذ

لتنفيذ الطرق من جهاز بعيد، يُستخدم أمر knock:

bash
knock your.server.ip 7000 8000 9000

إذا تم تنفيذ التسلسل بشكل صحيح وفي الوقت المحدد، سيتم فتح منفذ SSH مؤقتاً لهذا الـ IP.

ولغلق المنفذ بعد الانتهاء:

bash
knock your.server.ip 9000 8000 7000

سابعاً: زيادة الأمان باستخدام سياسات IPTables الديناميكية

يمكن ربط طرق المنافذ مع خصائص أخرى مثل تحديد الوقت الذي يظل فيه المنفذ مفتوحاً:

bash
sudo iptables -I INPUT -s %IP% -p tcp --dport 22 -m state --state NEW -m recent --set sudo iptables -A INPUT -s %IP% -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 1 -j ACCEPT

يسمح هذا بفتح المنفذ لمدة 60 ثانية فقط بعد تنفيذ الطرق.


ثامناً: المراقبة والتحقق من الأداء

يمكن متابعة سجلات knockd من خلال:

bash
tail -f /var/log/knockd.log

ويمكن كذلك مراقبة قواعد IPTables لمعرفة ما إذا تم السماح بالوصول:

bash
sudo iptables -L -n -v

كما يمكن إنشاء سكربت لمراقبة عدد الطلبات ومحاولات الطرق الغير صحيحة، وربط ذلك بنظام تنبيهات باستخدام fail2ban أو logwatch.


تاسعاً: اعتبارات أمنية متقدمة

1. استخدام طرق عشوائية متغيرة

يمكن إعداد سكربت لتغيير تسلسل المنافذ بشكل عشوائي يومياً، مما يعزز الحماية.

2. الدمج مع VPN

يمكن إعداد طرق المنافذ لفتح منفذ VPN مثل OpenVPN بدلاً من SSH، ثم استخدام هذا الاتصال لمزيد من الحماية.

3. حماية ضد طرق المنافذ الخاطئة

إذا تم تنفيذ طرق خاطئة متكررة من IP معين، يمكن إضافته إلى قائمة الحظر تلقائياً باستخدام IPTables وrecent module.

مثال:

bash
sudo iptables -A INPUT -m recent --name badknock --rcheck --seconds 60 -j DROP sudo iptables -A INPUT -p tcp --dport 7000 -m recent --name badknock --set -j DROP

عاشراً: الجدول التوضيحي لآلية العمل

المرحلة الوصف
1. إغلاق المنفذ يتم غلق منفذ SSH (أو أي منفذ آخر) عبر IPTables
2. تثبيت knockd يُثبت daemon مسؤول عن مراقبة طرق المنافذ
3. إعداد تسلسل الطرق يتم تعريف تسلسل معين من المنافذ يجب الطرق عليها
4. طرق المنافذ العميل يرسل طرق إلى المنافذ بالتسلسل المحدد
5. تنفيذ الأمر إذا كان التسلسل صحيحاً، يتم فتح المنفذ مؤقتاً
6. غلق المنفذ إما تلقائياً بعد فترة أو يدوياً من خلال تسلسل غلق آخر

المصادر والمراجع


كلمات مفتاحية: الطرق على المنافذ, أوبنتو, IPTables, knockd, حماية SSH, أمن الشبكات, جدار ناري, Linux firewall, تسلسل المنافذ, Port Knocking Ubuntu