10 puan yazan GN⁺ 2025-02-23 | 1 yorum | WhatsApp'ta paylaş

OpenBSD projesi çeşitli yazılımlar ve fikirler geliştirip bakımını yapmaktadır. Aşağıda yaklaşık benimsenme sırasına göre bir derleme yer alıyor

Kavramlar (Concepts)

  • IPSec(4): OpenBSD, IPSec yığınını sunan ilk özgür işletim sistemiydi. 20 Şubat 1997'de eklendi
  • INET6(4): OpenBSD 2.7 ile IPv6 tamamen entegre edildi. Geliştirme 6 Ocak 1999'da başladı ve aynı yıl 6 Haziran'daki ilk hackathon'da neredeyse tamamen çalışır duruma ulaştı
  • Ayrıcalık ayırma (Privilege Separation): İlk kez Mart 2002'de OpenSSH içinde uygulandı. Daha sonra bgpd(8), dhclient(8), smtpd(8), tmux(1) gibi çeşitli programlara uygulandı
  • Ayrıcalık geri alma (Privilege Revocation): Belirli kaynakları korurken ayrıcalıkları düşürme yöntemi uygulandı. Örnek: ping(8), traceroute(8)
  • Yığın koruyucu (Stack Protector): 2001'den beri geliştirilen propolice tabanlıdır. OpenBSD 3.3'te varsayılan olarak etkinleştirildi
  • W^X (Write XOR Execute): İlk kez OpenBSD 3.3'te uygulandı. OpenBSD 6.0'dan itibaren varsayılan olarak sıkı biçimde zorunlu kılındı
  • GOT ve PLT koruması: OpenBSD 3.3'te ld.so, GOT (global offset table) ve PLT'yi (procedure linkage table) koruyacak şekilde geliştirildi
  • ASLR (Address Space Layout Randomization): OpenBSD 3.4 bunu varsayılan olarak etkinleştiren ilk sistem oldu
  • gcc-local(1) analizi ve denetimi: İlk kez OpenBSD 3.4'te eklendi
  • malloc(3) güvenlik güçlendirmesi: Bellek ayırmada rastgeleleştirme ve gecikmeli serbest bırakma uygulandı. OpenBSD 4.4'te yeniden uygulandı
  • Konumdan bağımsız çalıştırılabilir dosyalar (PIE): OpenBSD 5.3'te ilk kez varsayılan olarak etkinleştirildi. 7 donanım platformunda
  • Rastgele sayı tabanlı bellek ilklendirme: OpenBSD 5.3'te ELF .openbsd.randomdata bölümü eklendi
  • Paylaşılan nesne başına yığın koruyucu: OpenBSD 5.3'te her paylaşılan nesneye ayrı yığın koruyucu çerezi uygulandı
  • Static-PIE: /bin, /sbin ve RAM disk üzerinde konumdan bağımsız statik ikili desteği. OpenBSD 5.7'de eklendi
  • SROP saldırı azaltımı: OpenBSD 6.0'da varsayılan olarak etkinleştirildi
  • Kütüphane yükleme sırası rastgeleleştirmesi: OpenBSD 6.0 ve 6.2'de varsayılan olarak etkinleştirildi
  • Çok iş parçacıklı ortamlarda W^X güvenliği için lazy-binding iyileştirmesi: OpenBSD 5.9'da eklendi
  • Bellek yerleşimi güçlendirmesi: OpenBSD 6.1'de tüm programlara ve kütüphanelere uygulandı
  • fork+exec yönteminin kullanımı: Ayrıcalık ayırmalı programlarda adres alanı korumasını güçlendirir
  • trapsleds: ROP (return-oriented programming) saldırılarını azaltmak amacıyla NOP dönüştürme tekniği uygulandı
  • Çekirdeğin önyükleme sırasında yeniden bağlanması: Her önyüklemede çekirdek içi yerleşim rastgeleleştirilir
  • i386/amd64 komut dizisi güvenlik güçlendirmesi: ROP saldırılarını zorlaştırmak için yapılan iyileştirmeler
  • MAP_STACK seçeneğinin eklenmesi: ROP saldırılarında yığın dışındaki belleğin kötüye kullanılmasını önler
  • RETGUARD: Mevcut yığın koruyucudan daha güçlü bir koruma mekanizması olarak OpenBSD 6.4'ten itibaren eklendi
  • MAP_CONCEAL seçeneğinin eklenmesi: Hassas bilgilerin core dump üzerinden sızmasını önler
  • PROT_WRITE belleğinde sistem çağrılarının engellenmesi: OpenBSD 6.5'te eklendi
  • Sistem çağrısı konumlarının sabitlenmesi: Sistem çağrıları yalnızca belirli konumlardan yapılabilecek şekilde sınırlandı
  • Adres alanı korumasının güçlendirilmesi: mmap(2), mprotect(2) vb. yoluyla bellek değişiklikleri sınırlandırıldı
  • sshd'nin önyükleme sırasında yeniden bağlanması: OpenBSD 7.2'de eklendi
  • Okunamayan kod (xonly) desteği: Yürütülebilir belleğin okunamaması sağlandı
  • pinsyscalls(2) sistem çağrısı koruması: Sistem çağrısı konumları önceden kaydedilerek korunur
  • Dolaylı dallanma hedefi koruması (BTI, IBT): Donanım tabanlı güvenlik özellikleri uygulandı
  • -fret-clean özelliğinin eklenmesi: Dönüş değerlerinin yığında kalmasını önleyerek bilgi sızıntısını engeller. Şu anda yalnızca amd64 üzerinde uygulanıyor

