it-swarm.com.de

Kann apt-check ein Kernel-Upgrade erkennen, das für die Sicherheit ohne Linux-Generika erforderlich ist?

Dies wurde als unklar auf Eis gelegt. Vielleicht habe ich zu viele Hintergrunderklärungen eingefügt. Mea culpa. Damit:

DIESES IS DIE FRAGE, NOCH AUF EINE ANDERE WEISE UMGEKÖRPERT:


Kann apt-checken, d.h.

/usr/lib/update-notifier/apt-check

um potenzielle Kernel-Upgrades zu behandeln, müssen sie genauso behandelt werden wie andere Kernel-Upgrades. Dabei werden sie erkannt und zwischen denjenigen unterschieden, die Sicherheitsupdates enthalten, und denjenigen, die dies nicht tun, so dass sich diese im zweiten Feld von apt widerspiegeln -checks Ausgabe, ohne das Metapaket linux-generic installiert zu haben?

Und wenn apt-check dies nicht kann, gibt es ein anderes Programm, das dies kann?


user535733 scheint es in einem Kommentar explizit verstanden und beantwortet zu haben:

"... Wenn Sie das Metapaket deinstallieren, gibt es KEINE andere automatisierte Methode, um nach Kernel-Upgrades zu suchen ... es sei denn, Sie schreiben es selbst."

Wenn niemand anderer Meinung ist und user535733 nicht sagt, dass ich ihn missverstanden habe, und dies in eine Antwort einfügt, gebe ich ihm die Brownie-Punkte.

user535733 und waltinator schlagen beide vor, dass ich ein Programm schreiben könnte, um dies selbst zu tun. Waltinator ist vielleicht bereit, den Quellcode von apt-check umzuschreiben, aber ich bin es nicht. Möglicherweise könnte ich eine Abhilfemaßnahme per Skript ausführen, aber ich müsste einen Weg finden, um zwischen Kernel-Upgrades mit neuen Sicherheitsupdates und solchen ohne zu unterscheiden.

Danke, Gentlesapients.

= = = hinzugefügtes Material endet - Originalpost folgt = = =

apt-check (aus dem Update-Notifier-Paket), das normalerweise zum Schreiben der MOTD verwendet wird, aber direkt aufgerufen werden kann, gibt die Ausgabe des Formulars zurück:

x;y

dabei steht x für die Anzahl der möglichen Upgrades
und y ist die Anzahl der möglichen SECURITY-Upgrades

Wenn linux-generic nicht installiert ist, wird ein mögliches Kernel-Upgrade NICHT auf die erste Nummer angerechnet. Wenn ein Kernel-Upgrade erforderlich ist, um Sicherheitsmängel in älteren Kerneln zu beheben, zählt es dann zur zweiten Zahl? Mit anderen Worten, kann apt-check angewiesen werden, um Ihnen mitzuteilen, dass Sie den Kernel aktualisieren MÜSSEN, wenn das Metapaket fehlt, das vom neuesten Kernel abhängt?

Wenn dies nicht klar ist, ist hier ein konkretes Beispiel:
Jedes Mal, wenn ich ein Upgrade auf 4.4.0-77 durchführe, werden meine Xenial-Systeme, von denen ich 2 habe, auf demselben Computer beschädigt. Die einzige Lösung, die ich gefunden habe, die tatsächlich funktioniert, besteht darin, ein fsarchiver-Backup des überflüssigen Systems wiederherzustellen, alle meine Systeme zu mounten und lilo (wie update-grub für einen anderen Bootloader) auszuführen, um den neuen/alten Kernel zu finden und neu zu starten das wiederhergestellte System und deinstallieren Sie Linux-Generic, damit es nicht automatisch 4.4.0-77 installiert. Im Moment überprüfe ich, welche Kernel-Linux-Generika installiert werden MÜSSEN:

apt-get install --simulate linux-generic.

Vielleicht werde ich linux-generic noch einmal versuchen, wenn wir 78 oder 80 oder sogar 4.4.1 erreichen.

Also wird apt-check mir sagen, wann eines der neuen Kernel-Upgrades nicht nur für glänzende neue Gee-Whiz-Funktionen ist, sondern tatsächlich eine Sicherheitslücke behebt? Oder hängt es von linux-generic ab, dies zu tun? Und wenn letztere, gibt es zu diesem Zweck eine Alternative zu apt-check?

4

Ihre Frage ist ein bisschen verwickelt, aber ich denke, es läuft auf die einzelne Frage im Titel hinaus, also werde ich darauf eingehen.

Wie Apt das zu aktualisierende Paket auswählt

