Buyukweb
OpenBSD Nedir? Güvenlik Odaklı Unix İşletim Sistemi Rehberi

OpenBSD Nedir? Güvenlik Odaklı Unix İşletim Sistemi Rehberi

OpenBSD nedir, nasıl çalışır? Güvenlik odaklı Unix-like işletim sistemi: pf firewall, pledge/unveil sandbox, signify imza doğrulama, W^X ve ASLR mitigations ile kapsamlı rehber.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü13 dakika okuma

OpenBSD Nedir? Tarihçe ve Theo de Raadt'ın Mirası

OpenBSD, 1995 yılında Theo de Raadt tarafından kurulan, güvenlik-öncelikli açık kaynaklı bir Unix-like işletim sistemidir. 4.4BSD-Lite kod tabanından forklanan NetBSD'nin ardından Theo de Raadt, proaktif güvenlik denetimi ve "varsayılan olarak güvenli" felsefesini merkezine alan yeni bir projeye öncülük etti. Bugün OpenBSD, Kanada'daki gönüllü bir ekip tarafından geliştirilmeye devam etmektedir.

OpenBSD'nin en bilinen sloganı "Sadece iki uzak güvenlik açığı, varsayılan kurulumda, uzun süredir" (Only two remote holes in the default install, in a heck of a long time) cümlesidir. Bu slogan pazarlama değil, yıllar içinde titizlikle sürdürülen kod denetim kültürünün somut bir çıktısıdır.

4.4BSD-Lite mirası OpenBSD'ye temiz bir başlangıç noktası verdi. BSD lisansının permissif yapısı, üretilen her yazılımın — OpenSSH, LibreSSL, OpenSMTPD, pf — diğer sistemlere özgürce entegre edilmesini sağladı.


Güvenlik Felsefesi: "Secure by Default" ve Proaktif Denetim

OpenBSD güvenliğe reaktif değil, proaktif yaklaşır. Bir açık keşfedildiğinde yama üretmek yetmez; kod tabanının benzer hataları barındırmadığından emin olmak için sistematik inceleme yapılır.

Temel ilkeler:

  • Varsayılan olarak güvenli (Secure by default): Tüm ağ servisleri kurulumda kapalıdır. İhtiyaç duyulan her servis bilinçli olarak etkinleştirilir.
  • En az ayrıcalık: Sistem servisleri, görevlerini yerine getirmek için gereken minimum yetkiyle çalışır.
  • Kriptografi her yerde: Sistem içi iletişim ve araçlar varsayılan olarak şifrelidir.
  • Açık kaynak denetim kültürü: Her commit, birden fazla geliştirici tarafından incelenir. Kod incelemesi (code audit) toplu yapılır ve dönemsel olarak yayımlanır.

Bu felsefe yalnızca teoride kalmaz. OpenBSD ekibi, 1990'lardan bu yana işletim sistemi çekirdeğini, kütüphanelerini ve araçlarını defalarca baştan sona denetlemiştir. Bu denetimler sayesinde OpenSSL'deki Heartbleed açığı gibi kritik zafiyetler daha yazılmadan önce benzer örüntüler saptanıp giderilmiştir.


Güvenlik Mitigation'ları: W^X, ASLR, pledge, unveil, KARL

OpenBSD, modern işletim sistemleri arasında en kapsamlı bellek güvenliği mitigation setine sahiplerden biridir.

W^X (Write XOR Execute)

Bir bellek bölgesi ya yazılabilir (writable) ya çalıştırılabilir (executable) olabilir; ikisi aynı anda olamaz. Bu kural, kod enjeksiyonu (shellcode) saldırılarına karşı donanım desteksiz de geçerlidir. Tüm kullanıcı alanı (userland) programları bu politikaya tabidir.

ASLR (Address Space Layout Randomization)

Çekirdek, yığın (stack), yığın belleği (heap) ve dinamik kütüphanelerin bellek adreslerini her çalışmada rastgele konumlandırır. OpenBSD'nin ASLR implementasyonu, aynı süreci tekrar çalıştırsanız bile adres düzeninin tahmin edilemez olmasını hedefler.

Yeniden başlatıldığında çekirdek, nesne dosyaları rastgele sırayla bağlanarak yeniden derlenir. Sonuçta her önyüklemede farklı bir çekirdek ikili dosyası oluşur. Bu, çekirdek hafıza adreslerini önceden bilmeye dayanan saldırıları etkisiz kılar.

pledge() Sistem Çağrısı

pledge() ile bir süreç, çalışma esnasında hangi sistem çağrılarını yapabileceğini çekirdeğe bildirir. Bir kez pledge edildiğinde, süreç bildirilen kapsamın dışına çıkamaz; çıkmaya çalışırsa SIGABRT ile sonlandırılır.

/* Sadece stdio ve dosya okuma izni */
if (pledge("stdio rpath", NULL) == -1)
    err(1, "pledge");

Bu mekanizma, bir uygulama ele geçirilse bile saldırganın yapabileceği işlemleri sınırlar.

unveil() Sistem Çağrısı

unveil() ile bir süreç, dosya sistemi üzerinde yalnızca belirtilen yollara erişebilir. Açıklanmayan yollar süreç için var olmaz.

/* Yalnızca /var/www dizinine okuma/yazma */
unveil("/var/www", "rw");
unveil(NULL, NULL); /* Listeyi kilitle */

pledge() ile birlikte kullanıldığında unveil(), uygulamaları hem sistem çağrısı hem de dosya sistemi erişimi açısından sandboxlar.

MAP_STACK ve Indirect Branch Tracking

MAP_STACK, yığın (stack) olarak ayrılan bellek bölgelerini işaretler; bu bölgeler dışında yığın büyümesi engellenir. Indirect Branch Tracking ise ROP (Return-Oriented Programming) zincirleme saldırılarına karşı ek bir katman sağlar.


pf Firewall: Packet Filter Sözdizimi ve Örnekler

pf (Packet Filter), OpenBSD projesinin bir parçası olarak geliştirilmiş BSD'ye özgü bir güvenlik duvarıdır. Linux'un netfilter/iptables altyapısından bağımsız olarak tasarlanmış olan pf, temiz ve okunabilir sözdizimi ile öne çıkar. FreeBSD, NetBSD ve DragonFly BSD de pf'yi benimsemiştir; pfSense ve OPNsense pf tabanlı router/firewall dağıtımlarıdır.

pf Temel Yapısı

# /etc/pf.conf

# Makro tanımları
ext_if = "vio0"
trusted_hosts = "{ 192.168.1.0/24 }"

# Loopback trafiği atla
set skip on lo

# Varsayılan politika: tüm trafiği engelle
block all

# Durum tablosunu geçersiz kılma (scrub)
match in all scrub (no-df random-id)

# Giden trafiğe izin ver (NAT ile)
pass out on $ext_if inet nat-to ($ext_if)

# SSH, HTTP, HTTPS izni
pass in on $ext_if proto tcp to ($ext_if) port { 22 80 443 } keep state

# Trusted ağdan tüm trafiğe izin ver
pass in from $trusted_hosts

Tablo Kullanımı

# Engellenen IP tablosu
table <bruteforce> persist
block quick from <bruteforce>

# SSH brute force koruması
pass in on $ext_if proto tcp to ($ext_if) port 22     keep state (max-src-conn 5, max-src-conn-rate 3/60,     overload <bruteforce> flush global)

pf Yönetim Komutları

# pf'yi etkinleştir
pfctl -e

# Kural dosyasını yükle
pfctl -f /etc/pf.conf

# Aktif kuralları görüntüle
pfctl -sr

# İstatistikleri görüntüle
pfctl -si

# Durum tablosunu göster
pfctl -ss

# Tablo içeriğini listele
pfctl -t bruteforce -T show

pf'nin Linux firewalld veya iptables'tan farkı yalnızca sözdizimi değildir; BSD çekirdeğine doğrudan entegre olması ve pf'in kendi durum (stateful) motorunun farklı bir tasarıma sahip olması da önemlidir.


