Schlagwort Archiv: Linux

OS-Internals #2: Ext2 und Dateien in Linux

In Linux ist alles eine Datei, selbst Ordner und Geräte.

In Linux ist alles eine Datei, selbst Ordner und Geräte.

In Linux gibt es bezüglich Dingen wie Dateien, Ordnern, Geräten, Schnittstellen und Verknüpfungen eine schöne Regel: „On a UNIX system, everything is a file; if something is not a file, it is a process.“. Bei Linux ist also alles eine Datei (ja, auch Ordner sind Dateien), darum sollten wir mal einen genaueren Blick darauf werfen.

Dateisystem: ext2 und inodes

Da man Dateien nicht einfach hintereinander weg speichern kann (da sich z.B. die Größe ändern kann), greifen UNIX-Systeme meist auf das Konzept der inode (index node) zurück. Um zu verstehen, was eine inode ist, sollte man sich aber anschauen, wie z.B. das ext2 Dateisystem (welches inodes benutzt und auf dem viele weitere Dateisysteme basieren) funktioniert.

Zunächst zur Hardware: Ein Block ist eine Menge von Sektoren einer Festplatte, wobei ein Sektor die kleinste zu adressierende Einheit einer Festplatte ist. Ein Block ist normalerweise 1, 2, 4 oder 8 KiB groß (also ggf. ein Zusammenschluss von Sektoren), was bei der Formatierung der Festplatte angegeben wird. Fasst man mehrere Blöcke zusammen ist es eine block group.

Kommen wir jetzt zur inode, was im Prinzip nichts weiter als eine block group ist. Sie ist 128 bytes groß und enthält Metadaten und Referenzen auf weitere Blöcke.
Jede Datei ist eine Referenz auf genau eine inode, wobei die eigentlichen Daten eben in anderen inodes liegen und referenziert werden. Es gibt 12 direkte Referenzen und 3 weitere Referenzen, die jeweils auf cluster zeigen. Ein cluster enthält 256 Referenzen auf weitere cluster oder inodes. Dadurch kann eine Datei bis zu 2 TiB groß werden. (mehr …)

McAfee Lücken: Das Verhängnis vom root-User

Durch das ersetzen eines Request-Parameters konnte man eine RCE auslösen.

Durch das ersetzen eines Request-Parameters konnte man eine RCE auslösen.

Wer mit root-Rechten (also als Administrator) in Windows arbeitet wird sicher schon einmal eine Fehlermeldung nach dem Motto „Bitte kontaktieren sie Ihren Systemadministrator“ bekommen. Blöd, wenn man selbst der Systemadministrator ist.
Wäre es da nicht schön einfach alle Rechte auf einem System zu haben oder sie gegebenenfalls temporär erteilt zu bekommen? Sicherlich, doch birgt das auch immense Sicherheitsrisiken, wie die Entdeckung mehrerer Sicherheitslücken in dem McAfee Virus-Scanner für Linux zeigte.

Diverse Sicherheitslücken in McAfee für Linux

Der Virus-Scanner von McAfee ist auch für Linux erhältlich und muss natürlich als Benutzer mit root-Rechten installiert und ausgeführt werden.

Einmal installiert, kann die gehackte Software dann Code ebenfalls mit root-Rechten ausführen, was natürlich eine sehr große Gefahr für das System ist. Im Gegensatz zu Windows Systemen kann der root-User bei Linux wirklich alles – nur nicht sich selbst löschen 😉

Andrew Fasano fand nun zehn Sicherheitslücken, mit deren Hilfe man Code als root-User ausführen kann:

(mehr …)

OS-Internals #1: /dev/null in Linux UND Windows

Wie ein Müllcontainer fungiert /dev/null unter UNIX als schwarzes Loch für Daten.

Wie ein Müllcontainer fungiert /dev/null unter UNIX als schwarzes Loch für Daten.
(by-nc-sa 2.0)

Dies ist der erste Beitrag der OS-Internals Reihe. Ich versuche unter diesem Begriff sehr technische Aspekte von Linux zu beleuchten und verständlich zu erklären.

Die meisten, die Linux benutzen, sollten das Gerät /dev/null kennen, welches auch Null-Gerät genannt wird. Hierbei handelt es sich um ein spezielles Gerät, das alle Eingehenden Daten sofort löscht und gar nicht erst persistiert. Es wird daher auch oft scherzhaft als schwarzes Loch oder Nirvana bezeichnet.

