یادآوری :
تصمیم در مورد پکت با توجه به مقصد آن گرفته می شود .
- اگر مقصد بسته ها خود فایروال باشد برای تصمیم گیری در مورد آن پکت از قوانین زنجیر INPUT استفاده می شود .
- اگر مقصد پکت ها کارت شبکه دیگر فایروال باشد و شما ipforwarding را فعال کرده باشید . ( در واقع ماشینی که دسترسی به آن از طریق کارت شبکه دیگر فایروال میسر باشد) پکت با قوانین زنجیر Forward کنترل می شود .
- اگر خود فایروال نیاز به ارسال پکت به شبکه خارج داشت آن پکت با توجه به قوانین زنجیر OUTPUT کنترل می شود.
در جداول زیر چندین پارامتر دستور iptables بیان شده است . ادامه پارامتر ها را در جداول بعدی با توجه به مثال ها کامل می کنیم .
|
-t < table > |
برای مشخص کردن جدول ( Filter ، NAT ، MANGLE ) از این پارامتر استفاده می شود . جدول پیش فرض Filter است و در صورت استفاده نکردن از این پارامتر به طور خود کار در نظر گرفته می شود. |
|
-j |
مشخص می کند که چه تصمیم گیری در مورد پکت انجام شود . ( شامل DROP ، REJECT ، ACCEPT و … ( |
|
-A |
A مخفف عبارت Append بوده و قانون مشخص شده در جلوی آن را به انتهای زنجیر اضافه می کند . |
|
-F |
F مخفف عبارت Flush بوده و تمامی قوانین موجود در جدول انتخاب شده را حذف می کند . |
|
-L |
تمامی قوانین موجود در زنجیر ها را لیست می کند. |
|
-E |
برای تغییر نام یک زنجیر به کار می رود . |
|
-N |
برای ایجاد یک زنجیر جدید توسط کاربر به کاربر می رود . |
|
-X |
از این پارامتر برای حذف زنجیر های تعریف شده توسط کاربر استفاده می شود . |
|
-p |
برای کنترل پروتوکل به عنوان مثال icmp, tcp, udp به کار می رود . |
|
-s |
برای تطبیق آدرس مبدا پکت استفاده می شود . |
|
-d
|
برای تطبیق آدرس مقصد پکت استفاده می شود
|
|
-i
|
از این پارامتر برای کنترل پکت هایی از یک کارت شبکه وارد می شوند استفاده می شود. |
|
-o
|
از این پارامتر برای کنترل پکت هایی که از یک کارت شبکه خارج می شوند استفاده می شود . |
مثال ۱:
iptables -A INPUT -s 192.168.0.55 -j ACCEPT
۱- قوانین به زنجیر input از جدول Filter ( جدول پیش فرض ( اضافه ) APPEND ) می شود .( در نتیجه مقصد پکت ها خود فایروال است .)
۲- قواننین فقط در مورد packet هایی اعمال می گردد که آدرس مبدا آنها 192.168.0.55 است .
۳ – سیاست اعمالی در مورد پکت هایی با ویژگی های بالا ACCEPT است .
در نتیجه :
تمامی پکت های ماشینی با آدرس آی پی 192.168.0.55 که آدرس مقصد آنها خود فایروال است پذیرفته می شود .
مثال ۲ :
iptables -A INPUT -j DROP -i eth0 -s 192.168.0.45
۱ – قوانین به زنجیر input از جدول Filter ( جدول پیش فرض ( اضافه ) APPEND ) می شود .( در نتیجه مقصد پکت ها خود فایروال است .)
۲- قواننین فقط در مورد packet هایی اعمال می گردد که آدرس مبدا آنها 192.168.0.45 است .
۳- قوانین فقط در مورد پکت هایی اعمال می گردد که از کارت اترنت شماره صفر واردمی شوند .
۴ – سیاست اعمالی در مرود پکت هایی با شرایط بالا DROP است .
در نتیجه :
پکت های ورودی با آدرس مبدا 192.168.0.45 که ازکارت شبکه اترنت صفر وارد می شوند حذف می شوند .
مثال ۳ :
iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP -j ACCEPT
۱- قوانین به زنجیر input از جدول Filter ( جدول پیش فرض ( اضافه ) APPEND ) می شود .( در نتیجه مقصد پکت ها خود فایروال است .)
۲ – قوانین بر روی پکت هایی با هر آدرس مبدا ) 0/0 به معنی هر آدرسی است ( اعمال می گردد.
۳ – قوانین فقط در مورد پکت هایی اعمال می گردد که از کارت اترنت شماره صفر واردمی شوند .
۴ – قوانین در مورد پکت هایی اعمال می گردد که آدرس مقصد آنها 192.168.1.1 باشد .
۵ – قوانین فقط در مورد پکت های tcp اعمال می گردد .
۶ – سیاست اعمالی در مورد پکت هایی با شرایط بالا accept است .
در نتیجه :
این دستور اجازه ورود به پکت هایی با هر آدرس مبدا که از کارت شبکه 0 وارد می شوند و آدرس مقصد آنها یکی از کارت شبکه های خود فایروال با آدرس آی پی 192.168.1.1 است را می دهد .
مثال ۴ :
iptables –L INPUT
لیستی از قوانین موجود در زنجیره INPUT را نمایش می دهد .
مثال ۵ :
iptables –D FORWARD 1
دستور بالا قانون شماره 1 را در زنجیر FORWARD حذف می کند .
مثال ۶ :
iptables –D INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP -j ACCEPT
روش دیگر حذف قانونی خاص نوشتن کامل دستور با استفاده از پارامتر –D است . قانونی را که در مثال 3 به زنجیر INPUT اعمال کردیم در این مثال حذف نمودیم .
مثال ۷ :
iptables -A INPUT -s www.myjunk.com -j DROP
تمامی پکت هایی که از آدرس مشخص شده به سوی فایروال می آیند حذف می شوند.( البته استفاده از ای پی بجای نام دامنه ارجحیت دارد .)
در iptables از علامت ! می توان برای معکوس کردن استفاده کرد .
مثال ۸ :
iptables -A INPUT -j ACCEPT ! -s 192.168.0.45
پکت ها از هر مبدا ای بجز 192.168.0.45 که به سوی فایروال می آیند پذیرفته می شوند .
مثال ۹ :
iptables –A INPUT –p ICMP –d 192.168.0.1 –j DROP
پکت های ICMP که مقصد آنها 192.168.0.1 است . ( کارت شبکه ای از فایروال با این آدرس آی پی ) DROP می شوند . در نتیجه اگر 192.168.0.1 را ping کنیم . جوابی دریافت نمی کنیم .
مثال ۱۰ :
iptables –A INPUT –p tcp –dport 21 –j DROP
با این دستور پورت سرویس دهنده ftp ( پورت شماره ۲۱ ( بسته می شود .
مثال ۱۱ :
iptables –p tcp –h
نیازی به حفظ کردن تمامی دستورات iptables نیست . help پرقدرت iptables همیشه به شما کمک می کند . فقط کافی است از پارامتر –h استفاده نمایید . به عنوان مثال دستور بالا پارامتر هایی را که می توان برای اعمال محدودیت بر روی پروتوکل tcp از آنها استفاده کرد نمایش می دهد .
در iptables می توان پکت ها را با توجه به پورت مشخص شده در هدر آنها هدایت کرد .
|
برای اعمال قوانین بر پکت هایی با پورت مبدا مشخص شده به کار می رود که می تواند یک پورت یا رنجی از پورت ها باشد . |
–sport |
|
برای اعمال قوانین بر پکت هایی با پورت مقصد مشخص شده به کار می رود که می تواند یک پورت یا رنجی از پورت ها باشد . |
–dport
|
مثال ۱۲ :
iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP \
–sport 1024:65535 –dport 80 -j ACCEPT
1- قوانین به زنجیر FORWARD از جدول Filter اعمال می گردد.( در نتیجه مقصد پکت ها ماشینی است که از طریق کارت شبکه دیگر این فایروال قابل دستیابی است .)
2 – قوانین بر روی پکت هایی با هر آدرس مبدا ) 0/0 به معنی هر آدرسی است ( اعمال می گردد.
3 – قوانین فقط در مورد پکت هایی اعمال می گردد که از کارت اترنت شماره صفر واردمی شوند و از کارت شبکه شماره 1 خارج می شوند .
4 – قوانین در مورد پکت هایی اعمال می گردد که آدرس مبدا آنها 192.168.1.58 است .
5 – قوانین فقط در مورد پکت های tcp اعمال می گردد .
6 – پورت مبدا پکت ارسالی باید در رنجه 1024 تا 65535 باشد و پورت مقصد پکت باید 80 باشد .
7 – سیاست اعمالی در مورد پکت هایی با ویژگی های بالا ACCEPT است .
در نتیجه :
با استفاده از این قانون به فایروال اجازه داده می شود تا پکت های tcp ای را با هر آدرس مبدا ای که از کارت شبکه شماره 0 وارد می شوند و از کارت شبکه شماره 1 خارج می شوند و مقصد آنها 192.168.1.85 است را مسیر یابی کند . البته با این شرط که پورت مبدا پکت ارسالی در رنجه 1024 تا 65535 باشد و پکت تصمیم به برقراری ارتباط با پورت 80 ماشین هدف داشته باشد .
استفاده از آدرس mac برای اعمال محدودیت ها ی مختلف در شبکهکاربرد زیادی دارد . زیرا آدرسی یکتا است و تغییر آن به روش های ساده و توسط کاربران مبتدی به راحتی انجام نمی گیرد . ( بر خلاف آدرس ip که تغییر آن به راحتی در صورت داشتن دسترسی root امکان پذیر است .) فرمت آدرس دهی mac به صورت
XX:XX:XX:XX:XX:XX
است.
|
–mac-source 00:00:00:00:00:01 |
از این پارامتر برای تصمیم گیری در مورد پکت ها بر اساس آدرس مک مبدا ای است که آنرا ارسال کرده است استفاده می شود . |
مثال ۱۳ :
iptables –A INPUT –mac-source 00:00:00:00:11:12 -j DROP
پکت های ارسالی از ماشینی با آدرس مک 00:00:00:00:11:12 DROPکه مقصد آنها فایروال است DROP می شوند .
ذخیره کردن تنظیمات iptables :
با صادر کردن دستور های iptables قوانین فایروال به صورت موقت در سیستم اجرا می شوند و تا راه اندازی مجدد سیستم یا سرویس iptables به کار خود ادامه می دهند . برای ذخیره این تنظیمات از دستور
Service iptables save استفاده می شود.
این قوانین درون دایرکتوری /etc/sysconfig/iptables در فایل هایی
lokkit:
برای راحتی کار با iptables بعد از آشنایی با syntax های این دستورات میتوان از نرم افزار های مخصوص پیکربندی iptables استفاده کرد . lokkit یکی از این نرم افزار ها است که به طورپیش در نصب کامل فدورا نصب می شود و کار پیکربندی فایروال را بسیار ساده می سازد . البته فایل های تولید شده توسط این نرم افزار می تواند مثال بسیار خوبی برای آشنایی شما با دستورات iptables باشد.
این برنامه نیز فایل های حاوی دستورات iptables را درون دایرکتوری /etc/sysconfig نگهداری می کند .
itables-save و iptables-restore:
برای ذخیره قوانین iptables در فایلی خاص می توان از اسکریپت iptables-save استفاده کرد.
به عنوان مثال دستور زیر قواننی در حال اجرای iptables را درون فایل firewall-config ذخیره می کند .iptables-save > firewall-config
برای بازخوانی این اطلاعات از یک فایل نیز می توان از دستور iptables-restore استفاده نمود.
به عنوان مثال دستور زیر تنضیمات iptables موجود در فایل firewall-config را به عنوان تنضیمات جاری سیستم تعیین می کند .
iptables-restore < firewall-config
البته از این اسکریپت ها می توان در نسخه هایی مانند debian که نمی توان از دستور service iptables save استفاده کرد نیز بهره برد.
( در نسخه debian برای اجرای این دستور ابتدا باید وارد دایرکتوری /sbin شوید .)