• Keine Ergebnisse gefunden

Datenverwaltung, Kernel, Sicherheit und Logging

N/A
N/A
Protected

Academic year: 2021

Aktie "Datenverwaltung, Kernel, Sicherheit und Logging"

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Foliensatz 7

Datenverwaltung, Kernel, Sicherheit und Logging

Inhalt

• Datenverwaltung (Dateisysteme verwalten, Loop Devices, Verschlüsselung, LVM, RAID, mdadm)

• Kernel (Module, Befehle, System-Dateisysteme)

• Sicherheit und Logging

Dateisysteme verwalten

• Das Ein- und Aushängen von Dateisystemen mit Hilfe der Befehle mount und umount haben wir bereits im ersten Teil der Vorlesung besprochen.

• Dateisysteme, die automatisch beim Start eingehängt werden sollen, kann man in der Datei /etc/fstab (siehe man fstab) definieren.

Jede nicht kommentierte Zeile besteht aus sechs Feldern und beschreibt, wie und wo ein Dateisystem mit welchen Optionen eingehängt werden soll:

<Dateisystem> <Mount-Point> <Typ> <Optionen> <Dump> <fsck-Durchgangsnummer>

/dev/mapper/data /home ext4 defaults,discard 0 1 /home /srv/nfs/home none bind

Dateisystem erstellen - mkfs.*

• Um ein neues Dateisystem zu erstellen, verwendet man die Familie der mkfs.* Befehle. Zum Beispiel kann man ein ext4-Dateisystem mit dem Befehl mkfs.ext4 erstellen.

• Die möglichen Optionen hängen von dem jeweiligen Dateisystem ab. Üblicherweise kann man zumindest eine UUID bzw. einen Namen vergeben.

• Dateisysteme erstellt man normalerweise auf einer Blockgerätedatei (z.B. einer Partition /dev/sda1 oder einem USB-Stick /dev/sdd), da der Kernel nur solche speziellen Dateien für das Mounten verwenden kann.

Dateien als Blockgeräte benutzen - losetup

• Mit Hilfe eines sogenannten loop device ist es möglich, eine normale Datei als Blockgerätedatei darzustellen. Damit kann man Dateisysteme, die als Dateien vorliegen, mit Hilfe des Befehls mount einhängen (z.B. ISO-Dateien).

• Der Befehl mount kann direkt normale Dateien einhängen, wenn man die Option -o loop verwendet:

(2)

$ mount -o loop ubuntu-12.04.iso /mnt/cdrom

• Zur generellen Verwaltung von loop devices wird der Befehle losetup benutzt, der diese speziellen Gerätedateien anlegen und löschen sowie Informationen zu ihnen anzeigen kann.

Dateisysteme verschlüsseln

• Um vor allem bei mobilen Geräten, wie Laptops oder Android-basierten Mobiltelefonen und Tablets, Daten zu schützen, ist es möglich, verschlüsselte Dateisysteme zu erstellen. Ubuntu bietet diese Funktionalität direkt bei der Installation an.

• Für die Verschlüsselung von Dateisystemen wird das Kernel-Modul dm-crypt und das Programm cryptsetup verwendet. Das Programm erlaubt auch die Verwendung von LUKS (Linux Unified Key Setup, ein Standard für Festplattenverschlüsselung).

• Das Kernel-Modul dm-crypt ist Teil der Device Mapper Infrastruktur des Kernels, die es erlaubt, ein Blockgerät auf ein anderes Blockgerät abzubilden. Diese Infrastruktur wird nicht nur für die Verschlüsselung, sondern auch zum Beispiel für LVM (Logical Volume Manager) genutzt.

• In der Datei /etc/crypttab kann man die Daten der verschlüsselten Dateisysteme eintragen, damit die entschlüsselten Dateisysteme beim Starten des Systems zur Verfügung gestellt werden können.

Dazu wird, falls nötig, das Passwort auf der (graphischen) Konsole abgefragt.

Dateisysteme verschlüsseln - Beispiel

• Beispiel für die Erstellung eines verschlüsselten ext4-Dateisystems:

$ dd if=/dev/zero of=filesystem count=10000 2>/dev/null

$ cryptsetup luksFormat filesystem WARNING!

========

This will overwrite data on filesystem irrevocably.

Are you sure? (Type uppercase yes): YES Enter LUKS passphrase:

Verify passphrase:

$ sudo cryptsetup luksOpen filesystem encfs Enter passphrase for /tmp/filesystem:

$ mkfs.ext4 /dev/mapper/encfs &> /dev/null

Logical Volume Manager

• Der Logical Volume Manager (LVM) erlaubt das Zusammenfassen von mehreren physischen Festplatten oder Partitionen (physical volumes, PV) zu einem logischen Gesamten (volume group, VG), welches dann beliebig in logische Partitionen (logical volumes, LV) unterteilt werden kann.

• Das hat mehrere Vorteile:

• LVs können größer als ein PV sein.

• Hinzufügen und Entfernen von PVs zu/von einer VG ist möglich.

• LVs können im Nachhinein leicht vergrößert werden.

• Es können Snapshots von LVs angelegt werden.

• Ubuntu erlaubt bei der Installation die Benutzung von LVM, damit man sich z.B. nicht von Anfang an

(3)

für bestimmte Partitionsgrößen entscheiden muss.

• LVM benutzt im Hintergrund die Device Mapper Infrastruktur des Kernels. Sobald man das Paket lvm2 installiert hat, kann man LVM verwenden.

Links: LVM2 Ressource Page, LVM HOWTO, A Beginner‘s Guide to LVM, LVM auf Wikipedia

Logical Volume Manager - PV

Physical Volumes (PV) bieten den eigentlichen Speicherplatz für LVM. PVs können Blockgeräte wie ganze Festplatten und einzelne Partitionen sein oder aber auch Geräte, die wie Blockgeräte agieren (z.B. ein loop device).

• Damit ein Blockgerät für LVM verwendet werden kann, muss es initialisiert werden. Dazu wird der Befehl pvcreate verwendet.

• Der Befehl pvscan durchsucht alle Blockgeräte nach bereits initialisierten PVs und mit pvdisplay kann man sich Informationen über ein PV anzeigen lassen.

• Beispiel (erstellt 5 „Festplatten“ mit 10000KiB, initialisiert sie als PVs und zeigt die Informationen darüber an):

$ for I in loop{1..5}; do

> dd if=/dev/zero of=$I count=20000; losetup /dev/$I $I; pvcreate /dev/$I

> done &>/dev/null

$ pvdisplay # Ausgabe nicht dargestellt!

Logical Volume Manager - VG

• Eine Volume Group (VG) fasst mehrere PVs zu einer großen Einheit zusammen, die als eine Festplatte betrachtet werden kann.

• Beim Erstellen einer VG mittels des Befehls vgcreate kann auch die Größe eines pyhsical extent (PE) über die Option -s angeben. PEs sind die kleinsten Einheiten einer PV, die von einer VG verwaltet werden.

• VGs können im Nachhinein verändert werden, d.h. man kann später PVs hinzufügen (vgextend) oder entfernen (vgreduce; natürlich nur, wenn sie nicht benutzt werden; dazu kann der Befehl pvmove benutzt werden, der PEs eines PVs auf andere PVs verschiebt).

• Beispiel (erstellt die VG „bigdisk“ und zeigt Informationen für sie an; beachte, dass nur 40MiB benutzbar sind, obwohl alle PVs zusammen circa 48,8MiB zur Verfügung stellen):

$ vgcreate bigdisk /dev/loop{1..5}

Volume group "bigdisk" successfully created

$ vgdisplay bigdisk # Ausgabe nicht dargestellt!

Logical Volume Manager - LV

• Ein Logical Volume (LV) ist ein Teil einer VG und entspricht einer Partition, d.h. auf einem LV kann ein Dateisystem angelegt werden.

• LVs werden mit dem Befehl lvcreate erstellt und beim Erstellen sollte man mittels der Option -n Name einen sinnvollen Namen angeben. Die Option -L Größe erlaubt das Festlegen der Größe der LV.

(4)

• LVs können auch im Nachhinein verändert werden, d.h. man kann sie vergrößern (lvextend), aber auch verkleinern (lvreduce). Wichtig: Das zu Grunde liegende Dateisystem muss auch dementsprechend vergrößert oder verkleinert werden!

Der Befehl lvresize kann beides (vergrößern und verkleinern) und auch gleichzeitig das zu Grunde liegende Dateisystem verändern.

• Beispiel (erstellt zwei LVs und erzeugt ext4-Dateisysteme darauf):

$ lvcreate -n root -L 10M bigdisk