OpenSSH: OpenBSD'de Doğan SSH Standardı

1999 yılında OpenBSD projesinin bir parçası olarak geliştirilen OpenSSH, bugün tüm dünyadaki Linux sunucularında, macOS'ta, Windows'ta ve ağ cihazlarında kullanılan fiili SSH standardıdır. Başlangıçta güvensiz bulunan SSH 1.x protokolüne alternatif olarak yazılan OpenSSH, zamanla protokolü hem tanımladı hem de şekillendirdi.

OpenBSD ekibi OpenSSH'ı aktif olarak geliştirmeye devam etmektedir. Her OpenBSD sürümü, OpenSSH'ın yeni bir sürümüyle birlikte gelir. Şifreleme algoritmalarının güncellenmesi (eski DES/3DES kaldırma, ChaCha20-Poly1305 ve Ed25519 ekleme gibi) OpenBSD geliştiricileri tarafından yürütülür.

Önerilen sshd_config sertleştirme:

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
AuthenticationMethods publickey
AllowUsers deployuser
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
X11Forwarding no

LibreSSL ve Diğer OpenBSD Projeleri

LibreSSL

2014 yılında OpenSSL'deki Heartbleed açığının ardından OpenBSD ekibi, OpenSSL kod tabanını fork edip temizleme çalışması başlattı: LibreSSL. Yüz binlerce satır eski, güvensiz veya platform-spesifik kod kaldırıldı; API modern kriptografik standartlara göre yeniden düzenlendi.

LibreSSL, tüm OpenBSD sistemlerinde OpenSSL'in yerine varsayılan olarak kullanılır. Birçok port ve uygulama da LibreSSL ile uyumlu çalışır.

OpenSMTPD

OpenBSD tarafından geliştirilen OpenSMTPD, minimalist ve güvenli bir SMTP sunucusudur. Pledge/unveil ile tam sandboxlanmış, pf ile entegre çalışabilen ve kolay okunur yapılandırma dosyasıyla öne çıkar. Küçük ve orta ölçekli mail sunucu kurulumları için idealdir.

httpd ve relayd

OpenBSD kendi yerleşik web sunucusunu (httpd) ve yük dengeleyicisini (relayd) barındırır. Nginx veya Apache kadar özellik zengin olmasa da pledge/unveil ile tam sandboxlanmış, minimal saldırı yüzeyine sahip ve basit statik site/proxy görevleri için yeterlidir.

tinyssh

OpenBSD'nin küçük ve güvenli SSH sunucu alternatifidir; yalnızca modern kriptografi (Ed25519, ChaCha20) destekler, eski algoritma yoktur.


Paket Yönetimi: pkg_add, pkg_info, pkg_delete ve Ports Tree

OpenBSD'nin paket sistemi ikili (binary) paket yönetimi ile kaynak tabanlı ports ağacını ayrı tutar.

İkili Paket Yönetimi

# Paket kurma
pkg_add nginx

# Paket kaldırma
pkg_delete nginx

# Tüm paketleri güncelle
pkg_add -u

# Paket ara
pkg_info -Q nginx

# Kurulu paket bilgisi
pkg_info nginx

# Kurulu tüm paketleri listele
pkg_info

Ports Tree

Kaynak tabanlı kurulum için /usr/ports altındaki ports ağacı kullanılır. Her port, paketin nasıl derleneceğini tanımlayan bir Makefile içerir.

# Ports ağacını CVS ile güncelle
cd /usr/ports && cvs -q up -Pd

# Nginx portunu kaynak koddan derle ve kur
cd /usr/ports/www/nginx && make install clean

Ports ağacı, ikili pakette bulunmayan veya özel derleme seçenekleri gerektiren durumlarda kullanılır.


signify: Kriptografik İmza Doğrulama (Ed25519)

OpenBSD'nin tüm resmi sürümleri, snapshot'ları ve syspatch ikili yamaları signify aracıyla imzalanır. signify, Ed25519 algoritmasını kullanır ve OpenBSD'nin kendi geliştirdiği minimalist bir imza aracıdır.

