tableها در iptabless

tableها در iptabless

همچنین میتوانید برای دیدن لیست آموزش های مربوط به IPTables اینجا را کیلیک کنید.

نت فیلتر از پنج chain تشکیل می‌شود که می‌توان آنها را در سه table دسته بندی کرد:

۱-Filter

 جدول filter شامل سه chain از پیش ساخته شده درون نت فیلتر می‌باشد. وظیفه‌ی این جدول بررسی بسته‌های عبوری از لحاظ ویژگی‌هایشان و صدور مجوز عبور بسته‌ها بر اساس این ارزیابی می‌باشد. سه زنجیره‌ی این جدول به صورت زیر هستند:

 ۱٫Input   ۲٫Forward    ۳٫Output

زنجیره‌ی Input بسته‌هایی را که مقصدشان خود فایروال (درون سیستم) می‌باشند را مورد ارزیابی قرار می‌دهد. زنجیره‌ی Output بسته‌های تولید شده توسط سیستم را که قصد رفتن به بیرون را دارند را مورد بررسی قرار می‌دهد. زنجیره‌ی Forward بسته‌هایی را که از شبکه‌ای خارجی آمده‌اند و قصد رفتن به شبکه‌ای دیگر را دارند (نه به داخل خود سیستم) ارزیابی می‌کند.

یکی از تفاوت‌های اصلی iptables با ipchainsدر این است که در ipchains بسته‌هایی که از بیرون می‌آمدند و قصد رفتن به شبکه‌ای دیگر را داشتند باید از سه زنجیره‌ی Input,Forward,Output می‌گذشتند در حالی که در iptables فقط از زنجیره‌ی Forward عبور می‌کنند.

سه شکل زیر بیانگر توضیحات داده شده در مورد جدول filter می‌باشد:

iptables-filter-1

NetFilter FORWARD Chain Processing

iptables-filter-2

NetFilter OUTPUT Chain Processing

iptables-filter-3

در اینجا برای مثال ما میخواهیم به پورت ۱۴۳ که مربوط به IMAP می باشد در جدول INPUT اجازه عبور دهیم و همچنین جلوی ترافیک پورت ۱۱۰ که مربوط به POP3 می باشد را بگیریم:

Pass IMAP:
iptables -A INPUT -j PASS -p tcp –destination-port 143 -i eth0
Block POP3:
iptables -A INPUT -j DROP -p tcp –destination-port 110 -i eth0

در جدول زیر برای درک بیشتر به شرح Option هایی که با دستور iptables به کار میروند پرداخته ایم.

به وسیله این آپشن میتوانیم به انتهای یک جدول یا زنجیره موجود رولی را اضافه کنیم -A –append
با این آپشن میتوانیم match بودن رول ها با جدول یا زنجیره را بررسی کنیم -C –check
با این آپشن میتوانیم یک یا چند رول را از جدول یا زنجیره مورد نظر پاک کنیم -D –delete
این آپشن تمام رول های موجود در iptables را پاک میکند -F –flush
با این آپشن میتوانیم رولی را با شماره ترتیب مورد نظر به جدول یا زنجیره اضافه کنیم -I –insert
با این آپشن میتوانیم تمام رول های موجود در جدول یا زنجیره مورد نطر را لیست کنیم -L –list
با این آپشن IP و Port ها به صورت شماره نمایش داده میشوند -n –numeric
با این آپشن میتوانیم جدول یا زنجیره مخصوص خودمان را بسازیم -N –new-chain <name>
با این آپشن جزئیات بیشتری هنگام اجرای دستور روی صفحه نمایش پدیدار میشود -v –verbose
با این آپشن میتوانیم جداول و زنجیره هایی که خودمان ساختیم را پاک کنیم -X –delete-chain <name>
این آپشن پروتکلی که رول بر روی آن اعمال میشود را مشخص میکند -p, — protocol
این آپشن آدرس منبع یا جایی که جریان ترافیک از آنجا به شمت ما می آید را مشخص میکند -s, — source
این آپشن مقصد یا جایی که جریان ترافیک به آنجا میرود را مشخص می کند -d, — destination
این آپشن هدف نهایی در زمان match شدن رول را مشخص میکند -j, — jump
آین آپشن در صورت match شدن مشخص میکند که ادامه پردازش در کدام جدول یا زنجیره ای که توسط کاربر تعریف شده ادامه پیدا کند -g, –goto chain
این آپشن اینترفیس ورودی جریان ترافیک را مشخص میکند -i, –in-interface
این آپشن اینترفیس خروجی جریان ترافیک را مشخص میکند -o, –out-interface
این آپشن به فایروال میگوید که رول بر روی بسته دوم به بعد که با این رول match شدن اعمال شود -f, –fragment
این آپشن شمارنده تعداد match شدن را بر روی رول فعال میکند -c, –set-counters

۲-NAT

جدول NAT برای تبدیل آدرس بسته‌هایی که می‌خواهند به شبکه وارد شوند یا از آن خارج شوند به کار می‌رود که شامل DNAT (Destination NAT)، SNAT (Source NAT) و Masquerading می‌شود. این جدول سه زنجیره‌ی از پیش تعیین شده دارد:

۱٫Prerouting       ۲٫Postrouting       ۳٫Output

۱- زنجیره‌ی Prerouting بر روی بسته‌هایی که می‌خواهند وارد شبکه بشوند و هنوز تعیین مسیر نشده‌اند، عمل می‌کند و ابتدا روی آنها عمل DNAT انجام می‌شود تا آدرس مقصدشان تغییر کند.

در اینجا مثالی برای چگونگی نوشتن یک رول و اضافه کردن آن به جدول NAT آورده شده است:

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j DNAT  –to-destination 10.0.4.2:80

در مثال بالا ما به iptables گفته ایم که اگر ترافیکی با پورت مقصد ۸۰ وارد اینترفیس eth0 شد آن را بوسیله Destination NAT به سمت ماشین داخلی به ip شماره ۱۰٫۰٫۴٫۲  و پورت ۸۰ آن بفرست.

۲- زنجیره‌ی Postrouting بر روی بسته‌هایی که می‌خواهند از شبکه خارج شوند و مسیرشان تعیین شده عمل می‌کند و ابتدا روی آنها عمل SNAT انجام می‌شود تا آدرس مبداشان تغییر کند.

در زیر مثالی از Source NAT آورده شده است که به iptables میگوید که ترافیک های خروجی از اینترفیس eth0 را به آدرس ۱٫۲٫۳٫۴ ترجمه کند و بفرستد..

iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to 1.2.3.4

۳- Masquerading که نسخه‌ی ساده‌ای از SNAT می‌باشد که در واقع آدرس اینترفیس خروجی فایروال را به عنوان آدرس مبدا بسته‌ها قرار می‌دهد.

در زیر مثالی آمده که در آن به iptables  میگوییم که بصورت داینامیک تمام ترافیک خروجی از اینترفیس ppp0 را به آدرس همان اینترفیس ترجمه کند

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

۳-Mangle

این جدول فایروال را قادر می‌سازد تا تعداد زیادی از فیلدهای موجود در سرآیند هر بسته را که شامل مواردی همچون TOS(Type Of Service)، Mark، TTL(Time To Live) است، تغییر بدهد.

این جدول شامل پنج زنجیره‌ی Prerouting، Input، Forward، Output و Postrouting  می‌باشد، در حالی که ipchains تنها شامل دو زنجیره‌ی Prerouting وOutput بود. IPtables کاربر را قادر می‌سازد تا علاوه بر این زنجیره‌های از پیش تعریف شده در آن، به طور دلخواه نیز زنجیره‌های دیگری را اضافه کند.

با توجه به توضیحات داده شده، روند گردش بسته‌ها در نت‌فیلتر و IPtables را به کمک یک دیاگرام در زیر به طور کامل شرح می‌دهیم.

iptables-mangle

در نت فیلتر سه نوع جریان را برای بسته‌ها در نظر می‌گیریم که عبارتند از :

۱-بسته‌هایی که از شبکه‌ای بیرونی می‌آیند و مقصدشان سیستم داخلی می‌باشد. این بسته‌ها باید به ترتیب از زنجیره‌های Prerouting  و Input عبور کنند و در نهایت وارد سیستم شوند.

۲-بسته‌هایی که از شبکه‌ای بیرونی می‌آیند و مقصدشان شبکه‌ای دیگر در آن طرف فایروال می‌باشد. این بسته‌ها باید به سمت شبکه مقصد هدایت شوند، بنابراین باید به ترتیب از زنجیره‌های Prerouting و Forward و Postrouting عبور کنند و در نهایت وارد شبکه خارجی شوند.

۳-بسته‌هایی که درون خود سیستم تولید می‌شوند و باید به بیرون از سیستم هدایت شوند. این بسته‌ها باید به ترتیب از زنجیره‌های Output و Postrouting عبور کرده و از سیستم خارج شوند.

همانطور که در شکل می‌بینیم، تمام بسته‌هایی که به فایروال می‌رسند تا وارد شوند باید ابتدا از زنجیره‌ی Prerouting عبور کنند. بسته‌ها در هنگام عبور از این قسمت با دو جدول Mangle وNAT برخورد می‌کنند. در جدول NAT عمل DNAT روی بسته‌ها انجام می‌شود تا آدرس مقصد واقعی آنها مشخص گردد. در جدول Mangle نیز در صورت نیاز فیلدهای سرآیند بسته‌ها قبل از رسیدن به مرحله مسیریابی تغییر می‌کند. در صورتی که زیرسیستم Conntrack نیز به نت‌فیلتر IPtables اضافه شده باشد، عمل Connection Tracking نیز قبل از برخورد بسته‌ها با دو جدول Mangle وPrerouting انجام می‌شود.

در واقع از mangle برای اضافه کردن flag های خاص TCP یا دستکاری در بسته IP استفاده مشود. برای مثال اگر بخواهیم ترافیک پورت ۸۰ و ۴۴۳ از اینترفیس خاصی که مد نظر ماست بیرون رود از mangle برای این کار استفاده می کنیم

در زیر مثالی برای استفاده از mangle  آورده شده است.

iptables -t mangle -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –set-mss 1452

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *