**PF** (**Packet Filter**, aynı zamanda **pf**), BSD lisanslı bir stateful paket filtresi olup, güvenlik duvarı için merkezi bir yazılım parçasıdır. Netfilter (iptables), ipfw ve ipfilter ile karşılaştırılabilir.

PF, OpenBSD için geliştirilmiş, ancak birçok diğer işletim sistemine aktarılmıştır.

Tarihçe
-------

PF, ilk olarak, kural sözdiziminin çoğunu türettiği Darren Reed'in IPFilterinin yerine geçmek üzere tasarlanmıştı. IPFilter, OpenBSD geliştiricilerinin lisansıyla ilgili kaygıları nedeniyle 30 Mayıs 2001'de OpenBSD'nin CVS ağacından kaldırılmıştır.

PF'in ilk versiyonu Daniel Hartmeier (6 Ağustos 2017 tarihinde Wayback Machine sitesinde arşivlendi.) tarafından yazılmıştır. 1 Aralık 2001'de yayımlanan OpenBSD 3.0'da çıktı.

Daha sonra Henning Brauer tarafından yazılan kod çoğunlukla Henning Brauer (10 Ağustos 2020 tarihinde Wayback Machine sitesinde arşivlendi.) ve Ryan McBride tarafından kapsamlı bir şekilde yeniden tasarlandı. Henning Brauer şu anda PF'nin ana geliştiricisidir.

Özellikler
----------

Filtreleme sözdizimi, IPFilter'e benzer ve bazı değişikliklerle daha anlaşılır hale getirilir. Ağ Adresi Çevirisi (Network Address Translation, NAT) ve Hizmet Kalitesi (Quality of Service, QoS), ALTQ kuyruklama yazılımını içe aktararak ve PF yapılandırmasına bağlayarak PF, QoS'ye entegre edilmiştir. Yük devretme ve yedekleme için pfsync ve CARP, oturum kimlik doğrulaması için authpf ve zor FTP protokolünün güvenlik duvarını kapatmayı kolaylaştırmak için ftp-proxy gibi özellikler de PF'yi genişletmiştir. Aynı zamanda PF, SMP (Symmetric multiprocessing, Simetrik çoklu işlem) ve STO (Stateful Tracking Options, Durum İzleme Seçenekleri)ni destekler.

Birçok yenilikçi özellikten biri de PF'nin günlüğüdür. PF'nin günlüğü, pf.conf içindeki kural başına yapılandırılabilir ve günlükler, kullanıcı düzeyindeki programlar için çekirdek düzeyinde moddan verileri kaldırmanın tek yolu olan *pflog* adlı bir sözde ağ arabirimi tarafından PF'den sağlanmaktadır. Günlükler, OpenBSD'de özellikle amaç için genişletilmiş olan tcpdump gibi standart araçlar kullanılarak veya *pflogd* arka plan programını kullanarak tcpdump/pcap ikili biçiminde diske kaydedilebilir. Botnet Koruması olarak da kullanıldığı teyit edilmiştir.

Kullanılan dağıtımlar
---------------------

Kendi ev platformu olan OpenBSD üzerinde çalışan PF, diğer birçok diğer işletim sistemine taşınmıştır.

Ancak bununla birlikte, yeteneklerde büyük farklılıklar olduğuna dikkat etmek gerekmektedir. OpenBSD'nin daima en son sürümünü en çok özelliklere sahiptir.

PF şu anda şu işletim sistemlerinde kullanılmaktadır:

* FreeBSD Sürüm 5.3'ten itibaren
* Apple Mac OS X Lion (OS X 10.7), Mountain Lion (OS X 10.8), Mavericks (OS X 10.9) Yosemite (OS X 10.10), El Capitan (OS X 10.11), Sierra (macOS Sierra 10.12).
* Apple iOS, tüm iPhone'larda ve iPad'lerde
* NetBSD Sürüm 3.0'den itibaren
* DragonFly BSD Sürüm 1.2'den itibaren
* Debian GNU/kFreeBSD
* Oracle Solaris
* QNX ve böylece birçok BlackBerry akıllı telefon modelinde
* pfSense ücretsiz açık kaynak FreeBSD tabanlı güvenlik duvarı/yönlendirici
* Microsoft Windows için bir güvenlik duvarı çözümü ve güvenlik ürünü olan Core force, PF'den türetilmiştir.

Açıklamalı örnek pf.conf dosyası
--------------------------------

```
## 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

```

Kitapça
-------

* Hansteen, Peter N.M. (Ekim 2014). *The Book of PF: A No-Nonsense Guide to the OpenBSD Firewall*. 3. No Starch Press. s. 248. ISBN 978-1-59327-589-1. [*ölü/kırık bağlantı*]

* Jeremy C. Reed, (Ed.) (Ağustos 2006). *The OpenBSD PF Packet Filter Book: PF for NetBSD, FreeBSD, DragonFly, and OpenBSD*. Reed Media Services. ISBN 978-0-9790342-0-6. 4 Mayıs 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Haziran 2017.

* Artymiak, Jack (2003). *Building Firewalls with OpenBSD and pf*. Selbstverl. ISBN 9788391665114. 25 Haziran 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Haziran 2017.

Dış bağlantılar
---------------

VikikitapVikikitap
Vikikitapta bu konu hakkında daha fazla bilgi var:
 ***Guide to Unix***

* The OpenBSD PF guide 4 Haziran 2017 tarihinde Wayback Machine sitesinde arşivlendi.
* The OpenBSD 3.6 release song28 Temmuz 2013 tarihinde Wayback Machine sitesinde arşivlendi. with humorous background information on PF's creation
* FreeBSD Handbook - Firewalls 20 Temmuz 2017 tarihinde Wayback Machine sitesinde arşivlendi.
* PF section on Daniel Hartmeier's site
* PF tutorial by Peter N. M. Hansteen 14 Kasım 2017 tarihinde Wayback Machine sitesinde arşivlendi.
* OpenBSD/pf Troubleshooting for the less gifted 14 Kasım 2017 tarihinde Wayback Machine sitesinde arşivlendi.

Kaynakça
--------

1. ↑  "CVS: cvs.openbsd.org: src; Remove ipf". 30 Mayıs 2001. 12 Temmuz 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2014.
2. ↑  "OpenBSD 3.0". 1 Aralık 2001. 19 Mart 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2014.
3. ↑  "IPFW(8) Manual Page". Apple, Inc. 27 Eylül 2012. 18 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2014. This utility is DEPRECATED. Please use pfctl(8) instead.