# İmza doğrulama
signify -C -p /etc/signify/openbsd-77-base.pub -x SHA256.sig

# Yeni anahtar çifti oluştur
signify -G -n -s mykey.sec -p mykey.pub

# Dosya imzala
signify -S -s mykey.sec -m dosya.txt

# İmzayı doğrula
signify -V -p mykey.pub -m dosya.txt

Her OpenBSD sürümünün kendine özel bir imzalama anahtarı vardır (openbsd-77-base.pub gibi). Bu yapı, sürümler arası anahtar izolasyonu sağlar. Resmi paketler ve güncellemeler her zaman bu doğrulama zincirinden geçer.


syspatch ve sysupgrade: Güncelleme Yönetimi

syspatch: İkili Güvenlik Yamaları

syspatch, OpenBSD'nin ikili yama (binary patch) sistemidir. Kaynak kodu derlemeye gerek kalmadan çekirdek ve sistem kütüphanelerine güvenlik yamalarını uygular.

# Mevcut yamaları listele ve uygula
syspatch

# Uygulanan yamaları görüntüle
syspatch -l

# Son yamayı geri al
syspatch -r

Her yama signify ile imzalanmıştır; bu nedenle sahte veya bozuk yama uygulanamaz.

sysupgrade: Sürüm Yükseltme

sysupgrade ile mevcut sürüm derleme yapmadan yükseltilir. Araç, yeni sürüm dosyalarını indirir, imzaları doğrular ve sistemi yeniden başlatarak kurulumu tamamlar.

# Bir sonraki kararlı sürüme yükselt
sysupgrade

# -current branch'e geç (snapshot)
sysupgrade -s

Sürüm Döngüsü: Release, Current ve Stable

OpenBSD altı aylık düzenli sürüm döngüsüne sahiptir: Mayıs ve Kasım aylarında yeni bir sürüm yayımlanır (örneğin 7.4, 7.5, 7.6).

Branch Tanım
-release Resmi kararlı sürüm; üretim için önerilir
-stable Release + güvenlik yamaları; syspatch ile güncellenir
-current Geliştirme dalı; snapshot olarak yayımlanır

Yalnızca son iki sürüm resmi olarak desteklenir. Örneğin 7.6 yayımlandığında 7.4 destekten düşer. Bu politika, desteklenmemiş sistemlere güvenlik yaması sağlanmayacağı anlamına gelir; bu nedenle düzenli sürüm takibi önemlidir.


OpenBSD Kullanım Alanları

OpenBSD her iş yükü için optimize edilmemiştir; ancak belirli görevlerde oldukça güçlüdür:

Kullanım Alanı Durum
Firewall / Router Mükemmel (pf, CARP, VLAN)
DNS sunucu (Unbound) Mükemmel
Mail sunucu (OpenSMTPD) İyi
VPN gateway (OpenIKED/WireGuard port) İyi
Hardened bastion host Mükemmel
Gömülü / düşük kaynak sistemler İyi (küçük footprint)
Üretim web sunucusu (yüksek trafik) Sınırlı (ekosistem dar)
Masaüstü kullanım Sınırlı (driver desteği dar)

pfSense ve OPNsense router/firewall dağıtımları pf'yi kullanır ancak OpenBSD üzerinde değil, FreeBSD üzerinde çalışır. Bu ayrımı göz önünde bulundurmak gerekir.


Kurulum: install ISO, bsd.rd, disklabel ve softraid

Kurulum Medyası

OpenBSD kurulum medyası install77.img (yaklaşık 600 MB) adıyla dağıtılır. Metin tabanlı interaktif yükleyici bsd.rd ramdisk ortamı içinde çalışır.

# USB'ye yaz (Linux üzerinde)
dd if=install77.img of=/dev/sdX bs=1M

Disk Bölümleme: disklabel

OpenBSD, GPT veya MBR disk düzenini destekler; ancak kendi disk bölümleme aracı disklabel'ı kullanır. Önerilen bölüm yapısı:

/       2G    (root dosya sistemi)
/usr    8G    (sistem programları)
/var    4G    (log ve değişken veriler)
/home   Kalan (kullanıcı verileri)
/tmp    2G    (geçici dosyalar)
swap    RAM x 1.5

softraid CRYPTO

Disk şifreleme için OpenBSD, softraid ile CRYPTO destekler:

# Şifreli softraid birimi oluştur
bioctl -c C -l /dev/sd0a softraid0

Bu yapı, FDE (Full Disk Encryption) sağlar; şifre çözme önyükleyici aşamasında yapılır.


OpenBSD ile Linux Karşılaştırması

Özellik OpenBSD Linux (örn. Debian)
Dosya sistemi FFS/UFS ext4, XFS, Btrfs
Init sistemi init + rc.d systemd
Standart araçlar BSD coreutils GNU coreutils
Firewall pf netfilter/iptables/nftables
Lisans BSD (permissif) GPL v2
Paket sayısı ~11.000 port 50.000+ (Debian)
Hardware desteği Dar Geniş
Güvenlik sandbox pledge + unveil (kernel) seccomp (uygulama katmanı)
Varsayılan servisler Tümü kapalı Dağıtıma göre değişir

Linux, geniş donanım desteği, büyük paket ekosistemi ve geniş topluluk sayesinde genel amaçlı sunucularda öndedir. OpenBSD ise güvenlik kritik nişlerde, firewall/gateway ve bastion host senaryolarında tercih edilir.


OpenBSD Sınırlamaları

Güçlü yönlerine rağmen OpenBSD bazı kısıtlamalar barındırır:

  • Donanım desteği: Modern WiFi kartlarının büyük çoğunluğu, yeni nesil GPU'lar ve bazı NIC'ler desteklenmez. Sunucu ortamlarında bu sorun daha az hissedilir.
  • Paket ekosistemi: Yaklaşık 11.000 port mevcuttur; büyük Linux dağıtımlarına kıyasla dar kalır. Bazı popüler araçların OpenBSD sürümü yoktur veya eski kalır.
  • Kullanıcı topluluğu: Nispeten küçük bir topluluk, daha az forum kaynağı ve belge anlamına gelir.
  • Üretim web sunucusu: httpd minimalisttir; yüksek trafikli web uygulamaları için Nginx/Caddy ekosistemine kıyasla sınırlıdır.
  • Yalnızca son iki sürüm desteklenir: Uzun vadeli destek (LTS) konsepti yoktur.

Buyukweb VDS ile OpenBSD Kullanımı

Buyukweb VDS altyapısı KVM hipervizör tabanlıdır. KVM, donanım sanallaştırma sunduğu için kullanıcı tarafından yüklenen özel ISO'larla tam işletim sistemi kurulumuna olanak tanır. Bu sayede VDS üzerinde OpenBSD kurulumu teknik olarak mümkündür.

Önemli not: Buyukweb VDS'te OpenBSD kurulumu, kullanıcının kendi yönetimindedir. Buyukweb standart görüntü olarak Ubuntu, Debian ve AlmaLinux sunar; OpenBSD için resmi hazır görüntü veya kontrol paneli entegrasyonu bulunmamaktadır. Kurulum ve yapılandırma tamamen kullanıcı sorumluluğundadır.

VDS özellikleri:

  • KVM tam sanallaştırma — yazılım davranışı donanımla birebir örtüşür
  • KVM web konsol — kurulum esnasında ve kurtarma senaryolarında seri konsol erişimi
  • SSD/NVMe disk — OpenBSD'nin disk G/Ç beklentileriyle uyumlu
  • Root SSH erişimi — tam sistem yönetimi

OpenBSD; firewall, VPN gateway veya hardened bastion host olarak çalıştırılmak istenen nişte VDS üzerinde tercih edilebilir. Genel amaçlı hosting (cPanel, web paneli, ortak hosting) için OpenBSD uygun değildir; bu tür kullanımlar için AlmaLinux veya Ubuntu tercih edilir.

VDS paketleri ve detaylar için: buyukweb.com/vds-sunucu

Destek: 0850 302 60 70