Nein, der A erweiterte P ackage T ool kann neue Pakete (z. B. linux-image-*-generic) nicht automatisch installieren, es sei denn, ein anderes Paket hängt davon ab darauf. Es werden nur bereits installierte Pakete automatisch aktualisiert und dabei ihre vorherige Version ersetzt.

Dies ist ein Grund, warum wir Metapakete wie linux-image-generic verwenden, um Apt auf neue zu installierende Pakete aufmerksam zu machen, ohne ältere Versionen ersetzen zu müssen. Wir tun dies für Kernel-Pakete, weil es schwierig wäre, den aktuell ausgeführten Kernel zu ersetzen, und weil die Leute einfacher auf eine frühere, bekanntermaßen funktionierende Kernel-Version zurückgreifen möchten, falls etwas schief geht.

Darüber hinaus kennt Apt die Semantik von Versionsnummern nicht und kümmert sich auch nicht darum. Es geht nur um die Reihenfolge der Versionsnummern und eine Liste der verfügbaren Versionen, um die für die Installation am besten geeignete Version basierend auf einem konfigurierbaren Bewertungssystem auszuwählen. Die Paket- (Repository-) Manager sind verantwortlich für die Einbindung und Veröffentlichung von vorgelagerten Änderungen inkl. Sicherheitsupdates in Ersatzpaketen mit einem geeigneten Versionsstring.

Was das für apt-check bedeutet

Nachdem wir nun Apt im Allgemeinen behandelt haben, kann ich erläutern, wie sich dies auf Ihre Frage zu update-notifier auswirkt, dem Paket, das apt-check bereitstellt: Wie bei Apt kann es nicht bekannt sein, dass neue Pakete installiert werden müssen, wenn diese nicht davon abhängen auf bereits installierten oder geplanten installierten Paketen. Wenn Sie linux-image-generic nicht installiert haben, sieht Apt keine neuen Kernelpakete und update-notifier auch nicht, wenn es Apt nach aktualisierbaren Paketen abfragt.

Was ist, wenn ich diese Funktion wirklich möchte?

Natürlich können Sie, wie bei den meisten Linux-Anwendungen, ein Tool schreiben, das in allen verfügbaren Paketen nach Mustern sucht, um diese (halb-) automatisch zu installieren. Ich kenne zumindest keine On-Board-Tools, die das können, obwohl diese Aufgabe so allgemein zu sein scheint, dass ich nicht überrascht wäre, ein Skript dafür zu sehen, das ein Administrator zusammen gehackt hat.

3
David Foerster

In Xenial werden bei unbeaufsichtigten Upgrades standardmäßig nur Sicherheitskorrekturen installiert. Im Software Updater können Sie nur Sicherheitsupdates auswählen, die installiert werden sollen. Aber was Ihr Problem betrifft, werden die anstehenden Sicherheitsupdates wahrscheinlich die Änderungen früherer, nicht sicherheitsrelevanter Updates enthalten, die auch Ihr System ruinieren. Sie sollten also einen Fehler gegen Linux melden, um das Problem bei den anstehenden Updates zu beheben.

Wie auch immer, in der Kommandozeile könnte man laufen

apt-cache policy linux-generic

um festzustellen, ob es sich bei dem neuesten verfügbaren Update um ein Sicherheitsupdate handelt.

In Xenial können Sie das neueste Sicherheitsupdate von Linux-Generic manuell von installieren

apt-get install linux-generic/xenial-security
2
jarno

Ich danke Ihnen allen und Andy von Canonical, der in einem anderen Forum einige gute Tipps gegeben hat. Ich habe ein bisschen herumgespielt, nicht nur hier, und ich habe ein paar Dinge gelernt und bin gekommen, um einige andere zu verdächtigen. Zu viel, um einen Kommentar einzutragen.

Genau genommen wurde die Frage von user535733 im zweiten Kommentar zu meinem ersten Beitrag richtig und umgehend beantwortet, und wenn er das in eine Antwort einsetzt, werde ich sie gerne annehmen.

@ user535733 - Beachten Sie bitte die obigen Hinweise.

Aber das Thema wurde von waltinator im ersten Kommentar erweitert, um die Möglichkeit einzuschließen, ein Tool zu erstellen, um die Arbeit zu erledigen, und von David in WIE apt-check funktioniert und WARUM es dies nicht tun wird, wenn Linux-Generic nicht installiert ist.

Das Folgende ist bei weitem nicht vollständig, einige davon sind Spekulationen (ich hoffe es ist eindeutig beschriftet), es könnte sogar ein paar völlige Fehler geben (stellen Sie sich das vor) und ich komme zurück und bearbeite noch ein paar Sachen. Vielleicht wird jemand auf dieser Seite stolpern finden Sie einige davon von Interesse. Möglicherweise müssen Sie die Befehle auf Ihrem eigenen System ausführen, um die Ausgabe klar im richtigen Format zu sehen.


