بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

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

مع كل تثبيت setup لأحد أنظمة لينكس، يقوم الجدار الناري بتفعيل نفسه بدون أي تدخل من قبل المستخدم، وغالباً ما يقوم بتفعيل القواعد Rules الإفتراضية لمنع الإتصالات الخارجية من الوصول إلى أحد الخدمات التي تعمل بعد تثبيت setup أحد أنظمة لينكس.

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


لنبدأ بشكل متسلسل.

إستعراض القواعد الحالية للجدار الناري:

رمز PHP:
<code style="white-space:nowrap"> <code> # iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD
(policy ACCEPT)
target prot opt source destination
Chain OUTPUT
(policy ACCEPT)
target prot opt source destination
</code> </code>

كما نرى، السطر الثاني

رمز PHP:
<code style="white-space:nowrap"> <code> Chain INPUT (policy ACCEPT)
</code> </code>

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

السطر الرابع

رمز PHP:
<code style="white-space:nowrap"> <code> Chain FORWARD (policy ACCEPT)
</code> </code>

يوضح أن جميع الإتصالات “المارة” من خلال جهازك مسموح بها، هذه مستخدمة في حالة تحويل جهازك إلى Router أو إستخدامك لأجهازك كمستضيف لأنظمة تخيلية.

السطر السادس

رمز PHP:
<code style="white-space:nowrap"> <code> Chain OUTPUT (policy ACCEPT)
</code> </code>

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

لنبدأ بالتعامل مع قواعد الجدار الناري بحيث نتنتهي بإعداد جدار ناري معد بشكل صحيح 100% يحمي السيرفر SERVER أو جهازك الشخصي.

سوف نقوم بإغلاق جميع الإتصالات الواردة للسيرفر SERVER والمارة من خلاله بإستثناء ماقام السيرفر SERVER ببدء هذا الإتصال وسوف نسمح بجميع الإتصالات الخارجة من خلال السيرفر SERVER وسوف نسمح لجميع الأشخاص بالدخول إلى السيرفر SERVER عن طريق HTTP وسوف نسمح لمستخدمي الشبكة الداخلية فقط بالدخول إلى السيرفر SERVER عن طريق SSH.

1- دائماً قبل البدء بتعديل قواعد الجدار الناري تأكد أن أول قاعدة هي السماح لجميع الإتصالات بالدخول لكي لا يحظر الجدار الناري إتصالك، ثم نقوم بتعديلها عند الإنتهاء:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -P INPUT ACCEPT
</code> </code>

2- قم بمسح جميع قواعد الجدار الناري والتي غالباً تكون إفتراضية عند تركيب install نظامك:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -F INPUT
iptables
-F OUTPUT
iptables
-F FORWARD
</code> </code>

3- إسمح بجميع الإتصالات الواردة لجهازك من نفس الجهاز، أو ما يسمى loopback traffic:




رمز PHP:
<code style="white-space:nowrap"> <code> iptable -A INPUT -s localhost -j ACCEPT
</code> </code>

4- قم بالسماح بالحزم Packets الواردة إلى جهازك ومنشىء هذة الباكتس هو جهازك:

[PHP]iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT[/PHP

5- إذا أردت أن تسمح المواقع الخارجية بالإتصال بسيرفر SERVERك عن طريق خدمة HTTP فقط، علماً أن عنوان الأي بي 0/0 يقصد به جميع عناوين الأي بيات حول العالم، قم بالتالي:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -A INPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
</code> </code>

6- قم بالسماح لشبكتك الداخلية بالوصول إلى سيرفر SERVERك عن طريق SSH، على إفتراض أن نطاق عناوين شبكتك الداخلية هو 10.0.0.0/8:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -A INPUT -s 10.0.0.0/8 --p tcp --dport 22 -j ACCEPT
</code> </code>

7- تم الإنتهاء من تحديد القواعد الرئيسية للجدار الناري لسيرفر SERVER يقدم خدمة HTTP، والأن يجب عليك أن تمنع جميع الأتصالات الواردة للسيرفر SERVER بجعل القاعدة الإفتراضية للإتصالات القادمة هي المنع:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -P INPUT DROP
</code> </code>

8- قم بالسماح بجميع الإتصالات الخارجة من السيرفر SERVER كانت إتصالات لسيرفر SERVER خارجي يقدم خدمة DNS أو لسيرفر SERVER خارجي يقدم خدمة HTTP على سبيل المثال سيرفر SERVERات التحديث updateات:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -P OUTPUT ACCEPT
</code> </code>

9- قم بمنع إستخدم السيرفر SERVER ك Router، علماً أنه يجب أن تسمح بهذة القاعدة عندما يعمل السيرفر SERVER الخاص بك ك Virtual Host:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -P FORWARD DROP
</code> </code>

10- عند رغبتك بمنع IP معين من الوصول إلى خدمة HTTP في سيرفر SERVERك، قم بالتالي:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -A INPUT -s 77.66.55.44 -p tcp --dport 80 -j DROP
</code> </code>

11- وتستطيع منع شبكة كاملة من الوصول إلى خدمة HTTP في التي يقدمها السيرفر SERVER كالتالي:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -A INPUT -s 192.168.5.0/24 -j -p tcp --dport 80 -j DROP
</code> </code>

12- وتستطيع أن تستخدم القاعدة الشرطية if not، بحيث تمنع أو تسمح بناء على هذا الشرط بإستخدام علامة التعجب !، كالتالي:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables -A INPUT \! -s 77.66.55.44 -p tcp --dport 80 -j ACCEPT
</code> </code>

القاعدة بالأعلى توضح أنه سوف يتم السماح بجميع عناوين الأيبي بالدخول إلى خدمة HTTP عبر المنفذ Port 80 إلا في حالة كون عنوان الأي بي هو 77.66.55.44 والذي سوف يتم منعه.


13- قم بتخزين هذة القواعد ليتم إستعادتها عن إعادة تشغيل السيرفر SERVER، لأنظمة ريدهات لينكس والأنظمة المبنية عليها مثل فيدورا و CentOS:

رمز PHP:
<code style="white-space:nowrap"> <code> iptables-save
chkconfig iptables on
</code> </code>

14- ﻷنظمة Deb، مثل ديبيان وأبونتو و Mint، قم بتحميل الحزمة التالية ونفذ الأوامر لتعمل تماماً كما في أنظمة ريدهات لينكس:

رمز PHP:
<code style="white-space:nowrap"> <code> apt-get update
apt
-get install iptables-persistent
iptables
-save > /etc/iptables/rules.v4
</code> </code>

نقاط :
1- الخيار –state يقول بتفعيل موديول state وهو المسوؤل عن حالة الباكت.

2- الخيار –dport يقصد به المنفذPort المستهدف Target Port.

3- الخيار –p tcp يقصد به أن نوع البروتوكول TCP، يمكنك تغيره إلى UDP عند الحاجة.

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






©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©