Fonksiyonlar (Functions)

  • issetugid(2): OpenBSD 2.0'da eklenen bu fonksiyon, sürecin çalışırken ayarlanmış kullanıcı kimliği veya grup kimliğini denetlemeyi sağlar
  • arc4random(3): Rastgele sayı üretim fonksiyonu olarak OpenBSD 2.1'de eklendi
  • bcrypt(3): Parola karma işlemi için fonksiyon. İlk kez OpenBSD 2.1'de eklendi
  • strlcpy(3), strlcat(3): Güvenli dizge kopyalama ve birleştirme fonksiyonları. OpenBSD 2.4'te eklendi
  • strtonum(3): Dizgeleri sayıya dönüştürürken hataları önleyen fonksiyon. OpenBSD 3.6'da eklendi
  • imsg: Çeşitli daemon'larda kullanılan mesaj iletimi API'si. OpenBSD 4.8'de libutil'e eklendi
  • timingsafe_bcmp(3): Sabit çalışma süresi sağlayan bayt karşılaştırma fonksiyonu. OpenBSD 4.9'da eklendi
  • explicit_bzero(3): Belleği güvenli biçimde silen fonksiyon. OpenBSD 5.5'te eklendi
  • ohash: Hash tablosu uygulaması. OpenBSD 5.6'da libutil'e dahil edildi
  • asr: Alternatif DNS çözücüsü. OpenBSD 5.6'da etkinleştirildi
  • reallocarray(3): Belleği yeniden ayırırken taşmayı önleyen fonksiyon. OpenBSD 5.6'da eklendi
  • getentropy(2): Kriptografik olarak güvenli rastgele sayı sağlayan fonksiyon. OpenBSD 5.6'da eklendi
  • sendsyslog(2): Çekirdekten syslog mesajı gönderen fonksiyon. OpenBSD 5.6'da eklendi
  • timingsafe_memcmp(3): Sabit çalışma süresi sağlayan bellek karşılaştırma fonksiyonu. OpenBSD 5.6'da eklendi
  • pledge(2): Sistem çağrılarını sınırlayarak güvenliği artıran fonksiyon. OpenBSD 5.9'da eklendi
  • getpwnam_shadow(3), getpwuid_shadow(3): Güvenliği artırmak için shadow parola verisini alan fonksiyonlar. OpenBSD 5.9'da eklendi
  • recallocarray(3): Bellek boyutu yeniden ayarlanırken mevcut veriyi sıfırlarla dolduran fonksiyon. OpenBSD 6.1'de eklendi
  • freezero(3): Belleği serbest bırakırken sıfırlarla dolduran fonksiyon. OpenBSD 6.2'de eklendi
  • unveil(2): Dosya sistemi erişimini sınırlayan fonksiyon. OpenBSD 6.4'te eklendi
  • malloc_conceal(3), calloc_conceal(3): Bellek ayırırken hassas verileri koruma özelliği sağlar. OpenBSD 6.5'te eklendi
  • ober: ASN.1 temel kodlama kuralları API'si. OpenBSD 6.6'da libutil'e taşındı