re apt-check & linux-generic:

Linux-Generika scheinen ein roter Hering zu sein. Mea culpa, ich nahm an, dass der Mangel das Problem war. Ich glaube jetzt nicht, dass apt-check dies AT ALL nicht kann, auch wenn Linux-Generic IS installiert ist. Es ist eine schwierige Frage, ohne die Installation von 4.4.0-77 zu testen. Ich werde es in Zukunft testen, wenn ich mich nicht um einen Kernel kümmern muss, der meine xenialen Systeme durchgehend zerstört.

Das Problem ist NICHT, dass apt-check keinen Zugriff auf die erforderlichen Daten hat. Sie brauchen definitiv KEIN Linux-Generikum installiert zu haben, um Metadaten über mögliche Kernel-Upgrades zu erhalten, die ausreichen, um zu zeigen, was verfügbar ist und ob Sicherheitskorrekturen vorhanden sind.

Ich gehe davon aus, dass "apt-get update", ein Teil von apt, die Informationen erhält (mehr dazu weiter unten), aber WAS AUCH IMMER:

  • es ist NICHT erforderlich, dass Linux-Generic installiert ist, um mögliche Kernel-Upgrades zu sehen.

  • es ist NICHT erforderlich, dass Linux-Generic installiert ist, um festzustellen, von welcher Kernel-Version Linux-Generic aktuell abhängt.

  • es ist KEIN Linux-Generikum erforderlich, um festzustellen, ob ein potenzielles Kernel-Upgrade Sicherheitsupdates enthält.

Unabhängig davon, mit welchen Informationen Sie beginnen, bleiben diese Informationen lokal erhalten (vermutlich bis Sie sie löschen). Apt-check greift also auch offline und ohne installiertes Linux-Generikum auf die notwendigen Informationen zu - es verwendet sie einfach nicht, wahrscheinlich BY DESIGN. Aber es kann in einem Skript verwendet werden - ich habe kein Linux-Generikum installiert und hier sind zwei Beispiele für einen Test, der auf meinem System auch offline funktioniert:

$ apt-cache showpkg linux-image-4.4.0-75-generic | grep "$(lsb_release --codename --short)-security"

und die Ausgabe:

4.4.0-75.96 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-security_main_binary-AMD64_Packages) (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-updates_main_binary-AMD64_Packages)

File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-security_main_binary-AMD64_Packages

File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_xenial-security_main_i18n_Translation-en

$

Also, 4.4.0-75 HAT Sicherheitsupdates.

Im Gegensatz:

$ apt-cache showpkg linux-image-4.4.0-77-generic | grep "$(lsb_release --codename --short)-security"

und die Ausgabe (nur eine Rückkehr der Eingabeaufforderung):

$ 

4.4.0-77 nicht.


apt-Check & Apt:

Apt-check, Teil von Update-Notifier-Common (nicht Update-Notifier wie oben angegeben), kann von Apt für seine Informationen über Pakete abhängen, wie David angibt, wahrscheinlich speziell von "apt-get update", auch wenn Apt dies nicht tut Informationen zu möglichen Kernel-Upgrades erhalten Sie von linux-generic. Es ist das, was ich erwarten würde und ich sehe keine Alternative, aber seltsamerweise ist apt KEINE Abhängigkeit für apt-check, es sei denn, die Entwickler haben die Abhängigkeiten als falsch markiert:

$ apt-rdepends update-notifier-common | grep apt

und die Ausgabe:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
  Depends: python3-apt
python3-apt
  Depends: libapt-inst2.0 (>= 1.1~exp9)
  Depends: libapt-pkg5.0 (>= 1.1~exp9)
  Depends: python-apt-common
libapt-inst2.0
  Depends: libapt-pkg5.0 (>= 1.1~exp9)
libapt-pkg5.0
python-apt-common
$

Theoretisch brauchen Sie apt nicht, um apt-check auszuführen - Sie könnten es auf einem System verwenden, das mit dpkg und dselect verwaltet wird, obwohl ich nicht weiß, wie das funktionieren könnte. Ich würde es sicherlich nicht für wahrscheinlich halten, bis ich es tatsächlich ausprobiert hätte (und ich bin vielleicht später neugierig), aber auf diese Weise sind die Abhängigkeiten gekennzeichnet. Man könnte meinen, die Entwickler würden apt als eine Abhängigkeit für update-notifier-common markieren, wenn einer ihrer Befehle funktionieren müsste, aber es könnte ein Versehen sein.

