View previous topic :: View next topic |
Author |
Message |
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5147 Location: Bavaria
|
Posted: Sat May 09, 2020 4:50 pm Post subject: Installation Guide for Paranoid Dummies |
|
|
Installation Guide for Paranoid Dummies
- Willst Du ein möglichst sicheres Linux-System, auch wenn dies bedeutet auf das letzte Prozent Performance zu verzichten ?
- Ist Dir ein sicherer Kernel - und auch ein sicheres Gesamt-System - wichtiger als Komfort, wie z.B. Hibernation, 32-bit-Unterstützung oder eine automatisierte Kernel-Konfiguration ?
- Willst Du wissen, was in Deinem Rechner los ist und magst deshalb keine Installations-Skripte, bei denen nicht klar ist, was sie alles tun ?
- Bist Du auch ein Fan vom KISS Prinzip ?
Falls Du jetzt denkst: "Eigentlich schon, aber ich bin noch ziemlich neu bei Gentoo und traue mich nicht den Kernel selbst zu konfigurieren", dann könnte dieser Guide genau richtig für Dich sein, denn ich habe ihn zweigeteilt. Im ersten Teil wird erstmal "nur" ein grundsolides Gentoo installiert (jedoch bereits im Hinblick auf Sicherheit). Dieses kann dann auch ohne irgendeine Erweiterung aus dem zweiten Teil benutzt werden.
Falls Du noch zögerst, lies erstmal das Kapitel "Manuelle Konfiguration des Kernels". Wenn Du danach denkst: "Das schaffe ich", dann lies hier weiter.
Falls Du noch zögerst weil Dein Wissen über Netzwerke noch sehr gering ist, dann wirf einen Blick hier hinein: X.1 Netzwerk Kompendium
Der komplette erste Teil orientiert sich strikt nach dem offiziellen Gentoo Handbuch für AMD64:
https://wiki.gentoo.org/wiki/Handbook:AMD64
Ich habe deshalb für alle Schritte einen Link zur jeweiligen Seite beigefügt, so dass Du dort überprüfen kannst, wo ich abweiche und warum. Bitte lese diese auch, da dieser Guide das Handbuch nur ergänzt und nicht ersetzen soll und will. Zusätzlich habe ich so ziemlich alles verlinkt, was ich selbst verwendet habe ... also das halbe Gentoo Wiki, einige Forums-Beiträge und etliche externe Seiten.
Im zweiten Teil werde ich schrittweise zusätzliche Sicherheit bauen, wie z.B. Firewall oder SecureBoot. Im Gegensatz zu den Teilen von (A) sind diese jedoch unabhängig voneinander und können wahlweise eingesetzt werden. Alte Gentoo-Hasen dürften sich daher nur für diese interessieren, sollten aber doch wenigstens kurz den ersten Teil lesen, damit sie wissen, worauf ich im zweiten Teil aufsetze.
Aufteilung / Inhalt:
A) Grund-Installation - "the dummy part" (komplett)
1. Tips und Beginn der Installation
2. Manuelle Konfiguration des Kernels I.
3. Ende der Installation bis zur Installation von KDE (Plasma) und Backup
4. Sicherheit
B) Zusätzliche Sicherheit - "the paranoid part" (wahlweise)
1. Firewall und Proxy-Server (iptables / privoxy)
2. Manuelle Konfiguration des Kernels II.
3. Umstellung auf SecureBoot
4. Verschlüsselung der Festplatte
5. Privacy mit Falkon ("sandbox")
6. Privacy mit unbound / DNS over TLS
Voraussetzungen:
- Ein neuer PC, oder ein älterer PC mit leerer Festplatte, oder ein älterer mit einer Festplatte die gelöscht werden darf (weil die Daten unwichtig sind, oder gesichert wurden)
- Du brauchst einen zusätzlichen PC mit Internet-Anbindung und Browser (darf auch ein Windows-Rechner sein), schon allein auch deswegen, damit Du Dir die CD zum booten brennen kannst. Falls Du keinen hast, frage einen Freund. Ohne ist es zwar nicht unmöglich, aber doch schon sehr mühselig (Du müsstest sehr viel vorher ausdrucken).
- Stift und Papier (... viel Papier).
- Du solltest wissen, welche Komponenten in Deinem neuen Rechner stecken (zumindest grob).
- Für Teil B.4 zwei USB-Sticks, wenn Du die alte dmcrypt-Methode verwendest; nicht wenn Du die neue fscrypt-Methode verwenden willst.
- THINK ! (tm) by IBM. Wenn Du von Teilen der Installation abweichen willst - oder musst, weil Du z.B. einen AMD Prozessor hast - werde ich nicht jede mögliche Konstellation beschreiben; die Links sollten Dir aber weiterhelfen. Übernimm nicht blind jeden Befehl - überlege was der Befehl macht. Wenn Du eine Zeile wie z.B. diese "# ln -s net.lo net.enpXXXXXX" findest, kannst Du Dir sicher sein, dass dieser Befehl von Dir noch angepasst werden muss (auf den Namen Deiner Ethernet-Schnittstelle). Und natürlich darf der Name Deines PC nicht "hal" sein; so heißt ja schon meiner ... (joke ... ok poor joke).
Diese Anleitung erstellt folgende System-Konfiguration und wurde so auf diesem Notebook installiert:
Code: | GENTOO Installation for HAL
===========================
Equipment and Enviroment:
-------------------------
Tuxedo Book BC1703: Intel i7-4712MQ (HD Graphics 4600 with 1920x1080; no extra graphic adapter), 16 GB, 500 GB SSD Samsung Evo 840, Blu-Ray
WITH: UEFI SecureBoot, ethernet, ipv4, alsa, usb, OpenRC, KDE, profile:NO-MULTILIB+PLASMA, german settings, grub only for fallback reasons
WITHOUT: systemd, ipv6, initramfs, bluetooth, wlan, raid, printer, seriel port, paralell port |
An dieser Stelle möchte ich daran erinnern, wie mächtig Gentoo ist und wie einfach es ist, nachträglich fast alles umzukonfigurieren !
Falls Du GNOME statt KDE willst, ist dies machbar. Lies am besten hierzu: https://wiki.gentoo.org/wiki/GNOME/GNOME_Without_systemd/Gentoo
Einzig zu systemd kann ich nichts sagen, da ich mich nicht damit auseinander setze ... und hoffentlich nie tun muss. Meine Meinung dazu: Sicherheit oder systemd - Du kannst nicht beides haben ... (und darüber diskutiere ich auch nicht). Falls Du ein Freund von systemd sein solltest, will ich Dich nicht zu OpenRC überreden, aber falls Du noch schwankst, mach' doch einfach eine Suche im Forum nach "GLSA openrc" und danach eine nach "GLSA systemd" ... das Ergebnis:
NULL ... gegen:
https://forums.gentoo.org/viewtopic-t-1139605-highlight-glsa+systemd.html
https://forums.gentoo.org/viewtopic-t-1109752-highlight-glsa+systemd.html
https://forums.gentoo.org/viewtopic-t-1094140-highlight-glsa+systemd.html
https://forums.gentoo.org/viewtopic-t-1088680-highlight-glsa+systemd.html
Edit 2022-04-27: Und ganz aktuell von heute: https://www.heise.de/news/Microsoft-findet-root-Luecken-in-Linux-7067100.html (Nein, Microsoft, systemd ist noch nicht automatisch Linux; Korrekt müsste es heißen: "Microsoft findet root-Luecken im networkd-dispatcher von systemd".)
Woran manche erst als letztes denken ... möchte ich als erstes ansprechen: Ein Backup-Konzept
Falls Du bereits eines hast, vergiss das hier und mach' gleich weiter - ansonsten: Du musst Deine Daten sichern ! Dabei sind (mindestens) drei Fragen zu klären:
1) Auf welches Medium / welche Medien, und wohin damit,
2) Ein komplettes Backup der Festplatte/-n oder "nur" die Daten, und
3) Inkrementell oder diverse Generationen ?
Ich habe für mich diese Fragen so (schlecht) beantwortet:
1) Meine große Kiste hat eine SSD und eine HD. Ich syncronisiere täglich einmal alle Daten von der SSD auf die HD. Von dieser (eingebauten) HD syncronisiere ich (bedarfsweise) auf eine externe (USB-)HD, die ansonsten in einem feuerfesten Tresor liegt. Das Notebook hat nur eine SSD. Diese wird über das Netz auf die (eingebaute) HD der großen Kiste gesichert (und damit von dort aus auch auf die externe Platte). Eine wechselnde Sicherung auf verschiedene externe Festplatten (an verschiedenen Standorten lagernd) wäre natürlich besser ...
2) Ich sichere nur die Daten, also /etc und /home. Das bedeutet, falls sich eine SSD verabschiedet, muß ich eine komplette Neu-Installation durchführen. Das sehe ich nicht so tragisch, da ich ja die Konfiguration aller Programme habe (zwei wichtige Dateien kopiere ich deshalb immer manuell nach /etc/MY) - meine Entscheidung. Mache was Du für richtig / notwendig erachtest.
3) Auch nur ... Ich empfehle Dir aber das gute alte Großvater-Vater-Sohn-Prinzip: https://de.wikipedia.org/wiki/Datensicherung#Großvater-Vater-Sohn
Da ich dieses Backup-Konzept als absolutes Minimum ansehe, habe ich am Ende von A.3 eine Beschreibung beigefügt. Mehr ist natürlich besser = sicherer ! Wenn Du eine externe Festplatte UND eine Cloud hast, nutze beides. Eine Sicherung auf USB-Sticks empfehle ich nicht, da diese schneller defekt gehen können als man meint.
Probleme ?
Falls Du Probleme mit diesem Guide hast, mache bitte drei Dinge:
1. Lies das Kapitel "Collecting additional information" (oder komplett): https://wiki.gentoo.org/wiki/Troubleshooting
2. Versuche soviel Daten wie möglich zu sammeln und diese dann in
3. einem neuen Post in diesem Forum gleich mitzugeben - am besten in der Deutschen Sektion (weil mein Englisch sehr bescheiden ist - naja wirst Du schon sehen, falls Dir einige Posts von mir in die Finger fallen )
Mein Lieblingsspruch: Eine exakte Problembeschreibung ist bereits die halbe Lösung. _________________ https://wiki.gentoo.org/wiki/User:Pietinger
Last edited by pietinger on Sat Nov 25, 2023 10:34 am; edited 25 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5147 Location: Bavaria
|
Posted: Sat Oct 31, 2020 5:03 pm Post subject: Installation Guide for Paranoid Experts |
|
|
Installation Guide for Paranoid Experts
In diesem und dem folgendem Artikel bauen wir IMA und AppArmor. Falls Dir DAC und MAC unbekannt sind, lese das Kapitel "Zugriffsklassen" in https://de.wikipedia.org/wiki/Zugriffsrecht
Danach empfehle ich diesen englischen Vortrag: "Overview of the Linux Kernel Security Subsystem" https://www.youtube.com/watch?v=L7KHvKRfTzc
Eine weitere schöne Übersicht der verschiedenen LSM bietet:
https://www.starlab.io/blog/a-brief-tour-of-linux-security-modules
Die Unterschiede der vier Module, die MAC bieten (SELinux, AppArmor, SMACK und Tomoyo) ist auf den Seiten 6 und 7 dieses PDFs dargestellt:
http://osdn.jp/projects/tomoyo/docs/PacSec2007-en-no-demo.pdf
Nachdem Du nun die Teile B.1, B.2 und B.3 (und B.4 für Dein Notebook) gemacht hast, und insbesondere auch A.4 und B.4 gelesen hast, fragst Du Dich möglicherweise wie sicher Du jetzt bist. Sollte man nicht noch ein RAID-1 installieren ? Was ist mit SELinux oder AppArmor ? Warum haben wir kein IMA und EVM installiert ? Warum nutzen wir kein TPM, obwohl vorhanden ? Benötigen wir nicht noch den Kernel Lockdown ?
Tatsächlich bist Du jetzt nur zu einem gewissen Teil geschützt. Du könntest Dir immer noch ein böses mp4-Video einfangen, welches einen unbekannten Bug in VLC ausnutzt um unerwünschte Dinge zu tun ... Das werden wir nun schrittweise auch ausschalten (soweit möglich). Zuerst aber noch eine Übersicht, wovor wir geschützt sind und was noch fehlt - was möglich ist und was nicht. Damit das nicht zu trocken wird, soll ein bischen Humor nicht fehlen - obwohl der erste Punkt durchaus der Realität entspricht. Ich fange deshalb mit dem Super-GAU an:
1. Schutz vor Geheimdiensten
Unwirksam: a) Festplattenvollverschlüsselung mit externen USB-Stick, und/oder b) SecureBoot mit IMA/EVM mit TPM, und/oder c) Einsatz von Wechselplatte(-n)
Grund: a) Kein Schutz gegen den Einbau von Hardware-Keyloggern, und b) Kein Schutz gegen Deine Festnahme (Zugriff) in dem Moment als Du Dich gerade angemeldet hast und Dein /home nun unverschlüsselt ist und Du den Stick nicht mehr schnell genug vernichten kannst
Wirksam: a) Leg Dich nicht mit Geheimdiensten an, oder b) Wandere nach Rußland aus ...
Edit 2022-10-16: Falls Du beim Stichwort "Rußland" an den derzeitgen Krieg denkst, hast Du leider das Stichwort "Auswandern" überlesen ... denn dies war damals - und ist es auch heute noch - eine Anspielung auf: https://de.wikipedia.org/wiki/Edward_Snowden#Flucht !!!
2. Schutz vor Zerstörung oder Löschung Deiner Daten
Unwirksam: Ein "total" abgesicherter Computer mit RAID-1 in einem Bunker
Grund: a) Erdbeben, Feuersbrunst und Atomschlag, oder b) Trojaner der alle Sicherheitstechniken überwunden hat - weil es nunmal keine "total" abgesicherten Computer gibt - und nun alle Deine Dateien auf Deinem RAID-1 verschlüsselt hat
Wirksam: Einzig BACKUPs an einem anderen Ort - und sonst nichts !! (Wenn Du meinst ein RAID wäre ein Ersatz für Backups lies diesen kurzen Post: https://forums.gentoo.org/viewtopic-t-1142412-highlight-.html )
3. Schutz vor Offline-Attacken (offline tampering)
3.1. ... mit der Möglichkeit die Festplatte(-n) (unbemerkt) auszubauen
Unwirksam: Verschlüsseltes home und SecureBoot
Grund: Die ausgebaute Platte wird gemountet und es wird Dir ein Software-Keylogger und/oder eine komplette Suite installiert (wobei hier schon Experten-Wissen benötigt wird um auch Deine Firewall zu umgehen)
Wirksam: a) Festplattenvollverschlüsselung mit externen USB-Stick (sofern kein Zugriff auf diesen möglich ist), oder b) SecureBoot mit IMA/EVM mit TPM, oder c) Einsatz von Wechselplatte(-n)( sofern kein Zugriff auf diese(-n) möglich ist)
Benötigt für: Unbeaufsichtigte (ungesicherte) Server und Workstation, unbeaufsichtigte Notebooks die nach der Attacke weiter von Dir benutzt werden
Nicht benötigt für: a) Räumlich gesicherte Computer, oder b) gestohlene oder verloren gegangene Notebooks, die Du nie wieder siehst (hier genügt Dir B.4 komplett; B.3 ist nice-to-have)
3.2. ... ohne der Möglichkeit die Festplatte(-n) (unbemerkt) auszubauen
3.2.1 ... mit genügend Zeit um das BIOS zu resetten (Aufschrauben des Computers und Ausbau der Batterie vom Mainboard)
Unwirksam: a) BIOS-Bootpasswort, oder b) Verschlüsseltes home und SecureBoot mit unaufmerksamen User
Grund: Nach dem Ausschalten von SecureBoot im BIOS wird ein modifiziertes Linux gebootet und gewisse Programme in root angepasst ...
Wirksam: a) Verschlüsseltes home und SecureBoot + User startet den Computer nach jedem Verlassen neu und prüft, ob das BIOS einen SecureBoot meldet (was dann nämlich nicht mehr der Fall sein wird, da die Schlüssel im UEFI gelöscht wurden), oder b) Verschlüsseltes home und BIOS-Bootpasswort + User startet den Computer nach jedem Verlassen neu und prüft, ob das BIOS noch ein Bootpasswort benötigt.
3.2.2 ... ohne Zeit das BIOS zu resetten
Wirksam: a) SecureBoot, oder b) BIOS-Bootpasswort (nicht zu verwecheln mit dem BIOS-Passwort um IN DAS BIOS zu kommen; Unterscheidung ist meistens: USER / ADMIN)
4. Schutz vor Online-Attacken
Unwirksam: Windows 10, Linux mit Full Disk Encryption
Besser: Linux mit gehärtetem Kernel
Noch besser: Linux mit gehärtetem Kernel, ordentlicher Firewall, Integritätsmanagement und Einsatz von Mandatory Access Control (MAC), z.B. SELinux oder AppArmor. Siehe auch: https://de.wikipedia.org/wiki/Zugriffsrecht
Am besten: Linux mit gehärtetem Kernel, ordentlicher Firewall, Integritätsmanagement und Einsatz von Mandatory Access Control (MAC) und ein intelligenter Benutzer ...
IMA (Integrity Measurement Architecture)
Wenn wir uns nun ansehen was wir bis jetzt erreicht haben, stellen wir fest, dass unser Schutz vor Online-Attacken noch sehr spärlich ist. Wir benötigen mindestens noch zwei Dinge: Integritätsmanagement und SELinux oder AppArmor. Letzteres ist nicht so dringend, wenn wir wenigstens unseren Browser in einer Sandbox laufen lassen. Das bedeutet wir werden als erstes ein Integritätsmanagement bauen. Dieses nutzen wir aber "nur" als Schutz vor Online-Angriffe und nicht als Schutz vor Offline Tampering. Es gibt zwar schon Lösungen hierfür (AIDE, tripwire), aber wenn der Kernel uns das bereits eingebaut bietet, sollte dies die eleganteste Lösung sein. Wir bauen daher als erstes IMA im Kernel.
Lies bitte alle 4 Teile bevor Du anfängst, da diese aufeinander aufbauen - auch C.1 (selbst wenn Du meinst, C.1 mache ich nicht und brauche ich nicht). Aber in C.1. erkläre ich was ich meine mit einer "Überprüfung" mittels "dmesg | grep command" ...
Aufteilung / Inhalt:
C) IMA und/oder Kernel Lockdown (linear)
1. Rescue Boot von USB-Stick (evtl. IMA Measure)
2. Kernel Konfiguration III für Lockdown und IMA
3. Konfiguration IMA und Aktivierung Appraise
4. IMA und Portage (update mit emerge -u @world)
Neu:
5. Umstellung auf Signed IMA
Auch Neu:
6 Embedded Initramfs für signed IMA
.
Last edited by pietinger on Tue Jan 24, 2023 9:59 am; edited 8 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5147 Location: Bavaria
|
Posted: Sat Nov 28, 2020 10:10 pm Post subject: Trennung Deiner Daten von der Kommunikation |
|
|
AppArmor
Braucht man das wirklich, und wenn ja, warum gerade AppArmor ?
Ich sage, Ja. Und ich habe mich für AppArmor aus mehreren Gründen entschieden:
1. Ich bin der Meinung, dass SELinux zwar sehr mächtig ist, aber auch zu komplex, und für einen Desktop oder ein Notebook eigentlich einen Overkill darstellt. Ich kenne einige RedHat-User die nach einer Neu-Installation als erstes SELinux deaktivieren ... Toll, was ?! Für einen Server würde ich es unbedingt empfehlen - aber das machen wir hier nicht.
2. Die Installation von SELinux, AppArmor, Smack oder Tomoyo ist ähnlich einfach: Einfach in der Kernel Konfig ein paar Optionen enabeln und ein paar Packages emergen. Das ist einfach - das Problem sind die Profile. Mach doch mal eine Suche mit "emerge -s selinux" und dann "emerge -s apparmor".
3. Ich habe den Anspruch komplett verstehen zu wollen, was das LSM macht und wie es funktioniert und wirkt, damit ich beurteilen kann wovor es schützt. Das konnte ich bei AA erreichen, während ... Außerdem haben wir für SELinux eh' unser Gentoo Hardened Team.
4. Es gibt auf jeden Desktop Programme die gefährdet sind einer Online-Attacke zum Opfer zu fallen - aber auch viele die gar nicht geschützt werden müssen. Jedes Programm welches externe Daten bearbeitet, könnte kompromittiert werden. Mein "kcalc" (Taschenrechner aus KDE) sicher nicht, da dieser weder mit dem Internet spricht, noch gefährliche Dateien öffnet. Ein Pfad-basierendes LSM ist daher m.M. passender.
Warum brauche ich MAC ?
(https://de.wikipedia.org/wiki/Zugriffsrecht -> https://de.wikipedia.org/wiki/Mandatory_Access_Control)
Es gab mal eine Zeit, da war der Mensch an der Tastatur handelndes Subjekt und alle Dateien und Programme passive Objekte. Da sich viele Menschen einen von drei weltweit existierenden Großrechnern teilten, mussten natürlich Berechtigungen vergeben werden, denn es könnte ja sein, dass jemand auf die Dateien eines anderen zugreifen will. Programme jedoch machen immer nur das, was sie sollen; und falls doch ein Bug im Programm sein sollte wird es nur abstürzen - sonst hat es keine Auswirkungen. Erst viel später (ich glaube so um 1980) erkannte man, dass "böse" Menschen auch "böse" Programme schreiben können. Und dass Programmfehler ausgenutzt werden können, um ein Programm zu veranlassen etwas anderes zu tun als eigentlich ursprünglich programmiert. So gesehen sitzen an Deiner Tastatur eigentlich zwei Subjekte: Du und das gerade benutzte Programm. Historisch bedingt nutzt Linux jedoch das gleiche wie Unix: DAC (https://de.wikipedia.org/wiki/Discretionary_Access_Control). Der Mensch vererbt seine Rechte komplett an das gerade gestartete Programm.
Natürlich will ich - der Mensch - das ganze Internet besuchen und auf alle meine Daten in meinem /home zugreifen. Das soll aber nicht für die von mir genutzten Programme gelten. Ein "vlc" soll mir eine Video-Datei decodieren und anzeigen, hat aber nichts im Internet verloren. Ein "falkon" (KDE-Webbrowser) darf zwar ins Internet, hat aber nichts in meinem /home zu suchen (außer natürlich für seine eigene Config und im Ordner "Downloads"). Im Normalfall machen die beiden ja auch keinen Unsinn ... zumindest solange bis sie nicht durch einen Bug, ausgenutzt von einem Trojaner in einer mp4-Datei, oder beim Besuch einer bösen Webseite, umprogrammiert werden.
Wie soetwas funktionieren kann will ich Dir am Beispiel von "OpenSMTPD" (ein E-Mailer) zeigen. Der Fehler wurde im Januar 2020 gefunden - war aber seit Mai 2018 da drin ... und wurde auch ausgenutzt ! Ich zitiere mal aus dem CVE:
Quote: | "[...] allows remote attackers to execute arbitrary commands as root via a crafted SMTP session [...]" |
aus https://nvd.nist.gov/vuln/detail/CVE-2020-7247
Falls Dich das interessiert, findest Du hier genaueres:
https://packetstormsecurity.com/files/156137/OpenBSD-OpenSMTPD-Privilege-Escalation-Code-Execution.html
https://lwn.net/Articles/810882/
Jetzt kommt das beste: Es hätte alleinig ausgereicht, wenn es diesem Prozess verboten gewesen wäre die bash auszuführen !
Wenn Du AA im Einsatz hast, hätte ein Profil für dieses Programm nur folgende Zeile benötigt:
(okay, ich habe gerade ein bischen gemogelt - lies bitte D.1)
Ach ja, IMA hätte Dir hier nicht helfen können, da bei diesem Hack keine bash, ps oder sonstigen Programme geändert wurden (um sich dauerhaft festzusetzen).
Was wird dann mit meinen User-Berechtigungen ?
Nichts. Die benötigst Du weiterhin und werden auch weiterhin vom Kernel überprüft. Es wird also additiv geprüft: Du musst es dürfen UND Dein verwendetes Programm bedarf ebenso einer Erlaubnis. Das beste ist, selbst wenn Du als root angemeldet bist, Dein AA-gesichertes Programm aber nicht auf eine bestimmte Datei zugreifen darf, wird dieser Zugriff geblockt. Das gilt auch für das Netzwerk.
Beispiel: Du willst Dir mit "okular" (PDF-Reader aus KDE) nur pdf-Dateien anzeigen lassen. Okular baut normalerweise keine Internet-Verbindungen auf. Es enthält aber einen Bug, der von einer "modifizierten" PDF-Datei ausgenutzt wird, um zuerst root-Rechte zu erlangen und dann Deine Daten in /home ins Internet zu versenden. Okular ist aber mittels eines AA-Profiles geschützt, das nur Zugriff auf *.pdf erlaubt und keine Netzwerk-Verbindung erlaubt. Ergebnis: Selbst wenn die Privileg-Eskalation zu root funktionierte, verhindert AA trotzdem den Zugriff auf allen anderen Dateien in Deinem /home und den Aufbau einer Internet-Verbindung. Das "verkrüppelte" Okular kommt nicht an Deine DAten ran und kann auch Deine Daten nicht versenden !
Welche Programme sollten gesichert werden ?
Wie vorhin schon gesagt, eigentlich alle die "gefährliche" externe Daten verarbeiten. Wobei man hier schon ein wenig differenzieren kann:
- Am höchsten gefährdet sind natürlich alle Dienste die 24x7 direkt ins Internet lauschen, wie z.B. ein Webserver "Apache2".
- Danach kommen gleich alle Programme, die nur bei Bedarf extern kommunizieren, wie z.B. unser Lieblings-Webbrowser.
- Aber auch lokale Programme, die gefährliche Datei-Formate (mp4, pdf, ect.) bearbeiten, könnten kompromittiert werden.
An der Überschrift dieses Posts erkennst Du jetzt sicherlich schon das erste Grobziel:
1. Lokale Programme dürfen nicht ins Internet, und
2. Internet-Programme dürfen nicht an unsere Daten rankommen.
(Und natürlich dürfen die einen nicht die anderen starten oder benutzen, um das zu umgehen.)
Mit den Möglichkeiten die AA bietet, werden wir das aber natürlich noch viel fein-granulierter bauen.
Zur Einstimmung gebe ich Dir mal einen etwas älteren Link, der jedoch vieles einfach verständlich erläutert - besser als ich es könnte - und auch nicht zu umfangreich ist:
https://www.kuketz-blog.de/apparmor-linux-haerten-teil3/
(Es genügt vollkommen wenn Du nur bis Kapitel 3.1 liest ... und das 5. Fazit; Kapitel 3.4 nicht beachten - werden wir nie nutzen.)
Wenn Du Dir jetzt die einzelnen Teile der D-Reihe ansiehst, erschrick bitte nicht. Einiges habe ich ausgeführt um einen völligen Anfänger in die Lage zu versetzen selbst Profile zu schreiben. Wenn Du es "nur" übernehmen willst, ist der Aufwand viel geringer als es aussieht. Vergiss dabei aber nicht, dass es nur für GENTOO mit OpenRC gemacht wurde ... und da ich kein Gnome-User bin, werde ich das letzte Kapitel nie machen ... aber wenn Du als Gnome-User Lust hast ... bist Du allerherzlichst eingeladen, diese(-n) Thread(-)s zu erstellen und ich würde ihn dann liebend gerne hier verlinken.
Aufteilung / Inhalt:
D) AppArmor
1. AppArmor Einführung
2. Kernel Konfiguration IV für AppArmor
3. Installation AppArmor
4. AppArmor Profile selbst erstellen I.
5. AppArmor Basis Profile I.
6. AppArmor Profile für Daemons
7. AppArmor Profile für Konsolen Programme
8. AppArmor Profile + BP für X11
9. AppArmor Basis Profile II.
10. AppArmor KDE Profile
11. AppArmor Profile selbst erstellen II.
12. AppArmor GNOME Profile
13. AppArmor ??? Profile
< Ende des Installation Guides >
Last edited by pietinger on Sun Mar 13, 2022 6:53 am; edited 2 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5147 Location: Bavaria
|
Posted: Tue May 11, 2021 12:54 pm Post subject: Gentoo aktuell halten |
|
|
Gentoo aktuell halten
... oder: Mein "Big Cheat Sheet" für Updates. Ich habe auf meinen beiden Kisten alles von A.1 bis C. und D. installiert. So sieht mein "all-umfassendes" Cheat Sheet aus:
1. Ich gehe alle zwei bis drei Tage in meine KDE-Konsole, melde mich als "root" an und mache einen "emerge --sync" wie im 4. Post von B.1 beschrieben:
Code: | $ su-
# ./mysync.sh |
2. Danach prüfe ich ob und was als Update ansteht, mit:
Code: | # emerge -uNDvp @world |
3. Manchmal haben die Gentoo Entwickler USE-flags geändert, ohne dass dies Auswirkung auf mein System hätte; es würden nur unnötige Re-emerges gemacht. Dann sehe ich mir das an:
Code: | # emerge -uUDvp @world |
(Da ich mein System ziemlich aktuell halte, ist ein "emerge -uNDvp @world --backtrack=99" seit Jahren nicht mehr nötig.)
4. Ich prüfe dann auch gleich ob etwas Sicherheits-kritisches dabei ist:
Code: | # glsa-check --list
# glsa-check -t all |
Siehe auch: https://wiki.gentoo.org/wiki/Security_Handbook/Staying_up-to-date
5. FALLS portage auf neue NEWS hinweist, lese ich die natürlich auch:
Code: | # eselect news list
# eselect news read X |
Falls ich nun - mindestens einmal in der Woche - die Updates einarbeiten will, boote ich meinen "UNLOCKED"-Kernel (siehe C.4), indem ich die Kiste reboote und beim Start "F12" drücke, um im BIOS temporär einen anderen Kernel zu booten (dann brauche ich beim zurückbooten nichts mehr im BIOS machen, da ja dann automatisch wieder der Erst-eingestellte Kernel gebootet wird).
6. Falls auch das Paket "mariadb" bei den Updates dabei ist, empfiehlt es sich AKONADI (aus KDE) sicherheitshalber zu beenden (ich mache es inzwischen immer standardmäig; es spart ja auch ein bischen Hauptspeicher). Also als erstes wieder eine KDE-Konsole öffnen und als normaler User noch ein:
7. Danach als "root" erstmal überprüfen ob vom letzten Update irgendetwas zu löschen ist:
(Falls ja, führe ich das natürlich mit "emerge -c" auch aus)
8. Danach lasse ich das Update laufen mit:
Code: | # emerge -uUDv @world |
... und gehe zu Bett Am nächsten Morgen mache ich weiter ...
9. Falls portage meint es wären Konfig-Dateien anzupassen, mache ich das über:
10. Da ich ja "eix" installiert habe, wird das auch aktualisiert:
11. FALLS ein Kernel-Update dabei war, mache ich das komplette Cheat-Sheet aus B.3:
Code: | # mount /boot
# cd /usr/src/linux-X.Y.Z-gentoo
# cp /usr/src/linux/.config .
# make oldconfig
# make -j 8
# sbsign --key /etc/MY/efikeys/DB.key --cert /etc/MY/efikeys/DB.crt --output /boot/EFI/Boot/bzImage.efi arch/x86/boot/bzImage
(# make modules_install)
# cp .config /etc/MY/config-X-Y-Z
# eselect kernel list
# eselect kernel set X |
12. FALLS ein GCC-Update dabei war, ist der Neue manuell einzustellen. Meist liefern die Gentoo Entwickler aber auch noch entsprechende NEWS mit, falls noch mehr zu tun ist (ob der emerge von libtool heutzutage noch nötig ist ? ... ich mache es sicherheitshalber mal mit):
Code: | # gcc-config -l
# gcc-config X
# env-update && source /etc/profile
# emerge -1 libtool |
13. FALLS ein Perl-Update dabei war, ist das häufig notwendig. Meist liefern die Gentoo Entwickler aber auch noch entsprechende NEWS mit, falls noch mehr zu tun ist.
Code: | # perl-cleaner --all |
14. Da ich C.IMA gemacht habe, muss ich allen neuen und geänderten Executables einen Hash verpassen:
Code: | # find / -fstype ext4 -type f -uid 0 -executable -mtime 0 -exec evmctl ima_hash '{}' \; |
15. Bei der Gelegenheit mache ich für meine SSD einen manuellen "fstrim". Manchmal (selten) überprüfe ich auch mit "revdep-rebuild" ob alles konsistent ist (das ist seit Jahren der Fall). Und manchmal überprüfe ich auch, ob meine "world"-Datei noch in Ordnung ist und lösche manchmal die Update-Dateien (noch seltener). Danach boote ich zurück.
Edit 2022-01-01: Die Prüfung mit "revdep-rebuild" ist wohl schon seit einiger Zeit obsolet sagt unser Entwickler hier: https://forums.gentoo.org/viewtopic-p-8686939.html#8686939 Das kann ich nur bestätigen (ich habe es deshalb ja auch immer seltener gemacht; und jetzt dann halt gar nicht mehr )
Code: | # fstrim -va
# revdep-rebuild -p
# less /var/lib/portage/world
# rm -rf /var/cache/distfiles/*
# umount /boot
# reboot |
16. FALLS ein neuer Kernel dabei war, mache ich als erstes (siehe auch 3. Post von A.2):
Code: | $ su-
# dmesg -t > kernel-5.10.XX
# chown peter kernel-5.10.XX
# mv kernel-5.10.XX /home/peter/kernel-logs/.
### Starte "kompare" (aus KDE) und prüfe das neue Kernel-Log gegen das vorherige |
Das wars auch schon ...
Edit 2021-05-21: Hier beschreibt @Fitzcarraldo seinen Ablauf, der ähnlich dem meinigen hier ist, mit dem Unterschied, dass er auch noch beschreibt, was er macht falls es Probleme gibt:
https://forums.gentoo.org/viewtopic-p-8614359.html#8614359
Er schreibt da auch über seine Einstellung der MAKEOPTS (siehe auch A.1) und der Verwendung von "--jobs=" und "--load-average=". Ich halte davon nichts, auch wenn mir versichert wurde, dass es niemals Probleme machen solle (ich hatte welche vor vielen Jahren). |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5147 Location: Bavaria
|
Posted: Tue Feb 22, 2022 4:12 pm Post subject: |
|
|
Portage und Link-Empfehlungen
Portage
Nachdem Du nun Gentoo erfolgreich installiert hast und auch schon ein Update durchgeführt hast, willst Du Dich vielleicht etwas tiefer in Portage einlesen. Hier möchte ich alle wichtigen Links sammeln. Dabei sind auch einige die zwar nichts mit Portage zu tun haben, jedoch anderweitig interessant sind.
Ich habe Dir bereits in A.1 den Link zum CheatSheet gegeben. Zur Sicherheit nochmal: https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet
Zuerst solltest Du Dir dann dies ansehen:
https://wiki.gentoo.org/wiki/Portage
Du könntest Dir auch das ansehen, ich will Dich aber nicht erschrecken:
https://wiki.gentoo.org/wiki/Category:Portage
Die Übersicht des Gentoolkits ist nicht so wichtig, da wir hier nur "euse" nutzen und ich "eclean" auch nicht nutze (revdep-rebuild ist ja sowieso deprecated und nicht mehr notwendig):
https://wiki.gentoo.org/wiki/Gentoolkit
Danach die Übersicht aller wichtigen Tools von Portage:
https://wiki.gentoo.org/wiki/Useful_Portage_tools
In dieser Übersicht findest Du insbesondere die Links zu:
https://wiki.gentoo.org/wiki/Eix
https://wiki.gentoo.org/wiki/Equery
https://wiki.gentoo.org/wiki/Eselect
und
https://wiki.gentoo.org/wiki/Q_applets
sowie
https://wiki.gentoo.org/wiki//etc/portage/patches
Ich habe Dir diese gegeben, weil es leider immer wieder mal Verwirrung mit @world und @system gibt. Probiere mal folgende Kommandos:
Code: | # eix -c --selected
# eix -c --system
# eix -c --world
# eix -c --installed-testing |
Wie Du sicherlich erkennst, zeigt Dir der erste Befehl alle Packages an, die Du in /var/lib/portage/world hast. Der zweite Befehl zeigt Dir alle Packages an, die Gentoo unbedingt benötigt und durch die Stage3 installiert wurde. Es gilt außerdem: Selected + System = World. Das bedeutet, wenn Du ein Update auf @world machst, werden wirklich ALLE Pakete überprüft - auch die bereits von @system vorgegebenen. Warum Deine world-Packages aber intern als "Selected" gelten hat unser Gentoo Developer @Genone hier erklärt: https://forums.gentoo.org/viewtopic-p-8692892.html#8692892
Übersicht aller Sets:
https://wiki.gentoo.org/wiki/Package_sets
Diese Seite ist (Stand:heute) zwar noch in Arbeit, dafür aber hochaktuell:
https://wiki.gentoo.org/wiki/Ebuild_repository
Diese Seite solltest Du nach meinem vorherigen Post eigentlich nicht mehr benötigen:
https://wiki.gentoo.org/wiki/Upgrading_Gentoo
Ich habe sie Dir gegeben, weil ganz unten ein Link ist, den Du NIE benötigen solltest, weil ich Dir ja schon in A.3 empfohlen habe, wenigstens einmal im Monat ein Update zu machen:
https://wiki.gentoo.org/wiki/User:NeddySeagoon/HOWTO_Update_Old_Gentoo
Links
Einfach so - ohne Ordnung. Vielleicht ist etwas Neues und Interessantes für Dich dabei ... Auch um aufzuzeigen wie Klasse unser Wiki ist ... Und um mein Versprechen einzulösen, das Halbe Wiki verlinkt zu haben (Ne, das schaffe ich einfach nicht)
Weil es einfach zu meiner Installation gehört ...
https://wiki.gentoo.org/wiki/OpenRC
... und ich immer noch der Überzeugung bin, das beste zu haben:
https://wiki.gentoo.org/wiki/Comparison_of_init_systems
Wieder eine schöne Übersicht:
https://wiki.gentoo.org/wiki/Filesystem
oder gleich:
https://wiki.gentoo.org/wiki/Category:Filesystems
Kennst Du die Unterschiede von ... ?
https://wiki.gentoo.org/wiki/SSD
https://wiki.gentoo.org/wiki/SSH
https://wiki.gentoo.org/wiki/SCP
https://wiki.gentoo.org/wiki/IRC
Diese Seite ist zwar veraltet, beeinhaltet aber einen sehr guten externen Link:
https://wiki.gentoo.org/wiki/GnuPG
https://www.gnupg.org/gph/en/manual.html
Als KDE-Mensch kann ich nur die Kombi von "Kmail" und "Kleopatra" empfehlen !
Falls Du mit der Kombi Kmail und gpg Probleme haben solltest, mach' das: https://wiki.gentoo.org/wiki/KDE/Troubleshooting#Pinentry_GPG_dialogue_for_KDE_Plasma_isn.27t_working
Als alter Netzwerk-Mensch muss ich natürlich diese Links anbringen:
https://wiki.gentoo.org/wiki/Gentoo_for_Network_Admins
https://wiki.gentoo.org/wiki/Nmap
https://wiki.gentoo.org/wiki/Home_router
Der beste Netzwerk-Sniffer "Ethereal" heisst jetzt "Wireshark" (schon seit einiger Zeit):
https://wiki.gentoo.org/wiki/Wireshark
Ich halte nichts von VPNs um einen anderen Standort vorzutäuschen. VPNs sind zur sicheren Anbindung von Filialen/Außenstellen da, oder wenn Du vom Internet in Deinen heimischen Server willst. Dazu empfehle ich:
https://wiki.gentoo.org/wiki/Wireguard
Falls Du mal einige Server installieren willst:
https://wiki.gentoo.org/wiki/MySQL/Startup_Guide
https://wiki.gentoo.org/wiki/Nginx
https://wiki.gentoo.org/wiki/PHP
https://wiki.gentoo.org/wiki/Webapp-config
https://wiki.gentoo.org/wiki/Owncloud
https://wiki.gentoo.org/wiki/MediaWiki
https://wiki.gentoo.org/wiki/Bugzilla
https://wiki.gentoo.org/wiki/PhpBB
https://wiki.gentoo.org/wiki/Let%27s_Encrypt
Jetzt nur noch einige ohne Sinn und Verstand:
https://wiki.gentoo.org/wiki/GNU_Coreutils
https://wiki.gentoo.org/wiki/CD/DVD/BD_writing
https://wiki.gentoo.org/wiki/Blu-ray
https://wiki.gentoo.org/wiki/GCC_optimization
... und ...
https://wiki.gentoo.org/wiki/Chess
(Ich verwende zur Analyse einer Partie natürlich Stockfish mit Xboard. Gemeinerweise benötigt man für diese Kombi noch den "games-board/polyglot". Alle drei natürlich unstable - wie alle Spiele)
Seiten die ich NICHT unbedingt empfehle, weil ...
Weiterhin empfehle ich:
* Nutze beim "emerge" einfach niemals die Optionen "--keep-going" und keinerlei Variante von "--autounmask" ... Kümmer' Dich selbst darum ...
* Setze nicht das Use-Flag "symlink" für "gentoo-sources" ... Mach' es manuell selbst (wie in meinem ChetSheet in A.2 beschrieben).
. _________________ https://wiki.gentoo.org/wiki/User:Pietinger |
|
Back to top |
|
|
disquz n00b
Joined: 09 Feb 2019 Posts: 20
|
Posted: Sat Feb 10, 2024 4:15 pm Post subject: |
|
|
Hi,
ich hätte da eine Frage bezüglich multilib...
Ich würde meinen Rechner (nach langer Zeit) gerne mal wieder nach diesem Tutorial einrichten aber ich hätte trotzdem gerne die Möglichkeit multilib (32bit-Programme) zu nutzen.
Gibt es eine Möglichkeit dies trotzdem zu realisieren? Welche Vor- und Nachteile würden dadurch entstehen?
Danke vorab und vielen dank für dieses geniale Tutorial!
Viele Grüße
m41 |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5147 Location: Bavaria
|
Posted: Sat Feb 10, 2024 4:56 pm Post subject: |
|
|
Hi disquiz,
erstmal vielen Dank für das Kompliment.
Wenn Du 32bit-Programme benötigst solltest Du wirklich das (derzeit noch) standardmäßige Multilib installieren (irgendwann wird es sicherlich sterben). Vorteil ist klar: Du hast auch 32bit. Ein weiterer Vorteil: Du kannst beim "eselect profile set X" gleich "default/linux/amd64/17.1/desktop/plasma (stable)" setzen und benötigst nicht mehr die Verknüpfung vom Profil "No-Multilib" mit dem Profil "Plasma" (A.3.6)
Es hat m.M. nach jetzt keine "riesigen" Nachteile ... möglicherweise ist so ein System nicht "ganz so sicher" wie ein Kernel ohne 32bit-Unterstützung - aber es gibt eh' keine 100% Sicherheit.
Außerdem werden ein paar (ganz wenige) Pakete zusätzlich installiert. Also nichts was ich als kritisch sehen würde, WENN man 32bit benötigt. Natürlich lässt Du dann auch die 32bit-Unterstützung im Kernel drin (ist ja in der default-config bereits aktiviert) und ansonsten gibt es keine Unterschiede zu dem Guide hier _________________ https://wiki.gentoo.org/wiki/User:Pietinger |
|
Back to top |
|
|
disquz n00b
Joined: 09 Feb 2019 Posts: 20
|
Posted: Sat Feb 10, 2024 5:21 pm Post subject: |
|
|
Na das ging aber flott...
Alles klar, dann mache ich es so.
Plasma brauche ich eigentlich nicht, da ich den i3-wm als Window Manager nutze...
Vielen Dank nochmal! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|