Programlar ve alt sistemler (Programs and Subsystems)

  • YP ile ilgili araçlar: ypbind(8), ypset(8), ypcat(1), ypmatch(1), ypwhich(1), libc desteği eklendi. İlk olarak NetBSD 0.9 ile dağıtıldı
  • ypserv(8): OpenBSD 2.0'da eklenen YP sunucusu
  • mopd(8): MOP (Maintenance Operations Protocol) desteği sunan daemon. OpenBSD 2.0'da eklendi
  • AnonCVS: OpenBSD kod deposuna anonim erişim sağlamak üzere tasarlanmış sistem
  • aucat(1): Ses sunucusuyla ilgili yardımcı program. OpenBSD 2.1'de eklendi
  • OpenSSH: SSH tabanlı güvenli iletişim aracı. OpenBSD 2.6'da eklendi
  • mg(1): Hafif bir metin düzenleyici. OpenBSD 2.7'de dahil edildi
  • m4(1): Makro işlemci. OpenBSD 2.7'den sonra genişletildi ve bakımı sürdürüldü
  • pf(4), pfctl(8), pflogd(8), authpf(8), ftp-proxy(8): Paket filtrelemeli güvenlik duvarı. OpenBSD 3.0'da eklendi
  • systrace(4), systrace(1): Sistem çağrısı izleme aracı. OpenBSD 3.2'de eklendi, ancak OpenBSD 5.9'dan sonra yerini pledge(2)'e bıraktı
  • spamd(8): İstenmeyen posta filtreleme daemon'u. OpenBSD 3.3'te eklendi
  • dc(1), bc(1): Hesap makinesi yardımcı programları. OpenBSD 3.5'te eklendi
  • sensorsd(8): Donanım sensörü izleme aracı. OpenBSD 3.5'te dahil edildi
  • pkg_add(1): Paket yönetim aracı. OpenBSD 3.5'te eklendi
  • carp(4): Failover için ağ arayüzü protokolü. OpenBSD 3.5'te eklendi
  • OpenBGPD: BGP yönlendirme daemon'u. OpenBSD 3.5'te eklendi
  • dhclient(8), dhcpd(8): DHCP istemcisi ve sunucusu. OpenBSD 3.5~3.6'da eklendi
  • hotplugd(8): Hotplug olaylarını işleyen daemon. OpenBSD 3.6'da eklendi
  • OpenNTPD: NTP (Network Time Protocol) daemon'u. OpenBSD 3.6'da eklendi
  • dpb(1): Dağıtık paket derleme sistemi. OpenBSD 3.6'da eklendi
  • ospfd(8), ospfctl(8), ospf6d(8): OSPF (Open Shortest Path First) yönlendirme daemon'ları. OpenBSD 3.7~4.2'de eklendi
  • ifstated(8): Arayüz durumu yönetim aracı. OpenBSD 3.8'de eklendi
  • bioctl(8): Blok aygıtı ve RAID yönetim aracı. OpenBSD 3.8'de dahil edildi
  • hostapd(8): Kablosuz erişim noktası yönetim aracı. OpenBSD 3.8'de eklendi
  • watchdogd(8): Sistem kararlılığını sağlayan watchdog zamanlayıcısı. OpenBSD 3.8'de eklendi
  • sdiff(1): Dosya karşılaştırma yardımcı programı. OpenBSD 3.9'da eklendi
  • dvmrpd(8), dvmrpctl(8): DVMRP (Distance Vector Multicast Routing Protocol) desteği. OpenBSD 4.0'da eklendi
  • ripd(8), ripctl(8): RIP (Routing Information Protocol) desteği. OpenBSD 4.1'de dahil edildi
  • pkg-config(1): Paket yapılandırma aracı. OpenBSD 4.1'de eklendi
  • relayd(8), relayctl(8): Ağ trafiği aktarma araçları. OpenBSD 4.1'de eklendi
  • cwm(1): Hafif pencere yöneticisi. OpenBSD 4.2'de eklendi
  • libtool(1): Kütüphane oluşturma otomasyon aracı. OpenBSD 4.3'te dahil edildi
  • snmpd(8): SNMP (Simple Network Management Protocol) daemon'u. OpenBSD 4.3'te eklendi
  • sysmerge(8): Sistem yapılandırma dosyası birleştirme aracı. OpenBSD 4.4'te eklendi
  • ypldap(8): LDAP tabanlı YP sunucusu. OpenBSD 4.4'te dahil edildi
  • OpenSMTPD: SMTP (Simple Mail Transfer Protocol) sunucusu. OpenBSD 4.6'da eklendi
  • tmux(1): Terminal çoklayıcısı. OpenBSD 4.6'da dahil edildi
  • ldpd(8), ldpctl(8): Label Distribution Protocol (LDP) desteği. OpenBSD 4.6'da eklendi
  • mandoc(1): Kılavuz sayfası belgelendirme aracı. OpenBSD 4.8'de eklendi
  • ldapd(8), ldapctl(8): Lightweight Directory Access Protocol (LDAP) sunucusu. OpenBSD 4.8'de eklendi
  • OpenIKED: IKE (Internet Key Exchange) protokol uygulaması. OpenBSD 4.8'de eklendi
  • iscsid(8), iscsictl(8): iSCSI daemon'u. OpenBSD 4.9'da dahil edildi
  • rc.d(8), rc.subr(8): Sistem başlatma betiği yönetimi. OpenBSD 4.9'da eklendi
  • npppd(8), npppctl(8): PPP (Point-to-Point Protocol) daemon'u. OpenBSD 5.3'te eklendi
  • ldomd(8), ldomctl(8): LDOM (Logical Domains) yönetim araçları. OpenBSD 5.3'te dahil edildi
  • sndiod(8): Ses sunucusu. OpenBSD 5.3'te eklendi
  • cu(1): Seri iletişim yardımcı programı. OpenBSD 5.4'te eklendi
  • slowcgi(8): Yavaş HTTP isteklerini işleyen araç. OpenBSD 5.4'te dahil edildi
  • signify(1): Dosya imzalama ve doğrulama aracı. OpenBSD 5.5'te eklendi
  • LibreSSL: OpenSSL'den çatallanarak güvenliği güçlendirilmiş proje. İlk sürümü OpenBSD 5.6 ile yayımlandı
  • httpd(8): Hafif web sunucusu. OpenBSD 5.6'da dahil edildi
  • rcctl(8): rc.d hizmet yönetim aracı. OpenBSD 5.7'de eklendi
  • doas(1): Basit bir ayrıcalık yükseltme aracı. OpenBSD 5.8'de eklendi
  • radiusd(8): RADIUS sunucu uygulaması. OpenBSD 5.8'de eklendi
  • eigrpd(8), eigrpctl(8): EIGRP (Enhanced Interior Gateway Routing Protocol) desteği. OpenBSD 5.9'da dahil edildi
  • vmm(4), vmd(8), vmctl(8): Sanal makine yönetim sistemi. OpenBSD 5.9'da eklendi
  • acme-client(1): ACME protokolü kullanan sertifika istemcisi. OpenBSD 6.1'de eklendi
  • syspatch(8): Güvenlik yaması yönetim aracı. OpenBSD 6.1'de eklendi
  • xenodm(1): XDM'in temizlenmiş fork sürümü. OpenBSD 6.1'de dahil edildi
  • unwind(8): Yerel DNS çözücüsü. OpenBSD 6.5'te eklendi
  • sysupgrade(8): Sistemi otomatik yükseltme aracı. OpenBSD 6.6'da eklendi
  • rpki-client(8): RPKI (Route Origin Validation) istemcisi. OpenBSD 6.7'de eklendi
  • resolvd(8): Dinamik ağ ortamlarında DNS yapılandırmasını yöneten araç. OpenBSD 6.9'da eklendi
  • dhcpleased(8): Geliştirilmiş DHCP istemcisi. OpenBSD 6.9'da dahil edildi

