 Ja, die nächsten 45 Minuten werden wir jetzt mal einen relativ hohen Flug über OpenBSD haben und die Idee, die da einfach dahinter steckt, ist euch mal ein bisschen was zu zeigen. Was gibt es dann eigentlich noch außerhalb dieser klassischen Linux-Welt, die ihr vielleicht schon irgendwie kennt? Ja, kurz zu mir, ich bin früher, kam ich mal aus der Region Gießen, inzwischen bin ich Exil Karlsruher, mach jetzt seit über 20 Jahren Linux und jetzt genau seit 20 Jahren so ein bisschen mit OpenBSD herum. Bin kein Kommitter, aber ist ein Projekt, was ich relativ gerne mag. So, falls ihr euch jetzt fragt, warum zum Henke mache ich das Ganze denn in Comic Sans? Ihr kennt vielleicht den Gag, wenn ihr schon mal eine Präsentation gesehen habt von den OpenBSD-Developern, die machen auch gerne das Ganze in Comic Sans. Aber ich dachte mir, ich bin keiner, deswegen frage ich mal demokratisch einfach im FattyWars nach und hab da mal ein Poll gemacht, also Leute soll ich das in Comic Sans oder in einem anderen Front machen. Und ihr seht, ganz knapp hat Comic Sans gewonnen, das heißt dementsprechend, ja, habt ihr jetzt die nächste Zeit dann einfach das Verkünden, das Ganze in Comic Sans zu sehen. Wer von euch hat noch nie irgendwas von OpenBSD gehört? Mal kurz Hand hoch. Okay, niemand hebt die Hand, das ist schon mal sehr gut. Wer von euch hat denn schon mal OpenBSD eingesetzt? Mal zumindest installiert, mal bist du mit rumgespielt. Das sind doch bestimmt so zehn, zwölf Hände, das ist gut. Jetzt die ultimative Grätchenfrage, wer von euch setzt ein OpenSSH ein? Herr Vorhagen, da gehen alle Hände hoch. Warum frage ich das ganz bewusst? Falls ihr es noch nicht wusstet, OpenSSH ist ein integraler Bestandteil von OpenBSD und wird auch von den OpenBSD-Developern aktiv maintain. Das heißt, immer mit dem neuesten OpenBSD-Release gibt es auch das neueste OpenSSH-Release. Es gibt noch eine ganze Menge weiterer Tools, die da entsprechend dabei sind. Vielleicht habt ihr schon mal von WiproSSL gehört, das ist OpenBSD-Version von OpenSSL, die einfach nach dem Hardbleed-Schwachstellen-Disaster als Fog geendet ist. Es gibt noch ein paar weitere Sachen, vielleicht eine, die nicht so ganz bekannt ist. Das Team-Max, dieser Screenersatz, dieser Terminal-Multiplexer ist ebenfalls Nicollus Marriott, ein OpenBSD-Entwickler, der das Ganze auch dort macht. Warum OpenBSD? Warum erzähle ich nicht irgendwas über Artschlinux oder sonst irgendwas? Wie ist eigentlich so die Selbstwahrnehmung des Projektes? Das Spannende finde ich zwei Setzchen, die ich euch mal kopiert habe. Das ist so ein bisschen das integrale Selbstverständnis. Sie begreifen sich halt als ein Projekt mit relativ starker Security. Und damals, das ist schon ein bisschen älter, man verstand sich halt oder man will sich als Leading number one in Security einfach verstehen. Und den Slogan, den ich vorhin schon durchs Auditorium hab, hauen und hören, der prankt oben auf der Webseite. Das ist ganz klassisch, diese only two remote halls and default installation for a heck of a long time. Relativ interessant, ihr könnt mal an der Historium Version Control System nachvollziehen, wie sich und wann sich dieser Slogan verändert hat. Also das ist relativ schön zu sehen. Aber ich meine, eine gute Statistik. So, was macht denn jetzt eigentlich so ein OpenBSD System aus? Was macht es denn irgendwie anders? Und warum ist es denn eigentlich nicht yet another Linux? Historie habe ich mir mal gespart, aber für alle, die die Historie der BSDs nicht so ganz verfolgt haben, das Ganze ist schon relativ alt, kommt aus den 70er Jahren des letzten Jahrtausends. Und hat sich dann über die 80er Jahre als 4BSD weiterentwickelt und irgendwann Mitte in der 90er Jahre sind dann verschiedene neue BSDs entstanden und 1996 ist dann auch OpenBSD entstanden. Also ihr seht, inzwischen darf OpenBSD in den USA auch legal trinken. Hat schon ein paar Echen auf dem Buckel. Was ist denn jetzt das Besondere oder was unterscheidet denn das? Wenn ihr schon mal unter Linux unterwegs walten, ihr kennt irgendwie so ein Debian-System, dann wisst ihr, da gibt es irgendwie einen Kernel, da gibt es eine ganze Menge an verschiedenen Utilities, zumindest installieren Core-Utilities, gibt es da irgendwelche File-System-Jacker, da gibt es eine Bash, da gibt es eine Lipsi und was auch immer. Und alles entstand irgendwie aus den Federn von unterschiedlichen Open-Source-Autor. Bei BSD-Distribution ist das so ein bisschen anders, da gibt es in der Regel etwas, dass sich Base-on-Base ist im Prinzip das rundum glücklich sorglos Paket, was mindestens ein Kernel enthält, das gesamte User-Land, also sowas von BIN-LS über die Shell bis zu Libraries hin bis hin zum Compiler. Und das Ganze wird auch nicht irgendwie separat maintain, sondern es wird wirklich On-Block als Eins maintain. Was alle BSDs gemeinsam haben, ist irgendein Bild-Framework, um Third-Party-Applications zu bauen, also den Firefox, den Chrome, das auch immer man haben will, das nennt sich in der Regel irgendwas Ports. Dragonfly haben die Ports, FreeBSD hat die FreeBSD Ports und so weiter. Und bei OpenBSD gibt es noch eine Besonderheit, X11, also das klassische Window-Manager-System heißt bei Ihnen Xenocarra, nicht, weil krasse Modifikationen drin sind, sondern einfach die, die dahinter steckt, ist halt ein einheitliches Bild-Framework zu haben. So, was steckt jetzt eigentlich in so einem OpenBSD drin, was wir als Basis-Installation machen. Und ihr seht jetzt, das ist eine ganze Menge, die da drin steckt. Also der erwähnte Kernel ist da, das User-Land ist da, aber da ist noch eine ganze Menge Weitragrempel dabei. Also wenn ihr da nur eine Default-Installation macht, ist dann SSH Server dabei, da ist ein NTP-Diemen dabei, da ist ein HTT-Diemen dabei, da ist ein SMTP-Diemen dabei, für die Netzwerke ist ein BGP-Diemen dabei und so weiter und so fort. Also ihr seht, das kommt eigentlich fast komplett. Was in der Regel zumindest bei mir dazu führt, wenn ich ein OpenBSD-Server einrichte, dann brauche ich eigentlich selten mehr als eine Basis-Installation und der ganze Rest ist eigentlich schon dabei. Was für Release es gibt jetzt, es gibt ganz klassisch, was das nennt sich halt den, das Release und das ist das, was es fast der Uhr nach alle sechs Monate gibt. In der Regel immer rund um den 1. Mai und rund um den 1. November gibt es tatsächlich einen OpenBSD Release, die duale Version ist 6.5. Wie komme ich jetzt zu Security Fixes, zu sonstigen Fixes, da gibt es die sogenannte Stable Branch, das ist einfach das Release plus alles, was an Fixes in dem Moment reingekommen ist. Wie man zu den entsprechenden Daten kommt, gehe ich später nochmal zu einem. Und das, was ich persönlich eigentlich am spannendsten finde, ist das sogenannte Current, das ist die Development Branch. Das heißt, das ist die Version innerhalb von OpenBSD, der die gesamte Entwicklung stattfindet. Und was relativ Interessant ist, ist es die Art und Weise, wie Current gehandelt wird. In der Regel, wenn ihr so einen klassischen Release-Prozess kennt, gibt es eine ganze Menge Softwareentwicklung, die passiert und ab einem gewissen Zeitpunkt gibt es dann irgendwie eine Alfa-Version. Und ab dieser Alfa-Version fangen dann die ersten Menschen an zu testen, dann gibt es eine Public Beta, dann testen mehr Menschen, aber irgendwie dieser Zeitraum zwischen ich fange an zu testen und im eigentlichen Release, der ist relativ kurz. Und bei OpenBSD ist die Philosophie, alle, die sich irgendwie tiefer damit auskennen, die selbst entwickeln oder die Lust drauf haben, sollen bitte Current fahren. Und damit bekommt man wirklich tagesaktuell alle neuen Features und alle neuen Bucks. Hat den enorm großen Vorteil, wenn man die neuen Bucks direkt frei Haus bekommt, kann man auch direkt einen ordentlichen Buck-Report aufmachen. Und dementsprechend wird das Release halt kontinuierlich getestet, bevor es irgendwann mal für alle dann als Point Release zur Verfügung steht. Also das ist ein relativ anderer Ansatz, als ihr in den meisten klassischen Softwareprojekten kennt. Selbst wenn ihr einen Rolling Release habt, bei einem Arch Linux oder so, das sind einfach so viele unterschiedliche Komponenten, da testet ihr das halt nicht alles am Block. Hier fehlt irgendwie so ein praktisches Tisch hin. Okay, jetzt habe ich gesagt, es gibt da so eine Stable Branch und irgendwie laufen da Fixes, Erratas etc. ein. Wie komme ich denn jetzt dran? Das ist die ultimative Frage, die sich natürlich jeder stellt, der irgendwie einen Server betreibt. Und da gibt es die schöne und bequeme Variante und die funktionierende Erfahne, aber ein bisschen unbequeme Variante. Die schöne Variante ist das, was man gemeinhin eigentlich auf fast allen Betriebssystemen kennt, sind Binary Patches. Und unter OpenBSD bekommt man die über ein Tool, das nennt sich Sys Patch. Und zwar jeweils für die letzten zwei aktuell supporteten Releases. Also das wäre jetzt aktuell 6.5 und das davor 6.4. So, wo ist jetzt der Haken an der ganzen Geschichte? Den Haken habt ihr auf den Slides oben drauf. Also ihr müsst 64 oder 32-bit Intel fahren. Da gibt es in letzter Zeit relativ häufig Patches aus diversen Gründen. Und 64-bit ARM. Dann könnt ihr wirklich Sys Patch eingeben. Ihr könnt es über den Crunch-Up laufen lassen und habt halt immer die aktuellsten Updates drin. So, für alle, die ein Spark, einen Long-Zion, eine SGI Workstation oder eine HP Precision Architecture noch ihr Eigen nennen und gerne ihren Keller heizen. Für die gibt es leider keine offiziellen Patches. Da bedeutet das halt einfach, ihr organisiert euch den Source Code. Ihr checkt das letzte Stable Release aus und baut dann praktisch das gesamte Release mit ein bisschen Makefube selber. Dauert ein bisschen länger, je nachdem, welche Architektur man unterwegs ist, weil teilweise sind es halt nicht so die schnellsten. Also da kann man auch schon mal ein Momentchen am Kompilen sein. Das Schöne ist aber dadurch, dass BSD ganz klassischen Source Code Hintergrund habt, ist das System so fein abgestimmt, dass ihr wirklich mit ein, zwei Make-Commandos da entsprechend das gesamte System übersetzen könnt, ohne dass irgendwas schiefgeht, weil das ist einfach schon 35 Jahre lang extrem gut getestet. Also das sind so die zwei klassischen Wege, entweder Bineer Patches oder entsprechend den Source einzusetzen. Der dritte Weg für alle, die dieses erwähnte Development Release namens Current einsetzen, da wird es unglaublich komfortabel. Da gibt es nämlich Bineer Snapshots, die jede Nacht neu erzeugt werden. Also kontinuierlich alle Changes, die irgendwie in den Source Tree eingecheckt werden, werden über Bildmaschinen gebaut. Bei einer AMD-Maschine, AMD64-Architektur gibt es da zweimal am Tag. PMAL-Daumen ist ein neues Release. Bei so einer PowerPC-Architektur kann das schon mal ein Momentchen länger dauern. Hat den enorm großen Vorteil für euch, wenn ihr so eine Kiste updaten wollt, dann geht es manuell oder inzwischen bei dem aktuellen Current auch vollautomatisch. Also die Kiste hier habe ich gestern Morgen beim Zähneputzen komplett geupdatet. Also zwei Minuten mit der elektrischen Zahnbürste. Und da ist dann der neueste Development Snapshot inklusive X installiert. Also das ist inzwischen relativ komfortabel. So, jetzt haben wir ein komplettes Basis-System. Jetzt wissen wir, wie wir es updaten. Die Installation verzeiht mir es so einfach, dass ich die in den Slides bewusst übersprungen habe. Es kommt natürlich die Frage, wie installiere ich denn irgendwelche Software auf dieser Kiste drauf. Das sind die zwei Möglichkeiten, um Software auf ein BSD-System draufzubringen. Nämlich einmal Packages. Und das andere sind Ports. So, wo liegt jetzt der Unterschied? Ich stelle bewusst nicht zuerst die Ports vor, sondern erst die Packages. Das ist ganz klassisch, das was ihr auch kennt, wenn ihr unter irgendeinem Linux unterwegs seid. Ob das ein Arch, ein Debian, ein Ubuntu, ein Fedora ist, ist vollkommen wurscht. Das ist am Ende irgendein Containerchen in irgendeinem Format mit Metadaten in dem Bineadaten drin stecken. RPM, Depth, Tarbols. Und hier ist es halt auch das OpenBSD eigene Format. Und die Packages bekommt ihr halt vorkompalt und könnt sie einfach installieren über eine ganze Menge on Tools. Jetzt kommt eine Besonderheit. Die ist am Anfang extrem ungewöhnlich, wenn man irgendwie aus der Linux-Welt kommt und wundert sich dann auf einmal, wo sind denn jetzt meine Updates für Packages? Packages von Stable Release werden kurz vor dem Release einmal gebaut und stehen dann zum Release-Zeitpunkt zur Verfügung. Das heißt, in dem Moment, wo ihr so ein Release installiert, habt ihr neue Pakete oder ihr könnt, wenn ihr upgraded, einfach die Pakete upgrade. Danach gibt es aber bewusst keine Updates mehr, außer inoffiziell von Entwicklern oder über eine Firma, bei der auch OpenBSD Entwickler drin stecken, das ist diese erwähnte MT-Firma. So, woher kommt das jetzt? Es hat natürlich wie bei jedem Open-Source-Projekt so ein bisschen was mit Personalmangel zu tun. Und da muss man so diesen Trade-off schaffen zwischen ich kann das leisten, was ein Debian-Security-Team oder eine Ubuntu-Security-Team leistet, ich kann nämlich Backports machen. Das heißt, ich finde eine Sicherheitslücke, ich schnappe mir den aktuellen Source-Code und modifiziere die existierende Version, die ich habe. Das kann man machen, das kostet auf der einen Seite relativ viel Zeit. Auf der anderen Seite ist es natürlich so, die Zeit, die ich dort verliere, ist natürlich nicht in das Testen von aktuellen Paketen stecken. Das heißt dementsprechend muss ich da einfach den Trade-off finden und der Trade-off für die OpenBSD Entwickler ist halt der. Also nicht wundern, wenn ihr dann Pakete-Updater auf so einem Stable-Release und da passiert einfach nicht viel. Deswegen in der Regel setze ich auf meinen System hier das Open-Up von MT hier ein, beziehungsweise die Dinge, die mir wirklich wichtig sind, die komparelich halt nach. Aber in der Regel ist das halt nicht ganz so viel. Für current, current ist ein ganz klassisches Rolling-Release. Das heißt, sobald der Bilder angelaufen ist, einmal die gesamten Sachen durchgebaut hat, gibt es neue Pakete. Und in der Regel innerhalb von 24 Stunden, bis das durch die Mirrors durchsynchronisiert ist, habt ihr alles Bauch und könnt dementsprechend die Sachen installieren. Also fühlt sich an, wie ein Rolling-Release ist ein Rolling-Release und wer sich irgendwie in den Gegenden bewegt, wird sich da auch sofort zu Hause fühlen. So, wie komme ich jetzt zu meinen Paketen? Das habe ich bewusst am Anfang von der Reihenfolge umgedreht. Das liegt an dem Zitat, was da unten den Grau hinterlegt steht. Zu diesen Paketen kommt man über ein sogenanntes Portsbildsystem. Und das könnt ihr euch ganz klassisch vorstellen, wie es auch unter allen anderen Distributionen ist. Hier ist es jetzt ein Make-File. Das heißt, wenn ich mir irgendwie ein Genome, nein, das ist vielleicht ein bisschen groß, bleiben wir mal bei einem Wim. Wenn ich mir einfach ein Wim-Editor bauen will, dann gehe ich halt in ein gewisses Verzeichnis. Das nennt sich dann User-Ports-Editor-Swim und sage Make. Und danach kümmert sich ein Bild-Framework um alles. Also, der lädt die Tarballs aus dem Internet, der lädt alle Abhängigkeiten unter, der baut das Ganze durch und am Schluss fällt dann wieder ein Packet-Schinken raus. So, klassisch. Jetzt, dieses Zitat, was ich euch da auf die Folie kopiert habe. Ich hoffe, die letzten 3 können es lesen. Ist das Graube euch da hinten lesbar? Ich sehe Nicken hervorragend. Das ist ein offizielles Zitat aus der FAQ. Und das ist leicht anders zu dem, was ihr vielleicht von anderen BSD-Distributionen gewohnt seid. Wo es durchaus Usus ist, sich extrem viel in Port selber zu kompeilen. Sagen die OpenBSD-Lehrheit, hey, lasst es lieber. Nehmt einfach bitte Pakete. Jetzt kann man sich natürlich die Frage stellen, woher kommt das? Warum greift da irgendjemand in meine Freiheit einzubauen, was ich will? Das ist ganz einfach. Je nachdem, wie lange ihr schon in dieser Welt unterwegs seid, kennt ihr noch die Sprüche über Gentoo-Entwickler. Compiles, du noch, oder arbeitest du schon. Wo man dann ganz viel an Bildflex und an Minus02,04 hast du nicht gesehen, rumgebaut hat, damit es halt möglichst schnell läuft. So, was machen diese ganzen Compilerflex, die man modifizieren kann? Die fummeln natürlich am Ende des Tages, am Binairecode, am Compilat rum. Und in dem Moment kann das natürlich bedeuten, vier Personen installieren viermal den WIM und viermal gibt es einen anderen Binairecode, weil jeder halt andere Compilerflex irgendwie getüttelt hat. Und das ist natürlich in dem Moment blöd, wenn irgendwie ein Bug Report eingeht, so, hey, mein WIM geht aus den und den Gründen nicht. Dann sagt der Nächste bei mir aber schon. Und der Trotte sagt, ja, bei mir geht es aber schon, aber wird grün. Und da ist die Idee natürlich einfach zu sagen, wenn ihr die Pakete von uns nehmt, habt ihr allen WIM und der ist immer grün. Also, ich persönlich, früher unter OpenBSD war viel Compilen angesagt, inzwischen ist es so, wenn ich auf OpenBSD mal was kompeile, dann ist halt irgendwie Weihnachten oder ich will halt irgendwie aktiv Entwickler fixes testen. Aber ansonsten läuft das bei mir alles aus Binaire, Paketen oder halt Aussätze. So, das Ding ist installiert, das Ding ist up-to-date. Fühlt sich das jetzt irgendwie anders an? Oder sieht das auch nur aus, wie hat einer der Linux? Da kommt irgendwie ein Command-Land-Prompt hoch und am Ende des Tages sind wir irgendwie alle glücklich. Im Prinzip ja. Es gibt nur einige Dinge, die werden euch definitiv auffallen. Also wer Lust hat, kann sich gerne mal ein ISO-Image ziehen und hier direkt danach mal eine virtuelle Maschine werfen. Dann kann man das relativ schnell sehen. So, das erste, was euch definitiv auffallen wird und das ist ja so ein bisschen die Krätschen-Fragen, welche Shell setzt du denn ein? Ist die default-Shell unter OpenBSD ist weder eine Bash, noch eine Dash, noch eine C-Shell, noch ein TC-Shell, sondern was ganz anderes, nämlich ein Fog der Public Domain-Korn-Shell aus den 90ern. Da hinten schmunzelt schon jemand. Es ist halt eine eher ungewöhnliche Shell. Wer von euch setzt eine Korn-Shell ein, ohne OpenBSD-User zu sein? Also von hier oben sehe ich tausende Hände nach oben gehen. Also effektiv gar keiner. Warum das Ganze? Historisch wird es da wahrscheinlich ganz viele Gründe für geben. Auf der Mailing-Liste war irgendwann mal die Rede davon. Also eine statisch gelingte Korn-Shell ist halt einfach nur halb so groß wie eine dynamisch gelingte Bash. Und auch einfach von dem Zeilen an Source Code, die da ist, ist die Korn-Shell doch signifikant kleiner als andere Shells. Also ich weiß nicht, wie jetzt der Vergleich mit einer Z-Shell ist oder mit einer Fischshell, aber ich vermute bedeutend größer. Aber also trotzdem, probiert das mal aus, ist unglaublich bequem, kann auch farben und kann completion geht wirklich alles. Man kann damit hervorragend gut arbeiten und fühlt sich irgendwie auch gut. Das ist so das allererste. Das zweite, was euch definitiv begegnen wird, als Ruth einloggt, ist das Thema, wie werde ich denn Ruth? Mal Hand hoch, wer von euch setzt denn Sudo ein? Und jetzt alle Hände runter, von denen die wussten, dass Sudo von einem OpenBSD-Developer kommt. Ganz wenige Hände, jetzt nachdem die Logik geklärt ist. Also tatsächlich ist es so, Sudo entstammt von Todd Miller ist immer noch ein relativ aktiver OpenBSD-Entwickler, schraubt dann Sudo rum, schraubt aber auch an diversesten Bereichen in OpenBSD rum. Also ist es irgendwie nur logisch und konsequent, dass Sudo natürlich auch ein integraler Bestandteil von OpenBSD ist. Leider ist Sudo tot in OpenBSD und Long-Lebe-Do-Es. Jetzt ist natürlich die Frage so, warum zum Henker, wenn ein OpenBSD-Entwickler schon Sudo macht, warum tauscht man dann tatsächlich Sudo innerhalb der Distribution aus? Und da gibt es einen extrem coolen Blockpost dazu, den will ich gar nicht vorne wegnehmen. Also ich werde die Slides danach online stellen und alles, was ihr hier kursiv seht, sind dementsprechend Links auf Hintergrundinformation. Und die Idee ist halt einfach, eine Version von Sudo zu haben, die bedeutend kleiner ist, und persönlich, was ich auch noch gut finde, ist die Grammatik zum Konfigurieren, ist einfach so ein klein bisschen anders. Es ist bewusst kein Full-Blown-Sudo-Ersatz, also ihr werdet nicht glücklich, wenn ihr dann ein gesamt riesiges Setting habt. Dafür ist dann einfach doch Sudo aus den Packages verfügbar. So, wie sieht das jetzt aus, wenn man das ganz normal miteinander vergleicht? Also ich habe hier Milchmädchen Style, mal die Lines of C Code aus mit C-Lock gezählt. Also man möge mir die statistische Ungenauigkeit verzeihen, aber ihr könnt alleine schon sehen, okay, 9000 versus 500 Zeilen, das ist definitiv eine Unterschied und die Wahrscheinlichkeit, einfach, dass ich in 500 Zeilen ein Fehler mache, die ist bedeutend geringer als in 9000 Zeilen. Der kann nicht weniger schlimm sein, aber es gibt halt einfach eine statistische Wahrscheinlichkeit. So, das wird euch definitiv auf einem OpenBSD begegnen und dann müsst ihr eine sogenannte Do-as-Conf schreiben und die sieht dann irgendwie so aus. Ja, hier oben möchte ich irgendwie dem User-User irgendwelche Rechte als Root einräumen. Persist bedeutet noch, naja, speichere mir mein Passwort mal eine gewisse Zeit. Root-Root, okay, der soll auch bei Do-as, wenn ich mich mal vertippen kann, Passwort eingeben müssen. Espin-Halt soll der User bitte ohne Passwort eingeben und was ihr hier unten seht, sind mal zwei längere Varianten, wo man auch noch Umgebungsvariablen mit übergeben kann, was das hier einfach ist. Ich führe alle Browser als separator User aus und ich brauche halt einfach die Sodu-Regel, um die Browser dann als andere User ausführen zu können. Also sieht irgendwie ein bisschen schicker aus als das, was man so von der Do-as-Conf kennt. Also da gibt es ja diverse Varianten an Chaos, die man in so einer Do-as-Conf erzeugen kann. So weit, so gut. Was kommt denn jetzt als Nächstes? Das nächste, was interessant und ungewöhnlich ist, ist ein klitzekleines Tool. Das nennt sich Signify. Und Signify macht genau das, was ich da auf der Slide stehen habe. Es verifiziert Signaturen von irgendetwas, was man gerne verifiziert haben will. Üblicherweise bei ganz klassischen Betriebssystems ist das alles, was irgendwie an Installations, Medien, Daten etc. über das Netz kommt. Und natürlich alles, was irgendwie an vorkompeilten Binderpaketen über das Netz kommt. So, Signify, schön und gut. Aber warum zum Henker nicht GNU-PG oder irgendein PGP? Das nutzen alle anderen ja auch. Die Frage haben sich damals als das Thema aktuell war, natürlich auch die OpenBS-Dealer gestellt. Und ich habe euch hier mal zwei Zitate des Outdoors von Signify mitgebracht. Das erste, was er halt gesagt hat, na ja, wir wollten schon irgendwie sicherstellen, dass der Code, den wir dann auch in unser Basissystem reinpacken, weil es muss ja dann gemacht werden, sonst kann ich ja nicht die Signaturen verifizieren. Der muss irgendwie unseren Qualitätsstandards entsprechen. Soweit so gut ist ja ein Extremherr aus Ansinnen. Was damit natürlich einhergeht, ist die Komplexität des Codes. Und alles das, was man so bei klassischem GNU-PG kennt, ist halt schon ein Stückchen komplexes Stückchen Code. Und das Ganze will man vielleicht irgendwann mal auditieren. Und das wird natürlich schwierig. Wenn wer schon mal Code auditiert hat, das ist nicht so irgendwie, macht nicht so viel Spaß. Ja, und dann hat er natürlich bewusst die richtige Frage gestellt. Selbst wenn wir eine absolut perfekte Codebasis für PGP hätten, dann müssten wir sie immer noch finden. Und in dem Vortrag, aus dem ich dieses Zitat rausgenommen habe, hat er halt Matthew Green, den Professor aus den USA für Krypto, zitiert, der gesagt hat, ich habe hier irgendwie 47 PGP-Installationen, welche von denen nehme ich denn jetzt? Und wenn Matthew Green die Frage stellt, ist sie natürlich durchaus berechtigt. Und deswegen haben sie sich gedacht, okay, dann bauen wir das Ding einfach selber. Wir können SSH, damit können wir irgendwie Krypto. Und dann haben sie sich halt einfach signifall gebaut. Ist inzwischen ein bisschen angewachsen, aber ihr seht es einfach hier vom Größenvergleich, da sind wir bei 200.000 Zeilen, über das ist 2.000 Zeilen, also um den Faktor, 100 mehr Code-Zahlen. Das bedeutet bei Leibel auch nicht, dass hier vorne das alles nur zum signieren und zum verifizieren drinsteckt. Da steckt natürlich noch unglaublich viel anderes. Aber die Statistik spricht da so ein bisschen für Sie. Also, eine ganz besondere, die vielen am Anfang immer wieder auffällen, es gibt da so irgendetwas, das nennt sich Generic. Was ist denn das? Wer hat unter Linux schon mal händisch einen Kernel Compile? Ja, ja, so Make, Make, das ist das BZ-Config irgendwas. Okay, das sind tatsächlich schon einige. Wer von euch hat vorher irgendwie mit einem Make-Menu-Config an dieser Konfiguration rumgetüttelt? Das ist fast dieselbe Zahl an Händen, die jetzt vorher den Kernel compiled haben. Ich setze OpenBSD seit 99 mit mehr oder weniger Pausen ein. Es kommt unglaublich selten vor, dass ich irgendwann mal an der Kernel-Config rumtüttle und die Idee dahinter steckt ist, es gibt halt eine generische Konfiguration, die ist vor allem. Das ist diese sogenannte Generic-Config. Ich will jetzt gar nicht in dieses Detail gehen, da könnten wir noch eine Stunde darüber reden. Ich will einfach noch ein bisschen was zu den Hintergründen und zu den Ideen sagen. Wenn ihr schon mal irgendwie in einem Open-Source-Projekt nen Bug-Report bekommen habt und da steht drin, Work for me, oder doesn't work for me, dann ist natürlich immer die Frage, okay, in welcher Umgebung funktioniert es dann für dich. Und wenn man jetzt einen krass handkompalten Kernel hat, indem man die Sachen rausgenommen hat, die Sachen reingenommen hat, dann ist das natürlich absolut nicht deterministisch, wie man jetzt an diesem Bug-Report rangeht. Und die Idee bei OpenBSD ist halt, wenn du irgendwie über einen Fehler stolperst und du vermutest, es ist der Kernel, dann teste bitte mit diesem Generic-Con. Wenn es dann immer noch geht, dann machst du einen ordentlichen Bug-Report. Weil nicht, dass es daran liegt, dass du irgendwas beim Kompilen vertüttelt hast. Also das ist so einer der bemerkenswertesten Unterschiede. Und hier unten seht ihr mal die komplette Versioning-Zeile meines Kernels, die jetzt gerade hier auf dieser Kiste draufläuft. Also ihr seht, das ist vom 29. Und das ist der, den ich morgens beim Zähne putzen, hier auf dieser Kiste installiert habe. So, jetzt haben wir ganz viele Übergrundlagen geredet und am Anfang bin ich doch anmoderiert worden, da gibt es doch irgendwie Security-Features. Dann lasst uns auch mal ein bisschen über Security-Features reden. So, ganz am Anfang, wenn man über Security redet, dann redet Deutsch immer unglaublich gerne über die Toms. Das sind die technischen organisatorischen Maßnahmen. Deswegen fange ich jetzt hier auch mal mit den organisatorischen Maßnahmen an. Es gibt nämlich einen interessanten Prozess bei OpenBSD, der nennt sich OK-Fragezeichen. Und was ihr hier seht, sind einfach wahllos rausgegriffene Ausschnitte aus irgendwelchen Mailing-Listen-Postings, an denen Haltsource-Codes hinten dran hängen. Und die Frage, die dann jeder einzelne Developer gestellt hat, egal, ob er extrem frisch ist, wie er halt schon seit 20 Jahren mitentwickelt, ist das für irgendjemand OK. Kann das irgendjemand für mich testen und kann jemand bestätigen, dass der Code korrekt ist? Und insbesondere, wenn man mal lernen will, wie Menschen Code Review über Mails machen, ist das unglaublich wertvoll und eine interessante Erfahrung, sich mal auf der OpenBSD-Tag-Mailing-Liste zu subscriben, weil da passiert nämlich genau, dass das wirklich Source-Code-Review über Mails stattfindet. Also finde ich extrem beeindruckend. So, jetzt hat man die Frage nach dem OK gestellt. Irgendwann bekommt man dann ja auch das OK. Und hier seht ihr dasselbe in Grün. Das sind jetzt Screenshots vom Versions-Control-System, in dem halt einfach genau die Bestätigung drinnen steht. Für diesen Change hat mir irgendwie der Peter, der Mike und der Rake, die haben mir das OK gegeben. Das heißt, die sind damit einverstanden, was ich gemacht habe. Also das heißt, einerseits passiert natürlich ein extrem gutes Testing, auf der anderen Seite hat man so eine Art Vier-Augen-Pronzip. Das heißt, jemand hat schon mal drüber geguckt. Also das ist gängiger als bei allen anderen BSDs. Korrigiert mich, wenn ich da falsch liege, aber ich vermute auch, dass es auch bei FreeBSD nicht so stark gelebt wird. So, kommen wir ganz langsam in die technischen Maßnahmen rein. OpenBSD schimpft sich immer so ein bisschen mit dem Slogan Secure by default. Das kann unglaublich viel und gar nicht sein. Was bedeutet das einfach? Es gibt so einen kleinen Scherz unter den OpenBSD-Entwicklern der Lenz, in der es sich lässt, knobbiness, nämlich weniger Knöpfe. Und weniger Knöpfe ist eine unglaublich gute Sache. Wer von euch hat schon mal was in den letzten zwei Wochen irgendwie ein Social Networks etc. von der Webseite HowToMakeLinuxFastAgain.com gehört? Das sind doch ein paar. Vor allem die, die die Webseite noch nicht gesehen haben, das ist einfach eine weiße Seite, auf der steht ein Command, also für die Linux Kernel Boot Command Line, eine Reihenfolge von Optionen, wie man diese ganzen CPU-Schwachstellen, Mitigationen, also MDS Spectrum, Meltdown etc., L1TF, alle schön abschalten, um dann wieder entsprechend sein System schnell zu bekommen. Das ist natürlich absolut humoristisch gemeint. Das ist auch total witzig. Aber der Unterschied, der hier ist unter OpenBSD, kriegt dir nichts abgeschaltet. Weder MDS, noch L1TF, noch Spectrum, noch Meltdown, noch sonst irgendwas. Es gibt eine einzige Sache, wo ihr tatsächlich ein Knopf umdrehen könnt, und das heißt, ihr könnt Hyperthreading wieder auf die CPUs zuschalten. Aber per Default ist Hyperthreading auch aus. Swap, wenn ihr eine Swap-Partition anlegt, die ist per Default verschlüsselt, wenn ihr eine Festplattenverschlüsselung an sich im Einsatz habt, dann könnt ihr nicht irgendwie bei DM-Crop-Parameter wählen. Also ich habe mich da früher mal gefragt, nämlich jetzt AIS, nämlich AISXTC, nämlich AISGCM, und irgendwo habe ich mal gelesen, 128 Bit-Key-Länge ist besser als 256, und wieviel Runden sollte ich jetzt, das funktioniert alles unter OpenBSD, weil da ist das hart kompalt. Da hat sich jemand, der Ahnung hat, von Krupto, diesen Menschen Gedanken gemacht, was wäre da sinnvoll, und das Einzige, was ihr anpassen könnt, ist die Zahl der Runden, mit der einfach der Key vorher gehäscht wird. Ansonsten, was steckt da unter der Haube drin? Das ist jetzt eine Folie, wo ich euch wirklich einfach nur mit irgendwelchen Worten totwerfe, und ganz gerne auf diese Präsentation, die da verlinkt ist, die ist von Theodorat, so Dictator of Life von OpenBSD, und der hat eine hervorragende Präsentation zugehalten, was da unter der Haube alles passiert, um irgendwie Exploits und Konsorten das Leben schwer zu machen. Also schaut euch das mal rein. Im Nachgang kann ich auch vielleicht zu ein oder anderem davon eine Frage beantworten, aber bei drei Viertel der Sachen, das ist abgefahren, komplex und hilft hoffentlich gut. Also hier steht, da steckt eine ganze Menge, unter der Haube. Auch was irgendwie was wer angeht. Also wer von euch in der Industrie vielleicht in einem kommerziellen Umfeld unterwegs ist, der kennt so die Skelette im Keller, so alte Produkte, wo er der Server aus dem Rack kostet bevor das nächste Update, und sowas gibt es natürlich auch ganz klar in Codebasen, das existieren, und in der Regel tut man sich immer so ein bisschen schwer damit, legacy loszuwerden. Die OpenBSD-Dieler sind da ein bisschen proaktiver, als es zu flogen ist. Also es gibt keinen aktiven Bluetooth-Support. Egal wie gut euer Bluetooth-Modul ist, es funktioniert nicht. Kleiner Tipp, man kann das ganz hervorragend umgehen, also ich habe auch Bluetooth-Kopfhörern im OpenBSD stecken, verrate ich euch einfach danach. Es gibt keine Low-Double-Curl-Modules, das heißt, wer irgendwie ein Rootkit zur Laufzeit nachladen will, hat's schwieriger als ein INS-Mod oder KLD-Load. Es gibt kein Linux-Kompatibilitäts-Layer mehr, keine Kerbe aus mehr, irgendwelche Architekturen sind da ausgefogen im Laufe der Zeit. Also eine ganze Menge von dem Krampel haben die Jungs einfach abgeschaltet. So, jetzt gehen wir ein ganz klein bisschen ins Detail, weil ich euch ein paar Dinge zeigen will, die da unter der Haube stecken. Das erste ist ein Versprechen, dass ich euch Blatch zeige. Da steckt jetzt der Wortwitz drin, weil Blatch ist Englisch das Versprechen. Was will ich denn überhaupt versprechen? Vor allem, die diese Notation nicht kennen, das bedeutet, die Man, wenn man sich die Man-Page zu Blatch angucken würde, würde die in der Sektion 2 drin stehen und dementsprechend haben wir es hier einfach mit einem Funktionsaufruf zu tun. So, was macht denn jetzt dieses Blatch? Das hat eine ganz einfache Idee. Wie erzeugt das Sicherheit? So ein Programm an sich, funktioniert wie so ein Koch-Rezept. Das heißt, im Laufe seiner Lebenszeit ruft so ein Programm eine ganze Menge sogenannte System Calls auf. Das ist einfach über eine Library reingelinkte Funktion, wo ich dann sagen kann, ich würde gerne von einem Socket lesen, read, ich würde gerne schreiben, ich würde ihn zumachen, ich will gerne, keine Ahnung, ein verzeichnes Eintrag erzeugen, vollkommen wurscht. Wichtig ist, nur davon gibt es eine ganze Menge. Und die Idee, die hinter Blatch steckt mit vielen anderen Dingen, ist einfach, wir nehmen die System Calls dem Programm weg, die es tatsächlich nicht braucht. Ist die Idee irgendwie Rocket Science Brand New und gibt es dafür die nächsten, die nächste Fieldsmedaille? Nope. Die Idee ist tatsächlich relativ alt. Alt in Anführungszeichen. Mit einer der ersten Sachen war SE Linux von der NSA, es gibt unter FreeBSD, es gibt ein System Call Filter, der sich mit dem Recycum und der Linux gibt es Seccom, wo man irgendwie mit den Berkeley Packet Filtern Dingen da entsprechend System Calls filtern kann. So, gut. Jetzt ist natürlich die Frage, warum? Die Frage gebe ich euch sozusagen als Denkanstoß direkt wieder zurück. Wie viele Programme setzt ihr im täglichen Gebrauch ein, die tatsächlich mit einem dieser genannten Filtersysteme mit einem System Call Filter sauber abgedichtet sind? Also wer von euch hat ein System mit SE Linux am Laufen, egal ob es jetzt eine Workstation ist oder ein Server oder sonst irgendwas, wo tatsächlich ein Großteil der Programme halt über SE Linux geschützt ist? Gibt ihr irgendwie Hey, zwei, hervorragend! Es werden ein paar mehr. Dahinten wird es schon wage, aber einfach provokativ gesagt, ihr wisst einfach wovon ich rede, ich habe eine schöne T-Shirt, ich glaube es heißt irgendwie Set Enforce T0 oder so, wie man SE Linux ausschaltet oder das erste was ich bei Red Hat mache ist den Krampel ausschalten. Also das kommt nicht von ungefähr. So, inwiefern ist denn jetzt Bletch anders, als das, wo ich gerade gesagt habe, was tatsächlich nicht so oft im Einsatz ist? Bletch verfolgt einen einfachen Ansatz, der basiert darauf, dass man ähnliche System Calls und die ähnliche Funktionen erfüllen auch von der Logik her einfach im Gruppen zusammenfasst. Und dem Programm, nicht wirklich Haar-Klein vorgibt, du darfst nur den SystemCall abc.de nutzen, sondern einfach sagt, das Programm darf System Calls aus einer bestimmten Gruppe nutzen. Das ist halt ein Gieß-Scan-Ansatz. Das eine ist Feinkranular, damit natürlich extrem aufwendig und fehleranfällig. Das auf der einen Seite ist einfacher zu implementieren, natürlich, ich gieße mit der Gieß-Scan die System Calls aus. Kann gut sein, muss nicht unbedingt. Wir sehen jetzt solche Gruppen aus. Das ist nur ein Beispiel, es gibt insgesamt, ich weiß es gar nicht, zweistellige Anzahl davon, 10, 12, 14 von diesen Gruppen und was ihr da einmal seht, ist vorne der Name dieser Gruppe, eine Menge von System Calls auf die das Ganze zutrifft und halt, was kann ich damit machen. Das ist die größte Gruppe, eine Menge von System Calls für Standard I.O. Also irgendwie Eingabe, Ausgabe. Ich kann was mit Fallsystem, mit Falldeskriptoren machen, ich kann den Select machen, ich kann irgendwas lesen, ich kann was schreiben, etc. Es gibt eine Gruppe, die beschäftigt, die ist rein mit lesenden Zugriff auf irgendwelche Fahre, etc. Schreibender Zugriff. Es gibt eine Gruppe für irgendwie Socket-Kommunikation für eine 6 Sockets, UNIX Domain Sockets sind da ausgeklammert, da gibt es eine eigene Gruppe für und jetzt die Idee, die dahinter steckt, ist, man guckt sich sein Programm an, versteht, wie das Programm funktioniert und wenn man so wissen, diese Commit-Historie verfolgt, ist das tatsächlich interessant zu sehen, es gibt unglaublich, also Programme, die sehen unglaublich einfach aus, aber tatsächlich sieht man dann so, dass irgendwann ein Commit kommt, das Pletsch komplett verkehrt, das müssen wir an irgendeine andere Stelle machen, also das ist interessant zu sehen. Also Programm lesen, Programm verstehen und an den passenden Stellen verspricht man dann, das Programm nutzt wirklich nur diese SysCalls und wenn ein Programm dann ein SysCalls nutzt, der entsprechend nicht versprochen worden ist, dann kommt der Kernel haut mit dem großen Hammer drauf. Das heißt, effektiv unter OpenBSD kann euer Cut irgendwie nicht ins Netzwerk funken, weil in dem Moment, wo ein Socket aufmachen würde, kann halt einfach der große Hammer. Unterschiedliche Varianten, also es ist nicht so one Pletsch fits it all, sondern man muss halt einfach gucken, wie ist der Funktionsflow meines Programms, wenn ich vielleicht ein Teil hab, was nur Dateioperationen macht, sage ich, du kriegst die Rechte für Dateioperationen, aber nicht für Netzwerkcode und irgendwie ein anderer Teilbaum macht halt Netzwerk, kumpels aber schreibt vielleicht nie auf Datei-System und dementsprechend kann ich dann andere Pletsches angeben. Was immer geht, ich kann auch im Laufe des Programms meinen Trüchter an Pletsches immer enger machen, das heißt, ich kann sie wegnehmen. Ich kann sagen, hier vorne am Anfang zu initializieren. Initialisierungsphase meines Programms brauche ich extrem viele System Calls und irgendwann brauche ich weniger und weniger und dann gibt es aber auch nie wieder mehr. Wenn man dann wieder einen mehr braucht, dann ist das Programm weg. So, so weit, so gut. Nutzt das jetzt überhaupt irgendjemand. Ich hab ja bewusst mal ganz provokativ gesagt, ey, hat das schon mal SE Linux setzt das jemand ein. Dann musste ich natürlich die Frage hier auch für Pletsch einmal mitbringen. Also hier seht ihr mal ein prominentes Beispiel. Ich bin ja froh, dass ihr so zahlreich alle hier gekommen seid, weil eben das Räumchen ist hier der i3 Michael Stapelberg erzählen. Also ich dachte, ihr geht alle zum Herrn Stapelberg oder zum Herr Kompapoka spielen. Also von daher schön, dass sie alle da sein. Und hier habe ich euch mal den Github Auszug mitgebracht, als i3 dementsprechend gepletscht worden ist. Und ihr könnt oben schon von der Commit Description sehen, dass ich da wirklich jemand Gedanken gemacht hat, welche Gruppe brauche ich für welchen Teil das Projekt ist. Und ihr seht auch hier an entsprechend dem Diff, der da rausgekommen ist, der ist nur so groß, wegen dieser einen Besonderheit, da musste man noch entsprechend eine Variable in einem anderen Teil zur Verfügung machen. Also der eigentliche Pletsch-Diff, der ist bedeutend weniger als da diese 26 Zahlen. Könnt ihr euch mal angucken, einfach nach Pletsch-Support bei i3 suchen. Falls jemand von euch i3 einsetzt. So, wie sieht das jetzt aus? Im eigentlichen OpenBSD-Basis-System sind es über 250 Programme, die halt alle unter Pletsch laufen. Das fängt irgendwie an bei ad über cut über wi über alles, was komplexer ist. Also so ein NTP-Diemen oder so ein Webserver oder ein OpenSSH, die sind alle voll gepletscht. In dem Port-System ist es natürlich sowas, das muss man irgendwie immer reinbringen und dann wird es da entsprechend ein bisschen weniger. Aber es geht so die großen Prognene des Betriebssystems, im Betriebssystem, die sind halt auch irgendwie mehr oder weniger gut dabei. Also da ist bewusst nicht heile Welt einfach wegen dieses Gießkann Verfahrens. Aber irgendwie Firefox, Chrome, Iridium, die sind alle gepletscht. Und hier insbesondere, was ich persönlich super finde, ist, da ist ein PDF-Reader dabei. Und wenn ihr heutzutage wisst, was ein PDF alles an lustigen Dingen ist, dann habt ihr hier ein PDF-Reader da echt nicht so viel darf. So mal, so mal um. Hier seht ihr mal ein kleines Screenshot. Ich hoffe, ihr könnt den lesen ganz aktuell frisch von diesem System hier. Einfaches PSAux. Und was ihr hier sehen könnt, ist halt einfach die verschiedenen Prozesse, die gerade laufen. Da ist jede Menge Grümpel dabei. Hier oben haben wir einmal den Firefox, Innet, SMPTP. Und das Interessante ist diese Status-Spalte hier. Überall, wo ihr ein kleines P sieht, der Prozess läuft irgendwie unter Black Shows-Rictions. Und dieses P zieht sich eigentlich relativ weit durch. Also, die nehmen dieses Thema Ikea und Dogfood tatsächlich sehr ernst. Bitte was? Du hast ja ein Thread immer im Kontext eines Prozesses laufen. Von daher. Gut. So, einen kurzen Ausblick noch in ein neues Feature. Das nennt sich Unwheel. Also, wir enthüllen mal das Feilsystem. Irgendjemand hat da extrem viel Humor, was die Benahmung von Sciscalls angeht. So, was bedeutet denn jetzt, dass der Teissystem enthüllen? Die Idee, die da einfach dahinter steckt ist, generell kann ein Prozess sehen. Der läuft irgendwie bei euch auf dem System und innerhalb seiner ganz klassischen Discretionary Access Controls hat er eigentlich die Möglichkeit, alles das zu sehen, was er sehen soll. So, jetzt ist natürlich die Frage, A, muss er das tun? Und B, ist das gut? Und die Frage, muss er das tun? Die ist natürlich definitiv nö. In der Regel muss ein Prozess nur das sehen, was er machen soll. Und ist das gut? Nee, in der Regel ist das auch nicht gut. Das ist einfach die Idee von diesem Bletch Anwiel System Call, da entsprechend die Rechte im Dateisystem ein bisschen einzusstrecken. Wie funktioniert das Ganze? Tatsächlich musste ich euch das mal mitbringen, damit man gleich die Beispiele kapieren. Es ist im Prinzip ein ganz einfacher Funktionsaufruf mit zwei Parametern. Und das erste, was ich angebe, ist der Fahrt. Und das zweite ist ein Set, eine Menge an Flex. Der Fahrt kann eine Datei sein ein Verzeichnis sein, wobei dann reklusiv alles unten drunter mit gilt. So, was passiert jetzt entsprechend, wenn irgendjemand irgendein Prozess auf irgendetwas draufläuft, oder nee, halt, erzähle ich später. Ich mache erstmal das Beispiel. Shit. Ich hätte das Beispiel vor die Konsequenzen machen sollen. Ich mache erstmal das Beispiel und dann springe ich wieder zurück. So, das ist das, was das in der Regel im Prozess sieht. Also, das ist keine vollständige Dateisystem-Hierarchie. Ich habe das Bild gestern nur mit dir gemacht und bin irgendwann wahnsinnig geworden. Ey, ich hasse Bilder machen. Von daher verzeiht mir dieses einfache, simplifizierte Dateisystem. Also per Default sieht im Prozess in der Regel eigentlich alles, wie gesagt, in den Grenzen, in denen ihr etwas sehen darf. Wenn ich jetzt irgendwie meinen Sauscode modifiziere und sage, hey, ich möchte gerne dieses Stückchen, nämlich in dem Fall Slash-EDC enthüllen mit Leserechten, dann sieht der Prozess auf einmal nur noch das. So, jetzt ein Prozess, der in der Regel nur EDC sieht. Na ja, kann funktionieren, vielleicht will man noch irgendwie ein bisschen mehr sehen. Dann kann ich das selbe Spielchen einfach nochmal machen und sage dem Prozess halt einfach, na ja, du darfst noch ein bisschen mehr sehen und hier hast du noch Espin lesend dazu. Ist ein vollkommen arbiträres Beispiel, ergibt überhaupt keinen Sinn, aber das ist für die Demonstration. So, jetzt stellt sie natürlich die Frage, du hast jetzt ein bisschen was hin zugeschaltet, na ja, dann hole ich mir doch einfach wieder Slash und dann sehe ich wieder alles. Der Druck ist, man muss das Ganze sozusagen abschließen, indem man irgendwann zu einem Zeitpunkt mal sagt, so, ab jetzt gibt es kein Unreal mehr, jetzt musste mit dem leben, was du irgendwann mal siehst. So, jetzt springe ich wieder zurück. Was sind denn jetzt die Konsequenzen für so ein Prozess? Alles was irgendwie nicht in den sichtbaren Bereich geschoben ist, kriegt der Prozess, wenn er versucht auf so eine Datei oder irgendwie irgendetwas zuzugreifen, bekommt er das funktioniert nicht und wenn die Flex irgendwie verkehrt gesetzt sind, dann bekommt er entsprechend einen Zusatz, äh, den Zugrufsfehler. Also, wenn ich nur lesende Rechte habe und versuche zu schreiben, bekommt mein Prozess entsprechend dann also ihr seht, man schränkt schrittweise das ein, was der Prozess sehen kann und sagt dann, jetzt ist Schicht und lebt bitte damit. So, nutzt das auch jemand, ja, die Zahl ist deutlich geringer, weil das Feature auch wesentlich neuer ist als bei Bletch, also ihr seht, wir sind hier, ich habe es klein drunter geschrieben, bei 63 Programmen im Base, die Unreal nutzen, also da ist noch viel Luft nach oben, es sind ein paar relativ spannende Sachen dabei, also was ich persönlich immer ganz spannend finde, ist TCP-Dump. Wer TCP-Dump kennt, damit kann man hervorragende Netzwerkpakete analysieren und wer die Security-Historie von den Schwester-Projekten wie Wireshark kennt, weiß, Pasa sind unglaublich komplexe Beasts und da stecken halt gerne mal fette Lücken drin. Je mehr ich halt die Ankluffsoberfläche eindämmen kann, mehr Bletch über an wie über sonst irgendwas, der so bist, ist das natürlich. Das heißt, 100-prozentige Security ist ja nie drunter, das heißt, ich muss es einfach dem Angreifer schwer machen. So, das war jetzt Ethio on Dogfood, wie sieht es denn eigentlich mit dem Rest der Welt aus? Gibt es irgendwelche Third-Party-Programme, die das Ganze überhaupt nutzen? Tatsächlich, die OpenB-Style haben so eine interne Messlatte, die sie anlegen, wenn es damit funktioniert, dann wird es auch mit dem Rest des Planeten auf der Schraube funktionieren. Und zwar haben sie es geschafft, an Wheel in Chromium reinzudübeln. Und Chromium dauert, also der Bild unter OpenB-Style von Chromium dauert länger als der gesamte Rest der Third-Party-Packages. Also das sind irgendwie fünf Millionen Zahlen-Code, die man mit irgendwelchen Obstrusen fuba übersetzt. Auf jeden Fall, der funktioniert tatsächlich. Ich bin ja sonst kein Chrom-User, aber tatsächlich musste ich euch das jetzt mal zeigen. Deswegen habe ich hier mal ein Chromium. Also was ihr hier seht, ist einfach DarkEP, das sind meine Slides, die ich euch gerade zeige. Und das ist der Fahrteil zu meinem Downloads-Verzeichnis. Und wenn ich jetzt hier irgendwie auf das Parent Directory wechseln, dann passiert einfach gar nichts. Ich kann auch nicht in meinen SSH-Folder wechseln. Also mein Webbrowser sieht genau ein Verzeichnis. Das ist gecheatet, weil die Plug-in-Verzeichnisse sind auch dabei. Aber der kommt nicht an Punkt SSH, der kommt nicht an Documents, der kommt gar nichts. Und wenn ich irgendwas angreifen würde heutzutage, dann ist es einfach so ein Monster. Und dementsprechend ist das schon irgendwie ganz nett das Gefühl dazu haben. So, wie sieht's im Rest des Port Streets aus? Jetzt wird's interessant und dürftig. Also da ist noch ganz, ganz viel Luft nach oben. Also ich hab keine Ahnung, warum da diese zwei Schneeflöckchen wie die Desktop-File-Utils und die Schärten in meinem Info dabei sind. Ich weiß es wirklich nicht, ich hab mal gekrappt, aber sind dabei. Also es ist noch ganz, ganz viel Luft entsprechend nach oben. Und wer da Spaß haben will, kann sich da gerne austoben. Hint, es ist nicht trivial, das korrekt zu machen. So. Summa summa um. Famous Last Words freue ich euch auf die Wiese entlassen. Was ist denn eigentlich der Grundwarm Ich OpenBSD-Einsätze? Das war ja jetzt extrem müchtern, relativ faktenbasiert. Warum setze ich denn eigentlich OpenBSD ein? Was ich persönlich ganz stark mag, ist einfach dieses Secure bei default. Das heißt, selbst wenn ich ein System installiere und überhaupt nichts dran mache kann ich mir sicher sein, dass es in einem extrem guten und sicheren Zustand sich befindet. Persönlich erst Reihe ganz außen, was ich total mag und was mir jedes Mal wieder auf die Füße fällt, wenn ich irgendwie eine Linux-Solution upgraden muss, ist dieses Thema no surprises. Also ich habe letztens mal wieder ein Ubuntu geupgraded, weil ich es musste und dann irgendwie war dann auf einmal ein Netplans.io da, den ich in Yaml konfiguriere, der das irgendwie in diesen Networkmanager reinfiedet und ich wollte nur eine IP haben. Also und bei OpenBSD ist es unglaublich toll, es gibt einfach wenig Überraschung. Das heißt, das System funktioniert, man würde sagen wertkonservativ. Exploit Mitigations stecken da jede Menge Trondens ist eine all-in-one-Solution. Das heißt, ich muss mir nicht Gedanken machen, wenn ich irgendwie Mails ausliefe für Status, Reports etc. Welchen Mailserver setze ich ein? Ja, weil der ist einfach dabei. Die Dokumentation ist ganz hervorragend, also die Manpages sind qualitativ super hochwertig und ich komme eigentlich von Dragonfly und da haben wir einen, der macht den ganzen Tag nichts anderes, aber bei OpenBSD ist das so. Und die Community ist absolut aktiv. Also das macht wirklich Spaß und ich weiß auch von mindestens einem Entwickler, der hier auf der GPN ist. So, dann sollte ich es denn irgendwie nicht einsetzen, wenn ihr irgendwie stapelweise Commercial auf the shelf Software habt. Also wird einfach nichts, wenn das Vorkompal, die Binärpakete sind, irgendein SAP, nie machen wir nicht. Dasselbe ist großes Manco von OpenBSD und das 3-System, das ist gut, das ist ordentlich, das ist abgehangen, das lässt sich sauber debacken, aber das ist halt einfach im Vergleich zu einem ZFS oder einem Hammer. Da ist noch Luft nach oben. Also wenn ihr das braucht aus beruflichen sonstigen Gründen, dann lieber was anderes. Performance ist immer so was, Security costet ein bisschen Performance, insbesondere wenn man dann irgendwie 12-Cores hat auf so einem AMD Ryzen, da gibt es bessere Scheduler. Und ein Grund ist ja, ihr mögt es einfach nicht fair, dann hey, hey, Kommittet oder macht mit dem Projekt, was euch am meisten Spaß macht, macht da einfach mit. So, damit, Sumasumau. Schön, dass ihr da wart. Jetzt haben wir noch wieviel Zeit für Fragen, 5 Minuten Zeit für Fragen, ich bin auch danach noch da, ich stehe auf Fragen, Bier etc. Einfach zur Verfügung. Dann viel Dank an XHR. Wir haben hier schon die erste Frage. Direkt hier erst Rei. Da geht das andere Mikrofon jetzt hin. Kann man, also gibt es praktisch Helperprogramme, die sagen, ok, ich ruf einen anderen Prozess auf und ich kann schon Pledge und dieses Anwähl in dem Helperprogramm irgendwie konfigurieren. Und er folgt dann den Prozess ab und das Pledge und Anwähl wirkt dann. Sagen wir mal, die kleine Antwort wäre hier ein. Also die richtige Antwort ist tatsächlich Nein, weil so funktionieren die beiden Dinge nicht. Also insbesondere bei Anwähl wird es halt extrem schwierig. Ich sag bewusst Nein, weil irgendjemand hat auf der Mailingliste ein sogenanntes Pledgeprogramm eingeschickt und mit dem man im Prinzip einen zweiten Prozess übergeben kann. Man gibt eine Menge von Plages an. Der Punkt ist halt nur einfach, da ist die Gießkanne extrem groß. Weil die Idee ist ja eigentlich, du guckst dir an wie verläuft der Kontrollfluss deines Programms und wenn du an diesem Teil nur Netzwerk machst, gibst du auch hier nur Netzwerkplages an. Und wenn du an diesem Teil Dateisystem machst, aber kein Netzwerk, machst du hier nur Dateisystem. Und wenn du so einen Rapper außen rum hast, musst du natürlich die große Gießkanne ausschütten und dann stellt sich natürlich am Ende die Frage, wie viel gewinnst du? Weil wenn du alle Plages machst, dann brauchst du kein Plage. Eine weitere Frage, da hinten gibt es noch eine. Eine Frage zum Imnetsystem. Was benutzt OpenBSD da? Wundert mich, dass das nicht als erste Frage kommt. Definitiv, wer System, die nicht mag, wird sich bei OpenBSD hervorragend wohlfühlen. Da gibt es nämlich nicht. Also da ist ein ganz klassisches BSD inne drunter. Ist unglaublich deterministisch und im Vergleich zu System, die natürlich auch unglaublich langsam fair. Aber dafür kann ich es halt debacken. Und ein System, die kriege ich inzwischen nur noch mit Schmerzen debackt. Also geht mir persönlich so. Also sind das dann wirklich System 5 Skripte? Also da gibt es jetzt nichts, so Watcher wie was, was ich runnit oder andere Indies-Systeme? Es ist kein System 5, es ist ein BSD inne, also du hast keine Run Levels. Und du hast auch jetzt nicht irgendwie Process Supervision, dass du halt irgendwie sagen kannst, du hast gerade mal ein Apache gestorben und führe jetzt bitte Aktionen aus. Also ich persönlich bin kein Freund davon, wenn irgendetwas stirbt, dann hat das irgendwie einen Grund. Das ist wie mit dem Vogel im Bergwerk. Wenn der stirbt, dann gibt es dafür einen Grund. Und dann will ich den Vogel halt nicht irgendwie als Zombie in der Kiste haben, sondern ich will debacken, woran liegt das? Das mit dem Bluetooth. Wie hast du das gemacht? Und gleich Folgefrage geht auch eine Maus. Wenn du gleich zu mir nach vorne kommst, es gibt von Creative einen USB Bluetooth Stick. Das ist so ein klitzekleiner Pumpsl und den stecke ich hier rein, dann meldet sich ein USB Audio Device und dann drücke ich auf diesen Creative Stick drauf, dann perrt er sich mit allem was nicht bei 3 aufm Baum ist, hoffentlich auch mit meinen Kopfhörern. Und dann bin ich fertig. That's it. Also ich hab unter Linux mal Bluetooth konfiguriert. Also ich hätte mir damals diesen Stick gewünscht, weil du steckst ihn rein und er geht instantan. Okay, für eine letzte Frage hätten wir noch Zeit. Gibt es noch irgendwas? Ja, ich würde einfach hier. Bei den anfänglichen Slides war das Xenorama, oder wie war das noch, wie nennt sich das? Xenocara. Und andererseits war im Base System X11 aufgeführt. Also ist X11 in zwei Versionen vorhanden? Ne, also es ist wie gesagt Xenocara ist einfach nur eine Bildumgebung für den modularen X-Server. Und du hast bei der Installation oder auch beim Upgrade die Wahl, was möchtest du denn gerne installieren? Also du kannst wirklich nur ein ganz abgespecktes Basis-System ohne Compiler, ohne irgendwas installieren, dann ist dann auch kein X11 dabei. Also es gibt, sagen wir mal, verschiedene Sets. Es gibt ja die ganzen alten Unix-Games, es gibt was mit Compilers, und dann gibt es den gesamten X-Gerumpel. Aber du bekommst immer alles aus einem Guss. Das heißt, wenn du das irgendwie haben willst, bekommst du es und dann passt auch alles zusammen. Aber du musst es nicht installieren. Also auf nem Server habe ich zum Beispiel kein X11 laufen. Damit, das ist 20 Uhr und die eine Stunde ist rum. Die eine Stunde, mit der wir uns jetzt in einer Einfugung mit OpenBSD beschäftigen konnten. Vielen Dank dir. Ich wünsche euch beiden. Und euch nach einem schönen Abend. Und nochmal ein Applaus.