Rounding up size to full physical extent 12,00 MiB Logical volume "root" created

$ lvcreate -n data -L 16M bigdisk Logical volume "data" created

$ mkfs.ext4 /dev/bigdisk/root; mkfs.ext4 /dev/bigdisk/data

RAID

• Bei einem RAID (Redundant Array of Independent Disks) werden zwei oder mehr Festplatten zu einem Verbund zusammengefasst, um den Datendurchsatz und/oder die Ausfallssicherheit zu erhöhen.

• Es gibt verschiedene RAID-Level, die wichtigsten sind:

RAID 0 (Striping): Die Daten werden auf zwei oder mehr Festplatten aufgeteilt.

RAID 1 (Mirroring): Die Daten werden gespiegelt auf zwei oder mehr Festplatten gespeichert (d.h. jede Festplatte im RAID 1-Verbund enthält die gleichen Daten). Solange eine Festplatte funktioniert, sind die Daten sicher.

RAID 5: Die Daten und Prüfsummen werden auf drei oder mehr Festplatten aufgeteilt; der Ausfall einer Festplatte wird verkraftet.

Multiple Device Administration

• Das Programm mdadm (Multiple Device Administration) ist ein Programm zum Verwalten von Software RAIDs.

• Es erlaubt das Erstellen von RAID-Geräten in mehreren Konfigurationen (z.B. RAID 0, RAID 1 oder RAID 5) und das Verwalten dieser Geräte (z.B. das Entfernen fehlerhafter Festplatten oder das Hinzufügen von (Reserve)Festplatten).

• Beispiel (erstellt ein RAID 5 mit 3 Festplatten, fügt dann 2 Reserveplatten hinzu):

$ for I in loop{1..5}; do dd if=/dev/zero of=$I count=20000; losetup /dev/$I $I

> done &>/dev/null

$ mdadm --create /dev/md0 --level raid5 --raid-devices=3 /dev/loop{1..3}

mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md0 started.

$ mdadm /dev/md0 --add /dev/loop{4..5}

mdadm: added /dev/loop4 mdadm: added /dev/loop5

$ mdadm /dev/md0

/dev/md0: 19.00MiB raid5 3 devices, 2 spares. Use mdadm --detail for more detail.

(5)

Links: Linux RAID Wiki

Kombinieren von RAID und LVM

• Es ist natürlich möglich, die Funktionalitäten von RAID via mdadm und LVM zu kombinieren:

1. Zusammenfassen mehrerer Festplatten zu einem RAID mittels mdadm 2. Das erstellte MD-Gerät /dev/mdX als PV initialisieren.

3. Eine VG auf dem PV anlegen.

4. In der VG ein oder mehrere LVs anlegen.

Kernel und Kernel-Module verwalten 1

• Früher hat man oft den Linux-Kernel selbst kompiliert, um ihn auf die benutzte Hardware abzustimmen. Das richtige Konfigurieren und Kompilieren eines Linux-Kernels ist aber nicht so einfach und es können leicht Fehler unterlaufen.

• Heutzutage wird üblicherweise der Kernel verwendet, den die Distribution liefert. Dieser ist getestet, beinhaltet die wichtigsten Komponenten und stellt alle sonstigen Komponenten als Kernel- Module zur Verfügung. Das ist dann ein sogenannter generischer Kernel, der nicht speziell auf die persönliche Hardware zugeschnitten wurde und daher üblicherweise auch mehr Speicher belegt.

Kernel-Module erlauben es dem Kernel, im Nachhinein zusätzliche Funktionalitäten wie z.B. neue Treiber oder neue Dateisysteme zu verwenden. Üblicherweise werden z.B. die Treiber für die Soundkarte oder die Netzwerkkarte als Kernel-Module zur Verfügung gestellt.

• Kann der Kernel mit einem Gerät nicht umgehen/kommunizieren, so wird automatisch versucht, den richtigen Treiber (i.e. das richtige Kernel-Modul) für das Gerät zu laden. Das funktioniert mittlerweile sehr gut, d.h. nur in Ausnahmefällen muss man das richtige Kernel-Modul händisch laden.

Kernel und Kernel-Module verwalten 2

Wichtig: Alle Treiber, die der Kernel beim Booten benötigt, müssen entweder fix in den Kernel eingebunden oder in einer sogenannten Initial Ramdisk (wird als Root-Dateisystem benutzt bis das echte Root-Dateisystem geladen werden kann) vorhanden sein.