OpenBSD geliştiricilerinin OpenBSD dışında bakımını yaptığı projeler

  • sudo: Sistem yöneticilerinin belirli kullanıcılara sınırlı komut çalıştırma yetkisi vermesini sağlayan araç. OpenBSD 2.7'de dahil edildi
  • femail: Basit e-posta gönderim aracı. 2005'te başladı ve OpenBSD portu aynı yıl 22 Eylül'de sunuldu
  • midish: MIDI sıralayıcı ve işleme aracı. 2003'te başladı ve OpenBSD portu 4 Kasım 2005'te sunuldu
  • fdm: E-posta filtreleme ve düzenleme aracı. 2006'da başladı ve OpenBSD portu 18 Ocak 2007'de sunuldu
  • toad: OpenBSD için otomatik yazılım dağıtım aracı. 2013'te başladı ve OpenBSD portu aynı yıl 8 Ekim'de sunuldu
  • docbook2mdoc: DocBook belgelerini mdoc kılavuz sayfası biçimine dönüştüren araç. 2014'te başladı ve OpenBSD portu aynı yıl 3 Nisan'da sunuldu
  • portroach: FreeBSD'nin portscout'undan çatallanarak geliştirilen port güncelleme takip aracı. 2014'te başladı ve OpenBSD portu aynı yıl 5 Eylül'de sunuldu
  • cvs2gitdump: CVS deposunu Git'e dönüştüren araç. 2012'de başladı ve OpenBSD portu 1 Ağustos 2016'da sunuldu
  • Game of Trees: Git'in yerine geçebilecek bir sürüm kontrol sistemi. 2017'de başladı ve OpenBSD portu 9 Ağustos 2019'da sunuldu