Sık Sorulan Sorular

OpenBSD üretim web sunucusu için uygun mu?

Düşük trafikli, güvenlik odaklı veya statik içerik sunan senaryolarda kullanılabilir. Yüksek trafikli, dinamik uygulama barındırma için ekosistem kısıtlamaları (paket sayısı, topluluk kaynakları) OpenBSD'yi ikincil bir tercih yapar. Üretim web sunucusu için Ubuntu veya AlmaLinux çok daha olgun bir ekosisteme sahiptir.

FreeBSD ile OpenBSD arasındaki fark nedir?

Her ikisi de 4.4BSD-Lite mirasından gelir ancak felsefe ve öncelikler farklıdır. FreeBSD performans ve geniş donanım desteğini önceliklendirir; Netflix, WhatsApp gibi yüksek trafikli sistemlerde tercih edilir. OpenBSD ise güvenliği birinci öncelik olarak benimser; daha dar bir donanım desteği ve daha küçük paket ekosistemiyle gelir. Her ikisinin de pf'yi benimsemesi ortak nokta olsa da çekirdek mimarileri ve port ağaçları ayrıdır.

VDS'te OpenBSD kurabilir miyim?

Buyukweb KVM tabanlı VDS üzerinde özel ISO yükleyerek OpenBSD kurulumu yapabilirsiniz. Kurulum, yapılandırma ve yönetim tamamen sizin sorumluluğunuzdadır. KVM web konsol, metin tabanlı OpenBSD yükleyicisini kullanmak için yeterli konsol erişimi sağlar.

pf ile iptables/nftables arasındaki fark nedir?

pf, BSD çekirdeğine doğrudan entegre edilmiş BSD-native bir packet filter'dır. iptables/nftables Linux çekirdeğinin netfilter altyapısı üzerinde çalışır. İkisi bağımsız sistemlerdir; pf sözdizimi okunabilirlik açısından öne çıkar, tablo ve makro desteği ile büyük kural setleri yönetimi kolaylaşır. nftables ise iptables'ın halefi olarak tasarlanmış ve daha modern bir sözdizimi sunar.

OpenBSD'de güncelleme nasıl yapılır?

Güvenlik yamaları için syspatch komutu ikili yamayı indirir, imzayı signify ile doğrular ve uygular. Sürüm yükseltme için sysupgrade kullanılır. Paket güncellemeleri için pkg_add -u komutu tüm kurulu paketleri günceller.

signify neden önemlidir?

signify, OpenBSD'nin her resmi dosyasını (sürüm ISO'su, syspatch yaması, paket) kriptografik olarak imzalar. Ed25519 kullanan bu araç sayesinde indirilen her dosyanın gerçekten OpenBSD ekibinden geldiği ve değiştirilmediği doğrulanır. Bu, tedarik zinciri (supply chain) saldırılarına karşı önemli bir savunma katmanıdır.


Sonuç

OpenBSD, "güvenli olduğunu iddia etmek" ile "güvenliği kanıtlamak" arasındaki farkı somutlaştıran bir işletim sistemidir. pledge/unveil ile sandboxlanmış uygulamalar, signify ile imzalanmış her güncelleme, proaktif kod denetim kültürü ve "varsayılan olarak güvenli" mimarisi OpenBSD'yi belirli nişlerde rakipsiz kılar.

Firewall, bastion host, hardened DNS veya mail sunucu kuruyorsanız OpenBSD ciddi biçimde değerlendirilmeye değer. Genel amaçlı sunucu veya hosting ortamı için ise Ubuntu veya AlmaLinux daha olgun bir ekosistem sunar.

Buyukweb VDS üzerinde KVM ve tam root erişimiyle OpenBSD dahil tercih ettiğiniz işletim sistemini kurabilirsiniz. Sorularınız için 0850 302 60 70 numaralı destek hattımızı arayabilir veya iletişim sayfamızı kullanabilirsiniz.

İşletim Sistemleri İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#openbsd#güvenlik#işletim sistemi#sunucu os#linux

Bu yazıyı paylaş