OpenBSD के नवाचार
(openbsd.org)OpenBSD प्रोजेक्ट विभिन्न सॉफ़्टवेयर और आइडिया विकसित और मेंटेन करता है। नीचे इन्हें लगभग अपनाने के क्रम में व्यवस्थित किया गया है
अवधारणाएँ (Concepts)
- IPSec(4): OpenBSD IPSec स्टैक प्रदान करने वाला पहला Free operating system था। 20 फ़रवरी 1997 को पेश किया गया
- INET6(4): OpenBSD 2.7 में IPv6 का पूर्ण एकीकरण। विकास 6 जनवरी 1999 से शुरू हुआ, और उसी वर्ष 6 जून को पहले hackathon में यह लगभग पूरी तरह कार्यशील स्थिति तक पहुँच गया
- अधिकार पृथक्करण (Privilege Separation): मार्च 2002 में पहली बार OpenSSH में लागू किया गया। बाद में bgpd(8), dhclient(8), smtpd(8), tmux(1) जैसे कई प्रोग्रामों में अपनाया गया
- अधिकार वापसी (Privilege Revocation): विशिष्ट resource बनाए रखते हुए भी अधिकार कम करने की पद्धति लागू। उदाहरण: ping(8), traceroute(8)
- स्टैक प्रोटेक्टर (Stack Protector): 2001 से विकसित "propolice" पर आधारित। OpenBSD 3.3 में डिफ़ॉल्ट रूप से सक्षम
- W^X (Write XOR Execute): पहली बार OpenBSD 3.3 में लागू। OpenBSD 6.0 से डिफ़ॉल्ट रूप से सख़्ती से लागू किया गया
- GOT और PLT सुरक्षा: OpenBSD 3.3 में ld.so को बेहतर बनाया गया ताकि GOT (Global Offset Table) और PLT (Procedure Linkage Table) सुरक्षित रहें
- ASLR (Address Space Layout Randomization): OpenBSD 3.4 पहला संस्करण था जिसमें यह डिफ़ॉल्ट रूप से सक्षम था
- gcc-local(1) विश्लेषण और जाँच: OpenBSD 3.4 में पहली बार पेश किया गया
- malloc(3) सुरक्षा सुदृढ़ीकरण: memory allocation के समय randomization और delayed free लागू। OpenBSD 4.4 में पुनः कार्यान्वित
- स्थिति-स्वतंत्र executable (PIE): OpenBSD 5.3 में पहली बार डिफ़ॉल्ट रूप से सक्षम। 7 hardware platform
- रैंडम-आधारित memory initialization: OpenBSD 5.3 में ELF
.openbsd.randomdatasection जोड़ा गया - प्रति shared object स्टैक प्रोटेक्टर: OpenBSD 5.3 में हर shared object पर अलग stack protector cookie लागू
- Static-PIE: /bin, /sbin और RAM disk में position-independent static binary समर्थन। OpenBSD 5.7 में पेश किया गया
- SROP attack mitigation: OpenBSD 6.0 में डिफ़ॉल्ट रूप से सक्षम
- library load order randomization: OpenBSD 6.0 और 6.2 में डिफ़ॉल्ट रूप से सक्षम
- multithreaded environment में W^X सुरक्षा के लिए lazy-binding सुधार: OpenBSD 5.9 में पेश किया गया
- memory layout hardening: OpenBSD 6.1 में सभी प्रोग्रामों और लाइब्रेरी पर लागू
- fork+exec पद्धति का उपयोग: privilege-separated प्रोग्रामों में address space protection मज़बूत किया गया
- trapsleds: ROP (Return-Oriented Programming) हमलों को कम करने के लिए NOP transformation तकनीक लागू
- kernel boot पर relink: हर boot पर kernel के internal layout को randomize किया जाता है
- i386/amd64 instruction sequence सुरक्षा सुदृढ़ीकरण: ROP हमलों को कठिन बनाने के लिए सुधार
- MAP_STACK option जोड़ा गया: ROP हमलों में stack के अलावा memory के दुरुपयोग को रोकने के लिए
- RETGUARD: मौजूदा stack protector से अधिक शक्तिशाली सुरक्षा तंत्र, OpenBSD 6.4 से पेश
- MAP_CONCEAL option जोड़ा गया: संवेदनशील जानकारी को core dump में लीक होने से रोकता है
- PROT_WRITE memory में system call ब्लॉक: OpenBSD 6.5 में पेश किया गया
- system call location fix करना: केवल निश्चित स्थानों से system call संभव हों, इस तरह सीमित किया गया
- address space protection सुदृढ़ीकरण: mmap(2), mprotect(2) आदि के माध्यम से memory परिवर्तन सीमित
- sshd boot पर relink: OpenBSD 7.2 में पेश किया गया
- non-readable code (xonly) समर्थन: executable memory को पढ़े जाने से रोकने की सीमा
- pinsyscalls(2) system call protection: system call स्थानों को पहले से register करके सुरक्षा
- indirect branch target protection (BTI, IBT): hardware-आधारित सुरक्षा सुविधा लागू
-fret-cleanसुविधा जोड़ी गई: return value को stack पर बचे रहने से रोककर information leak को रोकता है। अभी केवल amd64 पर लागू
फ़ंक्शन (Functions)
- issetugid(2): OpenBSD 2.0 में जोड़ा गया फ़ंक्शन, जो जाँचता है कि process set user ID या group ID के साथ चल रहा है या नहीं
- arc4random(3): random number generation फ़ंक्शन, OpenBSD 2.1 में जोड़ा गया
- bcrypt(3): password hashing के लिए फ़ंक्शन। पहली बार OpenBSD 2.1 में पेश किया गया
- strlcpy(3), strlcat(3): सुरक्षित string copy और concatenation के लिए फ़ंक्शन। OpenBSD 2.4 में पेश
- strtonum(3): string को number में बदलते समय त्रुटि से बचाने वाला फ़ंक्शन। OpenBSD 3.6 में पेश
- imsg: message passing API, कई daemon में उपयोग। OpenBSD 4.8 में libutil में जोड़ा गया
- timingsafe_bcmp(3): constant execution time सुनिश्चित करने वाला byte comparison फ़ंक्शन। OpenBSD 4.9 में पेश
- explicit_bzero(3): memory को सुरक्षित रूप से मिटाने वाला फ़ंक्शन। OpenBSD 5.5 में जोड़ा गया
- ohash: hash table implementation। OpenBSD 5.6 में libutil में शामिल
- asr: वैकल्पिक DNS resolver। OpenBSD 5.6 में सक्रिय किया गया
- reallocarray(3): memory reallocation के दौरान overflow रोकने वाला फ़ंक्शन। OpenBSD 5.6 में जोड़ा गया
- getentropy(2): cryptographically secure random number प्रदान करने वाला फ़ंक्शन। OpenBSD 5.6 में पेश
- sendsyslog(2): kernel से syslog message भेजने वाला फ़ंक्शन। OpenBSD 5.6 में जोड़ा गया
- timingsafe_memcmp(3): constant execution time सुनिश्चित करने वाला memory comparison फ़ंक्शन। OpenBSD 5.6 में पेश
- pledge(2): system call सीमित कर सुरक्षा बढ़ाने वाला फ़ंक्शन। OpenBSD 5.9 में जोड़ा गया
- getpwnam_shadow(3), getpwuid_shadow(3): सुरक्षा बढ़ाने के लिए shadow password data प्राप्त करने वाले फ़ंक्शन। OpenBSD 5.9 में पेश
- recallocarray(3): memory resize करते समय मौजूदा data को 0 से भरने वाला फ़ंक्शन। OpenBSD 6.1 में जोड़ा गया
- freezero(3): memory मुक्त करते समय उसे 0 से भरने वाला फ़ंक्शन। OpenBSD 6.2 में पेश
- unveil(2): file system access सीमित करने वाला फ़ंक्शन। OpenBSD 6.4 में जोड़ा गया
- malloc_conceal(3), calloc_conceal(3): memory allocation के समय sensitive data की सुरक्षा की सुविधा। OpenBSD 6.5 में जोड़ा गया
- ober: ASN.1 Basic Encoding Rules API। OpenBSD 6.6 में libutil में स्थानांतरित
प्रोग्राम और सबसिस्टम (Programs and Subsystems)
- YP-संबंधित utilities: ypbind(8), ypset(8), ypcat(1), ypmatch(1), ypwhich(1), libc support जोड़ा गया। पहली बार NetBSD 0.9 में वितरित
- ypserv(8): OpenBSD 2.0 में पेश किया गया YP server
- mopd(8): MOP(Maintenance Operations Protocol) support daemon। OpenBSD 2.0 में जोड़ा गया
- AnonCVS: OpenBSD code repository को anonymous access देने के लिए डिज़ाइन किया गया सिस्टम
- aucat(1): audio server से संबंधित utility। OpenBSD 2.1 में जोड़ी गई
- OpenSSH: SSH-आधारित सुरक्षित communication tool। OpenBSD 2.6 में पेश किया गया
- mg(1): हल्का text editor। OpenBSD 2.7 में शामिल
- m4(1): macro processor। OpenBSD 2.7 के बाद विस्तारित और मेंटेन किया गया
- pf(4), pfctl(8), pflogd(8), authpf(8), ftp-proxy(8): packet filtering firewall। OpenBSD 3.0 में जोड़ा गया
- systrace(4), systrace(1): system call monitoring tool। OpenBSD 3.2 में जोड़ा गया था, लेकिन OpenBSD 5.9 के बाद pledge(2) ने इसका स्थान लिया
- spamd(8): spam filtering daemon। OpenBSD 3.3 में पेश किया गया
- dc(1), bc(1): calculator utility। OpenBSD 3.5 में जोड़ी गई
- sensorsd(8): hardware sensor monitoring tool। OpenBSD 3.5 में शामिल
- pkg_add(1): package management utility। OpenBSD 3.5 में पेश किया गया
- carp(4): failover के लिए network interface protocol। OpenBSD 3.5 में जोड़ा गया
- OpenBGPD: BGP routing daemon। OpenBSD 3.5 में पेश किया गया
- dhclient(8), dhcpd(8): DHCP client और server। OpenBSD 3.5~3.6 में जोड़े गए
- hotplugd(8): hotplug event handling daemon। OpenBSD 3.6 में जोड़ा गया
- OpenNTPD: NTP(Network Time Protocol) daemon। OpenBSD 3.6 में जोड़ा गया
- dpb(1): distributed package build system। OpenBSD 3.6 में पेश किया गया
- ospfd(8), ospfctl(8), ospf6d(8): OSPF(Open Shortest Path First) routing daemon। OpenBSD 3.7~4.2 में पेश किए गए
- ifstated(8): interface state management tool। OpenBSD 3.8 में जोड़ा गया
- bioctl(8): block device और RAID management tool। OpenBSD 3.8 में शामिल
- hostapd(8): wireless access point management tool। OpenBSD 3.8 में पेश किया गया
- watchdogd(8): system stability सुनिश्चित करने वाला watchdog timer। OpenBSD 3.8 में जोड़ा गया
- sdiff(1): file comparison utility। OpenBSD 3.9 में पेश किया गया
- dvmrpd(8), dvmrpctl(8): DVMRP(Distance Vector Multicast Routing Protocol) support। OpenBSD 4.0 में जोड़ा गया
- ripd(8), ripctl(8): RIP(Routing Information Protocol) support। OpenBSD 4.1 में शामिल
- pkg-config(1): package configuration tool। OpenBSD 4.1 में पेश किया गया
- relayd(8), relayctl(8): network traffic relay tool। OpenBSD 4.1 में जोड़ा गया
- cwm(1): lightweight window manager। OpenBSD 4.2 में जोड़ा गया
- libtool(1): library build automation tool। OpenBSD 4.3 में शामिल
- snmpd(8): SNMP(Simple Network Management Protocol) daemon। OpenBSD 4.3 में जोड़ा गया
- sysmerge(8): system configuration file merge tool। OpenBSD 4.4 में जोड़ा गया
- ypldap(8): LDAP-आधारित YP server। OpenBSD 4.4 में शामिल
- OpenSMTPD: SMTP(Simple Mail Transfer Protocol) server। OpenBSD 4.6 में पेश किया गया
- tmux(1): terminal multiplexer। OpenBSD 4.6 में शामिल
- ldpd(8), ldpctl(8): Label Distribution Protocol (LDP) support। OpenBSD 4.6 में जोड़ा गया
- mandoc(1): manual page documentation tool। OpenBSD 4.8 में पेश किया गया
- ldapd(8), ldapctl(8): Lightweight Directory Access Protocol (LDAP) server। OpenBSD 4.8 में जोड़ा गया
- OpenIKED: IKE(Internet Key Exchange) protocol implementation। OpenBSD 4.8 में पेश किया गया
- iscsid(8), iscsictl(8): iSCSI daemon। OpenBSD 4.9 में शामिल
- rc.d(8), rc.subr(8): system initialization script management। OpenBSD 4.9 में जोड़ा गया
- npppd(8), npppctl(8): PPP(Point-to-Point Protocol) daemon। OpenBSD 5.3 में जोड़ा गया
- ldomd(8), ldomctl(8): LDOM(Logical Domains) management tool। OpenBSD 5.3 में शामिल
- sndiod(8): audio server। OpenBSD 5.3 में पेश किया गया
- cu(1): serial communication utility। OpenBSD 5.4 में जोड़ी गई
- slowcgi(8): धीमे HTTP request संभालने वाला tool। OpenBSD 5.4 में शामिल
- signify(1): file signing और verification tool। OpenBSD 5.5 में जोड़ा गया
- LibreSSL: OpenSSL को fork कर security hardening के लिए बनाया गया प्रोजेक्ट। OpenBSD 5.6 में पहली बार जारी
- httpd(8): lightweight web server। OpenBSD 5.6 में शामिल
- rcctl(8): rc.d service management utility। OpenBSD 5.7 में जोड़ा गया
- doas(1): सरल privilege escalation utility। OpenBSD 5.8 में पेश किया गया
- radiusd(8): RADIUS server implementation। OpenBSD 5.8 में जोड़ा गया
- eigrpd(8), eigrpctl(8): EIGRP(Enhanced Interior Gateway Routing Protocol) support। OpenBSD 5.9 में शामिल
- vmm(4), vmd(8), vmctl(8): virtual machine management system। OpenBSD 5.9 में जोड़ा गया
- acme-client(1): ACME protocol का उपयोग कर certificate issuance client। OpenBSD 6.1 में पेश किया गया
- syspatch(8): security patch management tool। OpenBSD 6.1 में जोड़ा गया
- xenodm(1): XDM का साफ़-सुथरा fork version। OpenBSD 6.1 में शामिल
- unwind(8): local DNS resolver। OpenBSD 6.5 में पेश किया गया
- sysupgrade(8): system automatic upgrade tool। OpenBSD 6.6 में जोड़ा गया
- rpki-client(8): RPKI(Route Origin Validation) client। OpenBSD 6.7 में पेश किया गया
- resolvd(8): dynamic network environment में DNS settings प्रबंधित करने वाला tool। OpenBSD 6.9 में जोड़ा गया
- dhcpleased(8): उन्नत DHCP client। OpenBSD 6.9 में शामिल
OpenBSD डेवलपर्स द्वारा OpenBSD के बाहर मेंटेन किए जाने वाले प्रोजेक्ट
- sudo: ऐसा tool जो system administrator को किसी specific user को सीमित command execution अधिकार देने देता है। OpenBSD 2.7 में शामिल
- femail: सरल mail transfer tool। 2005 में शुरू हुआ, और OpenBSD port उसी वर्ष 22 सितंबर को उपलब्ध कराया गया
- midish: MIDI sequencer और processing tool। 2003 में शुरू हुआ, और OpenBSD port 4 नवंबर 2005 को उपलब्ध कराया गया
- fdm: mail filtering और organizing tool। 2006 में शुरू हुआ, और OpenBSD port 18 जनवरी 2007 को उपलब्ध कराया गया
- toad: OpenBSD के लिए software automatic deployment tool। 2013 में शुरू हुआ, और OpenBSD port उसी वर्ष 8 अक्टूबर को उपलब्ध कराया गया
- docbook2mdoc: DocBook documents को mdoc manual page format में बदलने वाला tool। 2014 में शुरू हुआ, और OpenBSD port उसी वर्ष 3 अप्रैल को उपलब्ध कराया गया
- portroach: FreeBSD के portscout को fork कर विकसित किया गया port update tracking tool। 2014 में शुरू हुआ, और OpenBSD port उसी वर्ष 5 सितंबर को उपलब्ध कराया गया
- cvs2gitdump: CVS repository को Git में बदलने वाला tool। 2012 में शुरू हुआ, और OpenBSD port 1 अगस्त 2016 को उपलब्ध कराया गया
- Game of Trees: Git का विकल्प बन सकने वाला version control system। 2017 में शुरू हुआ, और OpenBSD port 9 अगस्त 2019 को उपलब्ध कराया गया
1 टिप्पणियां
Hacker News राय
OpenBSD फ़ाउंडेशन ने लगभग 3.8 लाख डॉलर जुटाए
John Ioannidis का कुछ हफ़्ते पहले निधन हो गया, और लगभग किसी ने इस पर ध्यान नहीं दिया
OpenBSD के privdrop/privsep डिज़ाइन और pledge(2)/unveil(2) को अपनाने के अलावा, हाल की mitigation कोशिशें जैसे mimmutable भी पर्याप्त ध्यान नहीं पा रही हैं
OpenBSD 5.3 में Matthew Dempsky द्वारा random data memory लागू की गई थी
AmigaOS ने 1985 में position-independent executables (PIE) और ASLR का उपयोग किया था
इस बात पर हैरानी जताई गई कि pledge/unveil को अधिक प्रमुखता से पेश नहीं किया गया
यह जानने की जिज्ञासा जताई गई कि क्या OpenBSD ने ISO C11 _Thread_local लागू किया है
यह सवाल उठाया गया कि OpenBSD पेज केवल basic HTML का उपयोग क्यों करते हैं और styling या CSS का उपयोग क्यों नहीं करते
एक और बेहतरीन संसाधन के रूप में <a href="https://why-openbsd.rocks/" rel="nofollow">https://why-openbsd.rocks/</a> की सिफारिश की गई