• Unter Ubuntu findet man den Standardkernel im Paket linux-image-generic und die zugehörigen Header-Dateien im Paket linux-headers-generic.

• Der Kernel selbst und die zusätzlich benötigten Dateien (wie z.B. eine Initial Ramdisk) liegen im Verzeichnis /boot. Üblicherweise heißt die Datei für den Kernel vmlinuz-RELEASE (wobei RELEASE die Kernel-Release ist). Die Module eines Kernels liegen im Verzeichnis /lib/modules/RELEASE.

Befehle für Kernel und Kernel-Module - uname, dmesg

uname - Zeigt Systeminformationen an.

» Nützliche Optionen: -a → alle Informationen anzeigen, -r → Kernel-Release anzeigen.

» $ uname -a

Linux noweto 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ ls -l /lib/modules/`uname -r` | head -4

(6)

total 3348

lrwxrwxrwx 1 root root 39 Apr 17 20:49 build -> /usr/src/linux-headers-3.8.0- 19-generic

drwxr-xr-x 2 root root 4096 Apr 26 13:36 initrd drwxr-xr-x 11 root root 4096 Apr 26 15:33 kernel dmesg - Zeigt den Kernel-Buffer an.

» Ist zum Beispiel nützlich um zu sehen, ob beim Laden oder Entfernen eines Kernel-Moduls ein Problem aufgetreten ist.

» $ dmesg | tail -n 4

[22573.871904] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [22574.380346] [drm] Enabling RC6 states: RC6 on, RC6p off, RC6pp off

[22574.853562] thinkpad_ec: thinkpad_ec_request_row: arg0 rejected: (0x01:0x00)-

>0x00

[22574.853568] thinkpad_ec: initial ec test failed

Befehle für Kernel und Kernel-Module - lsmod, insmod

lsmod - Zeigt die Liste der geladenen Kernel-Module an.

» $ lsmod | head -5

Module Size Used by uvcvideo 80847 0

videobuf2_vmalloc 13056 1 uvcvideo

videobuf2_memops 13202 1 videobuf2_vmalloc videobuf2_core 40513 1 uvcvideo

insmod - Lädt ein Kernel-Modul.

» Beachtet keine Abhängigkeiten, sondern versucht einfach, das gegebene Kernel-Modul zu in den Kernel zu laden. Besser ist modprobe.

» Syntax: insmod Modulpfad [Optionen]

Befehle für Kernel und Kernel-Module - rmmod, modinfo

rmmod - Entfernt ein Kernel-Modul aus dem Kernel.

» Sehr einfaches Programm; besser ist modprobe.

» Syntax: rmmod Modulname

modinfo - Zeigt Informationen zu einem Kernel-Modul an.

» Syntax: modinfo Modulname

» $ modinfo snd

filename: /lib/modules/3.8.0-19-generic/kernel/sound/core/snd.ko alias: char-major-116-*

license: GPL

description: Advanced Linux Sound Architecture driver for soundcards.

author: Jaroslav Kysela <perex@perex.cz>

license: GPL

description: Jack detection support for ALSA

author: Mark Brown <broonie@opensource.wolfsonmicro.com>

srcversion: 9F509706996CF7D19C73482 depends: soundcore

intree: Y

vermagic: 3.8.0-19-generic SMP mod_unload modversions

parm: slots:Module names assigned to the slots. (array of charp) parm: major:Major # for sound driver. (int)

parm: cards_limit:Count of auto-loadable soundcards. (int)

(7)

Befehle für Kernel und Kernel-Module - modprobe

modprobe - Lädt oder entfernt ein Kernel-Modul.

» Löst automatisch die Abhängigkeiten zwischen Kernel-Modulen auf (dazu wird eine von depmod generierte Datei verwendet), d.h. benötigte Kernel-Module werden automatisch geladen bzw. nicht mehr gebrauchte automatisch entfernt.

» Es muss nicht der Pfad zu einem Modul angegeben werden, sondern nur der Modulname.

» Modul-Parameter können als Argumente übergeben werden. Es werden dabei aber auch die Konfigurationsdateien mit der Endung .conf im Verzeichnis /etc/modprobe.d/ beachtet (siehe man modprobe.d)

» Optionen: -r → Entfernen eines Kernel-Moduls.

» Syntax: modprobe [-r] Modulname [Optionen]