Technisch ist /dev/null – genau wie alles andere bei Linux – eine Datei, jedoch eine spezielle, die output streams bereit stellt und input streams entgegen nehmen kann (doch zu Dateien in Linux in einem späteren Teil mehr). Wenn man schauen möchte was es ist, kann man auch einfach folgendes machen und sich die Ausgabe anschauen:

Eigenschaften
$ ls -alh /dev/null
crw-rw-rw- 1 root root 1, 3 Nov 10 19:06 /dev/null

Es ist also eine spezielle Datei (das c bedeutet char device), jeder hat Zugriff darauf, es gehört root und es werden weitere, für uns momentan nicht wichtige, Informationen angezeigt.

Nutzen von /dev/null

Man kann es einsetzen um z.B. einen gewissen output-Stream (z.B. stderr) aus der Ausgabe von einem Programm zu entfernen. Hierfür benutzt man einfach den Umleitungs-Operator (redirection operator, also das > Zeichen) kombiniert mit der file descriptor number für stderr (sprich 2):

Ausgaben weg schmeißen
$ find /etc/ -iname apt 2> /dev/null

Wir suchen hier nach allen Dateien und Ordnern unter /etc/ in deren Namen der string apt vorkommt. Alle Ausgaben auf den stream stderr werden ins Nirvana geschickt.

Gefahren von /dev/null

(mehr …)

Docker: Hinweise in puncto Sicherheit

Ist Docker wirklich Sicher?

Docker erfreut sich immer höherer Beliebtheit und gilt als sicher, doch stimmt das wirklich?

Docker dient in erster Linie dazu Anwendungen (meist Server-Anwendungen) einzukapseln und vom Rest des Betriebssystems zu entkoppeln. Dabei wird auf den Linux Kernel vom Host-System zurückgegriffen und mittels cgroups und namespaces die Möglichkeiten des Docker-Containers eingeschränkt.

Container sind dabei kein Mittel um Anwendungen sicherer zu machen, sondern dienen in erster Linie dazu skalierbare Dienste bereit zu stellen. Sie haben jedoch den Vorteil, dass Anwendungen vom Rest des Systems entkoppelt sind, mehr dazu aber später.

Das Prinzip von Containern

Ein Container ist sehr grob gesagt eine leichtgewichtige VM (virtual machine). Er enthält ebenfalls ein virtuelles Betriebssystem besitzt jedoch eine andere Virtualisierungsebene als eine VM. (mehr …)

Microsoft entwickelt GNU/NT Kernel

Der GNU/NT Kernel soll NT- und Linux-Anwendungen ausführen.

Microsoft hat auf der Build 2016 den GNU/NT Kernel vorgestellt. Ein Kernel, der NT- und Linux-Anwendungen ausführen soll.

Als wäre die Bekanntmachung der Bash on Windows nicht schon genug Aufregung für einen Tag gewesen, so hat Microsoft auf der Build 2016 heute auch noch den GNU/NT Kernel vorgestellt. Dabei handelt es sich um eine Umgestaltung des bisherigen NT-Kernels, die vom Team der Bash on Windows stammt. Der Kernel soll dabei in der Lage sein NT (also Windows) und Linux Anwendungen auszuführen.

Wie Wasser und Öl

Obwohl es seltsam klingt, so gibt es schon länger das Projekt Bash on Windows. Dabei soll die bekannte und (anscheinend auch bei Windows Nutzern beliebte) Linux Bash für Windows nativ eingebunden werden. Dabei gibt es keine virtuelle Maschine, sondern ein neues Kernel-Modul, welches die syscalls (also systemnahsten Befehle) von Linux-Calls in NT-Calls umwandelt. Diese können dann normal vom Windows Kernel ausgeführt werden.

Die Bash on Windows bietet die normalen Ubuntu-Anwendungen, eine funktionierende apt-Paketverwaltung und vieles mehr. Das Projekt verfolgt jedoch nicht das Ziel Anwendungen mit grafischer Benutzeroberfläche zu unterstützen. Nun soll es aber ein zweites Projekt geben, welches eben genau das kann: Grafische Benutzeroberflächen von Linux-Binaries auf dem Windows Kernel ausführen. Dadurch wurde GNU/NT geboren.

Kompromisse bei GNU/NT ermöglichen Mix

(mehr …)