 Hallo, ich bin die Christian Bolls, meines Zeichens bei OpenSUSE Ab Amor, mein Trainer, so hat es ganz angefangen und nachdem ich dann mal die ganze OpenSUSE Patches nach abstream gemailt habe, hatte ich plötzlich Kommitrechte, ich weiß nicht, zufalls waren das selbst zu kopiert, jetzt waren halt ein paar. Und seitdem bin ich jetzt auch in der Ab Amor-Entwicklung abstreamt dabei. So, fangen wir mal mal an, was macht Ab Amor? Eigentlich ganz einfach, es erlaubt den Programme nur das zu tun, was sie eigentlich tun sollen und alles andere wird blockiert. Das Blöde ist nur, es ist leider nicht ganz so einfach, weil man Ab Amor halt erst mal beibringen muss, was ist erlaubt für das jeweilige Programm. So, warum sollt man Ab Amor verwenden? Optimal wäre natürlich komplett sichere, backfreie Software, aber ganz ehrlich gibt's leider nicht, Programmjahre können nicht saubern und deswegen sollte man besser mal auf die Finger gucken und Ab Amor macht es direkt auf Kernelebene und guckt sich da auch, was die Programme so treiben und blockiert es halt im Zweifelsfall. Erst mal die Beliebung, Gräuberfolie, quasi Hände hoch, wer benutzt Ab Amor? Okay, bisher einer, gut. Dann frage ich mal weiter, auch schon mal Profil selbst erstellt oder verändert? Variante eins mit den Ab Amor Tools? Noch nicht? Mit Medidor? Auch nicht, okay. Die Gegenfrage dürfte eindeutig sein, also die Mehrheit hat Ab Amor noch nicht benutzt. So, dann gucken wir uns mal das Ganze an, unvermeidliche Hello World Script. Könnte ich mal angucken und für das erstelle ich jetzt gleich mal Ab Amor Profil. Funktioniert folgender Masse. Für die Profilerstellung muss man Ruts sein und ruft dann auf AarGenProof. Ich bin jetzt mal mutig und nehme die aktuell Entwicklerversion, also sprich das, was man im Wasser findet und auch ein recht große Patch dann noch nicht committed ist. Also wie gesagt AarGenProof aufrufe als Parameter des Programms, für das man ein Profil erstellen will. Genau. Und dann wechselt man in eine zweite Konsole und ruft einfach das Skript auf. Output wie erwartet, Hello World. So, zurück zu AarGenProof und dann drückt man jetzt immer den Buchstabe, der in Glamre markiert ist, also in dem Fall S for Scan System Log. Und wir sehen jetzt, das Skript hat aufgerufen. Klar. Ich wähle jetzt die Option Inherit. Gleiche für AM, also Inherit bedeutet, dass das Programm mit dem gleiche Profil ausgeführt wird wie das Hauptprogramm. Dann sehe ich mal Lesen und Schreibrechte auf die Tempelotext. Erlaubt man, also Hello. Er macht Konsole Output. In dem Fall könnte man entweder direkt Diff, TT, Y oder man nimmt gleich die Konsole Abstraction, dann bleibt man flexibel, wenn es terminal mal anders heißt. Also Abstractions sind dann immer so Gruppierungen, die bestimmte Sache auf einmal ins Profil bringen. Okay, das wars dann soweit auch schon. Schauen wir uns mal das Profil an. Im Prinzip relativ harmlos, also man sieht Abstractions Base sind einfach so Basis-Sache, die fast alles braucht. Abstractions Bash, weil es ein Bash-Skript ist, also das er zum Beispiel Bash verwendet darf. Konsole hat er mal. Dann lese rechte auf das Skript selbst. Dann die Temp-Datei und die Programme ausführen, also Kartenheim. Das ganze speichern wir jetzt mal. F wie Finish und das war es auch schon. Und so sieht das Ganze jetzt in Bund aus. Dann gehen wir wieder zurück. Das du mal an dem Skript ist jetzt nur, es hat eine Sicherheitslücke. Wer entdeckt sie? Okay, niemand. Ne, eigentlich war es viel leichtere. Also keine Race-Condition. Es wird auch eine Schnecke schaffen. Viel zu kompliziert gedacht. Also man muss jetzt nicht das R.M. irgendwie an der Schlinge oder schon Spaß. Ne, es ist ja ganz schnell die Sim-Link-Altag, weil in Temp beer da schreibe darf. Und das welche erstellen wir uns jetzt mal kurz das Sim-Link. Also ihr seht Temp-Hello-Text zeigt jetzt mal kurz auf die Autoreist-Kies von Ruth. Und ich bin jetzt mal mutig und rufe das Hello World Skript als Ruth auf. Schon schwer sehr langweilig. Vorher noch kurz unser Lok ein Stück weit wegskrollen. Genau. Und dann kommt eben keine Berechtigung. Und das war soweit. Also sprich, ABAMU hat jetzt gerade die Sim-Link-Altage verhindert. Übrigens ein kleiner Tipp, wenn man ABAMU ein Profil mal liest und sieht im Temp-Verzeichnis fixe Dateinahme eigentlich immer tödlich. Das werde ich bitte in der Skripte Make Temp verwenden. Gehen wir wieder zurück. Also was macht ABAMU jetzt im Detail? Dateizugrüfe habe ich schon gezeigt. Es überwacht auch Netzwerkzugrüfe, Capabilities, also Sachen wie Change-Own, Make-Not, Security, die komplette Liste, werde ich den Blick in mensive Capabilities empfehlen. Da ist das Ganze auch immer ganz nicht erklärt. Man kann Air-Limit sitzen, also U-Limit quasi und ganz allgemein ABAMU schränkt Berechtigungen ein. Was macht ABAMU nicht? Also es ersetzt nicht die traditionelle Dateiberrechtigung. Also bitte nicht Change-Mut minus R777 auf Slash machen. Genauso wenig bitte nicht alles als Rout laufe lasse. Also die Benutzerberechtigungen sind schon auf einmal gut. Dann wenn es in der Web-Surfer-Bereich geht, zum Beispiel MySQL, ein Benutzer für jede eigene Aufgabe, für jede eigene Host, was man halt so macht. User-Input validiere, User-Input escape und zu Hosin ist acht des öfteren ganz praktisch. So, kommen wir zu der Frage, ist das Server jetzt sicher? Wenn man das jetzt hundertprozentig mit Ja beantworten würde, wäre ich zwar glücklich, aber es besteht halt außen auf einzelne Puzzleteile und ABAMU schützt vor einigem, aber trotzdem mit 100 Prozent vor allem. Aber was man sagen kann, das Server wird auf jeden Fall mit ABAMU sicherer sein als ohne. Jetzt ARGN-Proof habe ich schon gezeigt, was gibt es noch an ABAMU Tools? Einmal AA-Status, das zeigt einen schönen Überblick an, welche Profile sind geladen, welche Programme verwenden die Profile gerade und so weiter. Dann gibt es AA-Angrund-Fein, das zeigt an, welche Anwendungen, die am Netzwerk hängen, ein Profil haben und welche nicht. Dann AA-Notify sind Desktop-Notifications oder wahlweise auch tägliche Status-Output, wenn man sich dann per Grund zu Mails lassen kann. Dann gibt es AA-Complain, das schaltet ein Profil in den sogenannten Complain-Mode, also ein Land-Modus, sprich alles erlauben und Fleißiglock-Feil mitschreiben. Das gehe ich ein Stück AA-Enforce, schalte die Profile scharf, was nicht erlaubt, ist wertblockiert. Dann gibt es noch AA-Disable, wenn man mal ein Profil wirklich komplett abschalten will. Es gibt AA-Out-Dit, das heißt, alles, was im Profil erlaubt wird, wird trotzdem protokolliert. Dann als gehe ich ein Stück zum AA-Gen-Prof, gibt es noch AA-Lock-Prof, um vorhandene Profile zu aktualisieren, anhand vom Lock-Feil. Es gibt winziges AA-Auto-Dip, das ist quasi die Basis von AA-Gen-Prof, aber ich werde empfehlen, immer gleich AA-Gen-Prof zu verwenden. Es gibt Easy-Prof, was Ubuntu recht gerne aussieht, das sind quasi template-basierte Profile, die man sich dann jetzt nicht gerade zusammenkliege kann, aber die Erstbausteine zusammengesetzt werden. Dann kommen wir zu AA-Merke-Prof, damit kann man, wenn man z.B. fünf Surfer hat und will diese Profile synchron halten, sammelt man die einmal ein, ruft AA-Merke-Prof auf und dann hat man wieder alles in einem gemeinsamen Profil. AA-Clean-Prof will man benutzen, wenn das Profil etwas chaotisch aussieht, weil man aus diverser Gründe mal bearbeitet hat und Ergänzungen ohne überflüssige Regeln zu löschen, also das räumt auf. Dann gibt es so ein nettes Tool AA-Decode, das will man dann haben, wann im audit lock irgendwelche Dateien mit Lerzeich im Namen vorkommen, weil die dann relativ kryptisch nur angezeigt werden, das kannst decodieren. Und es gibt AA-Exec, mit dem kann man dann ein Programm mit einem fest definierte Profil aufrufen, das nicht Standardprofil ist. Werfen wir mal einen Blick auf AA an Confined und stellen jetzt fest, Ups, VSFTPD not Confined, also sprich läuft ohne Schutz, hängt am Netzwerk keine gute Idee, also ich habe alles, was am Internet hängt, komplett mit Abwahrgeschützt. Deswegen verpausen wir VSFTPD mal jetzt kurz ein Profil. Geht wieder los, AA-Gain-Prof VSFTPD, dann sagen wir mal, einmal restart. Man hat jetzt auch gesehen, im Lock rausschunst ein oder ander vorbei, zurück zum AA-Gain-Prof, das ist kein Systemlock und sieht jetzt zum Beispiel, es braucht Netbeinservice, weil es halt ein Paar dann das Netzwerk öffnen will. Es muss ein Config Datei lesen können, klar. Dann braucht es Netzwerkzugriff, auch logisch. Und das war jetzt schon mal die Basis. Wenn man uns jetzt das Profil aussehen sieht es noch relativ überschaubar aus, war aber auch nur ein Stadtunstopp. So, das ganze speichern wir jetzt, lassen aber AA-Gain-Prof noch laufen und machen jetzt einfach mal kurz die FDP-Verbindung auf. Also was ich noch dazu sagen soll, dass so lange AA-Gain-Prof läuft, ist das Profil im LAN-Modus, also alles erlaubt und wird fleißig protokolliert. Das sieht man jetzt auch schon über im Lock. Okay, und wir sehen FDP-Login hat geklappt. Ich gehe wieder raus und genau die Fraucherei geht weiter. Wer braucht ein Set geht, es schreibt ins Audit-Lock, das ist ja eigentlich Capability. Süße Admin-Rechter, also auch, was ich auch bei der Severity sehen, das sind schon die Sachen, die man genau beobachten sollte, aber die braucht es in dem Fall. Es macht Change-Route nach dem Login. Es wechselt die User-ID auf der FDP-User und es macht Authentification. Und bevor man die jetzt einzeln zusammen sammelt, benutzt man einfach nur die Abstrecktungs-Authentification, alles in einem. Genau, und es muss natürlich auch die Verzeichnisse lesen können. Und bevor wir da 100-mal rum ändern müssen, gehe ich jetzt auf New und sage einfach nur Home-Stand-Stand, also alles innerhalb von Home-komplette Leserechte. Erlauben wir, genau, noch so ein paar Kleinigkeiten. Name-Service braucht FDP-User. Genau. Das war's. Und damit wäre das Profil jetzt erst mal ziemlich fertig. Wer jetzt aufgepasst hat, hat mitkriegt, nur Leserechte, also sprich, es fehlt noch was. Und deswegen ist es immer gut, die ID bei komplexerer Sache dann das Profil, weil im Learn-Modus laufen zu lassen. Das wäre AAComplain-VSFTPD. Jetzt ist es im Learn-Modus, erlaubt auch die Schreibzugriffe, obwohl sie noch nicht im Profil stehen und loggt es entsprechend. Müssen wir jetzt nicht im Einzellen natürlich exerziere. Also ich habe es ja schon gezeigt. Zwei X-Terms, im einen AACen-Prof, im anderen des Programmausführer-Benutzer, whatever. Und es ist immer gut, die Taktik, dass man erst mal das Programm startet und stoppt und um die Basics zu bekommen, schon flutet man sich nur unnötig das Log. Was gibt es an Datei-Berechtigungen? Read, write, dann gibt es Append, also Dateierstelle und Anhänge, sprich zum Beispiel Log-Files, L für Link, K für Log, M für M-Map, braucht man üblicherweise auch Erde zu und diverse Ausführberechtigungen. Das wäre einmal die IX, die ich schon beim Hello World Skript gezeigt habe, also sprich das ausgeführte Programm bleibt genau im gleiche Profil. Macht Sinn bei irgendwelchen Hilfsprogrammen, Cut, M, Bash und so weiter. Dann gibt es CX, Child Profile, also ein Profil, das nur verwendet wird, wenn man im passenden Elternprofil ist. Wenn ich jetzt im Fall vom Hello World zum Beispiel für M einen Child Profile angelegt hätte, wäre das Profil nur verwendet worden, wenn ich M aus dem Hello World Skript aufrufe, aber nicht, wenn ich M allgemein aufrufe auf der Shell. Und das macht Sinn, wenn man Hilfsprogramme hat, die mehr oder weniger Berechtigungen brauchen wie das Hauptprogramm. Dann gibt es PX, also separat das Profil. Da ist es dann egal, ob man das Programm standalone aufruft von der Shell oder ob es von was anderes aufgerufen wird mit PX. Und das ist definitiv keine gute Idee für zum Beispiel die Bash, weil man dann hinten noch sehr eingeschränkt ist und eingeschränkt die Bash. Viel Spaß. Dann gibt es noch die Methode, wenn es gar nicht anders geht, UX angrundfeind, sprich ein Programm ausführen ohne Abermore-Beschränkungen. Das kann Sinn machen, zum Beispiel bei SSHD, der eigentliche Diemen schützt man. Und nach dem Log in darf er dann zum Beispiel die Bash ausführen, also die User Shell ohne Weitereinschränkungen. Um das Ganze noch interessanter zu machen und die Profile auch portabel zu machen, gibt es die Fallback-Möglichkeit. Zum Beispiel PX bedeutet, er probiert erst gibt es eigentlich ein Profil. Und falls das nicht der Fall ist, dann macht er IX, also er bleibt beim Gleiche. Und entsprechend auch Pux, Zix und Sux. Also sprich ein weder Profil oder Anconfeind oder das Gleiche noch mal als Kindprofil. Und es gibt noch die Methode, dass man sagt, man macht Profil zum Beispiel für User-Lib-Postfix-Stern. Benennt es dann Postfix-Helpers? Oder in dem Beispiel unter jetzt Profil-Ping, User-Bin-Ping, wobei es User-Optional ist. Und dann könnte ich jetzt ein PX nach Ping erlauben. Dann wird man generell beim Ausführer, außer bei IX noch gefragt, ob die Umgebungsvariabler aufgeräumt werden sollen. Also mal reden jetzt von der Sache wie LDP-Load und so weiter. Also in der Regel sollte man das machen. Es sei denn, das Programm braucht die wirklich in der veränderten Form. Es gibt noch ein paar weitere Regeltypen, nämlich die Linkregel noch mal als Separate, die dann noch etwas spezieller ist als die Dateiregeln. Das sehe ich gerade recht sich, dass die Folie schon ... Moment. Ja, doch genau passt. Also Alimit, ja. Dann Capabilities habe ich erwähnt. Es gibt Netzwerkbeschränkungen und relativ neue Debus-Mount-Signal und so weiter. Die sind allerdings bisher nur im Ubuntu-Körnel, Netzwerk auch im Open-SUSE-Körnel. Und das Upstreaming ist in Arbeit, aber es verzichert sich halt, wie man so kennt, kommt immer was dazwischen. So, wenn man jetzt mal das Audit-Lock so liest, fällt erst mal auf MSG Audit und dann ein Haufe Zahler. Was bedeutet das? Also die ganze Zahle, die sind nur der Timestamp. Also die 1438, irgendwas bis 88.987 ist der Timestamp. Und nicht derweise kann man dann mit Date-D add und dann die Zahlefolie in was Lesbares übersetzen. Sieht dann auch in dem Fall jetzt Ab-Amoire-Dinheit. Also das Profil war scharfgeschaltet. Genauso gibt es allowed, wenn das Profil im Landmodus war und Audit, wenn man in dem Profil explizit gesagt hat, den Zugriff, auch wenn er erlaubt ist, trotzdem locken. Wer Webserver absichern will, hat noch die Option mit Mod-Ab-Amoire. Macht Sinn, weil man damit ein Profil festlegen kann für jedes Einzellenhosting zum Beispiel. Man sollte immer ein A-A-Default-Hate-Name-Setze schon ganz im blödsche Fall passieren, das Ab-Amoire für jede einzelne Datei ein Profil vorschlägt. Das will man definitiv nicht. Man kann das ganze Setze proviert schnell host. Mindestanforderung für mein Geschmack. Und man kann sogar, wenn man in Ammo-hosts sagt man mal, man hat WordPress-Lauf und PHP-BB und was gibt es sonst noch Schlimmes, dann kann man das auch verzeichnungsweise absichern, dass die sich wenigstens nur selbst abschieße können und nicht gegenseitig. So, das ganze sind dann so genannte Hats im Apache Profil. Was sind das? Die sind ähnlich wie so Profile, also die Schaltprofiles, die ich vorhin erwähnt habe. Der Unterschied ist der, dass ein Programm, also in dem Fall Apache per Süßkahl zwischen den Umschalten kann. Und das typische, wo man das benutzt, ist eben der Apache mit mindestens einem Hate proviertuellem Host. Und in der Profil-Datei sieht es eben dann so aus. So schönes Deckel sieht sogar aus wie ein Hut. Und dort hat dann der Name aber von dem Hut. So, wie sieht es dann konkret aus? Also ich generiere mir dann immer automatisch für jedes Hosting ein Schnipsel, das dann eingebunden werden kann. Sprich Zugriff auf HTTP-Docs, also das Document-Root. Schreibt Zugriff auf Access Log and Aura Log. Zugriff aufs Temp-Verzeichnis für jedes Hosting und noch so ein paar Sachen. Das Bruchsternadrequarant ist übrigens die Dateimbruch-Filesystem, wo dann Change-Hate technisch umgesetzt wird. Und es gibt noch so ein paar Spezialitäten. Nämlich, wie gesagt, die sollte man sich automatisch generieren, schon schwarzblöd. Es gibt dann noch den Head-Handling-Undrastet-Input. Da hängt Apache immer dann drin, wann er gerade langweil hat. Und aus bisher nicht bekannten Gründen macht er dann manchmal etwas mehr als er soll. Also unter anderem hat sich herausgestellt, dass der oft die Access and Aura Logs von alle virtuelle Hosts Schreibrechte braucht. Dann, was auch immer wichtig ist, wie eng mache ich das Profil? Also sprich erlaube ich jetzt Stern oder erlaube ich Stern.jpg. Ein Beispiel, das ich wirklich mal erlebt habe, war ein Vorherum. Kennt man ja, kann man sein Avatar-Hochlade, zum Beispiel mein Foto.php, war dann natürlich weniger schön und das kann man grundsätzlich auch vermeiden, indem man sagt, man sitzt verbotsregel.di.ona.slash-stern-stern.php.rw, bedeutet alle Datei, egal wo im Dateisystem deren Name auf punkt.php endet, darf der Eigentümer nicht lesen oder schreibe. Also sprich, wenn jemand über die Web-Sover-Datei hoch lädt, wird er direkt blockiert. Das Problem an der Sache ist, dass die moderne Content-Management-Systeme auch gerne mal sich selbst updaten. Das blockiert man damit halt leider auch. Es gibt noch die Option ab Amor kreativ zu nutzen. Was ich ganz gerne mache, gerade im Web-Sover-Verbereich, eine Art Inventurliste, sprich welcher virtuelle Host verwendet die Skripte, die ich in einem Schadverzeichnis anbiete. Oder genau so welcher virtuelle Host ruft sein Mail auf, also sprich wer verschickt Mails. Genauso gut kann man damit auch Dateizugriffe debaggen. Also bevor ich mich durch Stress durchlese, geht der Aagenprof leichter und erstellt mal schöne Zusammenfassungen. Ein Nete-Trick ist ab Amor als Load-Monitor. Also wenn man feststellt, ich habe da jetzt gerade 100 Apache Prozesse, was machen denn die so? Dann kann man mit PS-Sauce, also großes Z sich anzeichen lassen, in welchem Profil das da genau hängt. Und wenn man es umgesetzt hat, mit mindestens einem headpro virtuellem Host sieht man ever in welchem virtuellem Host, das er gerade ist. Was ich auch ganz gerne nutze, ein Route-Zugang read-only nur fürs Backup. Wie funktioniert es? Also zwei Komponenten zur Möglichkeit. Punkt eins braucht man den SSH-Key oder Reist-Key. Wichtig dabei ist vorne der Teil-Command-Gleich-Route-Bin- Ersynchell. Also sprich man auch den Keyfish, dass er nur diese Datei ausführen darf. Das esch eigentlich nur ein kleines Best Script. Das schreibt dann kurz was ins Look-File. Guckt, dass der Original-Befil wirklich Ersynch minus Minus-Server minus Minus-Sender war. Und wenn das so ist, dann wäre der Original-Befil ausgeführt. Zugehörig aber mal Profil, um das Ganze dann abzudichte. Also die ganze Includes Abstraction Space und so weiter, denke ich, können wir soweit überspringen. Kapabilität, Deck-Override und Deck-Read-Search heißt einfach nur, dass Ersynch auch Datei lesen darf, die nicht Route gehören. Also wenn man das nicht hätte und ein User hätte eine Datei im Home-Verzeichnis mit Modus 600, die könnte zwar Route eigentlich lesen, aber in Verbindung mit Abamor nicht und deswegen muss man dann die Zugriffsrechte mit Deck-Override erlauben. Dann darf das Script ausführer, Best Script locker. Klar, das war außen um das Handling. Natürlich Ersynch ausführer und dann sieht man in der rechten Spalde welche Datei, dass das Backup lesen darf, also in dem Fall jetzt EDC und Home. So, jetzt kann man die Sachen natürlich noch unnötig interessant machen. Angefangen hat es ganze Mal mit einem Profil, also feil bedeutet, alle Dateizugriffe erlauben. Definitiv keine gute Idee und dann war eben die Zusatzanforderung, wir würden jetzt aber gern Brück verbieten bis auf die zwei Ausnahmen. Wie gesagt, definitiv keine gute Idee. Trotzdem, es ist lösbar, hat keiner was gesagt von schön. Ich blende mal die Erklärung ein, was das Ganze macht. Also wie gesagt, feil erlaubt erst mal alle Dateizugriffe, damit geht es problemlos. Dann fängt man mal an, selektiv zu verbieten. Also, wir wollen erlauben, Brück pient irgendetwas, also sprich Brück, irgend ein Nummer und was da drunter liegt, oder Brück süßkörnel SHM-Stern. Und was machen wir dann? Man verbieten erst mal Brück slash Stern, also alle Dateier in Brück. Wenn kein Slash hintereinander steht, bezieht sich auf Dateier, wenn ein Slash hintereinander steht, sind es Verzeichnisse. Dann das nächste gibt leichtes Kopfweh. Also, man verbieten in Brück alles außer Brückpit, also der Zahl, und Brück süß. Und das muss man sich jetzt halt zusammenkleben. Man sieht es dann auch irgendwo in der Mitte der Regex, genau. Also, du versteckst sich süß bei der drei Zeichenvariante. Genau. Und dann kümmert man sich noch um die Unerverzeichnisse von Brück süß. Das geht dann noch verhältnismäßig leicht. Und dann zieh mal durch, ja. Leider ein Beispiel aus der echten Welt. Und wie sowas endet, zeich ich gern. Das war dann kürzester Rüft wieder. Und in diesem Sinn verweise ich gern auf weitere Informationen. Es gibt die Mainpage ab amor.de. Da drin ist die Profil-Syntax genau erklärt. Es gibt die ab amor Homepage, gibt was im Open-SUSE-Wiggy, gibt was im Debian-Wiggy. Es gibt auch eine gute Anleitung in der Open-SUSE-Doku. Also bitte nicht erschrecken, die funktioniert überall. Und wer es lieber in der Aktiv-Hot entweder im Ab amor Channel oder auf den Melling-Listen. Und wer noch ein paar Gigastreffe will, darf gleich nächstes Monat noch mehr in die Open-SUSE-Konferenz kommen. In diesem Sinn gibt es Fragen. Alle Wunschlos glücklich. Na dann, dann bedanke ich mich fürs Zuhören.