-
February 15th, 2012, 04:19
#1
iptables
iptables یکی از مهمترین ارکان مدیریت سرور است. ابزاری که سن تولدش در دنیای متن باز (Open Source) فاصله زیادی با شروع نهضت متن باز ندارد. Iptables نام ابزاری است که قادر به اجرای هر سیاستی در سطح لایه ترانسفر و تا حدودی لایههای پایینتر و بالاتر شبکه را دارد اما شهرت و محبوبیت اصلی این نرمافزار سطح هسته به انعطاف بی حد و حصر آن در لایه ترانسفر مربوط میشود آنجا که حرف از روتینگ بستهها (Packets) و وضعیت آنها است.
Iptables توسط تیم netfilter طراحی شد. در ابتدا به علت ساختار زنجیرهای طراحی آن، به نام ipchain شهرت یافت (هم اکنون هم در سیستم عامل BSD از این نسخه که حال برای خود انشعابی خاص شده است استفاده میشود) اما بعدها نام iptables بر آن گذاشته شد. این دیوار آتش (Firewall) در ابتدا تنها میتوانست سیاستهای بسیار محدودی فقط روی بستههای ورودی اعمال کند اما به مرور زمان قسمتهای ماژول مانندی به آن اضافه شد.
کار با iptables بر خلاف تصوری که در قدم اول در ذهن هر خوانندهای شکل میگیرد بسیار ساده است. همه چیز در قالب زنجیرههایی شکل میگیرد که به هم پیوسته میشوند. سه زنجیره اصلی عبارتند از INPUT،OUTPUT و FORWARD. این سه زنجیره بر حسب نامشان تمام بستههای ورودی را به دست شما میسپارند تا هر سیاستی که میخواهید بر آنها اعمال کنید.
فرض کنید میخواهید تمام بستههای ICMP را مسدود کنید؛ برای این کار باید به سراغ زنجیره INPUT برویم که تمام بستههای ورودی با تمام Payload وHeader شان به محض ورود به سیستم عامل به آنجا میروند، برویم. همه چیز کاملا ساده است :
Iptables –A INPUT –p icmp –j DROP
سوییچ A تعیین کننده نوع بستههای مورد نظر است سوییچ p نشان دهنده پروتکل بستههای ورودی است که در اینجا بستههای ICMP که همان بستههای PING هستند، انتخاب شده است و در آخر سوییچ j است که مخفف کلمه jump (به معنی پرش) است. خوب حال کمی تخصصیتر به این دستور نگاه میکنیم. در دستور بالا ما ۲ زنجیره (chain) اصلی داریم: یکی به نام DROP و یکی INPUT. همان طور که از نام زنجیره DROP پیدا است، وظیفه آن، از رده خارج کردن بستهها و جلوگیری از رسیدن آنها به فرآیند مورد نظر را دارد. ناگفته پیدا است که میتوانیم بسته ورودی را به انتخاب خودمان به هر زنجیرهای بفرستیم. به عنوان مثال در زیر چند خط دستور می نویسیم که تمام ترافیک پورت ۸۰ را به یک زنجیره از پیش تعریف نشده میبرد و اگر ترافیک از مبدا خاصی بود اجازه ادامه را از آن میگیریم در غیر این صورت بسته به هدف خود میرسد:
iptables –N SUN-ARMY-CHAIN
iptables –A SUN-ARMY-CHAIN –s 192.168.1.20 –j DROP
iptables –A SUN-ARMY-CHAIN –j ACCEPT
iptables –A INPUT -p tcp –source-port 80 –j SUN-ARMY-CHAIN
خوب خط به خط دستورها را میخوانیم :
در دستور اول یک زنجیره به نام SUN-ARMY-CHAIN ایجاد میشود سپس میگوییم هر بسته ورودی اگر از آدرس مبدا (source)ذکر شده ارسال شده باشد، از رده خارج میشود؛ در غیر این صورت تایید شده و به هدف میرسد.
حال شاید برای شما این سوال شود که اگر ما تعدادی شرط داشتیم و بسته ورودی در هیچ کدام از شرطها صدق نکند چه اتفاقی میافتد پاسخ این است که هیچ بسته ورودی وجود ندارد که عضو یکی از سه زنجیره اصلی نباشد.
خوب در مرحله بعد باید بگویم که هر زنجیره یک سیاست کلی دارد که در صورتی که یک بسته در هیچ کدام از شروط صدق نکند سیاست اصلی دربارهٔ آن به اجرا در میآید که به صورت پیش تعریف شده قبول همه بستهها است.
زنجیرههای اصلی
[LEFT] REJECTاین زنجیره بسته را از رده خارج کرده و یک پیام برای صاحب بسته ارسال میکند:.
DROP: این زنجیره هم مانند زنجیره قبل عمل میکند با این تفاوت که پیام برای ارسالکننده ارسال نمیشود.
LOG: این زنجیره بسته ورودی خود را لاگ میکند.
ACCEPT: بسته اجازه عبور پیدا میکند.
ویرایش توسط damashi : February 15th, 2012 در ساعت 04:27
-
تعداد تشکر ها ازdamashi به دلیل پست مفید
-
February 15th, 2012 04:19
# ADS
-
January 20th, 2013, 10:48
#2
عضو جدید
-
تعداد تشکر ها ازAries به دلیل پست مفید
-
January 20th, 2013, 12:43
#3
پاسخ : iptables
-
تعداد تشکر ها از shingo به دلیل پست مفید
-
August 23rd, 2013, 12:31
#4
پاسخ : iptables
سلام
من دارم برای پایان نامم یک کاری مثل حالت facebook رو انجام میدم که وقتی مثلا face book بخواد باز بشه جاش یه هانی پات باز میشه که پیوند داده است. من این کار را با لینوکس دارم انجام میدم و در virtual box . سوالم اینه؟ در روتر لینوکسی اومدم با دستور route del -net 192.168.65.0/24 پینگ های 65.0 را بستم و با route add -net 192.168.65.0 gw 192.168.66.3 پینگ های 65 را به 66.3 هدایت کردم ولی این دستور با reset کردن از بین میره . میدونم با iptables save میشه بصورت دائم ذخیره کرد ولی من مراحل دقیقش رو نمیدونم. محبت میکنید راهنمایی کنید؟ ممنونم .
-
تعداد تشکر ها از mahleghaaa به دلیل پست مفید
-
August 26th, 2013, 11:01
#5
عضو انجمن
پاسخ : iptables
من تنها دنبال یک دستور خاص هستم که پیداش نکردم تا امروز و این غیر فعال کردن گزارشات iptables هست که وقتی سرور ddos میشه مجبورم میکنه اول اینترنت سرور رو قطع کنم تا از کنسول بتونم کانفیگ مورد نظر رو انجام بدم معمولا تو SSH مشکلی نیست و نمیاد ولی کنسول سرور اذیت میکنه کسی کدش رو داره؟ یک بار دیتا سنتر برام انجام داد ولی نگفت چطور ! تو KVM سرور های اختصاصی واقعا مکافاته!
-