1 yorum

 
GN⁺ 2025-02-23
Hacker News yorumu
  • OpenBSD Vakfı yaklaşık 380 bin dolar bağış topladı

    • OpenSSH'yi onların geliştirdiği ve Fortune 500 şirketlerinin tamamının bunu kullandığı düşünülürse, yılda 1-2 milyon dolar toplamaları gerektiğini düşünüyorum
    • Bu şirketlerin artık katkı yapma zamanı geldi
    • Donanım üreticileri de kaynak kodlarını açmalı; özellikle Nvidia'dan söz ediliyor
  • John Ioannidis birkaç hafta önce hayatını kaybetti ve neredeyse kimse bunu fark etmedi

    • Kendisi, Mobile IP'nin (IP'nin cep telefonlarında çalışmasını mümkün kılan teknolojinin) temelini atan kişi olarak da biliniyordu
  • OpenBSD'nin privdrop/privsep tasarımı ve pledge(2)/unveil(2) benimsenmesinin yanı sıra, mimmutable gibi son dönemdeki hafifletme çalışmaları da yeterince dikkat çekmiyor

    • OpenBSD'de çoğu programın statik adres alanı otomatik olarak değiştirilemez hale getirildi
    • Modern Intel/AMD ve ARM makinelerinde execute-only memory ile BTI/IBT varsayılan olarak etkin
    • Buna, daha geniş yazılım ekosistemini hazırlamaya yönelik port geliştirme çalışmaları da dahil
  • OpenBSD 5.3'te Matthew Dempsky tarafından rastgele veri belleği uygulandı

    • Bu özelliğin kullanım alanlarından biri RETGUARD
    • RETGUARD, stack canary'nin yerini alıyor ve stack'in dönüş adresini tutarlı biçimde doğrulamak için işlev başına rastgele cookie kullanıyor
  • AmigaOS, 1985'te position-independent executable (PIE) ve ASLR kullanıyordu

    • Amiga'da MMU yoktu ve bellek sınırlıydı; bu yüzden yüklenen her şey kullanılabilir RAM'e yerleştirilmek zorundaydı
    • Ayrı bölümler farklı konumlara yerleştirilebiliyordu ve derleyici bunun için çok sayıda bölüm üretiyordu
  • pledge/unveil'in daha öne çıkarılmamış olmasına şaşırdığını belirtiyor

  • OpenBSD'nin ISO C11 _Thread_local'ı uygulayıp uygulamadığını merak ediyor

    • Bu, OpenBSD'ye yazılım taşırken en büyük sıkıntılardan biriydi
    • OpenBSD, yerel thread-local storage desteği sunmayan tek büyük işletim sistemiydi
  • OpenBSD sayfasının neden yalnızca temel HTML kullandığı, stil veya CSS kullanmadığı sorgulanıyor

    • Tipografi okunabilirlik açısından önemli; en azından uygun satır yüksekliği ve yaklaşık 60 karakterlik satır uzunluğu sınırı olmalı
    • OpenBSD'nin potansiyel kullanıcıları ciddiye alıp almadığını sorguluyor
    • Kullanıcı deneyimi önemlidir ve belgelerin okunabilirliği de UX'in bir parçasıdır
  • Bir başka harika kaynak olarak <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a>; öneriliyor