Eigener Kernel wirklich sicherer?
Eigener Kernel wirklich sicherer?
Guten Morgen,
gelegentlich baue ich für Server eigene Kernel.
Meist aber nur der Treiber wegen.
Ist es eig sicherer, den Kernel selbst zu kompilieren als einen von der Stange zu nehmen?
Mir ist klar: Das Thema ist weitläufig und man kann ihn durch falsche Konfiguration sicher sehr viel unsicherer machen.
Aber mal generell gefragt: Bringt das was?
gelegentlich baue ich für Server eigene Kernel.
Meist aber nur der Treiber wegen.
Ist es eig sicherer, den Kernel selbst zu kompilieren als einen von der Stange zu nehmen?
Mir ist klar: Das Thema ist weitläufig und man kann ihn durch falsche Konfiguration sicher sehr viel unsicherer machen.
Aber mal generell gefragt: Bringt das was?
Re: Eigener Kernel wirklich sicherer?
Außer mehr Arbeit eigentlich ncht viel... Im schlimmsten Fall bekommst du Kernel-Sicherheitslücken erst später mit und verwendest somit länger einen angreifbaren Kernel.
Re: Eigener Kernel wirklich sicherer?
Typischer Fall von "kommt drauf an".
Die Idee von nem Distrikernel ist: bringe alles mit, was irgendwer irgendwann vielleicht mal brauchen könnte.
Die Idee von nem eigenen (minimalen) Kernel ist: hab nur das (wenn möglich fest einkompiliert) was Du auch wirklich brauchst.
Vorausgesetzt Du hast keinen Fehler in der Konfiguration gemacht, ist Deiner jetzt in allen Fällen sicherer, die darauf basieren, dass für den Angriff Modul xzy geladen werden kann. Da es bei Dir aber kein Modul xzy gibt (und der Code auch nicht fest einkompiliert wurde), sind alle Angriffe, die darauf basieren, dass xyz geladen werden kann, schonmal zum scheitern verurteilt.
Gehts hingegen um nen Bug der nur auftritt, wenn irgendwas von Compiler abc Version 47.11 fest einkompiliert worden ist, dann bist Du mit dem modularen Distri Kernel vermutlich besser dran.
Und dann gibts noch "Deine Config ist von Dir getestet" gegen "die Districonfig von vielen". Bugs finden viele oft gründlicher als man alleine. Und wie von bluestar schon genannt "Du musst Dich aktiv um Updates/Patches kümmern" gegenüber "die Distri macht das für Dich". Und wenn man noch länger nachdenkt, kann man bestimmt auch noch andere Punkte finden. Also ein klares "kommt drauf an".
Die Idee von nem Distrikernel ist: bringe alles mit, was irgendwer irgendwann vielleicht mal brauchen könnte.
Die Idee von nem eigenen (minimalen) Kernel ist: hab nur das (wenn möglich fest einkompiliert) was Du auch wirklich brauchst.
Vorausgesetzt Du hast keinen Fehler in der Konfiguration gemacht, ist Deiner jetzt in allen Fällen sicherer, die darauf basieren, dass für den Angriff Modul xzy geladen werden kann. Da es bei Dir aber kein Modul xzy gibt (und der Code auch nicht fest einkompiliert wurde), sind alle Angriffe, die darauf basieren, dass xyz geladen werden kann, schonmal zum scheitern verurteilt.
Gehts hingegen um nen Bug der nur auftritt, wenn irgendwas von Compiler abc Version 47.11 fest einkompiliert worden ist, dann bist Du mit dem modularen Distri Kernel vermutlich besser dran.
Und dann gibts noch "Deine Config ist von Dir getestet" gegen "die Districonfig von vielen". Bugs finden viele oft gründlicher als man alleine. Und wie von bluestar schon genannt "Du musst Dich aktiv um Updates/Patches kümmern" gegenüber "die Distri macht das für Dich". Und wenn man noch länger nachdenkt, kann man bestimmt auch noch andere Punkte finden. Also ein klares "kommt drauf an".
Re: Eigener Kernel wirklich sicherer?
Warum?eggy hat geschrieben:(wenn möglich fest einkompiliert)
Re: Eigener Kernel wirklich sicherer?
Ein Kernel, der keine Modulunterstützung hat und alle Treiber, die benötigt werden, fest einkompiliert hat, kann auch keinen Schadcode in Form von eingeschmuggelten Kernelmodulen nachladen.guennid hat geschrieben:20.12.2017 08:09:22Warum?eggy hat geschrieben:(wenn möglich fest einkompiliert)
Wenn man den Kernel sicherer machen will, reicht es also nicht, nur die Treiber fest einzukompilieren, man muß auch den Modulsupport ausschalten. Ansonsten bringt ein selbst gebauter Kernel keinen Sicherheitsgewinn. Man hat nur mehr Aufwand, den Kernel aktuell zu halten. Man kann mit einem selbst kompilierten Kernel etwas Plattenplatz sparen, allerdings braucht der Quellcoder und die nötige Entwicklungsumgebung ebenfalls Plattenplatz, was den eingesparten Platz wieder mehr als aufwiegt.
Re: Eigener Kernel wirklich sicherer?
Danke für die Erläuterung!

Einleuchtend.Man hat nur mehr Aufwand, den Kernel aktuell zu halten.
den man nicht unbedingt auf derselben Maschine zur Verfügung stellen muss.allerdings braucht der Quellcode und die nötige Entwicklungsumgebung ebenfalls Plattenplatz

Re: Eigener Kernel wirklich sicherer?
Bei den heutigen Festplatten ist es natürlich auch ein riesen Vorteil, wenn man dreieinhalb Megabyte an Platz spart. Allein dafür lohnt sich die Arbeit doch schon. 

Re: Eigener Kernel wirklich sicherer?
Alleine /lib/modules braucht 166MB unter JessieRadfahrer hat geschrieben:20.12.2017 17:03:17Bei den heutigen Festplatten ist es natürlich auch ein riesen Vorteil, wenn man dreieinhalb Megabyte an Platz spart. Allein dafür lohnt sich die Arbeit doch schon.

Ein monolitischer Kernel sollte normalerweise 4-5MB benötigen und auf die initrd kann man dann auch weitgehend verzichten, bzw sie läßt sich von 15MB auf ein paar hundert kB schrumpfen. Ich sehe da schon Sparpotential von rund 180MB.
Wer mit 4GB Plattenplatz auf einem EeePC zu kämpfen hat, ist dafür durchaus dankbar. Auf modernen Rechnern mit mindestens 128GB SSD ist das tatsächlich vergebliche Liebesmühe.
Re: Eigener Kernel wirklich sicherer?
Ein Original-Debian-Kernel würde doch vollautomatisch Updates bekommen wenn man
unattended-upgrades installiert? Wäre das irgendwie auch mit einem eigenen möglich? Evt. funktioniert es noch für den Quelltext wenn man ein Debian-Paket verwendet. Aber welches?
linux-source ist nur ein Meta-Paket, das bekommt ja kein Security Update und linux-source-$version wird evt. durch linux-source-$neue_version ersetzt. Selbst wenn das klappt, müsste man irgendwie ein "make" starten und dann?
OT: Ich muss evt. einen Rechner einrichten, bei dem die Firmen-Politik tägliche Updates verlangt, für den aber niemand zuständig ist. Sollte ein Update schief gehen, wird es irgendein Benutzer schon merken und hoffentlich rausfinden, wen er anrufen kann - so ist der Plan


OT: Ich muss evt. einen Rechner einrichten, bei dem die Firmen-Politik tägliche Updates verlangt, für den aber niemand zuständig ist. Sollte ein Update schief gehen, wird es irgendein Benutzer schon merken und hoffentlich rausfinden, wen er anrufen kann - so ist der Plan

Beware of programmers who carry screwdrivers.
Re: Eigener Kernel wirklich sicherer?
Guten Morgen!
Entschuldigt meine späte Antwort.
Was ich mich noch frage: Warum eig einen Kernel patchen? In neueren Kernel-Versionen werden gefundene Fehler etc. doch vermutlich gefixt?
Könnte man nicht also einfach in regelmäßigen Abständen die neueste Kernel-Version für ein System kompilieren und wäre somit wieder auf dem Stand?
Das ist doch verhältnismäßig leicht machbar.
Entschuldigt meine späte Antwort.
Was ich mich noch frage: Warum eig einen Kernel patchen? In neueren Kernel-Versionen werden gefundene Fehler etc. doch vermutlich gefixt?
Könnte man nicht also einfach in regelmäßigen Abständen die neueste Kernel-Version für ein System kompilieren und wäre somit wieder auf dem Stand?
Das ist doch verhältnismäßig leicht machbar.
Re: Eigener Kernel wirklich sicherer?
Ich sehe da durchaus einige, potenzielle Probleme:
- Verträgt sich der neue Kernel mit deinem Userland - Kernel API kompatibel?
- Der neue Kernel enthält mit Sicherheit auch neuen Code, der wiederrum nicht 100%ig frei von Bugs ist und du somit eine neue Fehlerquelle eröffnest
- DEBIANUNDANDREAS
- Beiträge: 1304
- Registriert: 01.06.2013 10:37:46
Re: Eigener Kernel wirklich sicherer?
Hallo die Kernelkompielierung ist zeitaufwendig ~45 Minuten!?
Re: Eigener Kernel wirklich sicherer?
Zeitaufwendig?
Nein, auf nem halbweg aktuellen Prozessor (muss nix unheimlich schnelles sein) dauert das bei mir kaum 10 Minuten.
Was meinst du mit Userland und Kernel-API?
Nein, auf nem halbweg aktuellen Prozessor (muss nix unheimlich schnelles sein) dauert das bei mir kaum 10 Minuten.
Was meinst du mit Userland und Kernel-API?
Re: Eigener Kernel wirklich sicherer?
Na z.B. kann es zu Kompatibilitätsproblemen zwischen Tools (iptables, mdadm, usw.) kommen, wenn der Kernel eine neuere Version der Tools voraussetzt.
Re: Eigener Kernel wirklich sicherer?
Zwei Möglichkeitencosmac hat geschrieben: Evt. funktioniert es noch für den Quelltext wenn man ein Debian-Paket verwendet. Aber welches? Debianlinux-source ist nur ein Meta-Paket, das bekommt ja kein Security Update und linux-source-$version wird evt. durch linux-source-$neue_version ersetzt. Selbst wenn das klappt, müsste man irgendwie ein "make" starten und dann?
Code: Alles auswählen
apt-get install linux-source-4.9
Das tar muß entpackt und vorbereitet werden, zBsp. 'make allnoconfig'.
Unterschieben der eigenen config und Bauen/Paketerstellung mit Kerneltool:
Code: Alles auswählen
KCONFIG_CONFIG=deineconfig; export KCONFIG_CONFIG
make -j 3 deb-pkg binary
Code: Alles auswählen
apt-get source linux [-t stretch]
Solange sich die source-Dateien nicht ändern, erfolgt kein weiterer Download.
Das Ergebnis entspricht obigem debiankernel.tar (OHNE den rt.patch) + debian/-Verzeichnis.
Dadurch können debian-Tools (fakeroot, dpkg-buildpackage usw.) zur Paketerstellung benutzt werden.
Wie hier eine eigene config untergeschoben wird?
Die erstellten debs landen in beiden Fällen letztlich in einem lokalen Repo und ermöglichen
mit passender Namens/Versionskreation (was tricky sein kann) automatische Upgrades.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Eigener Kernel wirklich sicherer?
Dankeschön! Also es geht, aber wenn man zeitnahe Updates möchte, ist ein Eigenbau-Kernel nicht ganz trivial. Wenn man dabei ein .deb baut, muss man auch noch dafür sorgen, dass die Automatik auch für initrd und grub funktioniert 

Beware of programmers who carry screwdrivers.