آزمایشگاه یادگیری فناوری اطلاعات دانشگاه صنعتی شریف (لایتک) برگزار میکند.
کارگاههای رایگان حوزه فناوری اطلاعات
مشاهده اطلاعات هر کارگاه و ثبتنام : https://goo.gl/UyEGi5
کارگاههای رایگان حوزه فناوری اطلاعات
مشاهده اطلاعات هر کارگاه و ثبتنام : https://goo.gl/UyEGi5
#kvm Features
ابزار های مورد نیاز برای نصب در ویندوز برای kvm معادل vmware tools در حقیقت (guest tools)
https://www.linux-kvm.org/page/WindowsGuestDrivers
https://github.com/virtio-win/kvm-guest-drivers-windows
#kvm #guest tools
https://www.linux-kvm.org/page/WindowsGuestDrivers
https://github.com/virtio-win/kvm-guest-drivers-windows
#kvm #guest tools
GitHub
GitHub - virtio-win/kvm-guest-drivers-windows: Windows paravirtualized drivers for QEMU\KVM
Windows paravirtualized drivers for QEMU\KVM. Contribute to virtio-win/kvm-guest-drivers-windows development by creating an account on GitHub.
قبلا در مورد #spice صحبت کردیم ، اگر خواهان استفاده از اون هم هستید درایورهای اون هم برای ویندوز موجود هست // این شگفتی متن باز هست یعنی سازگاری ۱۰۰ درصدی
در ادامه به مبحث فایروال در گنو/لینوکس خواهیم پرداخت
یا پکت فیلتر که به صورت pf هم نوشته میشود، یک فایروال حالتمند است که تحت اجازهنامه BSD منتشر میشود. پیاف را میتوان با iptables، ipfw، ipfilter مقایسه کرد. پیاف توسط پروژه اپنبیاسدی توسعه داده میشود اما به سکوهای دیگری مانند فریبیاسدی، نتبیاسدی و ... هم پورت شده است. pf توسط دانیل هارتمیر نوشته شد. پیاف اولین بار در OpenBSD 3.0 معرفی شد. در اصل پیاف به عنوان جایگزینی برای ipfilter نوشته شد و بعد از آماده شدن پیاف، ipfilter از درخت CVS اپنبیاسدی حذف شد. دلیل انجام این کار این بود که توسعهدهندگان اپنبیاسدی با اجازهنامه ipfilter مشکل داشتند.
سینتکس pf شباهت بسیاری به ipfilter دارد. البته تغییراتی در آن ایجاد شده تا خواندن آن واضح تر شود.
ویژگی ها و قابلیت ها
در حقیقتPF فایروالی کامل و بسیار قدرتمند و امن است و دارای ویژگی های بسیاری است از جمله آن میتوان به پشتیبانی از ALTQ (صف بندی جایگزین) اشاره کرد که فراهم کننده کیفیت خدمات (QOS) می باشد.
این فایروال دارای ویژگی های کاربردی مهم دیگری از جمله PFSYNC (پروتکلی که وضعیت های فایروال را بین کامپیوترهایی که PF را اجرا میکنند همگام سازی میکند) و CARP (پروتکل آدرس اضافه مشترک) و NAT (برگردان نشانی شبکه) و SMP (چند پردازشی متقارن) است.
یکی از قابلیتهای مخصوص این فایروال authpf می باشد که برای احراز هویتها در نشستها بکار میرود و دیگری قابلیت ftp-proxy می باشد که برای ساده سازی ساخت فایروال در پروتکل دشوار FTP (پروتکل انتقال فایل) بکار میرود. قابلیت نوآورانه دیگر این فایروال سیستم logging (ثبت وقایع) ویژه و قدرتمند آن به نام pflog می باشد به نحوی که تنها راه برای بالا بردن داده ها از حالت سطح هسته به برنامه های سطح کاربر می باشد.
قابلیت ویژه دیگر این فایروال Stateful Tracking Options یا اختصاراً STO (گزینه های ردیابی باوضعیت:نوعی از قوانین فیلترینگ PF که میتوانند از طریق گزینه های گوناگون ترافیک حالت ورودی ها را بسازند تا درنهایت رفتار نتیجه حالت ورودی ها را تحت کنترل داشته باشند که بدین صورت میتواند سبب تامین امنیت شبکه شود مثلاً اگر فردی بخواهد بیش از ۱۵ صفحه را در کمتر از ۵ ثانیه بازکند از طریق این قوانین PF جلوی وی را میگیرد) است.
پورت ها
فایروال PF توسط تیم توسعه دهندگان و نویسندگان خود سیستم عامل openbsd نوشته شده است. این فایروال را میتوان بهترین آن برای سیستم عامل اوپنبیاسدی در نظر گرفت.همچنین این فایروال به عنوان دیوارآتشین اصلی در این سیستم عامل نصب شده و استفاده میشود.
این فایروال در سیستم عامل رایج freebsd (فریبیاسدی) از ورژن ۵.۳ و در سیستم عامل NetBsd (نتبیاسدی) از ورژن ۳.۰ پورت و بصورت پیش فرض نصب شده است ولی دیوار آتشین اصلی این دو محسوب نمیگردد. قابل ذکر است برای سیستم عامل freebsd فایروال IPFW (آیپیفایروال) و برای سیستم عامل NetBSD فایروال IPF (آیپیفیلتر) دیوار آتشین اصلی محسوب میگردد.
ضمناً فایروال PF برای سیستم عامل دراگونفلای بیاسدی از ورژن ۱.۲ و سیستم عامل های اواس ده اخیر شامل MAC OS X 10.7 (مشهور به LION) و OS X 10.8 (مشهور به MOUNTAIN LION) و OS X 10.9 (اواس ده ماوریکس) و OS X 10.10 (او اس ده یوسمیت) پورت شده است.
نمونه فایل پیکربندی
قوانینی که پیاف بر اساس آنها بستهها را تصفیه میکند، در فایلی با پسوند conf. نوشته شده و پیاف این فوانین را از این فایل میخواند. این فایل به صورت پیشفرض در مسیر /etc/pf.conf قرار دارد و از چند بخش تشکیل میشود.یک نمونه از این فایل پیکربندی را در زیر میبینید. توضیحات با کاراکتر # مشخص میشوند.
#pf #bsd @unixmens
سینتکس pf شباهت بسیاری به ipfilter دارد. البته تغییراتی در آن ایجاد شده تا خواندن آن واضح تر شود.
ویژگی ها و قابلیت ها
در حقیقتPF فایروالی کامل و بسیار قدرتمند و امن است و دارای ویژگی های بسیاری است از جمله آن میتوان به پشتیبانی از ALTQ (صف بندی جایگزین) اشاره کرد که فراهم کننده کیفیت خدمات (QOS) می باشد.
این فایروال دارای ویژگی های کاربردی مهم دیگری از جمله PFSYNC (پروتکلی که وضعیت های فایروال را بین کامپیوترهایی که PF را اجرا میکنند همگام سازی میکند) و CARP (پروتکل آدرس اضافه مشترک) و NAT (برگردان نشانی شبکه) و SMP (چند پردازشی متقارن) است.
یکی از قابلیتهای مخصوص این فایروال authpf می باشد که برای احراز هویتها در نشستها بکار میرود و دیگری قابلیت ftp-proxy می باشد که برای ساده سازی ساخت فایروال در پروتکل دشوار FTP (پروتکل انتقال فایل) بکار میرود. قابلیت نوآورانه دیگر این فایروال سیستم logging (ثبت وقایع) ویژه و قدرتمند آن به نام pflog می باشد به نحوی که تنها راه برای بالا بردن داده ها از حالت سطح هسته به برنامه های سطح کاربر می باشد.
قابلیت ویژه دیگر این فایروال Stateful Tracking Options یا اختصاراً STO (گزینه های ردیابی باوضعیت:نوعی از قوانین فیلترینگ PF که میتوانند از طریق گزینه های گوناگون ترافیک حالت ورودی ها را بسازند تا درنهایت رفتار نتیجه حالت ورودی ها را تحت کنترل داشته باشند که بدین صورت میتواند سبب تامین امنیت شبکه شود مثلاً اگر فردی بخواهد بیش از ۱۵ صفحه را در کمتر از ۵ ثانیه بازکند از طریق این قوانین PF جلوی وی را میگیرد) است.
پورت ها
فایروال PF توسط تیم توسعه دهندگان و نویسندگان خود سیستم عامل openbsd نوشته شده است. این فایروال را میتوان بهترین آن برای سیستم عامل اوپنبیاسدی در نظر گرفت.همچنین این فایروال به عنوان دیوارآتشین اصلی در این سیستم عامل نصب شده و استفاده میشود.
این فایروال در سیستم عامل رایج freebsd (فریبیاسدی) از ورژن ۵.۳ و در سیستم عامل NetBsd (نتبیاسدی) از ورژن ۳.۰ پورت و بصورت پیش فرض نصب شده است ولی دیوار آتشین اصلی این دو محسوب نمیگردد. قابل ذکر است برای سیستم عامل freebsd فایروال IPFW (آیپیفایروال) و برای سیستم عامل NetBSD فایروال IPF (آیپیفیلتر) دیوار آتشین اصلی محسوب میگردد.
ضمناً فایروال PF برای سیستم عامل دراگونفلای بیاسدی از ورژن ۱.۲ و سیستم عامل های اواس ده اخیر شامل MAC OS X 10.7 (مشهور به LION) و OS X 10.8 (مشهور به MOUNTAIN LION) و OS X 10.9 (اواس ده ماوریکس) و OS X 10.10 (او اس ده یوسمیت) پورت شده است.
نمونه فایل پیکربندی
قوانینی که پیاف بر اساس آنها بستهها را تصفیه میکند، در فایلی با پسوند conf. نوشته شده و پیاف این فوانین را از این فایل میخواند. این فایل به صورت پیشفرض در مسیر /etc/pf.conf قرار دارد و از چند بخش تشکیل میشود.یک نمونه از این فایل پیکربندی را در زیر میبینید. توضیحات با کاراکتر # مشخص میشوند.
#pf #bsd @unixmens
## Macros
# The internal interface (connected to the local network).
int_if="xl0"
## Options
# Set the default policy to return RSTs or ICMPs for blocked traffic.
set block-policy return
# Ignore the loopback interface entirely.
set skip on lo0
## Translation rules
# NAT traffic on the interface in the default egress interface group (to
# which the interface out of which the default route goes is assigned) from the
# local network.
match out on egress from $int_if:network to any nat-to (egress)
## Filtering rules
# Default deny rule, with all blocked packets logged.
block log all
# Pass all traffic to and from the local network, using quick so that later
# rules are not evaluated if a packet matches this. Some rulesets would restrict
# local traffic much further.
pass quick on $int_if all
# Permit all traffic going out, keep state so that replies are automatically passed;
# many rulesets would have many rules here, restricting traffic in and out on the
# external (egress) interface. (keep state is not needed in the newest version of pf)
pass out keep state
# The internal interface (connected to the local network).
int_if="xl0"
## Options
# Set the default policy to return RSTs or ICMPs for blocked traffic.
set block-policy return
# Ignore the loopback interface entirely.
set skip on lo0
## Translation rules
# NAT traffic on the interface in the default egress interface group (to
# which the interface out of which the default route goes is assigned) from the
# local network.
match out on egress from $int_if:network to any nat-to (egress)
## Filtering rules
# Default deny rule, with all blocked packets logged.
block log all
# Pass all traffic to and from the local network, using quick so that later
# rules are not evaluated if a packet matches this. Some rulesets would restrict
# local traffic much further.
pass quick on $int_if all
# Permit all traffic going out, keep state so that replies are automatically passed;
# many rulesets would have many rules here, restricting traffic in and out on the
# external (egress) interface. (keep state is not needed in the newest version of pf)
pass out keep state
#IPFILTER, also known as IPF, is a cross-platform, open source firewall which has been ported to several operating systems, including FreeBSD, NetBSD, OpenBSD, and Solaris™.
#Netfilter
چارچوبی حاوی مجموعهای از قلابها است که در هستهی لینوکس قرار دارد و به منظور مسدودکردن و دستکاری بستهها به کار میرود. شناختهشدهترین ابزاری که از Netfilter استفاده میکند، دیواره آتش است که بستهها را فیلتر میکند. ابزارهای دیگری نیز مانند #NAT، پیگیری حالتدار و صفبندی بسته از آن استفاده میکنند. همچنین نام پروژهای که مجموعهای از ابزارهای دیواره آتش را برای لینوکس فراهم کرد، Netfilter بوده است. اکثر اجزایی که در این پروژه تهیه شدند ماژولهای قابل بارگذاری در هسته هستند اما مجموعهای از ابزارهای فضای کاربر و کتابخانههایی نیز تهیه شدند.
چارچوبی حاوی مجموعهای از قلابها است که در هستهی لینوکس قرار دارد و به منظور مسدودکردن و دستکاری بستهها به کار میرود. شناختهشدهترین ابزاری که از Netfilter استفاده میکند، دیواره آتش است که بستهها را فیلتر میکند. ابزارهای دیگری نیز مانند #NAT، پیگیری حالتدار و صفبندی بسته از آن استفاده میکنند. همچنین نام پروژهای که مجموعهای از ابزارهای دیواره آتش را برای لینوکس فراهم کرد، Netfilter بوده است. اکثر اجزایی که در این پروژه تهیه شدند ماژولهای قابل بارگذاری در هسته هستند اما مجموعهای از ابزارهای فضای کاربر و کتابخانههایی نیز تهیه شدند.
#IPFilter
مسدودکردن یا عبوردادن انتخابی بستهها در حین عبور از یک رابط کاربری را انجام میدهد. معیار محدودکردن بستهها بر اساس سرآیند های لایهی 3 (IPv4، IPv6) و لایهی 4 (TCP، UDP، ICMP4) است. معیاری که بیش از همه کاربرد دارد،آدرس مبدا و مقصد، پورت و پروتکل مبدا و مقصد است. IPFilter یکی از انواع دیوارههای آتش است که ابتدا برای #OpenBSD توسعه یافت، اما اکنون در سیستمهای عامل دیگر نیز وجود دارد. در ادامه به ذکر برخی از مزایای #IPFilter میپردازیم.
کنترل: هنگامیکه سیستم عامل، لینوکس است و شبکههای داخلی به یک شبکهی خارجی مانند اینترنت متصل است، میتوان به انواع خاصی از ترافیک اجازهی عبور داد و انواع خاصی از آن را مسدود نمود. برای مثال، سرآیند بستهها حاوی آدرس مقصد است، بنابراین میتوان از رفتن بستهها به بخش خاصی از شبکهی خارجی جلوگیری نمود. به عنوان مثالی دیگر در صفحههای وب، تبلیغات و آگهیهایی از doubleclick.net وجود دارند و مرورگر زمان زیادی را صرف بارگذاری آنها میکند، میتوان به IPFilter گفت هیچ بستهای از doubleclick.net دریافت نکند.
امنیت: لینوکس تنها رابط بین دنیای آشفته اینترنت و شبکهی منظم داخلی است. بنابراین باید بر روی ترافیک وارده به شبکهی داخلی محدودیتهایی اعمال کرد. ممکن است مهم نباشد که چه چیزی از شبکه خارج شود اما در مورد بستههای وارده باید نگران بود. به عنوان مثال ممکن است نخواهید که کسی از طریق Telnet با سرویسدهنده ارتباط برقرار کند. ممکن است بخواهید تنها از اینترنت استفاده کنید و یک سرویسدهنده نباشید. بنابراین جلوی هرگونه اتصالی را میگیرد. تمامی این کارها با داشتن IPFilter امکانپذیر است.
مراقبت : گاهی اوقات سیستمی در شبکهی محلی که به طور نامناسبی پیکربندی شده است، تعداد زیادی بسته را به خارج از شبکه ارسال میکند. در اینجا مناسب است IPFilter را طوری تنظیم کرد که وقوع هر رویداد غیرطبیعی را گزارش دهد.
مسدودکردن یا عبوردادن انتخابی بستهها در حین عبور از یک رابط کاربری را انجام میدهد. معیار محدودکردن بستهها بر اساس سرآیند های لایهی 3 (IPv4، IPv6) و لایهی 4 (TCP، UDP، ICMP4) است. معیاری که بیش از همه کاربرد دارد،آدرس مبدا و مقصد، پورت و پروتکل مبدا و مقصد است. IPFilter یکی از انواع دیوارههای آتش است که ابتدا برای #OpenBSD توسعه یافت، اما اکنون در سیستمهای عامل دیگر نیز وجود دارد. در ادامه به ذکر برخی از مزایای #IPFilter میپردازیم.
کنترل: هنگامیکه سیستم عامل، لینوکس است و شبکههای داخلی به یک شبکهی خارجی مانند اینترنت متصل است، میتوان به انواع خاصی از ترافیک اجازهی عبور داد و انواع خاصی از آن را مسدود نمود. برای مثال، سرآیند بستهها حاوی آدرس مقصد است، بنابراین میتوان از رفتن بستهها به بخش خاصی از شبکهی خارجی جلوگیری نمود. به عنوان مثالی دیگر در صفحههای وب، تبلیغات و آگهیهایی از doubleclick.net وجود دارند و مرورگر زمان زیادی را صرف بارگذاری آنها میکند، میتوان به IPFilter گفت هیچ بستهای از doubleclick.net دریافت نکند.
امنیت: لینوکس تنها رابط بین دنیای آشفته اینترنت و شبکهی منظم داخلی است. بنابراین باید بر روی ترافیک وارده به شبکهی داخلی محدودیتهایی اعمال کرد. ممکن است مهم نباشد که چه چیزی از شبکه خارج شود اما در مورد بستههای وارده باید نگران بود. به عنوان مثال ممکن است نخواهید که کسی از طریق Telnet با سرویسدهنده ارتباط برقرار کند. ممکن است بخواهید تنها از اینترنت استفاده کنید و یک سرویسدهنده نباشید. بنابراین جلوی هرگونه اتصالی را میگیرد. تمامی این کارها با داشتن IPFilter امکانپذیر است.
مراقبت : گاهی اوقات سیستمی در شبکهی محلی که به طور نامناسبی پیکربندی شده است، تعداد زیادی بسته را به خارج از شبکه ارسال میکند. در اینجا مناسب است IPFilter را طوری تنظیم کرد که وقوع هر رویداد غیرطبیعی را گزارش دهد.
ترجمهی آدرس شبکه (#NAT)
هر کامپیوتری در ارتباط با دیگرکامپیوترها و سرویسدهندگان وب نیاز به یک آدرس#IP دارد. با گسترش اینترنت و رشد استفاده خانگی و شبکههای کاری به نظر میرسد تعداد آدرسهای IP موجود کافی نباشد. یک راه حل ساده، طراحی مجدد قالب آدرس IP است که امکان داشتن تعداد آدرسهای بیشتری را میدهد، اما چندین سال طول میکشد تا این راه حل پیادهسازی شود و نیازمند اصلاح کل زیرساخت اینترنت است. در اینجا NAT# مشکل را حل میکند. NAT به یک دستگاه منفرد مثلا یک مسیریاب این امکان را میدهد که به عنوان رابط بین اینترنت و یک شبکهی محلی مشخص عمل کند. در این صورت یک IP منفرد میتواند برای یک مجموعهی کامپیوتر استفاده شود. کمبود تعداد آدرسهای IP تنها دلیل استفاده ازNAT نیست. فواید دیگری چون برقراری امنیت و مدیریت بهتر نیز از مزایای استفاده از NAT است. مفهوم NAT بسيار ساده و به اين معنا است كه يك دستگاه (مثل كامپيوتر يا مسيرياب) به عنوان دروازهی ورود به اينترنت عمل ميكند و با اين كار آدرسهاي ايستگاههاي كاري را به آدرس دستگاهي كه NAT روي آن فعال است ترجمه ميكند، به بيان ديگرNAT روي دستگاهي كه به اينترنت متصل است فعال میشود و ايستگاههاي كاري و به طور كلي شبكه را از ديد اينترنت پنهان ميکند. از سوي ديگر اينترنت شبكه را بهصورت يك دستگاه ساده ميبيند كه به اينترنت متصل ميباشد. NAT روي شبكه تغيير ايجاد نميكند و نيازي به تنظيمات دوباره روي ايستگاههاي كاري نيست. فقط ايستگاههاي كاري ميبايست آدرس دروازهی خروجي از شبكه را كه همان آدرس دستگاهي است كه NAT روي آن فعال شده است را بدانند.
هر کامپیوتری در ارتباط با دیگرکامپیوترها و سرویسدهندگان وب نیاز به یک آدرس#IP دارد. با گسترش اینترنت و رشد استفاده خانگی و شبکههای کاری به نظر میرسد تعداد آدرسهای IP موجود کافی نباشد. یک راه حل ساده، طراحی مجدد قالب آدرس IP است که امکان داشتن تعداد آدرسهای بیشتری را میدهد، اما چندین سال طول میکشد تا این راه حل پیادهسازی شود و نیازمند اصلاح کل زیرساخت اینترنت است. در اینجا NAT# مشکل را حل میکند. NAT به یک دستگاه منفرد مثلا یک مسیریاب این امکان را میدهد که به عنوان رابط بین اینترنت و یک شبکهی محلی مشخص عمل کند. در این صورت یک IP منفرد میتواند برای یک مجموعهی کامپیوتر استفاده شود. کمبود تعداد آدرسهای IP تنها دلیل استفاده ازNAT نیست. فواید دیگری چون برقراری امنیت و مدیریت بهتر نیز از مزایای استفاده از NAT است. مفهوم NAT بسيار ساده و به اين معنا است كه يك دستگاه (مثل كامپيوتر يا مسيرياب) به عنوان دروازهی ورود به اينترنت عمل ميكند و با اين كار آدرسهاي ايستگاههاي كاري را به آدرس دستگاهي كه NAT روي آن فعال است ترجمه ميكند، به بيان ديگرNAT روي دستگاهي كه به اينترنت متصل است فعال میشود و ايستگاههاي كاري و به طور كلي شبكه را از ديد اينترنت پنهان ميکند. از سوي ديگر اينترنت شبكه را بهصورت يك دستگاه ساده ميبيند كه به اينترنت متصل ميباشد. NAT روي شبكه تغيير ايجاد نميكند و نيازي به تنظيمات دوباره روي ايستگاههاي كاري نيست. فقط ايستگاههاي كاري ميبايست آدرس دروازهی خروجي از شبكه را كه همان آدرس دستگاهي است كه NAT روي آن فعال شده است را بدانند.
#IPTables
هستهی لینوکس از سری1.1 داری #IPFilter# بوده است. برای تنظیم قوانین فیلترکردن بستهها از ابزاری به نام ipfwadm استفاده میشد. در لینوکس 2.2 ابزاری به نام IPChains معرفی شد و سرانجام برای لینوکس 2.4 ابزار IPTables معرفی شد. در حقیقت IPTables ابزاری است که با هسته سخن میگوید و به آن میگوید که چه بستههایی را فیلتر کند. علاوه بر فیلتر کردن بستهها، برای ایجاد و دستکاری قوانین ماژولهای NAT نیز استفاده میشود، زیرا NAT نیز از طریق مجموعه قوانین IPFilter پیکربندی میشود. اغلب نام IPTables برای کل زیرساخت دیواره آتش که شامل Netfilter، پیگیری اتصال و NAT است، استفاده میشود. ویژگیهای اصلی IPTables عبارتند از:
فهرستکردن کلیهی مجموعهی قوانین فیلتر بسته
افزودن/ کم کردن/ اصلاح قوانین در مجموعهی قوانین فیلتر بسته
فهرست/ صفر کردن شمارندههای هر قانون در مجموعهی قوانین فیلتر بسته
به دلیل این که IPTables به امتیازات خاصی برای اجرا نیاز دارد، باید حتما توسط کاربر root اجرا شود. در اکثر سیستمهای لینوکس IPTables در شاخهی usr/sbin/iptables نصب میشود و با اجرای دستور man iptables میتوان به مستندات مربوط به آن دسترسی پیدا کرد. پروژهی netfilter/IPTables در سال 1998 میلادی توسط Rusty Russell که توسعهدهندهی IPChains نیز بود شروع شد. با پیشرفت پروژه، تیم Netfilter شکل گرفت. نرمافزار توسعه داده شده توسط آنها تحت لیسانس GNU/GPL است. چارچوب Xtables به مدیر سیستم امکان تعریف جدولهایی را میدهد که شامل زنجیرههایی از قوانین هستند. هر قانون مشخص میکند که با بسته چگونه برخورد شود. هر جدول با نوع خاصی از پردازش بسته، سروکار دارد. بستهها با پیمایش زنجیرهها پردازش میشوند. یک قانون در یک زنجیره میتواند یک بسته را به زنجیره دیگری بفرستد و این روند تا هر جایی میتواند ادامه داشته باشد. هر بسته ورودی یا خروجی از شبکه حداقل یک زنجیره را میپیماید. منبع بسته مشخص میکند که در ابتدا چه زنجیرهای را بپیماید. جداول توکار سیاستهایی دارند. برای مثال بستهای که به انتهای زنجیره برسد، حذف میشود. مدیر سیستم میتواند به تعداد دلخواه زنجیره ایجاد کند. برای این زنجیرهها سیاست تعریف نشده است و اگر بستهای به انتهای اینگونه زنجیرهها برسد، دوباره به زنجیرهای که آن را فراخوانی کرده است، باز میگردد. هر قانون در یک زنجیره با انواع بستههای خاصی انطباق مییابد. همچنین قانون ممکن است یک هدف داشته باشد. وقتی بستهای یک زنجیره را میپیماید، هر قانون، آن را بررسی میکند. اگر قانون با بسته انطباق پیدا نکند، بسته به قانون بعدی فرستاده میشود و اگر قانون با بسته انطباق یابد، طبق آنچه در هدف مشخص شده با بسته برخورد میشود. بسته به پیمایش پیوسته در زنجیره ادامه میدهد تا یک قانون با آن بسته انطباق یابد که در این صورت در مورد سرنوشت نهایی بسته تصمیم گرفته میشود (مثلا بسته قبول یا حذف میشود) یا یک قانون، هدف بازگشت را فراخوانی کند و بسته به زنجیرهی فراخواننده بازگردد یا بسته به انتهای زنجیره برسد.
هستهی لینوکس از سری1.1 داری #IPFilter# بوده است. برای تنظیم قوانین فیلترکردن بستهها از ابزاری به نام ipfwadm استفاده میشد. در لینوکس 2.2 ابزاری به نام IPChains معرفی شد و سرانجام برای لینوکس 2.4 ابزار IPTables معرفی شد. در حقیقت IPTables ابزاری است که با هسته سخن میگوید و به آن میگوید که چه بستههایی را فیلتر کند. علاوه بر فیلتر کردن بستهها، برای ایجاد و دستکاری قوانین ماژولهای NAT نیز استفاده میشود، زیرا NAT نیز از طریق مجموعه قوانین IPFilter پیکربندی میشود. اغلب نام IPTables برای کل زیرساخت دیواره آتش که شامل Netfilter، پیگیری اتصال و NAT است، استفاده میشود. ویژگیهای اصلی IPTables عبارتند از:
فهرستکردن کلیهی مجموعهی قوانین فیلتر بسته
افزودن/ کم کردن/ اصلاح قوانین در مجموعهی قوانین فیلتر بسته
فهرست/ صفر کردن شمارندههای هر قانون در مجموعهی قوانین فیلتر بسته
به دلیل این که IPTables به امتیازات خاصی برای اجرا نیاز دارد، باید حتما توسط کاربر root اجرا شود. در اکثر سیستمهای لینوکس IPTables در شاخهی usr/sbin/iptables نصب میشود و با اجرای دستور man iptables میتوان به مستندات مربوط به آن دسترسی پیدا کرد. پروژهی netfilter/IPTables در سال 1998 میلادی توسط Rusty Russell که توسعهدهندهی IPChains نیز بود شروع شد. با پیشرفت پروژه، تیم Netfilter شکل گرفت. نرمافزار توسعه داده شده توسط آنها تحت لیسانس GNU/GPL است. چارچوب Xtables به مدیر سیستم امکان تعریف جدولهایی را میدهد که شامل زنجیرههایی از قوانین هستند. هر قانون مشخص میکند که با بسته چگونه برخورد شود. هر جدول با نوع خاصی از پردازش بسته، سروکار دارد. بستهها با پیمایش زنجیرهها پردازش میشوند. یک قانون در یک زنجیره میتواند یک بسته را به زنجیره دیگری بفرستد و این روند تا هر جایی میتواند ادامه داشته باشد. هر بسته ورودی یا خروجی از شبکه حداقل یک زنجیره را میپیماید. منبع بسته مشخص میکند که در ابتدا چه زنجیرهای را بپیماید. جداول توکار سیاستهایی دارند. برای مثال بستهای که به انتهای زنجیره برسد، حذف میشود. مدیر سیستم میتواند به تعداد دلخواه زنجیره ایجاد کند. برای این زنجیرهها سیاست تعریف نشده است و اگر بستهای به انتهای اینگونه زنجیرهها برسد، دوباره به زنجیرهای که آن را فراخوانی کرده است، باز میگردد. هر قانون در یک زنجیره با انواع بستههای خاصی انطباق مییابد. همچنین قانون ممکن است یک هدف داشته باشد. وقتی بستهای یک زنجیره را میپیماید، هر قانون، آن را بررسی میکند. اگر قانون با بسته انطباق پیدا نکند، بسته به قانون بعدی فرستاده میشود و اگر قانون با بسته انطباق یابد، طبق آنچه در هدف مشخص شده با بسته برخورد میشود. بسته به پیمایش پیوسته در زنجیره ادامه میدهد تا یک قانون با آن بسته انطباق یابد که در این صورت در مورد سرنوشت نهایی بسته تصمیم گرفته میشود (مثلا بسته قبول یا حذف میشود) یا یک قانون، هدف بازگشت را فراخوانی کند و بسته به زنجیرهی فراخواننده بازگردد یا بسته به انتهای زنجیره برسد.