Also, in Bezug auf die ursprüngliche Frage, ist hier, was ich jetzt vermute, wahr:

"Kann apt-check ... durchgeführt werden, um potenzielle Kernel-Upgrades zu behandeln, so wie dies auch bei Nicht-Kernel-Upgrades der Fall ist, um sie zu erkennen und zwischen solchen zu unterscheiden, die Sicherheitsupdates enthalten, und solchen, die dies nicht tun ... ohne das Meta zu haben -package linux-generic installiert? "

Nein, und es kann wahrscheinlich auch nicht mit Linux-Generika.

"Und wenn apt-check das nicht kann, gibt es ein anderes Programm, das das kann?"

Nein, sozusagen nicht out of the box.

Aber schaffen Sie etwas, das kann

Wie der Walzer vorschlug, könnte apt-check wahrscheinlich umgeschrieben werden, wenn Sie das Wissen und die Neigung dazu haben. Aber, wie David vorschlug, kann diese Funktion wahrscheinlich mit anderen Tools geschrieben werden, und ich kann das wahrscheinlich viel einfacher tun, als zu lernen, wie man apt-check neu schreibt.

Wie bereits erwähnt, können Sie den Namen des Pakets erhalten, das den neuesten, glänzendsten Kernel enthält, der von Canonical gesegnet wurde, indem Sie auf die Ausgabe von:

apt-get install --simulate linux-generic

und Sie können es als mit/not_having Sicherheitskorrekturen mit etwas wie klassifizieren

apt-cache showpkg linux-image-4.4.0-75-generic | grep "$(lsb_release --codename --short)-security"

wie oben dargestellt.

Um dies zu skripten, benötigen wir im Idealfall eine vollständige Versionshistorie dessen, wovon Linux-Generic abhängig war, um in einer Situation wie dieser ein falsches Negativ zu vermeiden:

Sie haben Version 100 installiert.

Version 101 hatte Sicherheitsupdates, aber Ihr Computer war in dieser Woche nicht eingeschaltet.

Version 102 enthält KEINE Sicherheitsupdates (relativ zu 101, aber relativ zu 100, da es immer noch diejenigen enthält, die in 101 erstellt wurden).

Es wäre schön, wenn ich eine vollständige Versionshistorie von Linux-Generic zusammenrollen und irgendwie herausfinden könnte, in welcher "Tasche" des Repos die abhängigen Kernel veröffentlicht wurden. Bisher habe ich nur für alte Versionen herausgefunden, wie das geht das sind noch im repo.

Dieser Befehl:

apt-cache madison linux-generic

geht in die richtige Richtung, aber ich denke, es wird nur das angezeigt, was IS im Repo ist, nicht das, was im Repo war, daher bin ich mir nicht sicher, ob die Informationen, die es liefert, ausreichen werden, um das falsch negative Szenario zu verhindern ausführlich oben. Wenn im obigen Beispiel 101 bereits aus dem Repo verschwunden wäre, denke ich nicht, dass die Informationen von "apt-cache madison linux-generic" ausreichen würden.

Und oh ja

Eine weitere Sache, die ich erwähnen sollte, damit sich jemand dafür interessiert und viel Zeit damit verbringt, ohne es zu wissen:

Ich mache immer noch Witze, weil ich angefangen habe und stur bin. Aber während der Kernel, der mir Probleme bereitet hat, soweit ich das beurteilen kann, KEINE Sicherheitskorrekturen aufweist, und wenn ich ein funktionierendes Skript dafür hätte, hätte es meine xenialen Systeme niemals kaputt gemacht, sagt mir Andy das 4.4.0-77 ist ein seltener Fall und die große Mehrheit der Kernel-Upgrades, die Linux-Generic benötigt, hat Sicherheits-Fixes. Ich vermute, dass er figurativ/hyperbolisch war, als er "99%" sagte, aber selbst wenn ich das berücksichtige, vermute ich, dass ein apt-check-ähnlicher Mechanismus, der für potenzielle Kernel-Upgrades gilt, nicht verhindern wird, dass ein nicht benötigter (sicherheitstechnischer) Mechanismus entsteht ) führen Sie sehr oft Upgrades durch, um zu verhindern, dass nicht benötigte Kernel-Upgrades apt oder andere wichtige Systemkomponenten beschädigen, und dies noch seltener. Es scheint nur ein Zufall zu sein, dass es das für mich getan hätte. BTW, 4.4.0-78 funktioniert gut für mich. Andy hatte recht - was auch immer es um die 77 ging ist behoben.

0