PF (فایروال)

PF یا پکت فیلتر که به صورت 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 قرار دارد و از چند بخش تشکیل می‌شود.یک نمونه از این فایل پیکربندی را در زیر می‌بینید. توضیحات با کاراکتر # مشخص می‌شوند.
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
آی‌پی‌فیلتر
آی‌پی‌فایروال
آی‌پی‌تیبلز