PF (Güvenlik Duvarı)

**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 () 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 () 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.

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

* 

* 

## Dış bağlantılar

* The OpenBSD PF guide 
* The OpenBSD 3.6 release song with humorous background information on PF's creation
* FreeBSD Handbook - Firewalls 
* PF section on Daniel Hartmeier's site
* PF tutorial by Peter N. M. Hansteen 
* OpenBSD/pf Troubleshooting for the less gifted 

## Kaynakça