السلام عليكم
هذه ورقة/مقالة تتحدث عن IPTables ، إن لم تكن من مستخدمي لينوكس فلا تقرأ ما سيكتب لأنه غير مفيد لك .
تعريف و بداية IPTables :
يخطيء الكثيرين للأسف في تحديد بداية الفايروولز في لينوكس و يعتقدون بأن البداية كانت في ipchains و هذا غير صحيح ، حيث أن أول فايروول كان ipfwadm و هذا كان في كيرنيلز 2.0.x ثم جاء ipchains في كيرنيلز 2.2.x ثم أخيراً قام Russtyو مجموعة آخرى بإنشاء IPTables و هذا كان في كيرينيلز 2.4.x و حتى الأن يتم إستخدامه كفايروول لكل أنظمة لينوكس .
ما الذي يمكنني عمله بواسطة IPTables :
هذا سؤال مهم حتى نتعرف على المميزات العديدة به
1- يمكنك من عمل تنقية/Filter لجميع المنافذ .
2- يقوم بعمل تنقية/Filter ليس فقط للـ ipv4 بل أيضاً للـipv6 و هذه ميزة رائعة .
3- يعمل في جميع أنواع الشبكات/ .NAT/NPAT etc..
4- يمكنك صنع قوانين خاصة بك ” لا تقلق سأشرح المراد من هذه الجملة ” .
5-فايروول ذكي جداً لأنه يمكنه تجاهل الباكتس و ليس حجبها فقط ” لا تقلق سيتم توضيح هذه النقطة الهامة جداً ” .
و مميزات آخرى أكتشفها بنفسك !
كيف أقوم بتشغيل IPTables :
هذا يختلف من توزيعة لأخرى ، على أي حال لا تقلق من هذه الإشكالية فهي بسيطة فقط قم بكتابة هذا الأمر
iptables -V
إذا كان الناتج لديك iptables بجوارها بضعة أرقام إذن فهو يعمل ، إن كان هناك شيء آخر فعلى الأغلب أنت من مستخدمي redhat حينها عليك بتنفيذ الأمر التالي
service iptables start
و سيعمل بكل يسر و بساطة .
كيف البداية في الإستخدام و الإختيارات :
قم بطباعة هذا الأمر
iptables -L
ستلاحظ وجود ثلاثة سطور و بجانبها حالة الـPolicy الخاص بها و أعتقد أن السؤال الذي يدور في ذهنك الأن هو.. ما هذه الأشياء؟
INPUT : هذا هو الرولز/القانون المسؤول عن الباكتس المستقبلة لجهازك/لسيرفرك ” لا تقلق سيتم وضح مثال للتوضيح ”
FORWARD : هذا هو الرولز/القانون المسؤول عن فلترة الباكتس للأجهزة و يمكن إستخدامه كروتر مثلاً و هذه ميزة من مميزاته .
OUTPUT : هذا هو الرولز/القانون المسؤول عن فلترة الباكتس الصادرة من جهازك/سيرفرك ” سيتم وضع مثال ”
هذا ما يهمنا الأن ، لكن يجب التنويه بأن هذه ليست كل الرولز المتاحة لديك بل هناك رولز أخرى و التي تستخدم في الشبكات أو بالأخص في الNAT و هذه ليست محور الحديث الأن لكن حتى يكون لديك معرفة بسيطة بها فهناك رولز لها أحدهم يدعى PREROUTING و الأخر POSTROUTING .
نعود لما شرحناه ببعض التوضيحات و الإضافات
يجب عليك أن تعرف الأتي و تحفظه جيّداً حيث أن هذا هو أهم جزء لتتمكن من إستخدام IPTables بشكل جيد ، و الذي سأكتبه الآن هو القيم المستخدمة لكتابة آمر معين و حاول أن تحفظها جميعها إن أمكن
-P : هذا المسؤول عن تغيير قيمة الPolicy لديك ، فكما لاحظت عند كتابة الأمر iptables -L كانت هناك كلمة بجوار القيم و كانت في الغالب هكذا
(policy ACCEPT)
و هذا يعني أنه سيسمح بمرور جميع الباكتس ، أما لو قمنا بتغييره إلى (policy DROP) فسيحب جميع الباكتس و المسؤول عن التغيير من الموافقة إلى الرفض/التجاهل هو -P ، مثال
iptables -P INPUT DROP
هذا يعني أنك لن تسمح بدخول أي باكتس إليك .
-A : هذا هو المسؤول عن إضافة أمر معين للرولز الخاصة بك و ستكتبه حتماً في معظم أوامرك ، مثال
iptables -A INPUT -p icmp -j DROP
هنا قمت بمنع عمل بروتكول icmp عن طريق إستخدام INPUT + -A و هذا مثال يوضح كيفية عمل -A حيث أنه يجب أن يأتي بعده أسم القاعدة التي سيعمل على إدخال القانون بها أي INPUT 0r OUTPUT ..etc .
-L : هذه هي المسؤولة عن عرض القواعد الخاصة بك و قد قمنا بتجربة هذا الأمر بالأعلى هل تذكر؟ سيقوم بعرض القواعد و القوانين الخاصة بك .
-s : هو المسؤول عن تحديد عنوان IP معين و يأتي العنوان بجانبه ” ليس من الضرورة أن يأتي معه -d فهو غير هام تقريباً ”
-p : هذا المسؤول عن البورتات و يأتي بجواره رقم البورت .
-N : هل تذكر ما قلته عن مميزات IPTables بالأعلى؟ حيث أنني قلت أنك يمكنك صنع قوانين خاصة بك؟ هنا يأتي دور -N فهي المسؤولة عن تلك الأشياء ، مثال
iptables -N SOFY
هنا قمنا بإنشاء قاعدة جديدة لتضع بها قوانين خاصة بك و لزيادة التوضيح قم بكتابة
iptables -L
ماذا ترى؟ قاعدة جديدة تسمى SOFY و هذا شيء مفيد جداً و ستكتشف ذلك لاحقاً .
-X : يقوم بحذف القواعد ، و يأتي بجوارها أسم القادة مثال SOFY يمكنك حذفها بهذه القيمة بكل بساطة .
-R : هذه القيمة تمكنك من عمل إستبدال لأمر بأخر على شرط أن يكون في نفس القاعدة ، مثال
iptables -R INPUT 1 -p icmp -j ACCEPT
سيقوم هذا الأمر بإستبدال الأمر القديم الذي كان يوقف عمل icmp و هنا سيعمل ، هذا الأمر مفيد لمن ينشأ جداراً ناريا خاصا به و مفيد لك أيضاً .
-F : إياك أن تقوم بتجربته ! ، لا تخف هذا فقط حتى لا تتسرع بالتجربة فهذه القيمة ستقوم بحذف جميع القيم في القواعد و لا أنصح بإستخدامه إلا لمن يعرف ماذا يفعل حتى لا يضيع ما قمت بكتابته .
-D : هذه القيمة تمكنك من حذف سطر ما أو رولز معينة من قاعدة ما للتوضيح ، مثال
iptables -D INPUT 1
هنا قمنا بحذف أول رولز في القاعدة INPUT ، و أيضاً يجب ان تحذر في إستخدامه .
تقريباً هذه هي أهم القيم التي ستحتاجها في كتابة أوامرك .. بالطبع هذا ليس كل شيء تابع معي..
الموافقة و الرفض و التحويل هلا توسعت في هذه النقطة ؟ :
هناك ثلاثة قيم مهمة و هي الأكثر شيوعا
ACCEPT : و هي تعني الموافقة
DROP: هل تذكر ما قلته بالأعلى أن IPTables ذكي جداً؟ ، هنا أكتشفت ذلك ، فهنا من خلال القيمة DROP يتم تجاهل الباكتس المرسلة و ليس منـعها كما يعتقد البعض ، وهذه ميزة مهمة جداً جداً لمن يتعامل مع بعض المخربين سيكتشف أن هذه الميزة هامة ، خلاصة القول DROP سيتقوم بتجاهل الباكتس أو عدم الموافقة عليها .
LOG : ستقوم بتسجيل اللوجز ، و هناك معلومة هامة أحببت أن أوضحها لمن يتعامل مع السيرفرات ، يجب عليك وضع هذه الفيمة قبل أن تضع ACCEPT أو DROP من حيث الترتيب ، ولا تسأل لماذا..ستكتشف ذلك بنفسك .
هل هذا كل شيء ؟ بالطبع لا فهناك ما يسمى بالتحويل ، كما أنه هناك ايضاَ REJECT و غيرها قيم أخرى لكنها ليست ذات أهمية ، و الأن نأتي للتحويل
هل تذكر القاعدة التي كانت تدعى SOFY ? ما فائدتها؟ سيتم توضيح ذلك الآن ، لنفترض أنك تريد أن تقوم بإنشاء سيرفر للكتب مثلاً و تريد تحديد قائمة معينة من عنواين الإتصال /IP تستطيع وحدها تحميل الكتب فكيف ذلك؟
بكل بساطة ، أنت لديك قاعدة تسمى SOFY عليك الأن أن تقوم بجعل الPolicyالخاص بها DROP ثم جعل الINPUT يقوم تلقائياً بتحويل الإتصالات للبورت 80 ” أو للبورت المستخدم لتحميل الكتب” إلى القاعدة الSOFY و من خلال -s قم بتحديد الأيبيهات التي سيسمح لها بالدخول ، و هكذا تستطيع أن تقوم بتحديد عناوين معينة لتحميل الكتب و توفير الباندويث ، هذا كان مثال لكيفية التحويل .
إلى هنا أعتقد أني قمت بتوضيح أهم الأمور التي يحتاجها المستخدم العادي و ايضاً مدراء السرفرات ، هناك قيم لم أذكرها و أعتقد أن هذا دورك الأن لتقوم بكتابة هذا الأمر
man iptables
و إكتشاف المزيد منها !
إن كان لديك سؤال فلا تتردد بكتابته !
كونوا بخير .
-------
رأيت ان الدرس قد يكون مفيد لكل مدراء خوادم اللينوكس و أرجو أن ينال إعجابكم
المصدر : http://guru.securitygurus.net/blog/?p=16