» $ modprobe iwlwifi 11n_disable=2

Dynamic Kernel Module Support

• Früher hat es immer das Problem gegeben, dass man Kernel-Module, die nicht mit dem Kernel selbst mitinstalliert wurden, selbst neu kompilieren musste, sobald man einen neuen Kernel installierte.

• Das Dynamic Kernel Module Support-System (DKMS) wurde aus diesem Grund 2003 bei Dell entwickelt. Es erlaubt unter anderem das automatische Kompilieren von Kernel-Modulen nach Installation eines neuen Kernels bzw. bei Installation eines Kernel-Moduls.

• Damit das DKMS funktionieren kann, braucht man natürlich die Header-Dateien des verwendeten Kernels sowie die benötigten Programme zur Kompilation der Kernel-Module.

• Unter Ubuntu wird das DKMS mit Hilfe des Pakets dkms installiert. Pakete, die Kernel-Module enthalten, die über DKMS verwaltet werden, haben üblicherweise das Suffix ‚-dkms‘ im Paketnamen.

procfs

• Das procfs (process filesystem) ist ein virtuelle Dateisystem, das auf vielen unixartigen Betriebssystemen eingesetzt wird und üblicherweise im Verzeichnis /proc eingehängt ist.

• Es dient zur Anzeige und zur Änderung von Prozess- und Systeminformationen. Da die Informationen im Dateisystem dargestellt werden, können die Dateien darin mit den üblichen Befehlen bearbeitet werden (z.B. cat für das Anzeigen und echo zusammen mit der Ausgabeumleitung für das Ändern).

• In der Kernel-Dokumentation des procfs findet sich eine genaue Auflistung der vom Kernel zur Verfügung gestellten Dateien und Verzeichnissen. Wir betrachten ein paar nützliche Teile davon.

procfs - Allgemeine Informationen

• /proc/cpuinfo → Informationen zu den vorhandenen CPUs

• /proc/devices, /proc/bus/input/devices, /proc/bus/pci/devices → Informationen zu vorhandenen Geräten

• /proc/filesystems → Vom Kernel unterstützte Dateisysteme

• /proc/loadavg → Informationen zur Systemauslastung

• /proc/meminfo → Detailierte Speicherinformationen

• /proc/mounts → Liste der aktuell eingehängten Dateisysteme

• /proc/net/ → Verzeichnis mit Netzwerkinformationen

(8)

• /proc/stat → Allgemeine Statistiken

• /proc/uptime → Betriebszeit des Systems

• /proc/version → Kernelversion

procfs - Prozessinformationen

• Jedem Prozess ist über seine PID ein Verzeichnis unterhalb von /proc zugeordnet. Ein Prozess kann sich seine Informationen über den symbolischen Link /proc/self holen.

• Einige nützlichen Dateien und Verzeichnisse in einem Prozessinformationsverzeichnis:

• cmdline → Kommandozeilenargumente

• cwd → Symbolischer Link zum aktuellen Arbeitsverzeichnis

• environ → Umgebungsvariablen

• status → Prozessstatus

• fd → Verzeichnis mit Informationen zu Dateideskriptoren

procfs - Systemparameter

• Im Verzeichnis /proc/sys werden alle Systemparameter aufgelistet. Sie können nicht nur angezeigt, sondern auch verändert werden.

• Die Einstellungen können temporär durch direktes Schreiben in die Dateien geändert werden oder mittels des Programms sysctl.

• In der Konfigurationsdatei /etc/sysctl.conf bzw. in *.conf-Dateien im Verzeichnis /etc/sysctl.d kann man die Einstellungen permanent hinterlegen.

• Einige interessante Parameter:

• vm/swappiness → Beeinflusst die Benutzung des Swap-Speichers (auf 0 gesetzt, wird er nicht mehr benutzt)

• kernel/sysrq → (De)aktivieren des magic SysRq key (erlaubt Tastenkombinationen, die der Kernel direkt verarbeitet, z.B. Neustart des Systems)

• net/ipv4/tcp_syncookies → (De)aktivieren des SYN-Flood-Schutzes

• Eine Dokumentation aller Parameter findet sich in der Kernel sysctl-Dokumentation.

sysfs

• Das sysfs ist ein virtuelles Dateisystem von Linux, welches Kernel-interne Informationen zu Geräten und Treibern darstellt bzw. sie auch verändern lässt. Es existiert seit der Kernelversion 2.5 und ist üblicherweise im Verzeichnis /sys eingehängt.

