موضوع مقاله: Iptables | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # Iptables | مقدمه: iptables یک ابزار برای فایروالینگ (فایروال لینوکس کرنل اش است) در گنو/لینوکس است؛ که بروی بیشتر توزیع‌های لینوکس به صورت پیش‌فرض نصب است.iptables آی‌پی‌تیبلز نام ابزاری است که قادر به اجرای هر سیاستی در سطح لایه ترانسفر و تا حدودی لایه‌های پایین‌تر و بالاتر شبکه است اما شهرت و محبوبیت اصلی این نرم‌افزارِ سطح هسته، به انعطاف بی حد و حصر آن در لایه ترانسفر مربوط می‌شود آنجا که حرف از روتینگ بسته‌ها (Packets) و وضعیت آن‌ها است. | ## بخش 1: Iptables | این دیوار آتش (Firewall) در ابتدا تنها می‌توانست سیاست‌های بسیار محدودی فقط روی بسته‌های ورودی اعمال کند اما به مرور زمان قسمت‌های ماژول مانندی به آن اضافه شد. DROP: این زنجیره هم مانند زنجیره قبل عمل می‌کند با این تفاوت که پیام برای ارسال‌کننده ارسال نمی‌شود. اینها تنها تعدادی از زنجیره‌های اصلی هستند که ما را در سیاست‌گذاری روی بسته‌ها یاری می‌کنند. در بسیاری از موارد، این اصطلاحات به جای یکدیگر به‌کار می‌روند که ممکن است باعث بدفهمی مطالب شود. Netfilter چارچوبی حاوی مجموعه‌ای از قلاب‌ها است که در هستهٔ لینوکس قرار دارد و به منظور مسدود کردن و دستکاری بسته‌ها به کار می‌رود. ابزارهای دیگری نیز مانند NAT، پیگیری حالت‌دار و صف‌بندی بسته از آن استفاده می‌کنند. اکثر اجزایی که در این پروژه تهیه شدند ماژول‌های قابل بارگذاری در هسته هستند اما مجموعه‌ای از ابزارهای فضای کاربر و کتابخانه‌هایی نیز تهیه شدند. معیاری که بیش از همه کاربرد دارد، آدرس مبدأ و مقصد، پورت و پروتکل مبدأ و مقصد است. کنترل: هنگامی‌که سیستم عامل، لینوکس است و شبکه‌های داخلی به یک شبکهٔ خارجی مانند اینترنت متصل است، می‌توان به انواع خاصی از ترافیک اجازهٔ عبور داد و انواع خاصی از آن را مسدود نمود. برای مثال، سرآیند بسته‌ها حاوی آدرس مقصد است، بنابراین می‌توان از رفتن بسته‌ها به بخش خاصی از شبکهٔ خارجی جلوگیری نمود. امنیت: لینوکس تنها رابط بین دنیای آشفته اینترنت و شبکهٔ منظم داخلی است؛ بنابراین باید بر روی ترافیک وارده به شبکهٔ داخلی محدودیت‌هایی اعمال کرد. ممکن است مهم نباشد که چه چیزی از شبکه خارج شود اما در مورد بسته‌های وارده باید نگران بود. به عنوان مثال ممکن است نخواهید که کسی از طریق Telnet با سرویس‌دهنده ارتباط برقرار کند. ممکن است بخواهید تنها از اینترنت استفاده کنید و یک سرویس‌دهنده نباشید؛ بنابراین جلوی هرگونه اتصالی را می‌گیرد. مراقبت: گاهی اوقات سیستمی در شبکهٔ محلی که به‌طور نامناسبی پیکربندی شده است، تعداد زیادی بسته را به خارج از شبکه ارسال می‌کند. ترجمهٔ آدرس شبکه (NAT) هر کامپیوتری در ارتباط با دیگرکامپیوترها و سرویس‌دهندگان وب نیاز به یک آدرس IP دارد. | ## بخش 2: Iptables | با گسترش اینترنت و رشد استفاده خانگی و شبکه‌های کاری به نظر می‌رسد تعداد آدرس‌های IP موجود کافی نباشد. یک راه حل ساده، طراحی مجدد قالب آدرس IP است که امکان داشتن تعداد آدرس‌های بیشتری را می‌دهد، اما چندین سال طول می‌کشد تا این راه حل پیاده‌سازی شود و نیازمند اصلاح کل زیرساخت اینترنت است. NAT به یک دستگاه منفرد مثلاً یک مسیریاب این امکان را می‌دهد که به عنوان رابط بین اینترنت و یک شبکهٔ محلی مشخص عمل کند. مفهوم NAT بسیار ساده و به این معنا است که یک دستگاه (مثل کامپیوتر یا مسیریاب) به عنوان دروازهٔ ورود به اینترنت عمل می‌کند و با این کار آدرس‌های ایستگاه‌های کاری را به آدرس دستگاهی که NAT روی آن فعال است ترجمه می‌کند، به بیان دیگرNAT روی دستگاهی که به اینترنت متصل است فعال می‌شود و ایستگاه‌های کاری و به‌طور کلی شبکه را از دید اینترنت پنهان می‌کند. از سوی دیگر اینترنت شبکه را به‌صورت یک دستگاه ساده می‌بیند که به اینترنت متصل می‌باشد. NAT روی شبکه تغییر ایجاد نمی‌کند و نیازی به تنظیمات دوباره روی ایستگاه‌های کاری نیست. فقط ایستگاه‌های کاری می‌بایست آدرس دروازهٔ خروجی از شبکه را که همان آدرس دستگاهی است که NAT روی آن فعال شده‌است را بدانند. ویژگی‌های اصلی IPTables عبارتند از: فهرست‌کردن کلیهٔ مجموعهٔ قوانین فیلتر بسته افزودن/ کم کردن/ اصلاح قوانین در مجموعهٔ قوانین فیلتر بسته فهرست/ صفر کردن شمارنده‌های هر قانون در مجموعهٔ قوانین فیلتر بسته به دلیل این که IPTables به امتیازات خاصی برای اجرا نیاز دارد، باید حتماً توسط کاربر root اجرا شود. چارچوب Xtables به مدیر سیستم امکان تعریف جدول‌هایی را می‌دهد که شامل زنجیره‌هایی از قوانین هستند. یک قانون در یک زنجیره می‌تواند یک بسته را به زنجیره دیگری بفرستد و این روند تا هر جایی می‌تواند ادامه داشته باشد. برای این زنجیره‌ها سیاست تعریف نشده است و اگر بسته‌ای به انتهای این‌گونه زنجیره‌ها برسد، دوباره به زنجیره‌ای که آن را فراخوانی کرده‌است، بازمی‌گردد. اگر قانون با بسته انطباق پیدا نکند، بسته به قانون بعدی فرستاده می‌شود و اگر قانون با بسته انطباق یابد، طبق آنچه در هدف مشخص شده با بسته برخورد می‌شود. بسته به پیمایش پیوسته در زنجیره ادامه می‌دهد تا (۱) یک قانون با آن بسته انطباق یابد که در این صورت در مورد سرنوشت نهایی بسته تصمیم گرفته می‌شود (مثلاً بسته قبول یا حذف می‌شود) یا (۲) یک قانون، هدف بازگشت را فراخوانی کند و بسته به زنجیرهٔ فراخواننده بازگردد یا (۳) بسته به انتهای زنجیره برسد. عبارات و اصطلاحات IP Tables در ادامه این بخش، تعدادی از عبارات و اصطلاحاتی که بیشترین کاربرد را دارند و برای درک مطالب بعدی لازم هستند، شرح داده می‌شوند. معنی اول: یک انطباق منفرد که به یک قانون می‌گوید که یک سرآیند باید محتوی چه اطلاعاتی باشد. مثلاً انطباق—source به ما می‌گوید که آدرس منبع باید یک میزبان خاص یا محدوده خاصی از شبکه باشد. | ## بخش 3: Iptables | معنی دوم: اگر کل یک قانون در مورد یک بسته صدق کند می‌گوییم بسته با قانون انطباق یافته‌است. چند نمونه از پرکاربردترین انطباق‌ها در ادامه آورده شده‌اند: (--source (-s: یک آدرس IP مبدأ یا شبکه را انطباق می‌دهد. اگر قانون انطباق داشت، بسته به زنجیرهٔ بعدی فرستاده می‌شود و در آن پردازش می‌شود. اگر کل قانون به‌طور کامل انطباق پیدا کند، تعریف هدف مشخص می‌کند که باید با بسته چه کرد. در ادامه چند هدف پرکاربرد آورده شده است: ACCEPT: به یک بسته اجازه می‌دهد که به راه خود ادامه دهد. حال به بررسی این جداول می‌پردازیم: جدول Filter: تمام قوانین و زنجیرهایی که به نوعی کار حذف یا عبور بسته را انجام می‌دهند در این جدول قرار می‌گیرند. جدول NAT: شامل تمام قوانین و زنجیرهایی است که کار ترجمه یا تغییر آدرس(IP بسته‌ها) را بر عهده دارند. برای نمونه، قانون تغییر آدرس ۲۳٫۱۰٫۱۰٫۹ به آدرس ۸۰٫۹۰٫۹۰٫۰۰ در این جدول قرار می‌گیرد. پیگیری اتصال این امکان را به هسته می‌دهد که کلیه اتصال‌های شبکه یا جلسه‌ها را پیگیری کند و بدین‌وسیله کلیه بسته‌هایی که با هم یک اتصال را تشکیل می‌دهند، به هم مرتبط کند. NAT به این اطلاعات برای ترجمهٔ بسته‌های مرتبط به هم نیاز دارد و IPTables می‌تواند از این اطلاعات استفاده کند و مانند یک دیواره آتش حالت‌دار عمل کند. پیگیری اتصال، هر بسته را به حالت‌های مختلف به شرح زیر طبقه‌بندی می‌کند: جدید: اولین بستهٔ یک اتصال جدید. وابسته: بسته‌ای که یک اتصال جدید را شروع کرده‌است و این اتصال به یک اتصال موجود مرتبط است. عدم ردیابی: حالت خاصی است که توسط مدیر به یک بسته نسبت داده می‌شود تا پیگیری اتصال را برای یک بسته خاص انجام ندهد. زنجیره (Chain): یک زنجیره یک مجموعهٔ قانون است که بر روی بسته‌هایی که زنجیره را می‌پیمایند، اعمال می‌شود. هر جدول یک مجموعهٔ زنجیره توکار دارد اما کاربر نیز می‌تواند زنجیره‌هایی را تعریف کند. | ## جمع‌بندی | FORWARD: وقتی دیواره آتش برای متصل‌کردن یک شبکه به شبکهٔ دیگر استفاده می‌شود، بسته‌ها باید در دیواره آتش مسیریابی شوند که در این مورد این زنجیره به‌کار می‌رود.