• Durch die Einführung von sysfs wurden unter anderem Informationen, die früher verstreut im procfs zu finden waren, an einem Ort zusammengefasst.

• Einige interessante Verzeichnisse/Dateien:

• devices/ → Informationen zu allen Geräten (z.B. devices/system/cpu/cpu0/ für Informationen zur ersten CPU)

(9)

• modules/ → Informationen zu Kernel-Modulen (z.B. modules/MODUL_NAME/parameters/* für Informationen zu den Parametern des Moduls MODUL_NAME)

• power/ → Energiesteuerung

Sicherheit

• Hardware physisch schützen (ev. Zutrittskontrolle, BIOS/UEFI mit Passwort sichern, etc.)

• Benutzerauthentifikation über PAM zentral erledigen.

• Passwort-Policy festlegen (z.B. mindestens acht Zeichen, davon eine Ziffer und ein Sonderzeichen;

siehe auch z.B. Passwort-Policy des ZID).

• Login von root über OpenSSH nur mit Schlüssel erlauben.

• Die Dateien /etc/hosts.{allow,deny} für Host-basierte Zugriffskontrolle verwenden (siehe man hosts_access).

• Eine Firewall mit iptables erstellen, die nur die benötigten Ports für Verbindungsanfragen von außen zulässt.

• Für Netzwerkdienste wenn möglich SSL oder TLS verwenden.

• Nur die unbedingt notwendigen Programme installieren (je mehr Programme, desto mehr Angriffsmöglichkeiten bietet man).

• Dateien/Verzeichnisse mit den richtigen Zugriffsrechten versehen.

• Auf mobilen Datenträgern verschlüsselte Dateisysteme verwenden oder einzelne Dateien verschlüsseln.

Gnu Privacy Guard

• Der Gnu Privacy Guard (GnuPG or GPG) ist eine freie Implementierung des OpenPGP-Standard (RFC 4880). Er wird zum Verschlüsseln und/oder Signieren von Daten verwendet.

• GPG unterstützt sowohl symmetrische Verschlüsselungsverfahren (es wird ein Schlüssel sowohl zum Ver- als auch zum Entschlüsseln verwendet) als auch asymmetrische Verfahren (sogenannte Public- Key-Verschlüsselungsverfahren).

• Symmetrische Verfahren sind schneller beim Ver- und Entschlüsseln und eignen sich z.B. zum Verschlüsseln von persönlichen Daten, da man nur selbst den Schlüssel (z.B. eine Passphrase) wissen muss (Beispiele: AES, Blowfish, DES).

• Bei asymmetrischen Verfahren wird ein Schlüsselpaar bestehend aus einem privaten und einem öffentlichen Schlüssel erstellt (Beispiele: RSA, ElGamal). Mit dem öffentlichen Schlüssel kann man Daten verschlüsseln, die nur durch den privaten Schlüssel wieder entschlüsselt werden können.

Umgekehrt kann der private Schlüssel zum Signieren von Daten verwendet werden. Dabei wird ein Hashwert von den Daten erstellt, der mit dem privaten Schlüssel verschlüsselt wird. Dann kann mit dem öffentlich Schlüssel der Hashwert zurückgewonnen und mit den Daten verglichen werden.

Gnu Privacy Guard - öffentliche Schlüssel und Identität

• Beim Erstellen eines Private/Public-Schlüsselpaares wird man nach mehreren Informationen wie z.B.

Name und E-Mail-Adresse gefragt. Diese Angaben dienen zur Identifikation der Person hinter dem Schlüssel und können auch später noch verändert werden.

• Allerdings ist es so, dass man natürlich beliebige Daten eingeben kann und man sich für jemand anderen ausgeben könnte. Lösungsmöglichkeiten:

(10)

• Man überprüft den Hashwert des öffentlichen Schlüssels, den man z.B. aus dem Internet herunter geladen hat, mit dem Hashwert, den man von der Person direkt (z.B. über ein Telefon) bekommen hat.

• Man lässt seinen öffentlichen Schlüssel von einer vertrauenswürdigen Instanz signieren und wird Teil des sogenannten Web of Trust. Erhält man einen öffentlichen Schlüssel, der von jemanden signiert worden ist, dem man vertraut, kann man davon ausgehen, dass der Schlüssel in Ordnung ist.

• Es gibt auch Schlüsselserver, auf die man öffentliche Schlüssel hochladen kann, damit sie dann von anderen Personen leichter gefunden werden können.

Gnu Privacy Guard - Verwendung

• Das Programm gpg ist das CLI-Programm für GPG. GPG ist auch in die meisten E-Mail-Programme integriert und es gibt eine Vielzahl an graphischen Programmen.

• Aufrufmöglichkeiten:

$ gpg --gen-key # Schlüsselpaar generieren

$ gpg -a --export name@example.com > publickey # exportieren eines öffentlichen Schlüssel

$ gpg --import publickey # importieren eines öffentlichen Schlüssels

$ gpg --search-keys Thomas Leitner # Schlüsselserver nach öffentlichen Schlüssel durchsuchen

$ gpg --send-keys Schlüssel-ID # Öffentlichen Schlüssel auf Schlüsselserver hochladen

$ gpg --list-keys # Liste der Schlüssel anzeigen

$ gpg --sign-key # Schlüssel für Web of Trust signieren

Gnu Privacy Guard - Verwendung

• Beispiel (ver- und entschlüsseln mit symmetrischen Schlüssel):

$ echo "test" | gpg -c > test.gpg # es wird nach einer Passphrase gefragt

$ gpg -d test.gpg

gpg: CAST5 encrypted data

gpg: encrypted with 1 passphrase test

gpg: WARNING: message was not integrity protecte

• Beispiel (ver- und entschlüsseln mit asymmetrischen Schlüssel):

$ echo "test" | gpg -e -r "Thomas Leitner" > test.gpg

$ gpg -d test.gpg

You need a passphrase to unlock the secret key for user: "Thomas Leitner <thomas_leitner@gmx.at>"

2048-bit ELG-E key, ID DDA18EFF, created 2008-03-22 (main key ID B2D0A854) gpg: encrypted with 2048-bit ELG-E key, ID DDA18EFF, created 2008-03-22       "Thomas Leitner <thomas_leitner@gmx.at>"

test

(11)

Logging

• Unter Linux können alle Programme auf eine zentrale Logging-Infrastruktur zugreifen, die eine standardisierte Ausgabe an einer zentralen Stelle (üblicherweise /var/log) erlaubt.

• Dabei hat man (wie üblich) die Wahl zwischen mehreren Logging-Dämonen, z.B. rsyslogd (Standard in Ubuntu) und syslog-ng. Die Logging-Dämonen unterscheiden sich geringfügig in der Funktionalität, sind aber standardmäßig so konfiguriert, dass die Log-Dateien unter den gleichen, üblichen Pfaden abgelegt werden.

• Wichtig Log-Dateien:

• /var/log/syslog → Alle Informationen

• /var/log/auth.log → Authentifizierungsnachrichten (z.B. erfolglose/-reiche Logins)

• /var/log/kern.log → Kernel-Nachrichten

• Daneben erstellen Programme auch selbst Log-Dateien in /var/log/, z.B. der Apache HTTP Server im Unterverzeichnis apache2.

Copyright und Lizenz

• Copyright: Thomas Leitner thomas.leitner@univie.ac.at

• Lizenz: Creative Commons CC BY-NC-SA

„Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Österreich.“ - http://creativecommons.org/licenses/by-nc-sa/3.0/at/

Referenzen

ÄHNLICHE DOKUMENTE

M. Theoretical foundations of the potential function method in pattern recognition learning. A training algorithm for optimal margin classiers. In Fifth Annual Workshop on COLT

do not span the whole space (e.g. the dimension of the space is higher as the number of the data points). It will be important later for the feature spaces.. Why is it so? Proof

The next result highlights the fact that members of ethnic groups with very little ethnic wealth always choose to invest in human capital. We then study the implications of this

Finally, if the static Nash network could be both separated or connected, the dynamic version will transition to connected iff there exists a connected network such that just

Even though the efficient and Nash networks are connected, some of the resulting interconnected electron star structures might be inefficient because it allows for the possibility

Conversion characters declare the type of character expected or the way a character string is expected to be terminated. iRMK ™ Kernel Reference Manual.. A value of type i

The information returned includes the name of each registered kernel server, a status of either loaded (indicating that the kernel server is loaded and running in the kernel) or

The above experiments on some data sets indicate that the kernel-based estimation method is efficient on some data sets with similar or even higher precision than the prevalently used