Index: head/de_DE.ISO8859-1/books/handbook/multimedia/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/multimedia/chapter.xml (revision 52369)
+++ head/de_DE.ISO8859-1/books/handbook/multimedia/chapter.xml (revision 52370)
@@ -1,1756 +1,1756 @@
MultimediaRossLippertÜberarbeitet von Übersicht&os; unterstützt viele unterschiedliche Soundkarten,
die Benutzern den Genuss von Highfidelity-Klängen auf dem
Computer ermöglichen. Dazu gehört unter anderem die
Möglichkeit, Tonquellen in den Formaten MPEG Audio Layer 3
(MP3), Waveform Audio File
(WAV), Ogg Vorbis und vielen weiteren
Formaten aufzunehmen und wiederzugeben. Darüber hinaus enthält
die &os; Ports-Sammlung Anwendungen, die das Bearbeiten von
aufgenommenen Tonspuren, das Hinzufügen von Klangeffekten
und die Kontrolle der angeschlossenen MIDI-Geräte
erlauben.&os; unterstützt auch die Wiedergabe von Videos und
DVDs.
Die &os; Ports-Sammlung enthält Anwendungen, um verschiedene
Video-Medien wiederzugeben, zu kodieren und zu
konvertieren.Dieses Kapitel beschreibt die Einrichtung von
Soundkarten, Video-Wiedergabe, TV-Tuner Karten und
Scannern unter &os;. Es werden auch einige Anwendungen
beschrieben, die für die Verwendung dieser Geräte zur Verfügung
stehen.Dieses Kapitel behandelt die folgenden Punkte:Konfiguration einer Soundkarte in &os;.Fehlersuche bei Sound Einstellungen.Wiedergabe und Kodierung von MP3s und
anderen Audio-Formaten.Vorbereitung des Systems für die Wiedergabe von
Videos.Wiedergabe von DVDs,
.mpg- und
.avi-Dateien.Rippen von CDs und
DVDs.Konfiguration von TV-Karten.Installation und Konfiguration von MythTV.Bevor Sie dieses Kapitel lesen, sollten Sie:Wissen, wie Sie Anwendungen installieren
().Soundkarten einrichtenMosesMooreVon MarcFonvieilleAktualisiert von BenediktKöhlerÜbersetzt von UwePierauPCISoundkartenBevor Sie die Konfiguration beginnen, sollten Sie in
Erfahrung bringen welches Soundkartenmodell und welcher Chip
benutzt wird. &os; unterstützt eine Reihe Soundkarten. Die
Hardware-Notes
zählen alle unterstützten Karten und deren Treiber für
&os; auf.KernelKonfigurationUm die Soundkarte benutzen zu können, muss der richtige
Gerätetreiber geladen werden. Am einfachsten ist es, das
Kernelmodul für die Soundkarte mit &man.kldload.8; zu laden.
Dieses Beispiel lädt den Treiber für einen integrierten
Chipsatz, basierend auf der Intel Spezifikation:&prompt.root; kldload snd_hdaUm den Treiber automatisch beim Systemstart zu laden,
fügen Sie folgende Zeile in
/boot/loader.conf ein:snd_hda_load="YES"Weitere ladbare Soundmodule sind in
/boot/defaults/loader.conf aufgeführt.
Wenn Sie nicht sicher sind, welchen Gerätetreiber Sie laden
müssen, laden Sie das Modul
snd_driver:&prompt.root; kldload snd_driverDer Treiber snd_driver ist ein
Meta-Treiber, der alle gebräuchlichen Treiber lädt und die Suche
nach dem richtigen Treiber vereinfacht. Durch Hinzufügen des
Meta-Treibers in /boot/loader.conf können
alternativ alle Audio-Treiber geladen werden.Um zu ermitteln, welcher Treiber für die Soundkarte vom
Meta-Treiber snd_driver geladen wurde,
geben Sie cat /dev/sndstat ein.Soundkarten in der Kernelkonfiguration einrichtenDie Unterstützung für die Soundkarte kann auch direkt in
den Kernel kompiliert werden. Weitere Informationen über den
Bau eines Kernels finden Sie im .Bei der Verwendung eines eigenen Kernels müssen Sie
sicherstellen, dass der Treiber für das Audio-Framework in
der Kernelkonfigurationsdatei vorhanden ist:device soundAls Nächstes muss die Unterstützung für die Soundkarte
hinzugefügt werden. Um das Beispiel mit dem integrierten
Intel Audio-Chipsatz aus dem vorherigen Abschnitt
fortzusetzen, verwenden Sie die folgende Zeile in der
Kernelkonfigurationsdatei:device snd_hdaLesen Sie die Manualpage des Treibers, um den
entsprechenden Gerätenamen herauszufinden.Nicht PnP-fähige ISA-Soundkarten benötigen eventuell
Einstellungen, wie IRQ und I/O-Port in
/boot/device.hints. Während des
Systemstarts liest der &man.loader.8; diese Datei und reicht
die Einstellungen an den Kernel weiter. Für eine alte
Creative &soundblaster; 16 ISA-Karte, die sowohl den
&man.snd.sbc.4;- als auch den
snd_sb16-Treiber benötigt, müssen die
folgenden Zeilen in die Kernelkonfigurationsdatei eingetragen
werden:device snd_sbc
device snd_sb16Wenn die Karte den I/O-Port 0x220 und
IRQ 5 benutzt, müssen folgende Zeilen
zusätzlich in /boot/device.hints
hinzugefügt werden:hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"Die Syntax für /boot/device.hints
wird in &man.sound.4;, sowie in der Manualpage des
jeweiligen Treibers beschrieben.Das Beispiel verwendet die vorgegebenen Werte.
Falls die Karteneinstellungen andere Werte vorgeben,
müssen die Werte in der Kernelkonfiguration angepasst
werden. Weitere Informationen zu dieser Soundkarte
finden Sie in &man.snd.sbc.4;.Die Soundkarte testenNachdem Sie den neuen Kernel gestartet oder das
erforderliche Modul geladen haben, sollte die
Soundkarte erkannt werden. Führen Sie
dmesg | grep pcm aus, um dies zu
überprüfen. Diese Ausgabe stammt von einem System mit
einem integrierten Conexant CX20590 Chipsatz:pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 5 on hdaa0
pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> at nid 6 on hdaa0
pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> at nid 31,25 and 35,27 on hdaa1Der Status der Karte kann auch mit diesem Kommando
geprüft werden:&prompt.root; cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)
pcm1: <NVIDIA (0x001c) (HDMI/DP 8ch)> (play)
pcm2: <Conexant CX20590 (Analog 2.0+HP/2.0)> (play/rec) defaultDie Ausgabe kann für jede Soundkarte anders aussehen.
Wenn das Gerät pcm nicht erscheint,
prüfen Sie die Kernelkonfigurationsdatei und stellen Sie
sicher, dass der richtige Treiber geladen oder in den Kernel
kompiliert wurde. Im nächsten Abschnitt werden häufig
auftretende Probleme sowie deren Lösungen besprochen.Jetzt sollte die Soundkarte unter
&os; funktionieren. Wenn ein CD- oder
DVD-Laufwerk an die Soundkarte
angeschlossen ist, können Sie jetzt mit &man.cdcontrol.1; eine
CD abspielen:&prompt.user; cdcontrol -f /dev/acd0 play 1Audio CDs besitzen eine spezielle Kodierung. Daher
sollten sie nicht mit &man.mount.8; in das Dateisystem
eingehangen werden.Es gibt viele Anwendungen, wie
audio/workman, die
eine bessere Benutzerschnittstelle besitzen. Zur Wiedergabe
von MP3-Audiodateien kann audio/mpg123
installiert werden.Eine weitere schnelle Möglichkeit die Karte zu
prüfen, ist es, Daten an das Gerät
/dev/dsp zu senden:&prompt.user; cat Datei > /dev/dspFür
Datei kann
eine beliebige Datei verwendet werden. Wenn Sie einige
Geräusche hören, funktioniert die Soundkarte.Die Gerätedateien /dev/dsp*
werden automatisch erzeugt, wenn sie das erste Mal benötigt
werden. Werden sie nicht verwendet, sind sie hingegen nicht
vorhanden und tauchen daher auch nicht in der Ausgabe von
&man.ls.1; auf.FehlerbehebungDevice NodeGerätedateiI/O portIRQDSP zeigt
typische Fehlermeldungen sowie deren Lösungen:
Typische FehlermeldungenFehlerLösungsb_dspwr(XX) timed
outDer I/O-Port ist nicht korrekt
angegeben.bad irq XXDer IRQ ist falsch angegeben. Stellen Sie
sicher, dass der angegebene IRQ mit dem Sound IRQ
übereinstimmt.xxx: gus pcm not attached, out of
memoryEs ist nicht genug Speicher verfügbar,
um das Gerät zu betreiben.xxx: can't
open /dev/dsp!Überprüfen Sie mit fstat | grep
dsp ob eine andere Anwendung das Gerät
geöffnet hat. Häufige Störenfriede sind
esound oder die
Sound-Unterstützung von
KDE.
Moderne Grafikkarten beinhalten oft auch ihre eigenen
Soundtreiber, um HDMI zu verwenden.
Diese Audiogeräte werden manchmal vor der eigentlichen,
separaten Soundkarte aufgeführt und dadurch nicht als das
Standardgerät zum Abspielen von Tönen benutzt. Um zu
prüfen, ob das der Fall ist, führen Sie
dmesg aus und suchen Sie nach der
Zeichenfolge pcm. Die Ausgabe sieht in
etwa so aus:...
hdac0: HDA Driver Revision: 20100226_0142
hdac1: HDA Driver Revision: 20100226_0142
hdac0: HDA Codec #0: NVidia (Unknown)
hdac0: HDA Codec #1: NVidia (Unknown)
hdac0: HDA Codec #2: NVidia (Unknown)
hdac0: HDA Codec #3: NVidia (Unknown)
pcm0: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 0 nid 1 on hdac0
pcm1: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 1 nid 1 on hdac0
pcm2: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 2 nid 1 on hdac0
pcm3: <HDA NVidia (Unknown) PCM #0 DisplayPort> at cad 3 nid 1 on hdac0
hdac1: HDA Codec #2: Realtek ALC889
pcm4: <HDA Realtek ALC889 PCM #0 Analog> at cad 2 nid 1 on hdac1
pcm5: <HDA Realtek ALC889 PCM #1 Analog> at cad 2 nid 1 on hdac1
pcm6: <HDA Realtek ALC889 PCM #2 Digital> at cad 2 nid 1 on hdac1
pcm7: <HDA Realtek ALC889 PCM #3 Digital> at cad 2 nid 1 on hdac1
...In diesem Beispiel wurde die Grafikkarte
(NVidia) vor der Soundkarte
(Realtek ALC889) aufgeführt. Um die
Soundkarte als Standardabspielgerät einzusetzen, ändern Sie
hw.snd.default_unit auf die Einheit, welche
für das Abspielen benutzt werden soll:&prompt.root; sysctl hw.snd.default_unit=nHier repräsentiert n die Nummer
der Soundkarte, die verwendet werden soll, in diesem Beispiel
also 4. Sie können diese Änderung
dauerhaft machen, indem Sie die folgende Zeile in
/etc/sysctl.conf hinzufügen:hw.snd.default_unit=4Mehrere Tonquellen abspielenMunishChopraBeigetragen von Oft sollen mehrere Tonquellen gleichzeitig
abgespielt werden. &os; verwendet dazu
virtuelle Tonkanäle. Virtuelle Kanäle
mischen die Tonquellen im Kernel, sodass mehrere Kanäle
benutzt werden können, als von der Hardware unterstützt
werden.Drei &man.sysctl.8; Optionen stehen zur Konfiguration der
virtuellen Kanäle zur Verfügung:&prompt.root; sysctl dev.pcm.0.play.vchans=4
&prompt.root; sysctl dev.pcm.0.rec.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4Im Beispiel werden vier virtuelle Kanäle
eingerichtet, eine im Normalfall ausreichende Anzahl.
Sowohl dev.pcm.0.play.vchans=4 und
dev.pcm.0.rec.vchans=4 sind die Anzahl
der virtuellen Kanäle des Geräts pcm0,
die fürs Abspielen und Aufnehmen verwendet werden und sie
können konfiguriert werden, sobald das Gerät existiert. Da
das Modul pcm unabhängig von den
Hardware-Treibern geladen werden kann, gibt
hw.snd.maxautovchans die Anzahl der
virtuellen Kanäle an, die später eingerichtete Audiogeräte
erhalten. Lesen Sie &man.pcm.4; für weitere
Informationen.Die Anzahl der virtuellen Kanäle kann nicht geändert
werden, solange das Gerät genutzt wird. Schließen Sie daher
zuerst alle Programme wie Musikabspielprogramme oder
Sound-Daemonen, die auf dieses Gerät zugreifen.Die korrekte pcm-Gerätedatei
wird automatisch zugeteilt, wenn ein Programm das Gerät
/dev/dsp0 anfordert.Den Mixer einstellenJosefEl-RayesBeigetragen von Die Voreinstellungen des Mixers sind im Treiber
&man.pcm.4; fest kodiert. Es gibt zwar viele Anwendungen
und Dienste, die den Mixer einstellen können und die
eingestellten Werte bei jedem Start wieder setzen, am
einfachsten ist es allerdings, die Standardwerte für den Mixer
direkt im Treiber einzustellen. Der Mixer kann mit den
entsprechenden Werten in
/boot/device.hints eingestellt
werden:hint.pcm.0.vol="50"Die Zeile setzt die Lautstärke des Mixers
beim Laden des Moduls &man.pcm.4; auf den Wert
50.MP3-AudioChernLeeEin Beitrag von BenediktKöhlerÜbersetzt von Dieser Abschnitt beschreibt einige unter &os; verfügbare
MP3-Player. Zudem wird beschrieben, wie
Audio-CDs gerippt und MP3s
kodiert und dekodiert werden.MP3-PlayerEin beliebter graphischer MP3-Player
ist Audacious, welcher
WinAmp-Skins und zusätzliche
Plugins unterstützt. Die Benutzerschnittstelle ist leicht zu
erlernen und enthält eine Playlist, einen graphischen
Equalizer und vieles mehr. Diejenigen, die bereits mit
WinAmp vertraut sind, werden
Audacious sehr leicht zu benutzen
finden. Unter &os; kann Audacious
als Port oder Paket multimedia/audacious
installiert werden. Audacious ist
ein Ableger von XMMS.Das Paket audio/mpg123 ist ein
alternativer, kommandozeilenorientierter
MP3-Player. Nach der Installation kann
die abzuspielende MP3-Datei auf der
Kommandozeile angegeben werden. Geben Sie auch das
entsprechende Soundkarte an, falls das System über mehrere
Audiogeräte verfügt:&prompt.root; mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3
version 1.18.1; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereoWeitere MP3-Player stehen in der &os;
Ports-Sammlung zur Verfügung.CD-Audio Tracks rippenBevor eine ganze CD oder einen
CD-Track in das
MP3-Format umgewandelt werden kann, müssen
die Audiodaten von der CD auf die
Festplatte gerippt werden. Dabei werden die
CDDA (CD Digital Audio) Rohdaten in
WAV-Dateien kopiert.Die Anwendung cdda2wav, die im
sysutils/cdrtools Paket enthalten
ist, kann zum Rippen der Audiodaten von CDs
genutzt werden.Wenn die Audio CD in dem Laufwerk
liegt, kann der folgende Befehl als root ausgeführt werden, um
eine ganze CD in einzelne
WAV-Dateien zu rippen:&prompt.root; cdda2wav -D 0,1,0 -BIn diesem Beispiel bezieht sich der Schalter auf das
SCSI-Gerät 0,1,0, das
die zu rippende CD enthält. Benutzen Sie
cdrecord -scanbus um die richtigen
Geräteparameter für das System zu bestimmen.Um einzelne Tracks zu rippen, benutzen Sie
wie folgt:&prompt.root; cdda2wav -D 0,1,0 -t 7Um mehrere Tracks zu rippen, zum Beispiel die Tracks
eins bis sieben, können Sie wie folgt einen Bereich
angeben:&prompt.root; cdda2wav -D 0,1,0 -t 1+7Wenn Sie von einem ATAPI
(IDE) CD-ROM-Laufwerk
rippen, geben Sie den Gerätenamen anstelle der
SCSI-Gerätenummer an. Dieses Beispiel
rippt Track 7 von einem
IDE-Laufwerk:&prompt.root; cdda2wav -D /dev/acd0 -t 7Alternativ können mit dd ebenfalls
Audio-Stücke von ATAPI-Laufwerken kopiert
werden. Dies wird in erläutert.MP3-Dateien kodieren und dekodierenLame ist ein weitverbreiteter
MP3-Encoder, der als Port
audio/lame installiert werden kann. Wegen
Patentproblemen ist kein Paket verfügbar.Der folgende Befehl konvertiert die gerippte
WAV-Datei
audio01.wav
in audio01.mp3
um:&prompt.root; lame -h -b 128 --tt "Foo Liedtietel" --ta "FooBar Künstler" --tl "FooBar Album" \
--ty "2014" --tc "Gerippt und kodiert von Foo" --tg "Musikrichtung" audio01.wav audio01.mp3128 kbits ist die gewöhnliche
MP3-Bitrate, wohingegen die Bitraten 160
und 192 kbits eine höhere Qualität bieten. Je höher die
Bitrate ist, desto mehr Speicherplatz benötigt die
resultierende MP3-Datei. Die Option
verwendet den higher quality but a
little slower (höhere Qualität, aber etwas
langsamer) Modus. Die Schalter, die mit
beginnen, sind
ID3-Tags, die in der Regel Informationen
über das Lied enthalten und in die
MP3-Datei eingebettet sind. Weitere
Optionen können in der Manualpage von
lame nachgelesen werden.Um aus MP3-Dateien eine Audio
CD zu erstellen, müssen diese zuerst in ein
nicht komprimiertes Format umgewandelt werden. Verwenden Sie
XMMS um die Datei im
WAV-Format zu schreiben und
mpg123, um die
MP3-Datei in rohe
PCM-Audiodaten umzuwandeln.Um audio01.mp3 mit
mpg123 umzuwandeln, geben Sie den
Namen der PCM-Datei an:&prompt.root; mpg123 -s audio01.mp3 > audio01.pcmSo verwenden Sie XMMS um eine
MP3-Datei in das
WAV-Format zu konvertieren:Mit XMMS in das
WAV-Format konvertierenStarten Sie XMMS.Klicken Sie mit der rechten Maustaste, um das
XMMS-Menu zu öffnen.Wählen Sie Preferences im
Untermenü Options.Ändern Sie das Output-Plugin in
Disk Writer Plugin.Drücken Sie Configure.Geben Sie ein Verzeichnis ein, in das Sie die
unkomprimierte Datei schreiben wollen.Laden Sie die MP3-Datei wie gewohnt
in XMMS mit einer Lautstärke
von 100% und einem abgeschalteten EQ.Drücken Sie Play und es wird
so aussehen, als spiele XMMS
die MP3-Datei ab, aber keine Musik ist
zu hören. Der Player überspielt die
MP3-Datei in eine Datei.Vergessen Sie nicht, das Output-Plugin wieder in den
Ausgangszustand zurückzusetzen um wieder
MP3-Dateien anhören zu können.cdrecord kann mit beiden
Formaten Audio-CDs erstellen. Der
Dateikopf von WAV-Dateien erzeugt am Anfang
des Stücks ein Knacken. Der Dateikopf mit dem Port oder Paket
audio/sox entfernt werden:&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawLesen Sie , um mehr
Informationen zur Benutzung von CD-Brennern
mit &os; zu erhalten.Videos wiedergebenRossLippertBeigetragen von Bevor Sie beginnen, sollten Sie das Modell
und den benutzten Chip der Videokarte kennen. Obwohl
&xorg; viele Videokarten
unterstützt, können nicht alle Karten Videos
schnell genug wiedergeben. Eine Liste der Erweiterungen,
die der &xorg;-Server für eine
Videokarte unterstützt, erhalten Sie unter laufendem
&xorg; mit
xdpyinfo.Halten Sie eine kurze MPEG-Datei bereit, mit der
Sie Wiedergabeprogramme und deren Optionen testen können.
Da einige DVD-Spieler in der Voreinstellung
das DVD-Gerät mit
/dev/dvd ansprechen oder diesen Namen fest
einkodiert haben, ist es vielleicht hilfreich symbolische Links
auf die richtigen Geräte anzulegen:&prompt.root; ln -sf /dev/acd0 /dev/dvdAufgrund der Beschaffenheit &man.devfs.5; gehen gesondert
angelegte Links wie diese bei einem Neustart des Systems
verloren. Damit die symbolischen Links automatisch beim
Neustart des Systems angelegt werden, fügen Sie die folgende
Zeile in /etc/devfs.conf ein:link acd0 dvdDas Entschlüsseln von DVDs erfordert den
Aufruf bestimmter Funktionen, sowie Schreibzugriff auf das
DVD-Gerät.&xorg; benutzt Shared-Memory und
es wird empfohlen, die nachstehenden &man.sysctl.8;-Variablen
auf die gezeigten Werte zu erhöhen:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Video-SchnittstellenXVideoSDLDGAEs gibt einige Möglichkeiten, Videos unter
&xorg; abzuspielen. Welche
Möglichkeit funktioniert, hängt stark von der verwendeten
Hardware ab.Gebräuchliche Video-Schnittstellen sind:&xorg;: normale Ausgabe
über Shared-Memory.XVideo: Eine Erweiterung der
&xorg;-Schnittstelle,
die Videos in jedem X11-Drawable anzeigen kann. Diese
Erweiterung bietet auch auf leistungsschwachen Maschinen
eine gute Qualität der Wiedergabe. Der nächste Abschnitt
beschreibt, wie Sie feststellen, ob diese Erweiterung
ausgeführt wird.SDL: Simple DirectMedia
Layer ist eine portable Schnittstelle für verschiedene
Betriebssysteme, mit denen Anwendungen plattformunabhängig
und effizient Ton und Grafik benutzen können.
SDL bietet eine hardwarenahe
Schnittstelle, die manchmal schneller ist als die
&xorg;-Schnittstelle. Unter
&os; kann SDL über das Paket oder den
Port devel/sdl20 installiert
werden.DGA: Direct Graphics Access ist
eine &xorg;-Erweiterung die es
Anwendungen erlaubt, am
&xorg;-Server vorbei direkt in
den Framebuffer zu schreiben. Da die Anwendung und der
&xorg;-Server auf gemeinsame
Speicherbereiche zugreifen, müssen die Anwendungen unter
dem Benutzer root laufen. Die
DGA-Erweiterung kann mit &man.dga.1;
getestet werden. Wenn DGA ausgeführt
wird, ändert sich die Farbe des Bildschrims, wenn eine
Taste gedrückt wird. Drücken Sie zum Beenden
q.SVGAlib: Eine Schnittstelle zur Grafikausgabe auf
der Konsole.XVideoOb die Erweiterung läuft, entnehmen Sie der
Ausgabe von xvinfo:&prompt.user; xvinfoXVideo wird untertsützt, wenn die Ausgabe in etwa wie
folgt aussieht:X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0Einige der aufgeführten Formate, wie YUV2 oder YUV12
existieren in machen XVideo-Implementierungen nicht.
Dies kann zu Problemen mit einigen Spielern führen.XVideo wird wahrscheinlich von der Karte
nicht unterstützt, wenn die Ausgabe wie folgt
aussieht:X-Video Extension version 2.2
screen #0
no adaptors presentWenn die XVideo-Erweiterung auf der Karte nicht
läuft, wird es nur etwas schwieriger, die
Anforderungen für die Wiedergabe von Videos zu
erfüllen.Video-AnwendungenVideo-AnwendungenDieser Abschnitt behandelt Anwendungen aus der
&os;-Ports-Sammlung, die für die Wiedergabe von Videos
genutzt werden können.MPlayer und
MEncoderMPlayer ist ein auf
Geschwindigkeit und Flexibilität ausgelegter Video-Spieler
für die Kommandozeile mit optionaler graphischer Oberfläche.
Weitere graphische Oberflächen für
MPlayer stehen in der &os;
Ports-Sammlung zur Verfügung.MPlayerMPlayer kann als Paket oder
Port multimedia/mplayer installiert
werden. Der Bau von MPlayer
berücksichtigt die vorhandene Hardware und es können
zahlreiche Optionen ausgewählt werden. Aus diesen Gründen
ziehen es manche Benutzer vor, den Port zu übersetzen,
anstatt das Paket zu installieren.Die Optionen sollten beim Bau des Ports überprüft
werden, um dem Umfang der Unterstützung, mit dem der Port
gebaut wird, zu bestimmen. Wenn eine Option nicht
ausgewählt wird, ist MPlayer
nicht in der Lage, diese Art von Video-Format
wiederzugeben. Mit den Pfeiltasten und der Leertaste
können die erforderlichen Formate ausgewählt werden. Wenn
Sie fertig sind, drücken Sie Enter, um
den Bau und die Installation fortzusetzen.In der Voreinstellung wird das Paket oder der Port das
mplayer-Kommandozeilenprogramm und das
graphische Programm gmplayer bauen. Um
Videos zu dekodieren, installieren Sie den Port
multimedia/mencoder. Aus
lizenzrechtlichen Gründen steht ein Paket von
MEncoder nicht zur
Verfügung.MPlayer erstellt beim
ersten Start ~/.mplayer im
Heimatverzeichnis des Benutzers. Dieses Verzeichnis
enthält die voreingestellten Konfigurationseinstellungen
für den Benutzer.Dieser Abschnitt beschreibt nur ein paar wenige
Anwendungsmöglichkeiten. Eine vollständige Beschreibung
der zahlreichen Möglichkeiten finden Sie in der Manualpage
von mplayer(1).Um die Datei
testfile.avi
abzuspielen, geben Sie die Video-Schnittstelle mit
an:&prompt.user; mplayer -vo xv testfile.avi&prompt.user; mplayer -vo sdl testfile.avi&prompt.user; mplayer -vo x11 testfile.avi&prompt.root; mplayer -vo dga testfile.avi&prompt.root; mplayer -vo 'sdl:dga' testfile.aviEs lohnt sich, alle Option zu testen. Die erzielte
Geschwindigkeit hängt von vielen Faktoren ab und variiert
beträchtlich je nach eingesetzter Hardware.Wenn Sie eine DVD abspielen wollen,
ersetzen Sie
testfile.avi
durch
.
N ist die Nummer des
Stücks, das Sie abspielen wollen und
Gerät gibt
den Gerätenamen der DVD an. Das
nachstehende Kommando spielt das dritte Stück von
/dev/dvd:&prompt.root; mplayer -vo dga -dvd://3 /dev/dvdDas standardmäßig verwendete
DVD-Laufwerk kann beim Bau des
MPlayer-Ports mit der Option
WITH_DVD_DEVICE=/pfad/zum/gerät
festgelegt werden. Die Voreinstellung verwendet das
Gerät /dev/cd0. Weitere Details
finden Sie in Makefile.options des
Ports.Die Tastenkombinationen zum Abbrechen, Anhalten
und Weiterführen der Wiedergabe entnehmen Sie
der Ausgabe von mplayer -h oder der
mplayer(1) Manualpage.Weitere nützliche Optionen für die
Wiedergabe sind zur Wiedergabe
im Vollbild-Modus und
zur Steigerung der Geschwindigkeit.Jeder Benutzer kann häufig verwendete Optionen in
seine ~/.mplayer/config
eintragen:vo=xv
fs=yes
zoom=yesmplayer kann verwendet werden, um
DVD-Stücke in
.vob-Dateien zu rippen. Das zweite
Stück einer DVD wandeln Sie wie folgt
in eine Datei um:&prompt.root; mplayer -dumpstream -dumpfile out.vob -dvd://2 /dev/dvdDie Ausgabedatei out.vob
wird im MPEG-Format
abgespeichert.Jeder Benutzer, der mehr Informationen über Video
unter &unix; sammeln möchte, sollte
mplayerhq.hu/DOCS konsultieren, da es technisch
sehr informativ ist. Diese Dokumentation sollte ebenfalls
studiert werden, bevor Fehlerberichte eingereicht
werden.mencoderVor der Verwendung von mencoder
ist es hilfreich, sich mit den auf mplayerhq.hu/DOCS/HTML/en/mencoder.html
beschriebenen Optionen vertraut zu machen.
Es gibt unzählige Möglichkeiten die Qualität zu verbessern,
die Bitrate zu verringern und Formate zu konvertieren.
Einige davon haben erhebliche Auswirkungen auf die
Geschwindigkeit. Falsche Kombinationen von
Kommandozeilenparametern ergeben eventuell Dateien, die
selbst mplayer nicht mehr wiedergeben
kann.Hier ist ein Beispiel für eine einfache Kopie:&prompt.user; mencoder input.avi -oac copy -ovc copy -o output.aviWenn Sie in eine Datei rippen, benutzen Sie
die Option von
mplayer.Um
input.avi
nach MPEG4 mit MPEG3 für den Ton zu konvertieren, muss
zunächst der Port audio/lame
installiert werden. Aus lizenzrechtlichen Gründen ist ein
Paket nicht verfügbar. Wenn der Port installiert ist,
geben Sie ein:&prompt.user; mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.aviDie Ausgabedatei lässt sich mit Anwendungen wie
mplayer oder
xine abspielen.input.avi kann durch
ersetzt und das
Kommando als root ausgeführt werden,
um ein DVD-Stück direkt zu
konvertieren. Da vielleicht ein paar Versuche nötig sind,
um das gewünschte Ergebnis zu erhalten, empfiehlt es sich
das Stück zuerst in eine Datei zu schreiben und
anschließend die Datei weiter zu bearbeiten.Der Video-Spieler
xinexine ist ein Video-Spieler
mit einer wiederverwendbaren Bibliothek und ein Programm,
das durch Plugins erweitert werden kann. Es kann als Paket
oder Port multimedia/xine installiert
werden.Für einen reibungslosen Betrieb benötigt
xine entweder eine schnelle
CPU mit einer schnellen Grafikkarte,
oder die XVideo-Erweiterung. Am schnellsten läuft
xine mit der
XVideo-Erweiterung.In der Voreinstellung startet
xine eine grafische
Benutzeroberfläche. Über die Menüs können dann
bestimmte Dateien geöffnet werden.Alternativ kann xine auch
über die Kommandozeile aufgerufen werden, um Dateien direkt
wiederzugeben:&prompt.user; xine -g -p mymovie.aviWeitere Informationen und Tipps zur Fehlerbehebung
finden Sie unter
xine-project.org/faq.Die
Transcode-WerkzeugeTranscode ist eine Sammlung
von Werkzeugen zur Umwandlung von Video- und Audio-Dateien.
Transcode mischt Video-Dateien
und kann kaputte Video-Dateien reparieren. Die Werkzeuge
werden als Filter verwendet, das heißt die Ein- und Ausgaben
verwenden stdin/stdout.Unter &os; kann Transcode als
Paket oder Port multimedia/transcode
installiert werden. Viele Benutzer bevorzugen es den Port
zu bauen, da er ein Menü bereitstellt, wo die entsprechenden
Formate für den Bau ausgewählt werden können. Mit den
Pfeiltasten und der Leertaste können die erforderlichen
Formate ausgewählt werden. Wenn Sie fertig sind, drücken
Sie Enter, um den Bau und die Installation
fortzusetzen.Dieses Beispiel zeigt, wie eine DivX-Datei in eine PAL
MPEG-1-Datei konvertiert wird:&prompt.user; transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
&prompt.user; mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpaDie daraus resultierende MPEG-Datei,
output_vcd.mpg,
kann beispielsweise mit MPlayer
abgespielt werden. Die Datei kann auch mit einem Programm
wie multimedia/vcdimager oder
sysutils/cdrdao als
Video-CD auf eine CD-R
gebrannt werden.Zusätzlich zu der Manualpage von
transcode, sollten Sie auch die
Informationen und Beispiele im
transcoding.org/cgi-bin/transcode lesen.TV-KartenJosefEl-RayesBeigetragen von MarcFonvieilleÜberarbeitet von TV-KartenMit TV-Karten können Sie mit dem Rechner über Kabel oder
Antenne fernsehen. Die meisten Karten besitzen einen
RCA- oder S-Video-Eingang. Einige Karten
haben auch einen FM-Radio-Empfänger.Der &man.bktr.4;-Treiber von &os; unterstützt PCI-TV-Karten
mit einem Brooktree Bt848/849/878/879 Chip. Dieser Teiber
unterstützt die meisten Pinnacle PCTV Karten. Die Karte sollte
einen der unterstützten Empfänger besitzen, die in &man.bktr.4;
aufgeführt sind.Den Treiber ladenUm die Karte benutzen zu können, muss der
&man.bktr.4;-Treiber geladen werden. Damit dies beim
Systemstart automatisch erfolgt, muss die folgende Zeile
in /boot/loader.conf hinzugefügt
werden:bktr_load="YES"Alternativ kann der Treiber für die TV-Karte
auch fest in den Kernel kompiliert werden. In diesem Fall
müssen folgende Zeilen in die Kernelkonfigurationsdatei
aufgenommen werden:device bktr
device iicbus
device iicbb
device smbusDie zusätzlichen Treiber werden benötigt,
da die Komponenten der Karte über einen I2C-Bus
verbunden sind. Bauen und installieren Sie dann den
neuen Kernel.Um den Treiber zu testen, muss das System neu gestartet
werden. Während des Neustarts sollte die TV-Karte erkannt
werden:bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.Abhängig von der verwendeten Hardware können die
Meldungen natürlich anders aussehen. Die entdeckten Geräte
lassen sich mit &man.sysctl.8; oder in der
Kernelkonfigurationsdatei überschreiben. Wenn Sie
beispielsweise einen Philips-SECAM-Empfänger erzwingen wollen,
fügen Sie die folgende Zeile zur Kernelkonfigurationsdatei
hinzu:options OVERRIDE_TUNER=6Alternativ können Sie &man.sysctl.8; benutzen:&prompt.root; sysctl hw.bt848.tuner=6Weitere Informationen zu den verschiedenen Kerneloptionen
und &man.sysctl.8;-Parametern finden Sie in
&man.bktr.4;.Nützliche AnwendungenUm die TV-Karte zu benutzen, installieren Sie eine
der nachstehenden Anwendungen:multimedia/fxtv
lässt das Fernsehprogramm in einem Fenster laufen
und kann Bilder, Audio und Video aufzeichnen.multimedia/xawtv
eine weitere TV-Anwendung mit vergleichbaren
Funktionen.Mit audio/xmradio
lässt sich der FM-Radio-Empfänger, der sich
auf TV-Karten befindet, benutzen.Weitere Anwendungen finden Sie in der &os;
Ports-Sammlung.FehlersucheWenn Sie Probleme mit der TV-Karte haben, prüfen
Sie zuerst, ob der Video-Capture-Chip und der Empfänger
vom &man.bktr.4;-Treiber unterstützt werden und ob Sie die
richtigen Optionen verwenden. Weitere Hilfe zu
unterstützten TV-Karten finden Sie auf der Mailingliste
&a.multimedia.name;.MythTVMythTV ist eine beliebte Open Source
PVR-Anwendung. Dieser Abschnitt beschreibt
die Installation und Konfiguration von MythTV unter &os;.
Weitere Informationen zur Benutzung von MythTV finden Sie unter
mythtv.org/wiki.MythTV benötigt ein Frontend und ein Backend. Diese
Komponenten können entweder auf dem gleichen System, oder auf
unterschiedlichen Maschinen installiert werden.Das Frontend kann unter &os; über den Port oder das Paket
multimedia/mythtv-frontend installiert
werden. Zudem muss &xorg;, wie in
beschrieben, installiert und konfiguriert sein. Idealerweise
besitzt das System auch eine Videokarte, die
X-Video Motion Compensation
(XvMC) unterstützt, sowie optional eine
LIRC-kompatible Fernbedienung.Benutzen Sie multimedia/mythtv, um sowohl
das Frontend als auch das Backend zu installieren. Ein &mysql;
Datenbank-Server ist ebenfalls erforderlich und sollte
automatisch als Abhängigkeit installiert werden. Optional
sollte das System einen Empfänger und ausreichend Speicherplatz
haben, um die aufgezeichneten Daten speichern zu können.HardwareMythTV verwendet V4L um auf
Videoeingabegeräte, wie Kodierer und Empfänger zuzugreifen.
Unter &os; funktioniert MythTV am besten mit
USB DVB-S/C/T Karten, die von
multimedia/webcamd unterstützt werden, da
dies eine V4L-Anwendung zur Verfügung
stellt, die als Benutzerprogramm läuft. Jede
DVB-Karte, die von
webcamd unterstützt wird, sollte
mit MythTV funktionieren, jedoch gibt es eine Liste von
Karten, die unter
wiki.freebsd.org/WebcamCompat abgerufen werden kann.
Es existieren auch Treiber für Hauppauge-Karten in den
folgenden Paketen: multimedia/pvr250 und
multimedia/pvrxxx, allerdings liefern diese
nur eine Treiberschnittstelle, die nicht dem Standard
entspricht und die nicht mit MythTV-Versionen grösser als
0.23 funktionieren. Aus lizenzrechtlichen Gründen ist ein
Paket nicht verfügbar, sodass die beiden Ports übersetzt
werden müssen.Die
wiki.freebsd.org/HTPC enthält eine Liste von allen
verfügbaren DVB-Treibern.MythTV Backend einrichtenGeben Sie folgendes ein, um MythTV als Binärpaket
zu installieren:&prompt.root; pkg install mythtvAlternativ können Sie den Port installieren:&prompt.root; cd /usr/ports/multimedia/mythtv
&prompt.root; make installRichten Sie anschließend die MythTV-Datenbank ein:&prompt.root; mysql -uroot -p < /usr/local/share/mythtv/database/mc.sqlKonfigurieren Sie dann das Backend:&prompt.root; mythtv-setupZum Schluss starten Sie das Backend:
- &prompt.root; echo 'mythbackend_enable="YES"' >> /etc/rc.conf
+ &prompt.root; sysrc mythbackend_enable=yes
&prompt.root; service mythbackend startScannerMarcFonvieilleBeigetragen von ScannerUnter &os; stellt SANE (Scanner
Access Now Easy) aus der Ports-Sammlung eine einheitliche
Schnittstelle (API) für den Zugriff auf
Scanner bereit. SANE wiederum greift
auf Scanner mithilfe einiger &os;-Treiber zu.&os; unterstützt sowohl SCSI- als auch
USB-Scanner. Abhängig von der Schnittstelle
des Scanners, werden unterschiedliche Treiber benötigt. Prüfen
Sie vor der Konfiguration mithilfe der
Liste der unterstützten Geräte ob der Scanner von
SANE unterstützt wird.Dieses Kapitel beschreibt, wie Sie feststellen können, ob
der Scanner von &os; erkannt wurde. Zudem enthält es einen
Überblick über die Konfiguration und Verwendung von
SANE unter &os;.Den Scanner überprüfenIm GENERIC-Kernel sind schon alle,
für einen USB-Scanner notwendigen Treiber
enthalten. Benutzer mit einem angepassten Kernel sollten
sicherstellen, dass die Kernelkonfiguration die nachstehenden
Zeilen enthält:device usb
device uhci
device ohci
device ehciUm zu überprüfen ob der Scanner erkannt wird, schließen
Sie den USB-Scanner an. Prüfen Sie dann mit &man.dmesg.8;,
ob der Scanner in den Systemmeldungen erscheint:ugen0.2: <EPSON> at usbus0In diesem Beispiel wurde ein
&epson.perfection; 1650 USB-Scanner an
/dev/ugen0.2 erkannt.Wenn der Scanner eine
SCSI-Schnittstelle besitzt, ist die
Kernelkonfiguration abhängig vom verwendeten
SCSI-Controller. Der
GENERIC-Kernel unterstützt die
gebräuchlichen SCSI-Controller. Den
richtigen Treiber finden Sie in
/usr/src/sys/conf/NOTES. Neben dem
SCSI-Treiber muss die Kernelkonfiguration
noch die nachstehenden Zeilen enthalten:device scbus
device passNachdem Sie einen Kernel gebaut und installiert haben,
sollte der Scanner beim Neustart in den Systemmeldungen
erscheinen:pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfersWenn der Scanner während des Systemstarts
ausgeschaltet war, können Sie die Geräteerkennung
erzwingen, indem Sie den SCSI-Bus erneut
absuchen. Verwenden Sie dazu
camcontrol:&prompt.root; camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successfulDer Scanner sollte jetzt in der
SCSI-Geräteliste erscheinen:&prompt.root; camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)Weitere Informationen über SCSI-Geräte
unter &os; finden Sie in &man.scsi.4; und
&man.camcontrol.8;.SANE konfigurierenSANE besteht aus zwei
Teilen, den Backends
(graphics/sane-backends)
und den Frontends
(graphics/sane-frontends oder
graphics/xsane).
Das Backend greift auf den Scanner zu. Lesen Sie
http://www.sane-project.org/sane-supported-devices.html
um herauszufinden, welches Backend welchen Scanner
unterstützt. Die Frontends sind die Anwendungen, mit denen
gescannt wird. graphics/sane-frontends
installiert xscanimage, während
graphics/xsanexsane installiert.Installieren Sie die beiden Komponenten als Paket:&prompt.root; pkg install xsane sane-frontendsAlternativ können Sie die Komponenten aus der
Ports-Sammlung installieren:&prompt.root; cd /usr/ports/graphics/sane-frontends
&prompt.root; make install clean
&prompt.root; cd /usr/ports/graphics/xsane
&prompt.root; make install cleanNachdem Sie den Port oder das Paket
graphics/sane-backends installiert haben,
können Sie mit dem Befehl sane-find-scanner
prüfen, ob SANE den Scanner
erkennt:&prompt.root; sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3Die Ausgabe zeigt die Schnittstelle und die verwendete
Gerätedatei des Scanners. Der Hersteller und das
Modell können in der Ausgabe fehlen.Bei einigen USB-Scannern muss die
Firmware geladen werden. Lesen Sie sane-find-scanner(1) und
sane(7) für weitere Details.Als nächstes müssen Sie prüfen, ob
der Scanner vom Frontend erkannt wird. Die
SANE-Backends werden
mit dem Kommandozeilenwerkzeug scanimage
geliefert. Mit diesem Werkzeug können Sie
sich Scanner anzeigen lassen und den Scan-Prozess
von der Kommandozeile starten. Die Option
zeigt die Scanner an. Das erste Beispiel
ist für einen SCSI-Scanner, das zweite ist
für einen USB-Scanner:&prompt.root; scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
&prompt.root; scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scannerDie Zeile
'epson2:libusb:/dev/usb:/dev/ugen0.2' im
zweiten Beispiel nennt das Backend (epson2)
und die Gerätedatei (/dev/ugen0.2), die der
Scanner verwendet.Wenn scanimage den Scanner nicht
erkennen kann, erscheint folgende Meldung:&prompt.root; scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).Wenn das passiert, müssen Sie in der Konfigurationsdatei
des Backends unterhalb von
/usr/local/etc/sane.d/ den verwendeten
Scanner eintragen. Wenn der Scanner
&epson.perfection; 1650, der das Backend
epson2 benutzt, nicht erkannt wurde, muss
/usr/local/etc/sane.d/epson2.conf
angepasst werden. Fügen Sie eine Zeile mit der Schnittstelle
und dem Gerätenamen in die Datei ein. In diesem Beispiel
wurde die nachstehende Zeile eingefügt:usb /dev/ugen0.2Speichern Sie die Änderungen und prüfen Sie, ob der
Scanner mit dem richtigen Backend und Gerätenamen erkannt
wird:&prompt.root; scanimage -L
device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scannerWenn scanimage -L den Scanner erkannt
hat, ist der Scanner eingerichtet und bereit, zu
scannen.Obwohl scanimage von der Kommandozeile
scannen kann, ist eine graphische Anwendung
zum Scannen besser geeignet. SANE
bietet ein einfaches und effizientes Werkzeug:
xscanimage.Alternativ ist xsane, das über
den Port oder das Paket graphics/xsane
installiert wird, eine weitere beliebte graphische Anwendung.
Dieses Frontend besitzt erweiterte Funktionen wie den
Scan-Modus, eine Farbkorrektur und Batch-Scans. Beide
Anwendungen lassen sich als
GIMP-Plugin verwenden.Berechtigungen für den ScannerWenn andere Benutzer den Scanner benutzen sollen,
müssen sie Lese- und Schreibrechte auf die
Gerätedatei des Scanners besitzen. Im vorherigen Beispiel
wird die Datei /dev/ugen0.2 verwendet,
die faktisch nur ein Symlink auf die echte Gerätedatei,
/dev/usb/0.2.0 genannt, darstellt.
Sowohl der Symlink als auch die Gerätedatei sind jeweils im
Besitz der Gruppen wheel und operator. Damit ein Benutzer
den Scanner benutzen kann, muss er Mitglied in einer der
beiden Gruppen sein. Allerdings sollte aus Sicherheitsgründen
genau überlegt werden, welche Benutzer zu welcher Gruppe
hinzugefügt werden, besonders bei der Gruppe wheel. Eine bessere
Lösung ist es, eine spezielle Gruppe für den Zugriff
anzulegen und den Scanner für Mitglieder dieser
Gruppe zugänglich zu machen.Dieses Beispiel erstellt eine Gruppe namens usb:&prompt.root; pw groupadd usbAnschließend muss der
/dev/ugen0.2-Symlink und der Gerätename
/dev/usb/0.2.0 für die Gruppe usb mit den Schreibrechten
0660 oder 0664
ausgestattet werden. All dies kann durch das Hinzufügen der
folgenden Zeilen in /etc/devfs.rules
erreicht werden:[system=5]
add path ugen0.2 mode 0660 group usb
add path usb/0.2.0 mode 0660 group usbJetzt müssen nur noch Benutzer zur Gruppe usb
hinzugefügt werden, um ihnen den Zugriff auf den Scanner zu
erlauben:&prompt.root;pw groupmod usb -m joeWeitere Details finden Sie in &man.pw.8;.
Index: head/de_DE.ISO8859-1/books/handbook/security/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/security/chapter.xml (revision 52369)
+++ head/de_DE.ISO8859-1/books/handbook/security/chapter.xml (revision 52370)
@@ -1,4449 +1,4449 @@
SicherheitTomRhodesNeu verfasst von MartinHeinenÜbersetzt von SicherheitÜbersichtSicherheit, ob nun physisch oder virtuell, ist ein so breit
gefächertes Thema, dass sich eine ganze Industrie darum gebildet
hat. Es wurden bereits hunderte Verfahren zur Sicherung von
Systemen und Netzwerken verfasst, und als Benutzer von &os; ist
es unumgänglich zu verstehen, wie Sie sich gegen Angreifer und
Eindringlinge schützen können.In diesem Kapitel werden einige Grundlagen und Techniken
diskutiert. Ein &os;-System implementiert Sicherheit in
mehreren Schichten, und viele weitere Programme von
Drittanbietern können zur Verbesserung der Sicherheit
beitragen.Nachdem Sie dieses Kapitel gelesen haben, werden Sie:Grundlegende auf &os; bezogene Sicherheitsaspekte
kennen.Die verschiedenen Verschlüsselungsmechanismen
von &os; kennen.Wissen, wie Sie ein Einmalpasswörter
zur Authentifizierung verwenden.TCP Wrapper für &man.inetd.8;
einrichten können.Wissen, wie Sie Kerberos
unter &os; einrichten.Wissen, wie Sie IPsec konfigurieren
und ein VPN einrichten.Wissen, wie Sie OpenSSH unter
&os; konfigurieren und benutzen.Wissen, wie Sie ACLs für Dateisysteme
benutzen.pkg anwenden können,
um Softwarepakete aus der Ports-Sammlung auf bekannte
Sicherheitslücken hin zu überprüfen.Mit &os;-Sicherheitshinweisen umgehen können.Eine Vorstellung davon haben, was Prozessüberwachung
(Process Accounting) ist und
wie Sie diese Funktion unter &os; aktivieren können.Wissen, wie Sie Login-Klassen oder die
Ressourcen-Datenbank benutzen, um die Ressourcen für
Benutzer zu steuern.Bevor Sie dieses Kapitel lesen, sollten SieGrundlegende Konzepte von &os; und dem Internet
verstehen.Dieses Buch behandelt weitere Sicherheitsthemen.
Beispielsweise werden verbindliche Zugriffskontrollen
im und Firewalls im
besprochen.EinführungSicherheit ist die Verantwortung eines jeden Einzelnen. Ein
schwacher Einstiegspunkt in einem System kann einem
Eindringling Zugriff auf wichtige Informationen verschaffen, was
sich verheerend auf das gesamte Netzwerk auswirken kann. Eines
der Grundprinzipien der Informationssicherheit sind die
Vertraulichkeit, Integrität und Verfügbarkeit von
Informationssystemen.Diese Grundprinzipien sind ein fundamentales Konzept der
Computer-Sicherheit, da Kunden und Benutzer erwarten, dass ihre
Daten geschützt sind. Zum Beispiel erwartet ein Kunde, dass
seine Kreditkarteninformationen sicher gespeichert werden
(Vertraulichkeit), dass seine Aufträge nicht hinter den Kulissen
geändert werden (Integrität) und dass er zu jeder Zeit Zugang zu
seinen Informationen hat (Verfügbarkeit).Um diese Grundprinzipien zu implementieren, wenden
Sicherheitsexperten das sogenannte
Defense-in-Depth-Konzept an. Die
Idee dahinter ist, mehrere Sicherheitsschichten zu addieren, so
dass nicht die gesamte Systemsicherheit gefährdet ist, wenn
eine einzelne Sicherheitsschicht kompromittiert wird.
Beispielsweise ist es nicht ausreichend, ein Netzwerk oder ein
System nur mit einer Firewall zu sichern. Der
Systemadministrator muss auch Benutzerkonten überwachen, die
Integrität von Binärdateien prüfen und sicherstellen, dass keine
bösartigen Programme installiert sind. Um eine effektive
Sicherheitsstrategie zu implementieren, muss man Bedrohungen
verstehen und wissen, wie man sich dagegen verteidigen
kann.Was ist eine Bedrohung, wenn es um Computer-Sicherheit geht?
Bedrohungen beschränken sich nicht nur auf entfernte Angreifer,
die sich unerlaubten Zugriff auf ein System verschaffen wollen.
Zu den Bedrohungen zählen auch Mitarbeiter, bösartige Software,
nicht autorisierte Netzwerkgeräte, Naturkatastrophen,
Sicherheitslücken und sogar konkurrierende Unternehmen.Der Zugriff auf Netzwerke und Systeme erfolgt ohne
Erlaubnis, manchmal durch Zufall, oder von entfernten
Angreifern, und in einigen Fällen durch Industriespionage oder
ehemalige Mitarbeiter. Als Anwender müssen Sie vorbereitet sein
und auch zugeben, wenn ein Fehler zu einer Sicherheitsverletzung
geführt hat. Melden Sie Probleme umgehend dem verantwortlichen
Sicherheitspersonal. Als Administrator ist es wichtig,
Bedrohungen zu kennen und darauf vorbereitet zu sein, mögliche
Schäden zu mildern.Wenn Sicherheit auf Systeme angewendet wird, empfiehlt es
sich mit der Sicherung der Benutzerkonten zu beginnen und dann
die Netzwerkschicht zu sichern. Dabei ist zu beachten, dass die
Sicherheitsrichtlinien des Systems und des Unternehmens
eingehalten werden. Viele Unternehmen haben bereits eine
Sicherheitsrichtlinie, welche die Konfiguration von technischen
Geräten abdeckt. Die Richtlinie sollte die Konfiguration von
Arbeitsplatzrechnern, Desktops, mobilen Geräten, Mobiltelefonen,
Produktions- und Entwicklungsservern umfassen. In einigen
Fällen ist bereits eine Standardvorgehensweise vorhanden.
Fragen Sie im Zweifelsfall das Sicherheitspersonal.Der übrige Teil dieser Einführung beschreibt, wie einige
grundlegende Sicherheitskonfigurationen auf einem
&os;-System durchgeführt werden. Der Rest des Kapitels
zeigt einige spezifische Werkzeuge, die verwendet werden
können, um eine Sicherheitsrichtlinie auf einem &os;-System zu
implementieren.Anmeldungen am System verhindernEin guter Ausgangspunkt für die Absicherung des Systems
ist die Prüfung der Benutzerkonten. Stellen Sie sicher, dass
root ein starkes
Passwort besitzt und dass dieses Passwort nicht weitergegeben
wird. Deaktivieren Sie alle Konten, die keinen Zugang zum
System benötigen.Es existieren zwei Methoden, um die Anmeldung über ein
Benutzerkonto zu verweigern. Die erste Methode ist, das
Konto zu sperren. Dieses Beispiel sperrt das Benutzerkonto
toor:&prompt.root; pw lock toorBei der zweiten Methode wird der Anmeldevorgang
verhindert, indem die Shell auf
/sbin/nologin gesetzt wird. Nur der
Superuser kann die Shell für andere Benutzer ändern:&prompt.root; chsh -s /usr/sbin/nologin toorDie Shell /usr/sbin/nologin
verhindert, dass dem Benutzer bei der Anmeldung am System eine
Shell zugeordnet wird.Gemeinsame Nutzung von BenutzerkontenIn manchen Fällen wird die Systemadministration auf
mehrere Benutzer aufgeteilt. &os; bietet zwei Methoden, um
solche Situationen zu handhaben. Bei der ersten und nicht
empfohlenen Methode wird ein gemeinsames root Passwort der
Mitglieder der Gruppe wheel verwendet. Hier gibt
der Benutzer su und das Passwort für
wheel ein, wenn er
die Rechte des Superusers benötigt. Der Benutzer sollte dann
nach der Beendigung der administrativen Aufgaben
exit eingeben. Um einen Benutzer zu dieser
Gruppe hinzuzufügen, bearbeiten Sie
/etc/group und fügen Sie den Benutzer an
das Ende des Eintrags wheel hinzu. Die
Benutzer müssen durch Komma und ohne Leerzeichen getrennt
werden.Die zweite und empfohlene Methode ein Benutzerkonto zu
teilen wird über den Port oder das Paket
security/sudo realisiert. Dieses Programm
bietet zusätzliche Prüfungen, bessere Benutzerkontrolle und
es kann auch konfiguriert werden, einzelnen Benutzern Zugriff
auf bestimme, privilegierte Befehle zu gestatten.Benutzen Sie nach der Installation
visudo, um
/usr/local/etc/sudoers zu bearbeiten.
Dieses Beispiel erstellt eine neue Gruppe webadmin und fügt das
Benutzerkonto trhodes dieser Gruppe hinzu.
Anschließend wird die Gruppe so konfiguriert, dass es
Gruppenmitgliedern gestattet wird apache24
neu zu starten:&prompt.root; pw groupadd webadmin -M trhodes -g 6000
&prompt.root; visudo
%webadmin ALL=(ALL) /usr/sbin/service apache24 *Passwort-HashesPasswörter sind ein notwendiges Übel. Wenn sie verwendet
werden müssen, sollten sie sehr komplex sein und dazu sollte
eine leistungsfähige Hash-Funktion gewählt werden, um die
Version des Passworts zu verschlüsseln, die in der
Passwortdatenbank gespeichert wird. &os; unterstützt die
Hash-Funktionen DES,
MD5, SHA256,
SHA512, sowie
Blowfish Hash-Funktionen in seiner
crypt()-Bibliothek. Das in der
Voreinstellung verwendete SHA512 sollte
nicht durch eine weniger sichere Hash-Funktion getauscht
werden. Es kann jedoch durch den besseren
Blowfish-Algorithmus ersetzt werden.Blowfish ist nicht Bestandteil von
AES und ist nicht kompatibel mit allen
Federal Information Processing Standards
(FIPS). Die Verwendung wird in einigen
Umgebungen vielleicht nicht gestattet.Um zu bestimmen, welche Hash-Funktion das Passwort eines
Benutzers verschlüsselt, kann der Superuser den Hash für den
Benutzer in der Passwortdatenbank von &os; nachsehen. Jeder
Hash beginnt mit einem Zeichen, mit dem die verwendete
Hash-Funktion identifiziert werden kann. Bei
DES gibt es allerdings kein führendes
Zeichen. MD5 benutzt das Zeichen
$. SHA256 und
SHA512 verwenden das Zeichen
$6$. Blowfish benutzt das Zeichen
$2a$. In diesem Beispiel wird das Passwort
von dru mit dem
Hash-Algorithmus SHA512 verschlüsselt, da
der Hash mit $6$ beginnt. Beachten Sie,
dass der verschlüsselte Hash und nicht das Passwort selbst, in
der Passwortdatenbank gespeichert wird:&prompt.root; grep dru /etc/master.passwd
dru:$6$pzIjSvCAn.PBYQBA$PXpSeWPx3g5kscj3IMiM7tUEUSPmGexxta.8Lt9TGSi2lNQqYGKszsBPuGME0:1001:1001::0:0:dru:/usr/home/dru:/bin/cshDer Hash-Mechanismus wird in der Login-Klasse des
Benutzers festgelegt. In diesem Beispiel wird die
voreingestellte Login-Klasse für den Benutzer verwendet. Der
Hash-Algorithmus wird mit dieser Zeile in
/etc/login.conf gesetzt: :passwd_format=sha512:\Um den Algorithmus auf Blowfish zu ändern, passen Sie die
Zeile wie folgt an: :passwd_format=blf:\Führen Sie anschließend
cap_mkdb /etc/login.conf aus, wie in beschrieben. Beachten Sie, dass
vorhandene Passwort-Hashes durch diese Änderung nicht
beeinträchtigt werden. Das bedeutet, dass alle Passwörter neu
gehasht werden sollten, indem die Benutzer mit
passwd ihr Passwort ändern.Für die Anmeldung auf entfernten Rechnern sollte eine
Zwei-Faktor-Authentifizierung verwendet werden. Ein Beispiel
für eine Zwei-Faktor-Authentifizierung ist
etwas, was Sie besitzen (bspw. einen Schlüssel)
und etwas, was Sie wissen (bspw. das Passwort
für diesen Schlüssel). Da OpenSSH
Teil des &os;-Basissystems ist, sollten alle Anmeldungen über
das Netzwerk über eine verschlüsselte Verbindung mit einer
schlüsselbasierten Authentifizierung stattfinden. Passwörter
sollten hier nicht verwendet werden. Weitere Informationen
finden Sie in . Kerberos-Benutzer
müssen eventuell zusätzliche Änderungen vornehmen, um
OpenSSH in Ihrem Netzwerk zu
implementieren. Diese Änderungen sind in beschrieben.Durchsetzung einer Passwort-RichtlinieDie Durchsetzung einer starken Passwort-Richtlinie für
lokale Benutzerkonten ist ein wesentlicher Aspekt der
Systemsicherheit. In &os; kann die Länge, Stärke und
Komplexität des Passworts mit den Pluggable
Authentication Modules
(PAM) implementiert werden.In diesem Abschnitt wird gezeigt, wie Sie die minimale und
maximale Passwortlänge und die Durchsetzung von gemischten
Zeichen mit dem Modul pam_passwdqc.so
konfigurieren. Dieses Modul wird aufgerufen, wenn ein
Benutzer sein Passwort ändert.Um dieses Modul zu konfigurieren, müssen Sie als Superuser
die Zeile mit pam_passwdqc.so in
/etc/pam.d/passwd auskommentieren.
Anschließend bearbeiten Sie die Zeile, so dass sie den
vorliegenden Passwort-Richtlinien entspricht:password requisite pam_passwdqc.so min=disabled,disabled,disabled,12,10 similar=deny retry=3 enforce=usersDieses Beispiel legt gleich mehrere Anforderungen für neue
Passwörter fest. Die Einstellung min
kontrolliert die Passwortlänge. Es verfügt über fünf Werte,
weil dieses Modul fünf verschiedene Arten von Passwörtern
definiert, basierend auf der Komplexität. Die Komplexität
wird durch die Art von Zeichen definiert, die in einem
Passwort vorhanden sind, wie zum Beispiel Buchstaben, Zahlen
und Sonderzeichen. Die verschiedenen Arten von Passwörtern
werden in &man.pam.passwdqc.8; beschrieben. In diesem
Beispiel sind die ersten drei Arten von Passwörtern
deaktiviert, was bedeutet, dass Passwörter, die dieser
Komplexitätsstufe entsprechen, nicht akzeptiert werden,
unabhängig von der Länge des Passworts. Die
12 legt eine Richtlinie von mindestens
zwölf Zeichen fest, wenn das Passwort auch drei Arten von
Komplexität aufweist. Die 10 legt eine
Richtlinie fest, die auch Passwörter mit mindestens zehn
Zeichen zulassen, wenn das Passwort Zeichen mit vier Arten
von Komplexität aufweist.Die Einstellung similar verbietet
Passwörter, die dem vorherigen Passwort des Benutzers ähnlich
sind. Die Einstellung retry bietet dem
Benutzer drei Möglichkeiten, ein neues Passwort
einzugeben.Sobald diese Datei gespeichert wird, sehen Benutzer bei
der Änderung ihres Passworts die folgende Meldung:&prompt.user; passwd
Changing local password for trhodes
Old Password:
You can now choose the new password.
A valid password should be a mix of upper and lower case letters,
digits and other characters. You can use a 12 character long
password with characters from at least 3 of these 4 classes, or
a 10 character long password containing characters from all the
classes. Characters that form a common pattern are discarded by
the check.
Alternatively, if noone else can see your terminal now, you can
pick this as your password: "trait-useful&knob".
Enter new password:Wenn ein Passwort nicht den Richtlinien entspricht, wird
es mit einer Warnung abgelehnt und der Benutzer bekommt die
Möglichkeit, es erneut zu versuchen, bis die Anzahl an
Wiederholungen erreicht ist.Die meisten Passwort-Richtlinien erzwingen, dass
Passwörter nach einer bestimmten Anzahl von Tagen ablaufen.
Um dieses Limit in &os; zu konfigurieren, setzen Sie es für
die Login-Klasse des Benutzers in
/etc/login.conf. Die voreingestellte
Login-Klasse enthält dazu ein Beispiel:# :passwordtime=90d:\Um für diese Login-Klasse das Passwort nach 90 Tagen
ablaufen zu lassen, entfernen Sie das Kommentarzeichen
(#), speichern Sie die Änderungen und
führen Sie cap_mkdb /etc/login.conf
aus.Um das Passwort für einzelne Benutzer ablaufen zu lassen,
geben Sie pw ein Ablaufdatum oder die
Anzahl von Tagen, zusammen mit dem Benutzer an:&prompt.root; pw usermod -p 30-apr-2015 -n trhodesWie zu sehen ist, wird das Ablaufdatum in der Form von
Tag, Monat und Jahr angegeben. Weitere Informationen finden
Sie in &man.pw.8;.Erkennen von RootkitsEin Rootkit ist eine nicht
autorisierte Software die versucht, Root-Zugriff auf ein
System zu erlangen. Einmal installiert, wird diese bösartige
Software normalerweise eine Hintertür für den Angreifer
installieren. Realistisch betrachtet sollte ein durch ein
Rootkit kompromittiertes System nach der Untersuchung von
Grund auf neu installiert werden. Es besteht jedoch die
enorme Gefahr, dass sogar das Sicherheitspersonal oder
Systemingenieure etwas übersehen, was ein Angreifer dort
platziert hat.Wird ein Rootkit erkannt, ist dies bereits ein Zeichen
dafür, dass das System an einem bestimmten Zeitpunkt
kompromittiert wurde. Meist neigen diese Art von Anwendungen
dazu, sehr gut versteckt zu sein. Dieser Abschnitt zeigt das
Werkzeug security/rkhunter, mit dem
Rootkits erkannt werden können.Nach der Installation dieses Ports oder Pakets kann das
System mit dem folgenden Kommando überprüft werden. Das
Programm generiert eine ganze Menge Informationen und Sie
werden diverse Male ENTER drücken
müssen:&prompt.root; rkhunter -cNachdem der Prozess abgeschlossen ist, wird eine
Statusmeldung auf dem Bildschirm ausgegeben. Die Meldung
enthält die Anzahl der überprüften Dateien, verdächtige
Dateien, mögliche Rootkits und weitere Informationen. Während
der Überprüfung erscheinen allgemeine Sicherheitswarnungen,
zum Beispiel über versteckte Dateien, die Auswahl von
OpenSSH-Protokollen und bekannte,
anfällige Versionen installierter Anwendungen. Diese können
nun direkt, oder nach detaillierter Analyse untersucht
werden.Jeder Administrator sollte wissen, was auf den Systemen
läuft, für die er verantwortlich ist. Werkzeuge von
Drittanbietern, wie rkhunter oder
sysutils/lsof, sowie native Befehle wie
netstat oder ps, können
eine große Menge an Informationen über das System anzeigen.
Machen Sie sich Notizen darüber, was normal
ist, und fragen Sie nach, wenn Ihnen etwas suspekt erscheint.
Eine Beeinträchtigung zu verhindern ist ideal, aber die
Erkennung einer Beeinträchtigung ist ein Muss.Überprüfung von BinärdateienDie Überprüfung von System- und Binärdateien ist wichtig,
da sie Systemadministratoren Informationen über
Systemänderungen zur Verfügung stellt. Eine Software, die das
System auf Änderungen überwacht wird Intrustion
Detection System (IDS)
genannt.&os; bietet native Unterstützung für ein einfaches
IDS-System. Obwohl die täglichen
Sicherheits-E-Mails den Administrator über Änderungen in
Kenntnis setzen, werden diese Informationen lokal gespeichert
und es besteht die Möglichkeit, dass ein Angreifer diese
Informationen manipulieren kann, um Änderungen am System zu
verbergen. Daher ist es empfehlenswert, einen eigenen Satz an
Signaturen zu erstellen und diese dann in einem
schreibgeschützten Verzeichnis, oder vorzugsweise auf einem
USB-Stick oder auf einem entfernten Server
zu speichern.Das im Basissystem enthaltene Werkzeug
mtree kann verwendet werden, um
eine Spezifikation des Inhalts eines Verzeichnisses zu
erzeugen. Hierbei wird ein Startwert
(Seed) oder eine numerische
Konstante benutzt, um die Spezifikation zu erstellen und um
sicherzustellen, dass sich die Spezifikation nicht geändert
hat. Dadurch kann festgestellt werden, ob eine Datei oder
eine Binärdatei verändert wurde. Da ein Angreifer den
Seed nicht kennt, ist es ihm fast unmöglich die
Prüfsummen von Dateien zu manipulieren. Das folgende Beispiel
generiert einen Satz mit SHA256-Prüfsummen
für jede Binärdatei unterhalb von /bin
und speichert diese Werte in einer versteckten Datei im
Heimatverzeichnis von root unter dem Namen
/root/.bin_chksum_mtree:&prompt.root; mtree -s 3483151339707503 -c -K cksum,sha256digest -p /bin > /root/.bin_chksum_mtree
&prompt.root; mtree: /bin checksum: 34270122253483151339707503 stellt den
Seed dar. Diesen Wert sollten Sie sich merken, aber
nicht mit anderen Personen teilen.Die Ausgabe von
/root/.bin_chksum_mtree sollte ähnlich
der folgenden sein:# user: root
# machine: dreadnaught
# tree: /bin
# date: Mon Feb 3 10:19:53 2014
# .
/set type=file uid=0 gid=0 mode=0555 nlink=1 flags=none
. type=dir mode=0755 nlink=2 size=1024 \
time=1380277977.000000000
\133 nlink=2 size=1170 time=1380277977.000000000 \
cksum=484492447 \
sha256digest=6207490fbdb5ed1904441fbfa941279055c3e24d3a4049aeb45094596400662a
cat size=12096 time=1380277975.000000000 cksum=3909216944 \
sha256digest=65ea347b9418760b247ab10244f47a7ca2a569c9836d77f074e7a306900c1e69
chflags size=8168 time=1380277975.000000000 cksum=3949425175 \
sha256digest=c99eb6fc1c92cac335c08be004a0a5b4c24a0c0ef3712017b12c89a978b2dac3
chio size=18520 time=1380277975.000000000 cksum=2208263309 \
sha256digest=ddf7c8cb92a58750a675328345560d8cc7fe14fb3ccd3690c34954cbe69fc964
chmod size=8640 time=1380277975.000000000 cksum=2214429708 \
sha256digest=a435972263bf814ad8df082c0752aa2a7bdd8b74ff01431ccbd52ed1e490bbe7Der Report enthält den Rechnernamen, das Datum und die
Uhrzeit der Spezifikation, sowie den Namen des Benutzers, der
die Spezifikation erstellt hat. Für jede Binärdatei im
Verzeichnis gibt es eine Prüfsumme, Größe, Uhrzeit und einen
SHA256-Hashwert.Um sicherzustellen, dass die binären Signaturen nicht
verändert wurden, vergleichen Sie den Inhalt des aktuellen
Verzeichnisses mit der zuvor erstellen Spezifikation.
Speichern Sie die Ergebnisse in einer Datei. Dieses Kommando
benötigt den Seed, der verwendet wurde um die
ursprüngliche Spezifikation zu erstellen:&prompt.root; mtree -s 3483151339707503 -p /bin < /root/.bin_chksum_mtree >> /root/.bin_chksum_output
&prompt.root; mtree: /bin checksum: 3427012225Dies sollte die gleiche Prüfsumme für
/bin produzieren, wie die ursprüngliche
Spezifikation. Wenn keine Änderungen an den Binärdateien in
diesem Verzeichnis aufgetreten sind, wird die Ausgabedatei
/root/.bin_chksum_output leer sein. Um
eine Änderung zu simulieren, ändern Sie mit
touch das Datum von
/bin/cat und führen Sie die Verifikation
erneut aus:&prompt.root; touch /bin/cat
&prompt.root; mtree -s 3483151339707503 -p /bin < /root/.bin_chksum_mtree >> /root/.bin_chksum_output
&prompt.root; more /root/.bin_chksum_output
cat changed
modification time expected Fri Sep 27 06:32:55 2013 found Mon Feb 3 10:28:43 2014Es wird empfohlen, Spezifikationen für Verzeichnisse zu
erstellen, welche Binärdateien, Konfigurationsdateien und
sensible Daten enthalten. In der Regel werden Spezifikationen
für /bin, /sbin,
/usr/bin, /usr/sbin,
/usr/local/bin,
/usr/local/sbin,
/etc und
/usr/local/etc erstellt.Mit security/aide steht ein
fortgeschrittenes IDS-System zur Verfügung,
aber in den meisten Fällen bietet mtree die
Funktionalität, die von Administratoren benötigt wird. Es ist
jedoch sehr wichtig den Seed und die Prüfsummen in der
Ausgabe vor böswilligen Benutzern verborgen zu halten.
Weitere Informationen zu mtree finden Sie
in &man.mtree.8;.System-Tuning für SicherheitUnter &os; können viele Systemfunktionen mit
sysctl konfiguriert werden. Dieser
Abschnitt behandelt ein paar Sicherheitsmerkmale mit denen
Denial of Service
(DoS) verhindert werden sollen. Weitere
Informationen über die Benutzung von
sysctl und wie Werte vorübergehend oder
auch permanent geändert werden können, finden Sie in .Jedes Mal wenn eine Einstellung mit
sysctl geändert wird, vergrößert sich die
Wahrscheinlichkeit eines unerwünschten Schadens, was die
Verfügbarkeit des Systems beeinflusst. Alle Änderungen
sollten überwacht und wenn möglich, vorher auf einem
Testsystem ausprobiert werden, bevor sie auf einem
Produktivsystem verwendet werden.In der Voreinstellung startet &os; in der Sicherheitsstufe
(Securelevel)
-1. Dieser Modus wird
unsicherer Modus genannt, da die
unveränderlichen Datei-Flags ausgeschaltet werden können und
dadurch von allen Geräten gelesen und geschrieben werden kann.
Solange die Einstellung nicht über sysctl
oder in den Startskripten geändert wird, verbleibt die
Sicherheitsstufe auf -1. Die
Sicherheitsstufe kann während des Systemstarts erhöht werden.
Dazu muss in /etc/rc.confkern_securelevel_enable auf
YES und kern_securelevel
auf den gewünschten Wert gesetzt werden. Weitere
Informationen zu diesen Einstellungen und den verfügbaren
Sicherheitsstufen finden Sie in &man.security.7; und
&man.init.8;.Das Erhöhen der Sicherheitsstufe kann zu Problemen mit
&xorg; führen.Die Einstellungen
net.inet.tcp.blackhole und
net.inet.udp.blackhole können benutzt
werden, um eingehende SYN-Pakete an
geschlossenen Ports zu blockieren, ohne ein
RST-Paket als Antwort zu senden.
Standardmäßig wird jedoch ein RST-Paket
gesendet, um zu zeigen, dass der Port geschlossen ist. Das
ändern dieser Voreinstellung bietet einen gewissen Schutz
gegen Portscans. Diese Portscans versuchen herauszufinden,
welche Anwendungen auf einem System ausgeführt werden. Setzen
Sie net.inet.tcp.blackhole auf
2 und
net.inet.udp.blackhole auf
1. Weitere Informationen zu diesen
Einstellungen finden Sie in &man.blackhole.4;.Die Einstellung
net.inet.icmp.drop_redirect hilft dabei,
sogenannte Redirect-Angriffe zu verhindern. Ein
Redirect-Angriff ist eine Art von DoS, die
massenhaft ICMP-Pakete Typ 5 versendet. Da
solche Pakete nicht benötigt werden, setzen Sie
net.inet.icmp.drop_redirect auf
1 und
net.inet.ip.redirect auf
0.Source Routing zur
Erfassung und zum Zugriff auf nicht-routbare Adressen im
internen Netzwerk. Dies sollte deaktiviert werden, da
nicht-routbare Adressen in der Regel nicht absichtlich
geroutet werden. Um diese Funktion zu deaktivieren, setzen
Sie net.inet.ip.sourceroute und
net.inet.accept_sourceroute auf
0.Wenn ein Netzwerkgerät Nachrichten an alle Rechner in
einem Subnetz senden muss, wird eine
ICMP-Echo-Request Nachricht an die
Broadcast-Adresse gesendet. Allerdings gibt es keinen guten
Grund für externe Rechner, solche Nachrichten zu verschicken.
Um alle externen Broadcast-Anfragen abzulehnen, setzen Sie
net.inet.icmp.bmcastecho auf
0.Einige zusätzliche Einstellungen sind in &man.security.7;
dokumentiert.EinmalpasswörterEinmalpasswörterSicherheitEinmalpasswörterIn der Voreinstellung unterstützt &os;
One-time Passwords in Everything
(OPIE). OPIE wurde
konzipiert um Replay-Angriffe zu verhindern, bei dem ein
Angreifer das Passwort eines Benutzers ausspäht und es
benutzt, um Zugriff auf ein System zu erlangen. Da ein Passwort
unter OPIE nur einmal benutzt wird, ist ein
ausgespähtes Passwort für einen Angreifer nur von geringem
Nutzen. OPIE verwendet eine sichere
Hash-Funktion und ein Challenge/Response-System, um Passwörter
zu verwalten. Die &os;-Implementation verwendet in der
Voreinstellung die MD5-Hash-Funktion.OPIE verwendet drei verschiedene Arten
von Passwörtern. Das erste ist das normale &unix;- oder
Kerberos-Passwort. Das zweite ist das Einmalpasswort, das von
opiekey generiert wird. Das dritte Passwort
ist das geheime Passwort, das zum Erstellen der
Einmalpasswörter verwendet wird. Das geheime Passwort steht in
keiner Beziehung zum &unix;-Passwort und beide Passwörter
sollten unterschiedlich sein.Es gibt noch zwei weitere Werte, die für
OPIE wichtig sind. Der erste ist der
Initialwert (engl.
seed oder
key), der aus zwei Buchstaben und
fünf Ziffern besteht. Der zweite Wert ist der
Iterationszähler, eine Zahl zwischen 1 und 100.
OPIE generiert das Einmalpasswort, indem
es den Initialwert und das geheime Passwort aneinander hängt
und dann die MD5-Hash-Funktion so oft, wie
durch den Iterationszähler gegeben, anwendet. Das Ergebnis wird
in sechs englische Wörter umgewandelt, die das Einmalpasswort
ergeben. Das Authentifizierungssystem (meistens PAM) merkt sich
das zuletzt benutzte Einmalpasswort und der Benutzer ist
authentifiziert, wenn die Hash-Funktion des Passworts dem
vorigen Passwort entspricht. Da nicht umkehrbare
Hash-Funktionen benutzt werden, ist es unmöglich, aus einem
bekannten Passwort weitere gültige Einmalpasswörter zu
berechnen. Der Iterationszähler wird nach jeder erfolgreichen
Anmeldung um eins verringert und stellt so die Synchronisation
zwischen Benutzer und Login-Programm sicher. Wenn der
Iterationszähler den Wert 1 erreicht, muss
OPIE neu initialisiert werden.Es gibt ein paar Programme, die in diesen Prozess einbezogen
werden. Ein Einmalpasswort oder eine Liste von
Einmalpasswörtern, die von &man.opiekey.1; durch Angabe eines
Iterationszählers, eines Initalwertes und einem geheimen
Passwort generiert wird. &man.opiepasswd.1; wird benutzt, um
Passwörter, Iterationszähler oder Initialwerte zu ändern.
&man.opieinfo.1; hingegen gibt den momentanen Iterationszähler
und Initialwert eines Benutzers aus, den es aus
/etc/opiekeys ermittelt.Dieser Abschnitt beschreibt vier verschiedene Arten von
Tätigkeiten. Zuerst wird erläutert, wie Einmalpasswörter über
eine gesicherte Verbindung konfiguriert werden. Als nächstes
wird erklärt, wie opiepasswd über
eine nicht gesicherte Verbindung eingesetzt wird. Als drittes
wird beschrieben, wie man sich über eine nicht gesicherte
Verbindung anmeldet. Die vierte Tätigkeit beschreibt, wie man
eine Reihe von Schlüsseln generiert, die man sich aufschreiben
oder ausdrucken kann, um sich von Orten anzumelden, die über
keine gesicherten Verbindungen verfügen.OPIE initialisierenUm OPIE erstmals zu initialisieren,
rufen Sie &man.opiepasswd.1; über eine gesicherte Verbindung
auf:&prompt.user; opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COEDDie Option startet den Konsolen-Modus,
der davon ausgeht, dass der Befehl von einem sicherem Ort
ausgeführt wird. Dies kann beispielsweise der eigene Rechner
sein, oder über eine mit SSH gesicherte
Verbindung zum eigenen Rechner.Geben Sie das geheime Passwort ein, wenn Sie danach
gefragt werden. Damit werden die Einmalpasswörter generiert.
Dieses Passwort sollte schwer zu erraten sein und sich
ebenfalls vom Passwort des Bentuzerkontos unterscheiden. Es
muss zwischen 10 und 127 Zeichen lang sein. Prägen Sie sich
dieses Passwort gut ein!Die Zeile, die mit ID beginnt, enthält den
Login-Namen (unfrul), den voreingestellten
Iterationszähler (499) und den Initialwert
(to4268). Das System erinnert sich an
diese Parameter und wird sie bei einem Anmeldeversuch
anzeigen. Sie brauchen sich diese Dinge also nicht merken.
Die letzte Zeile enthält das generierte Einmalpasswort, das
aus den Parametern und dem geheimen Passwort ermittelt wurde.
Bei der nächsten Anmeldung muss dann diese Einmalpasswort
benutzt werden.Initialisierung über eine nicht gesicherte
VerbindungUm Einmalpasswörter über eine nicht gesicherte Verbindung
zu initialisieren, oder das geheime Passwort zu ändern, müssen
Sie über eine gesicherte Verbindung zu einer Stelle verfügen,
an der Sie opiekey ausführen können. Dies
kann etwa die Eingabeaufforderung auf einer Maschine sein, der
Sie vertrauen. Zudem müssen Sie einen Iterationszähler
vorgeben (100 ist ein guter Wert) und einen Initialwert
wählen, wobei Sie auch einen zufällig generierten benutzen
können. Benutzen Sie &man.opiepasswd.1; über die ungesicherte
Verbindung zu der Maschine, die Sie einrichten wollen:&prompt.user; opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROYDrücken Sie Return, um die Vorgabe
für den Initialwert zu akzeptieren. Bevor
Sie nun das Zugriffspasswort
(engl. access password)
eingeben, rufen Sie über die gesicherte Verbindung
opikey mit denselben Parametern auf:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATGehen Sie zurück zu der nicht gesicherten Verbindung
und geben dort das eben generierte Einmalpasswort ein.Erzeugen eines einzelnen EinmalpasswortesNachdem Sie OPIE eingerichtet haben,
werden Sie beim nächsten Anmelden wie folgt begrüßt:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
otp-md5 498 gr4269 ext
Password: OPIE besitzt eine nützliche
Eigenschaft. Wenn Sie an der Eingabeaufforderung
Return drücken, wird die echo-Funktion
eingeschaltet, das heißt Sie sehen, was Sie tippen. Dies ist
besonders nützlich, wenn Sie ein generiertes Passwort von
einem Ausdruck abtippen müssen.MS-DOSWindowsMacOSJetzt müssen Sie das Einmalpasswort generieren,
um der Anmeldeaufforderung nachzukommen. Dies muss auf
einem gesicherten System geschehen, auf dem Sie
&man.opiekey.1; ausführen können. Dieses Programm gibt es
auch für &windows;, &macos; und &os;. Es benötigt den
Iterationszähler sowie den Initialwert als Parameter, die Sie
mittels cut-and-paste direkt von der
Login-Aufforderung nehmen können.Auf dem sicheren System:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATSobald das Einmalpasswort generiert wurde, können Sie die
Anmeldeprozedur fortsetzen.Erzeugen von mehreren EinmalpasswörternManchmal haben Sie keinen Zugriff auf eine sichere
Maschine oder eine sichere Verbindung. In diesem Fall können
Sie vorher mit &man.opiekey.1; einige Einmalpasswörter
generieren. Zum Beispiel:&prompt.user; opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Do not use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIMit fordern Sie fünf
Passwörter der Reihe nach an. Der letzte
Iterationszähler wird durch gegeben.
Beachten Sie bitte, dass die Passwörter in der
umgekehrten Reihenfolge, in der sie
zu benutzen sind, ausgeben werden. Wirklich paranoide
Benutzer können sich jetzt die Passwörter aufschreiben oder
ausdrucken. Sie sollten die Passwörter nach Gebrauch
durchstreichen.Einschränken der Benutzung von
System-PasswörternOPIE kann die Verwendung von
&unix;-Passwörtern abhängig von der
IP-Adresse einschränken. Die dazu nötigen
Einstellungen werden in /etc/opieaccess
vorgenommen, die bei der Installation des Systems automatisch
erzeugt wird. Weitere Informationen über diese Datei und
Sicherheitshinweise zu ihrer Verwendung finden Sie in
&man.opieaccess.5;.opieaccess könnte
beispielsweise die folgende Zeile enthalten:permit 192.168.0.0 255.255.0.0Diese Zeile erlaubt es Benutzern, die sich von einer der
angegebenen IP-Adressen anmelden, ihr
&unix;-Passwort zu verwenden. Beachten Sie bitte, dass eine
IP-Adresse leicht gefälscht werden
kann.Findet sich in opieaccess kein
passender Eintrag, muss die Anmeldung mit
OPIE erfolgen.TCP WrapperTomRhodesBeigetragen von TCP WrapperTCP Wrapper ist ein
rechnerbasiertes Zugriffskontrollsystem, das die Fähigkeiten von
erweitert. Beispielsweise
können Verbindungen protokolliert, Nachrichten zurückgesandt
oder nur interne Verbindungen angenommen werden. Weitere
Informationen über TCP Wrapper und
dessen Funktionen finden Sie in &man.tcpd.8;.TCP Wrapper sollten nicht als
Ersatz für eine ordentlich konfigurierte Firewall angesehen
werden. Stattdessen sollten
TCP Wrapper in Verbindung mit einer
Firewall und anderen Sicherheitsmechanismen eingesetzt werden,
um bei der Umsetzung einer Sicherheitsrichtlinie eine weitere
Sicherheitsschicht zu bieten.KonfigurationUm TCP Wrapper unter &os; zu
aktivieren, fügen Sie die folgenden Zeilen in
/etc/rc.conf ein:inetd_enable="YES"
inetd_flags="-Ww"Anschließend muss /etc/hosts.allow
richtig konfiguriert werden.Im Gegensatz zu anderen Implementierungen der
TCP Wrapper wird unter &os; vom
Gebrauch der Datei hosts.deny
abgeraten. Die Konfiguration sollte sich vollständig in
/etc/hosts.allow befinden.In der einfachsten Konfiguration werden Dienste abhängig
von den Optionen in /etc/hosts.allow
erlaubt oder gesperrt. Unter &os; wird in der Voreinstellung
jeder von inetd gestartete Dienst
erlaubt.Eine Konfigurationszeile ist wie folgt aufgebaut:
Dienst : Adresse : Aktion.
Dienst ist der von
inetd gestartete Dienst (auch
Daemon genannt). Die Adresse ist ein
gültiger Rechnername, eine IP-Adresse oder
eine IPv6-Adresse in Klammern
([]). Der Wert
allow im Feld Aktion
erlaubt Zugriffe, der Wert deny verbietet
Zugriffe. Die Zeilen in hosts.allow
werden für jede Verbindung der Reihe nach abgearbeitet.
Trifft eine Zeile auf eine Verbindung zu, wird die
entsprechende Aktion ausgeführt und die Abarbeitung ist
beendet.Um beispielsweise einkommende
POP3-Verbindungen für den Dienst
mail/qpopper zu erlauben, sollte
hosts.allow um die nachstehende Zeile
erweitert werden:# This line is required for POP3 connections:
qpopper : ALL : allowJedes Mal, wenn diese Datei bearbeitet wird, muss
inetd neu gestartet werden:&prompt.root; service inetd restartErweiterte KonfigurationTCP Wrapper besitzen weitere
Optionen, die bestimmen, wie Verbindungen behandelt werden.
In einigen Fällen ist es gut, wenn bestimmten Rechnern oder
Diensten eine Nachricht geschickt wird. In anderen Fällen
soll vielleicht der Verbindungsaufbau protokolliert oder eine
E-Mail an einen Administrator versandt werden. Oder ein
Dienst soll nur für das lokale Netz bereitstehen. Dies alles
ist mit so genannten Wildcards, Metazeichen und der Ausführung
externer Programme möglich.Stellen Sie sich vor, eine Verbindung soll verhindert
werden und gleichzeitig soll dem Rechner, der die Verbindung
aufgebaut hat, eine Nachricht geschickt werden. Solch eine
Aktion ist mit möglich.
führt beim Verbindungsaufbau ein
Kommando oder ein Skript aus. Ein Beispiel ist in
hosts.allow enthalten:# Alle anderen Dienste sind geschützt
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."Für jeden Dienst, der nicht vorher in
hosts.allow konfiguriert wurde, wird die
Meldung You are not allowed to use
daemon name from
hostname. zurückgegeben.
Dies ist nützlich, wenn die Gegenstelle sofort benachrichtigt
werden soll, nachdem die Verbindung getrennt wurde. Der Text
der Meldung muss in Anführungszeichen
(") stehen.Ein so konfigurierter Server ist anfällig für
Denial-of-Service-Angriffe. Ein Angreifer kann die
gesperrten Dienste mit Verbindungsanfragen
überfluten.Eine weitere Möglichkeit bietet .
Wie verbietet
die Verbindung und führt externe Kommandos aus. Allerdings
sendet dem Rechner keine Rückmeldung.
Sehen Sie sich die nachstehende Konfigurationsdatei an:# Verbindungen von example.com sind gesperrt:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: denyDamit sind Verbindungen von der Domain *.example.com gesperrt.
Jeder Verbindungsaufbau wird zudem in
/var/log/connections.log protokolliert.
Das Protokoll enthält den Rechnernamen, die
IP-Adresse und den Dienst, der angesprochen
wurde. In diesem Beispiel wurden die Metazeichen
%a und %h verwendet.
Eine vollständige Liste der Metazeichen finden Sie in
&man.hosts.access.5;.Die Wildcard ALL passt auf jeden
Dienst, jede Domain oder jede IP-Adresse.
Eine andere Wildcard ist PARANOID. Sie
passt auf jeden Rechner, dessen
IP-Adresse möglicherweise gefälscht ist.
Dies ist beispielsweise der Fall, wenn der Verbindungsaufbau
von einer IP-Adresse erfolgt, die nicht zu
dem übermittelten Rechnernamen passt. In diesem Beispiel
werden alle Verbindungsanfragen zu
Sendmail abgelehnt, wenn die
IP-Adresse nicht zum Rechnernamen
passt:# Block possibly spoofed requests to sendmail:
sendmail : PARANOID : denyDie Wildcard PARANOID wird
Verbindungen ablehnen, wenn der Client oder der Server eine
fehlerhafte DNS-Konfiguration
besitzt.Weitere Informationen über Wildcards und deren Funktion
finden Sie in &man.hosts.access.5;.Wenn Sie neue Einträge zur Konfiguration hinzufügen,
sollten Sie sicherstellen, dass nicht benötigte Einträge in
hosts.allow auskommentiert
werden.KerberosTillmanHodgsonBeigetragen von MarkMurrayBeruht auf einem Beitrag von Kerberos ist ein
Netzwerk-Authentifizierungsprotokoll, das ursprünglich am
Massachusetts Institute of Technology (MIT)
entwickelt wurde. Es bietet die Möglichkeit zur sicheren
Authentifizierung über ein potentiell unsicheres Netzwerk. Das
Kerberos-Protokoll benutzt eine
starke Kryptographie, um die Identität von Clients und Servern
nachweisen zu können. Dabei werden keine unverschlüsselten
Daten über das Netzewrk gesendet.
Kerberos kann als eine Art Proxy zur
Identitätsprüfung, oder als vertrauenswürdiges
Authentifizierungssystem betrachtet werden.Kerberos hat nur eine Aufgabe:
Die sichere Prüfung der Identität eines Benutzers
(Authentifizierung) über das Netzwerk. Das System
überprüft weder die Berechtigungen der Benutzer
(Autorisierung), noch verfolgt es die durchgeführten
Aktionen (Audit). Daher sollte
Kerberos zusammen mit anderen
Sicherheits-Systemen eingesetzt werden, die diese Funktionen
bereitstellen.Die aktuelle Version des Protokolls ist Version 5, die in
RFC 4120 beschrieben ist. Es existieren
mehrere freie Implementierungen dieses Protokolls für eine Reihe
von Betriebssystemen. Das MIT entwickelt
auch weiterhin seine
Kerberos-Version weiter.
Es wird in den vereinigten Staaten als Kryptographie-Produkt
eingesetzt und unterlag in der Vergangenheit
US-Exportbeschränkungen. In &os; ist
MIT-Kerberos als
Port oder Paket security/krb5
verfügbar. Die
Kerberos-Implementation von Heimdal
wurde außerhalb der USA entwickelt und
unterliegt daher keinen Export-Beschränkungen.
Heimdal-Kerberos ist im Basissystem
von &os; enthalten. Mit security/heimdal aus
der Ports-Sammlung steht eine weitere Distribution, mit mehr
konfigurierbaren Optionen zur Verfügung.Unter Kerberos werden Benutzer
und Dienste als Prinzipale bezeichnet, die
innerhalb einer administrativen Domäne, dem sogenannten
Realm enthalten sind. Ein typisches
Benutzer-Prinzipal hätte das Format
user@REALM
(Realms sind traditionell in Großbuchstaben).Die folgenden Anweisungen beschreiben, wie Sie das mit
&os; gelieferte Heimdal-Kerberos
einrichten.Die Beschreibung der
Kerberos-Installation benutzt
folgende Namensräume:Die DNS-Domain (Zone)
heißt example.org.Das Kerberos-Realm
heißt EXAMPLE.ORG.Benutzen Sie echte Domain-Namen, wenn Sie
Kerberos einrichten. Damit
vermeiden Sie DNS-Probleme und stellen
die Zusammenarbeit mit anderen
Kerberos-Realms sicher.Das Heimdal KDC einrichtenKerberos5Key Distribution CenterKerberos authentifiziert
Benutzer an einer zentralen Stelle: dem Key Distribution
Center (KDC). Das KDC
verteilt Tickets, mit denen ein
Dienst die Identität eines Benutzers feststellen kann.
Weil alle Mitglieder eines
Kerberos-Realms dem
KDC vertrauen, gelten für das
KDC erhöhte Sicherheitsanforderungen.
Der direkte Zugriff auf das KDC sollte
daher eingeschränkt sein.Obwohl der Kerberos-Server
wenig Ressourcen benötigt, sollte das KDC
wegen der Sicherheitsanforderungen auf einem separaten Rechner
installiert werden.Das KDC wird in
/etc/rc.conf wie folgt aktiviert:kdc_enable="YES"
kadmind_enable="YES"Danach wird /etc/krb5.conf
wie folgt bearbeitet:[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
admin_server = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORGDiese Einstellungen setzen voraus, dass der voll
qualifizierte Name des KDCs
kerberos.example.org ist.
Der Rechnername des KDC muss im
DNS auflösbar sein.In großen Netzwerken mit einem ordentlich konfigurierten
DNS-Server kann die Datei aus dem obigen
Beispiel verkürzt werden:[libdefaults]
default_realm = EXAMPLE.ORG
[domain_realm]
.example.org = EXAMPLE.ORGDie Zonendatei von example.org muss dann die
folgenden Zeilen enthalten:_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORGDamit die Clients die
Kerberos-Dienste benutzen
können, muss sie entweder eine
vollständig konfigurierte
/etc/krb5.conf enthalten, oder eine
minimale Konfiguration und zusätzlich
ein richtig konfigurierter
DNS-Server.Im nächsten Schritt wird die
Kerberos-Datenbank eingerichtet.
Die Datenbank enthält die Schlüssel aller Prinzipale
und ist mit einem Passwort geschützt. Dieses Passwort
brauchen Sie sich nicht merken, da ein davon abgeleiteter
Schlüssel in /var/heimdal/m-key
gespeichert wird. Es wäre durchaus sinnvoll, ein 45-stelliges
Zufallspasswort für diesen Zweck zu benutzten. Um den
Schlüssel zu erstellen, rufen Sie kstash
auf und geben Sie ein Passwort ein:&prompt.root; kstash
Master key: xxxxxxxxxxxxxxxxxxxxxxx
Verifying password - Master key: xxxxxxxxxxxxxxxxxxxxxxxNachdem der Schlüssel erstellt wurde, sollte die Datenbank
initialisiert werden. Das
Kerberos-Werkzeug &man.kadmin.8;
kann die Datenbank mit kadmin -l direkt
bearbeiten, ohne dabei den Netzwerkdienst &man.kadmind.8; zu
benutzen. An der Eingabeaufforderung von
kadmin kann mit init die
Datenbank des Realms initialisiert werden:&prompt.root; kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:Zuletzt wird mit add das erste
Prinzipal erstellt. Benutzen Sie die voreingestellten
Optionen. Die Einstellungen können später mit
modify verändert werden. An der
Eingabeaufforderung von &man.kadmin.8; zeigt
? die verfügbaren Optionen an.kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxxJetzt können die KDC-Dienste mit
service kdc start und
service kadmind start gestartet werden.
Obwohl zu diesem Zeitpunkt noch keine kerberisierten Dienste
laufen, kann die Funktion des KDCs
schon überprüft werden, indem Sie für den eben angelegten
Benutzer ein Ticket anfordern:&prompt.user; kinit tillman
tillman@EXAMPLE.ORG's Password:Überprüfen Sie, ob das Ticket erfolgreich ausgestellt
wurde:&prompt.user; klist
Credentials cache: FILE: /tmp/krb5cc_1001
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
Aug 27 15:37:58 2013 Aug 28 01:37:58 2013 krbtgt/EXAMPLE.ORG@EXAMPLE.ORGNachdem der Test abgeschlossen ist, kann das temporäre
Ticket zurückgezogen werden:&prompt.user; kdestroyKerberos-Dienste auf dem
Server einrichtenKerberos5Dienste einrichtenBei der Konfiguration eines Servers für die
Kerberos-Authentifizierung muss
zuerst sichergestellt werden, dass
/etc/krb5.conf richtig konfiguriert ist.
Die Datei kann entweder vom KDC kopiert,
oder auf dem neuen System generiert werden.Als nächstes muss auf dem Server die
/etc/krb5.keytab erzeugt werden. Dies
ist der Hauptbestandteil um Dienste zu
kerberisieren und entspricht der Erzeugung
eines geheimen Schlüssels zwischen dem Dienst und dem
KDC. Das Geheimnis ist ein
kryptographischer Schlüssel, der in einem
keytab> abgelegt wird. Diese Datei
enthält den Schlüssel des Servers, mit dem sich der Server und
das KDC gegenseitig authentifizieren
können. Sie muss in einer sicheren Art und Weise an den
Server übertragen werden, da ansonsten die Sicherheit des
Servers gefährdet ist, wenn z.B. die Schlüssel öffentlich
werden. In der Regel wird die keytab auf
einem vertrauenswürdigen Rechner mit kadmin
erzeugt und anschließend sicher auf den Server übertragen,
beispielsweise mit &man.scp.1;. Wenn die
Sicherheitsrichtlinien es erlauben, kann die Datei auch direkt
auf dem Server erzeugt werden. Es ist sehr wichtig, dass die
keytab auf sichere Weise auf den Server
übertragen wird. Wenn der Schlüssel einer anderen Partei
bekannt wird, kann sich diese Partei den Benutzern als
Server ausgeben! Da der Eintrag für das Host-Prinzipal für
die KDC-Datenbank auch mit
kadmin erstellt wird, ist es praktisch,
kadmin direkt auf dem Server zu
benutzen.Natürlich ist auch kadmin ein
kerberisierter Dienst: ein
Kerberos-Ticket ist erforderlich,
um sich gegenüber dem Netzwerkdienst zu authentifizieren und
um sicherzustellen, dass der Benutzer, der
kadmin ausführt, tatsächlich vorhanden ist.
kadmin wird nach dem Passwort fragen, um
ein neues Ticket zu generieren. Das Prinzipal, das sich mit
dem kadmin-Dienst authentifiziert, muss über die
Zugriffskontrollliste kadmin.acl dazu
berechtigt sein. Weitere Informationen über
Zugriffskontrolllisten finden Sie in den Heimdal-Info-Seiten
(info heimdal) im Abschnitt
Remote administration. Wenn der Zugriff auf
kadmin von entfernten Rechnern verboten
ist, kann sich der Administrator entweder über die lokale
Konsole oder über &man.ssh.1; mit dem KDC
verbinden, um die lokale Administration mit
kadmin -l durchzuführen.Nach der Installation von
/etc/krb5.conf, können Sie das Kommando
add --random-key in
kadmin ausführen, um das Host-Prinzipal in
die Datenbank zu schreiben. Das Kommando
ext extrahiert den Schlüssel des Prinzipals
in eine eigene keytab:&prompt.root; kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Principal expiration time [never]:
Password expiration time [never]:
Attributes []:
kadmin> ext_keytab host/myserver.example.org
kadmin> exitBeachten Sie, dass ext_keytab den
extrahierten Schlüssel standardmäßig in
/etc/krb5.keytab speichert. Das ist
gut, wenn das Kommando auf dem kerberisierten Server
ausgeführt wird, ansonsten sollte das Argument
--keytab
pfad/zur/datei
benutzt werden, wenn die keytab an einen anderen Ort
extrahiert wird:&prompt.root; kadmin
kadmin> ext_keytab --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exitAnschließend kann die erzeugte keytab sicher mit
&man.scp.1; auf Server oder auf einen
Wechseldatenträger kopiert werden. Geben Sie auf jeden Fall
einen anderen Namen für die keytab an, um unnötige Schlüssel
in der keytab des Systems zu vermeiden.Mit Hilfe der Datei krb5.conf kann
der Server nun mit dem KDC kommunizieren
und seine Identität mithilfe der Datei
krb5.keytab nachweisen. Jetzt
können die kerberisierten Dienste aktiviert werden. Einer der
gebräuchlichsten Dienste ist &man.sshd.8;, der
Kerberos über
GSS-API unterstützt. Fügen Sie folgende
Zeile in /etc/ssh/sshd_config ein:GSSAPIAuthentication yesNach dieser Änderung muss &man.sshd.8; mit
service sshd restart neu gestartet werden,
damit die neue Konfiguration wirksam wird.Kerberos auf dem Client
einrichtenKerberos5Clients einrichtenGenau wie der Server, benötigt auch der Client eine
Konfiguration in /etc/krb5.conf.
Kopien Sie die Datei (sicher) vom KDC
auf den Client, oder schreiben Sie die Datei bei Bedarf
einfach neu.Testen Sie den Client, indem Sie mit
kinit Tickets anfordern, mit
klist Tickets anzeigen und mit
kdestroy Tickets löschen.
Kerberos-Anwendungen sollten auch
kerberisierte Server ansprechen können. Wenn das nicht
funktioniert, Sie aber Tickets anfordern können, hat
wahrscheinlich der kerberisierte Server ein Problem und nicht
der Client oder das KDC. Im Falle eines
kerberisierten &man.ssh.1; ist GSS-API in
der Voreinstellung deaktiviert. Testen Sie daher mit
ssh -o GSSAPIAuthentication=yes
hostname.Wenn Sie die kerberisierten Anwendungen testen, können Sie
einen Paket-Sniffer wie tcpdump benutzen,
um sicherzustellen, dass keine sensiblen Informationen im
Klartext übertragen werden.Es stehen verschiedene
Kerberos-Anwendungen zur Verfügung.
Die Anwendungen, die SASL benutzen, können
dann auch GSS-API benutzen. Viele Arten
von Anwendungen können Kerberos zur
Authentifizierung verwenden, vom Jabber-Client bis zum
IMAP-Client..k5login.k5usersNormalerweise wird ein
Kerberos-Prinzipal auf ein lokales
Benutzerkonto abgebildet. Manchmal wird aber Zugriff auf ein
lokales Benutzerkonto benötigt, zu dem es keinen passenden
Kerberos-Prinzipal gibt.
Der Prinzipal tillman@EXAMPLE.ORG bräuchte
beispielsweise Zugriff auf das Konto webdevelopers. Ebenso könnten
andere Prinzipale auf dieses Konto zugreifen wollen.Die Dateien .k5login und
.k5users im Heimatverzeichnis eines
Benutzers können verwendet werden, um dieses Problem zu lösen.
Mit der folgenden .k5login im
Heimatverzeichnis des Benutzers webdevelopers haben beide
Prinzipale auch ohne das gemeinsame Passwort Zugriff auf das
Konto:tillmann@example.org
jdoe@example.orgWeitere Informationen zu .k5users
finden Sie in &man.ksu.1;.Unterschiede zur
MIT-ImplementationDer Hauptunterschied zwischen der MIT-
und der Heimdal-Implementation ist das Kommando
kadmin. Die Befehlssätze des Kommandos
(obwohl funktional gleichwertig) und das verwendete Protokoll
unterscheiden sich in beiden Varianten. Das
KDC lässt sich nur mit dem
kadmin Kommando der passenden
Kerberos-Variante verwalten.Für dieselbe Funktion können auch die
Client-Anwendungen leicht geänderte Kommandozeilenoptionen
besitzen. Folgen Sie der Anleitung auf
http://web.mit.edu/Kerberos/www/. Achten Sie
besonders auf den Suchpfad für Anwendungen. Der
MIT-Port wird unter &os; standardmäßig in
/usr/local/ installiert. Wenn die
Umgebungsvariable PATH zuerst die
Systemverzeichnisse enthält, werden die Systemprogramme
anstelle der MIT-Programme
ausgeführt.Wenn Sie
MIT-Kerberos
verwenden, sollten Sie außerdem folgende Änderungen an
/etc/rc.conf vornehmen:kerberos5_server="/usr/local/sbin/krb5kdc"
kadmind5_server="/usr/local/sbin/kadmind"
kerberos5_server_flags=""
kerberos5_server_enable="YES"
kadmind5_server_enable="YES"Tipps und FehlersucheWährend der Konfiguration und bei der Fehlersuche sollten
die folgenden Punkte beachtet werden:Wenn Sie Heimdal- oder
MIT-Kerberos
benutzen, muss in der Umgebungsvariable
PATH der Pfad zu den
Kerberos-Programmen vor dem
Pfad zu den Programmen des Systems stehen.Wenn die Clients im Realm ihre Uhrzeit nicht
synchronisieren, schlägt vielleicht die Authentifizierung
fehl. beschreibt, wie
Sie mithilfe von NTP die Uhrzeiten
synchronisieren.Wenn Sie den Namen eines Rechners ändern,
müssen Sie auch den host/-Prinzipal ändern und
die keytab aktualisieren. Dies
betrifft auch spezielle Einträge wie den HTTP/-Prinzipal für
Apaches www/mod_auth_kerb.Alle Rechner in einem Realm müssen vor- und
rückwärts aufgelöst werden können. Entweder über
DNS, zumindest aber über
/etc/hosts.
CNAME-Einträge im
DNS funktionieren, aber die
entsprechenden A- und PTR-Einträge müssen
vorhanden und richtig sein. Wenn sich Namen nicht
auflösen lassen, ist die Fehlermeldung nicht
gerade selbstsprechend: Kerberos5 refuses
authentication because Read req
failed: Key table entry not found.Einige Betriebssysteme installieren
ksu mit falschen Zugriffsrechten;
es fehlt das Set-UID-Bit für root. Das hat zur Folge,
dass ksu nicht funktioniert. Dies ist
ein Fehler in den Zugriffsrechten und kein Fehler des
KDCs.Wenn Sie für einen Prinzipal unter
MIT-Kerberos
Tickets mit einer längeren Gültigkeit als
der vorgegebenen zehn Stunden einrichten wollen,
müssen Sie zwei Sachen ändern. Benutzen
Sie modify_principal am Prompt von
&man.kadmin.8;, um die maximale
Gültigkeitsdauer für den Prinzipal selbst und den
Prinzipal krbtgt
zu erhöhen. Das Prinzipal kann dann mit
kinit -l ein Ticket mit einer
längeren Gültigkeit beantragen.Mit einem Packet-Sniffer können Sie feststellen, dass
Sie sofort nach dem Aufruf von kinit
eine Antwort vom KDC bekommen –
noch bevor Sie überhaupt ein Passwort eingegeben haben!
Das ist in Ordnung: Das KDC händigt ein
Ticket-Granting-Ticket (TGT) auf
Anfrage aus, da es durch einen vom Passwort des Benutzers
abgeleiteten Schlüssel geschützt ist. Wenn das Passwort
eingegeben wird, wird es nicht zum KDC
gesendet, sondern zum Entschlüsseln der Antwort des
KDCs benutzt, die
kinit schon erhalten hat. Wird die
Antwort erfolgreich entschlüsselt, erhält der Benutzer
einen Sitzungs-Schlüssel für die künftige verschlüsselte
Kommunikation mit dem KDC und das
TGT. Das TGT
wiederum ist mit dem Schlüssel des KDCs
verschlüsselt. Diese Verschlüsselung ist für den Benutzer
völlig transparent und erlaubt dem KDC,
die Echtheit jedes einzelnen TGT zu
prüfen.Host-Prinzipale können Tickets mit längerer Gültigkeit
besitzen. Wenn der Prinzipal eines Benutzers über ein
Ticket verfügt, das eine Woche gültig ist, das Ticket des
Host-Prinzipals aber nur neun Stunden gültig ist,
funktioniert der Ticket-Cache nicht wie erwartet. Im
Cache befindet sich dann ein abgelaufenes Ticket des
Host-Prinzipals.Wenn Sie mit krb5.dict die
Verwendung schlechter Passwörter verhindern wollen, wie
in &man.kadmin.8; beschrieben, geht das nur mit
Prinzipalen, denen eine Passwort-Policy zugewiesen wurde.
Das Format von krb5.dict enthält pro
Zeile ein Wort. Sie können daher einen symbolischen Link
auf /usr/share/dict/words
erstellen.Beschränkungen von
KerberosKerberos5BeschränkungenKerberos muss ganzheitlich
verwendet werden. Jeder über das Netzwerk angebotene Dienst
muss mit Kerberos zusammenarbeiten
oder auf anderen Wegen gegen Angriffe aus dem Netzwerk
geschützt sein. Andernfalls können Berechtigungen gestohlen
und wiederverwendet werden. Es ist beispielsweise nicht
sinnvoll, für Remote-Shells
Kerberos zu benutzen, dagegen aber
POP3-Zugriff auf einem Mail-Server zu
erlauben, da POP3 Passwörter im Klartext
versendet.Das KDC ist verwundbar und muss daher
genauso abgesichert werden, wie die auf ihm befindliche
Passwort-Datenbank. Auf dem KDC sollten
absolut keine anderen Dienste laufen und der Rechner sollte
physikalisch gesichert sein. Die Gefahr ist groß, da
Kerberos alle Passwörter mit einem
Schlüssel, dem Haupt-Schlüssel, verschlüsselt. Der
Haupt-Schlüssel wiederum wird in einer Datei auf dem
KDC gespeichert.Ein kompromittierter Haupt-Schlüssel ist nicht ganz so
schlimm wie allgemein angenommen. Der Haupt-Schlüssel wird
nur zum Verschlüsseln der Passwort-Datenbank und zum
Initialisieren des Zufallsgenerators verwendet. Solange der
Zugriff auf das KDC abgesichert ist, kann
ein Angreifer wenig mit dem Haupt-Schlüssel anfangen.Wenn das KDC nicht zur Verfügung steht,
sind auch die Netzwerkdienste nicht benutzbar, da eine
Authentifizierung nicht durchgeführt werden kann. Das
KDC ist also ein optimales Ziel für einen
Denial-of-Service Angriff. Sie können diesem Angriff
entgegenwirken, indem Sie einen KDC-Master
und einen oder mehrere Slaves verwenden. Der Rückfall auf ein
sekundäres KDC mittels
PAM-Authentifizierung muss sorgfältig
eingerichtet werden.Mit Kerberos können sich
Benutzer, Rechner und Dienste gegenseitig authentifizieren.
Allerdings existiert kein Mechanismus, der das
KDC gegenüber Benutzern, Rechnern oder
Diensten authentifiziert. Ein verändertes
kinit könnte beispielsweise alle
Benutzernamen und Passwörter abfangen. Die von veränderten
Programmen ausgehende Gefahr können Sie lindern, indem Sie die
Integrität von Dateien mit Werkzeugen wie
security/tripwire prüfen.Weiterführende DokumentationKerberos5weiterführende Dokumentation
The Kerberos FAQ
Designing an Authentication System: a Dialogue in Four
Scenes
RFC 4120, The Kerberos
Network Authentication Service (V5)
MIT
Kerberos-SeiteHeimdal
Kerberos-SeiteOpenSSLTomRhodesBeigetragen von SicherheitOpenSSLOpenSSLOpenSSL ist eine Open Source
Implementierung der SSL und
TLS-Protokolle. Es bietet eine
verschlüsselte Transportschicht oberhalb der
normalen Kommunikationsschicht und kann daher zusammen
mit vielen Netzdiensten benutzt werden.Das in &os; integrierte OpenSSL
stellt die Protokolle Secure Sockets Layer v2/v3 (SSLv2/SSLv3)
und Transport Layer Security v1 (TLSv1) zur Verfügung.
Die OpenSSL-Bibliotheken stellen
kryptographische Funktionen bereit.Anwendungsbeispiele für OpenSSL
sind die verschlüsselte Authentifizierung von
E-Mail-Clients oder Web-Transaktionen wie das Bezahlen mit
Kreditkarte. Einige Ports, wie www/apache24
und databases/portgresql91-server, haben eine
Option für den Bau mit
OpenSSL.&os; verfügt über zwei OpenSSL Versionen:
eine im Basissystem, die andere aus der Ports-Sammlung. Der
Benutzer kann mit Hilfe der folgenden Optionen wählen, welche
Version in der Voreinstellung für andere Ports verwendet
wird:WITH_OPENSSL_PORT: wenn diese Option gesetzt ist, wird
der Port OpenSSL aus dem Port
security/openssl verwenden, auch dann,
wenn die Version im Basisystem aktueller ist.WITH_OPENSSL_BASE: wenn diese Option gesetzt ist, wird
der Port mit OpenSSL aus dem
Basissystem übersetzt.OpenSSL wird auch eingesetzt,
um Zertifikate für Anwendungen bereitzustellen. Die
Zertifikate stellen die Identität einer Firma oder eines
Einzelnen sicher. Wenn ein Zertifikat nicht von einer
Zertifizierungsstelle
(Certificate Authority,
CA) gegengezeichnet wurde, erhalten Sie
normalerweise eine Warnung. Eine Zertifizierungsstelle ist eine
Firma wie VeriSign, die
Zertifikate von Personen oder Firmen gegenzeichnet und damit die
Korrektheit der Zertifikate bestätigt. Diese Prozedur kostet
Geld, ist aber keine Voraussetzung für den Einsatz von
Zertifikaten, beruhigt aber sicherheitsbewusste Benutzer.Dieser Abschnitt beschreibt, wie Sie auf einem &os;-System
Zertifikate erstellen und benutzen.
beschreibt, wie Sie eine
CA erstellen um die eigenen Zertifikate zu
signieren.Weitere Informationen über SSL finden Sie
im kostenlosen
OpenSSL Cookbook.Zertifikate erzeugenOpenSSLZertifikate erzeugenUm ein Zertifikat zu erzeugen, das von einer externen
CA signiert werden soll, geben Sie
folgenden Befehl und die angeforderten Informationen
ein. Diese Informationen werden in das Zertifikat
geschrieben. Für Common Name geben Sie
den vollqualifizierten Namen des Systems ein, auf dem das
Zertifikat später installiert wird. Wenn der Name nicht
übereinstimmt, wird die Anwendung, die das Zertifikat
überprüft, dem Benuzter eine Warnung anzeigen. Die
Überprüfung würde fehlschlagen und das Zertifikat damit
unbrauchbar machen.&prompt.root; openssl req -new -nodes -out req.pem -keyout cert.key -sha256 -newkey rsa:2048
Generating a 2048 bit RSA private key
..................+++
.............................................................+++
writing new private key to 'cert.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:Another NameBei der Erzeugung des Zertifikates können noch weitere
Optionen, wie die Gültigkeitsdauer
und alternative Verschlüsselungsalgorithmen, angegeben
werden. &man.openssl.1; beschreibt die zur
Verfügung stehenden Optionen.Das folgende Kommando erstellt zwei Dateien im aktuellen
Verzeichnis: Die Anforderung für ein neues Zertifikat wird in
req.pem gespeichert. Diese Datei können
Sie an eine CA senden, wo die Angaben
geprüft werden. Nach erfolgreicher Prüfung wird das
Zertifikat signiert und an Sie zurückgesandt.
cert.key, enthält den privaten Schlüssel
für das Zertifikat und darf auch keine Fall in fremde Hände
geraten, da ein Angreifer sonst in der Lage ist, anderen
Personen oder Rechnern vorzugaukeln, dass es sich bei ihm um
Sie handelt.Wenn Sie keine Signatur einer Zertifizierungsstelle
benötigen, können Sie ein selbst signiertes
Zertifikat erstellen. Erzeugen Sie dazu zuerst einen
RSA-Schlüssel:&prompt.root; openssl genrsa -rand -genkey -out cert.key 2048
0 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
.............................................+++
.................................................................................................................+++
e is 65537 (0x10001)Benutzen Sie diesen Schlüssel, um ein selbst signiertes
Zertifikat zu erzeugen. Folgen Sie wieder den Anweisungen am
Prompt:&prompt.root; openssl req -new -x509 -days 365 -key cert.key -out cert.crt -sha256
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (e.g. server FQDN or YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.orgDieses Kommando erstellt zwei neue Dateien im aktuellen
Verzeichnis: Der Schlüssel der Zertifizierungsstelle
cert.key und das Zertifikat selbst,
cert.crt. Sie sollten in einem
Verzeichnis, vorzugsweise unterhalb von
/etc/ssl/ abgelegt werden, das nur von
root lesbar
ist. Die Zugriffsrechte der Dateien können mit
chmod auf 0700 gesetzt
werden.Zertifikate benutzenMit einem Zertifikat können beispielsweise die
Verbindungen zu Sendmail
verschlüsselt werden, um eine Klartext-Authentifizierung
zu verhindern.Einige E-Mail-Programme geben Warnungen aus, wenn ein
Zertifikat nicht lokal installiert ist. Weitere
Informationen zur Installation von Zertifikaten finden Sie
in der Dokumentation der entsprechenden Software.Unter &os; 10.0-RELEASE und neueren Versionen ist es
möglich, ein selbst signiertes Zertifikat für
Sendmail automatisch erzeugen
zu lassen. Um diese Funktionalität zu aktivieren, fügen Sie
die folgenden Zeilen in /etc/rc.conf
ein:sendmail_enable="YES"
sendmail_cert_enable="YES"
sendmail_cert_cn="localhost.example.org"Dadurch wird automatisch ein selbst signiertes Zertifikat
(/etc/mail/certs/host.cert), der
Schlüssel für die CA
(/etc/mail/certs/host.key und das
Zertifikat der CA
(/etc/mail/certs/cacert.pem erzeugt. Das
Zertifikat wird den in
festgelegten Common Name verwenden.
Nachdem Sie die Änderungen gespeichert haben, starten Sie
Sendmail neu:&prompt.root; service sendmail restartWenn alles gut ging, erscheinen keine Fehlermeldungen
in /var/log/maillog. Für einen einfachen
Test, bauen Sie mit Hilfe von telnet eine
Verbindung zum Mailserver auf:&prompt.root; telnet example.com 25
Trying 192.0.34.166...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.14.7/8.14.7; Fri, 18 Apr 2014 11:50:32 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.Wenn die Zeile STARTTLS
erscheint, hat alles funktioniert.VPN mit
IPsecNikClaytonnik@FreeBSD.orgGeschrieben von Hiten M.Pandyahmp@FreeBSD.orgGeschrieben von IPsecInternet Protocol Security
(IPsec) ist ein Satz von Protokollen, die auf
dem Internet-Protokoll (IP) aufbauen. Durch
Authentifizierung und Verschlüsselung jedes einzelnen
IP-Pakets, können mehrere Systeme geschützt
miteinander kommunizieren. &os;s IPSsec
Netzwerk-Stack basiert auf der http://www.kame.net
Implementierung und unterstützt sowohl IPv4
als auch IPv6.IPsecESPIPsecAHIPsec besteht aus den folgenden
Protokollen:Encapsulated Security Payload
(ESP): dieses Protokoll
verschlüsselt IP-Pakete mit einem
symmetrischen Verfahren wie Blowfish oder
3DES. Damit werden die Pakete vor
Manipulationen Dritter geschützt.Authentication Header
(AH): dieses Protokoll
enthält eine kryptographische Prüfsumme, die sicher stellt,
dass ein IP-Paket nicht verändert wurde.
Der Authentication-Header folgt nach dem normalen
IP-Header und erlaubt dem Empfänger eines
IP-Paketes, dessen Integrität zu
prüfen.IP Payload Compression Protocol
(IPComp): dieses Protokoll
versucht durch Komprimierung der
IP-Nutzdaten die Menge der gesendeten
Daten zu reduzieren und somit die Kommunikationsleistung zu
verbessern.Diese Protokolle können, je nach Situation, zusammen oder
einzeln verwendet werden.VPNVirtual Private NetworkVPNIPsec unterstützt zwei Modi: Der
Transport-Modus verschlüsselt die Daten
zwischen zwei Systemen. Der Tunnel-Modus
verbindet zwei Subnetze miteinander. Durch einen Tunnel können
dann verschlüsselte Daten übertragen werden. Ein Tunnel wird
auch als Virtual-Private-Network
(VPN) bezeichnet. Detaillierte Informationen
über das IPsec-Subsystem von &os; finden Sie
in &man.ipsec.4;.Seit &os; 11 ist IPsec in der
Voreinstellung aktiviert. Um die Unterstützung für
IPsec in älteren Versionen zu aktivieren,
fügen Sie folgenden Optionen in die
Kernelkonfigurationsdatei ein und erstellen Sie einen neuen
Kernel, wie in
beschrieben.KerneloptionIPSECoptions IPSEC #IP security
device cryptoKerneloptionIPSEC_DEBUGWenn Sie zur Fehlersuche im
IPsec-Subsystem Unterstützung wünschen,
sollten Sie die folgende Option ebenfalls aktivieren:options IPSEC_DEBUG #debug for IP securityDer Rest dieses Kapitels beschreibt die Einrichtung eines
IPsec-VPN zwischen einem
Heimnetzwerk und einem Firmennetzwerk. Für das folgende
Beispiel gilt:Beide Netzwerke sind über ein &os;-Gateway mit dem
Internet verbunden.Der Gateway jedes Netzwerks besitzt mindestens eine
externe IP-Adresse. In diesem Beispiel
ist die externe IP-Adresse des
Firmennetzwerks (LAN) 172.16.5.4 und das
Heimnetzwerk (LAN) hat die externe
IP-Adresse 192.168.1.12.Die intern verwendeten IP-Adressen
können private oder öffentliche Adressen sein. Sie dürfen
sich jedoch nicht überschneiden. Zum Beispiel sollten nicht
beide Netze 192.168.1.x benutzen. In
diesem Beispiel ist die interne
IP-Adresse des Firmennetzwerks
(LAN) 10.246.38.1 und das
Heimnetzwerk (LAN) hat die interne
IP-Adresse 10.0.0.5.Konfiguration eines VPN unter
&os;TomRhodestrhodes@FreeBSD.orgGeschrieben von Als erstes muss security/ipsec-tools
aus der Ports-Sammlung installiert werden. Diese Software
enthält einige Anwendungen, die bei der Konfiguration von
IPsec hilfreich sind.Als nächstes müssen zwei &man.gif.4;-Pseudogeräte angelegt
werden, um die Pakete zu tunneln und dafür zu sorgen, dass
beide Netzwerke richtig miteinander kommunizieren können.
Geben Sie als root
die folgenden Befehle ein, wobei Sie
intern und
extern durch die realen internen
und externen IP-Adressen der Gateways
ersetzen müssen:&prompt.root; ifconfig gif0 create
&prompt.root; ifconfig gif0 intern1 intern2
&prompt.root; ifconfig gif0 tunnel extern1 extern2Überprüfen Sie mit ifconfig die
Konfiguration auf beiden Gateways. Hier folgt die Ausgabe
von Gateway 1:gif0: flags=8051 mtu 1280
tunnel inet 172.16.5.4 --> 192.168.1.12
inet6 fe80::2e0:81ff:fe02:5881%gif0 prefixlen 64 scopeid 0x6
inet 10.246.38.1 --> 10.0.0.5 netmask 0xffffff00Hier folgt die Ausgabe von Gateway 2:gif0: flags=8051 mtu 1280
tunnel inet 192.168.1.12 --> 172.16.5.4
inet 10.0.0.5 --> 10.246.38.1 netmask 0xffffff00
inet6 fe80::250:bfff:fe3a:c1f%gif0 prefixlen 64 scopeid 0x4Wenn Sie fertig sind, sollten beide internen Adressen über
&man.ping.8; erreichbar sein:priv-net# ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5): 56 data bytes
64 bytes from 10.0.0.5: icmp_seq=0 ttl=64 time=42.786 ms
64 bytes from 10.0.0.5: icmp_seq=1 ttl=64 time=19.255 ms
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=20.440 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=21.036 ms
--- 10.0.0.5 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 19.255/25.879/42.786/9.782 ms
corp-net# ping 10.246.38.1
PING 10.246.38.1 (10.246.38.1): 56 data bytes
64 bytes from 10.246.38.1: icmp_seq=0 ttl=64 time=28.106 ms
64 bytes from 10.246.38.1: icmp_seq=1 ttl=64 time=42.917 ms
64 bytes from 10.246.38.1: icmp_seq=2 ttl=64 time=127.525 ms
64 bytes from 10.246.38.1: icmp_seq=3 ttl=64 time=119.896 ms
64 bytes from 10.246.38.1: icmp_seq=4 ttl=64 time=154.524 ms
--- 10.246.38.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 28.106/94.594/154.524/49.814 msWie erwartet, können nun beiden Seiten
ICMP-Pakete von ihren privaten Adressen
senden und empfangen. Als nächstes müssen beide Gateways so
konfiguriert werden, dass sie die Pakete des anderen
Netzwerkes richtig routen. Dazu werden folgende Befehle
verwendet:corp-net&prompt.root; route add 10.0.0.0 10.0.0.5 255.255.255.0
corp-net&prompt.root; route add net 10.0.0.0: gateway 10.0.0.5
priv-net&prompt.root; route add 10.246.38.0 10.246.38.1 255.255.255.0
priv-net&prompt.root; route add host 10.246.38.0: gateway 10.246.38.1Ab jetzt sollten die Rechner von den Gateways sowie von
den Rechnern hinter den Gateways erreichbar sein. Dies können
Sie wieder mit &man.ping.8; überprüfen:corp-net# ping 10.0.0.8
PING 10.0.0.8 (10.0.0.8): 56 data bytes
64 bytes from 10.0.0.8: icmp_seq=0 ttl=63 time=92.391 ms
64 bytes from 10.0.0.8: icmp_seq=1 ttl=63 time=21.870 ms
64 bytes from 10.0.0.8: icmp_seq=2 ttl=63 time=198.022 ms
64 bytes from 10.0.0.8: icmp_seq=3 ttl=63 time=22.241 ms
64 bytes from 10.0.0.8: icmp_seq=4 ttl=63 time=174.705 ms
--- 10.0.0.8 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.870/101.846/198.022/74.001 ms
priv-net# ping 10.246.38.107
PING 10.246.38.1 (10.246.38.107): 56 data bytes
64 bytes from 10.246.38.107: icmp_seq=0 ttl=64 time=53.491 ms
64 bytes from 10.246.38.107: icmp_seq=1 ttl=64 time=23.395 ms
64 bytes from 10.246.38.107: icmp_seq=2 ttl=64 time=23.865 ms
64 bytes from 10.246.38.107: icmp_seq=3 ttl=64 time=21.145 ms
64 bytes from 10.246.38.107: icmp_seq=4 ttl=64 time=36.708 ms
--- 10.246.38.107 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 21.145/31.721/53.491/12.179 msDas Konfigurieren der Tunnel ist der einfache Teil. Die
Konfiguration einer sicheren Verbindung geht viel mehr in
die Tiefe. Die folgende Konfiguration benutzt pre-shared
(PSK) RSA-Schlüssel.
Abgesehen von den IP-Adressen, sind beide
/usr/local/etc/racoon/racoon.conf
identisch und sehen ähnlich aus:path pre_shared_key "/usr/local/etc/racoon/psk.txt"; #location of pre-shared key file
log debug; #log verbosity setting: set to 'notify' when testing and debugging is complete
padding # options are not to be changed
{
maximum_length 20;
randomize off;
strict_check off;
exclusive_tail off;
}
timer # timing options. change as needed
{
counter 5;
interval 20 sec;
persend 1;
# natt_keepalive 15 sec;
phase1 30 sec;
phase2 15 sec;
}
listen # address [port] that racoon will listen on
{
isakmp 172.16.5.4 [500];
isakmp_natt 172.16.5.4 [4500];
}
remote 192.168.1.12 [500]
{
exchange_mode main,aggressive;
doi ipsec_doi;
situation identity_only;
my_identifier address 172.16.5.4;
peers_identifier address 192.168.1.12;
lifetime time 8 hour;
passive off;
proposal_check obey;
# nat_traversal off;
generate_policy off;
proposal {
encryption_algorithm blowfish;
hash_algorithm md5;
authentication_method pre_shared_key;
lifetime time 30 sec;
dh_group 1;
}
}
sainfo (address 10.246.38.0/24 any address 10.0.0.0/24 any) # address $network/$netmask $type address $network/$netmask $type ( $type being any or esp)
{ # $network must be the two internal networks you are joining.
pfs_group 1;
lifetime time 36000 sec;
encryption_algorithm blowfish,3des;
authentication_algorithm hmac_md5,hmac_sha1;
compression_algorithm deflate;
}Eine Beschreibung der verfügbaren Optionen finden Sie in
der Manualpage von racoon.conf.Die
Security Policy Database
(SPD) muss noch konfiguriert werden, so
dass &os; und racoon in der
Lage sind den Netzwerkverkehr zwischen den Hosts zu ver-
und entschlüsseln.Dies wird durch ein Shellskript ähnlich wie das
folgende, das auf dem Firmennetzwerk-Gateway liegt,
ausgeführt. Diese Datei wird während der
Systeminitialisierung ausgeführt und sollte unter
/usr/local/etc/racoon/setkey.conf
gespeichert werden.flush;
spdflush;
# To the home network
spdadd 10.246.38.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/172.16.5.4-192.168.1.12/use;
spdadd 10.0.0.0/24 10.246.38.0/24 any -P in ipsec esp/tunnel/192.168.1.12-172.16.5.4/use;Nachdem die Datei gespeichert wurde, kann
racoon durch das folgende Kommando
auf beiden Gateways gestartet werden:&prompt.root; /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.logDie Ausgabe sollte so ähnlich aussehen:corp-net# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf
Foreground mode.
2006-01-30 01:35:47: INFO: begin Identity Protection mode.
2006-01-30 01:35:48: INFO: received Vendor ID: KAME/racoon
2006-01-30 01:35:55: INFO: received Vendor ID: KAME/racoon
2006-01-30 01:36:04: INFO: ISAKMP-SA established 172.16.5.4[500]-192.168.1.12[500] spi:623b9b3bd2492452:7deab82d54ff704a
2006-01-30 01:36:05: INFO: initiate new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]
2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=28496098(0x1b2d0e2)
2006-01-30 01:36:09: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=47784998(0x2d92426)
2006-01-30 01:36:13: INFO: respond new phase 2 negotiation: 172.16.5.4[0]192.168.1.12[0]
2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 192.168.1.12[0]->172.16.5.4[0] spi=124397467(0x76a279b)
2006-01-30 01:36:18: INFO: IPsec-SA established: ESP/Tunnel 172.16.5.4[0]->192.168.1.12[0] spi=175852902(0xa7b4d66)Um sicherzustellen, dass der Tunnel richtig funktioniert,
wechseln Sie auf eine andere Konsole und benutzen Sie
&man.tcpdump.1; mit dem folgenden Befehl, um sich den
Netzwerkverkehr anzusehen. Tauschen Sie
em0 durch die richtige Netzwerkkarte
aus:&prompt.root; tcpdump -i em0 host 172.16.5.4 and dst 192.168.1.12Die Ausgabe der Konsole sollte dem hier ähneln. Wenn
nicht, gibt es ein Problem und ein Debuggen der ausgegebenen
Daten ist notwendig.01:47:32.021683 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xa)
01:47:33.022442 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xb)
01:47:34.024218 IP corporatenetwork.com > 192.168.1.12.privatenetwork.com: ESP(spi=0x02acbf9f,seq=0xc)An diesem Punkt sollten beide Netzwerke verfügbar sein und
den Anschein haben, dass sie zum selben Netzwerk gehören.
Meistens sind beide Netzwerke durch eine Firewall geschützt.
Um den Netzwerkverkehr zwischen den beiden Netzwerken zu
erlauben, ist es notwendig Regeln zu erstellen. Für die
&man.ipfw.8; Firewall fügen Sie folgende Zeilen in die
Firewall-Konfigurationsdatei ein:ipfw add 00201 allow log esp from any to any
ipfw add 00202 allow log ah from any to any
ipfw add 00203 allow log ipencap from any to any
ipfw add 00204 allow log udp from any 500 to anyDie Regelnummern müssen eventuell, je nach
Hostkonfiguration, angepasst werden.Für Benutzer der &man.pf.4;- oder &man.ipf.8;-Firewall
sollte folgendes funktionieren:pass in quick proto esp from any to any
pass in quick proto ah from any to any
pass in quick proto ipencap from any to any
pass in quick proto udp from any port = 500 to any port = 500
pass in quick on gif0 from any to any
pass out quick proto esp from any to any
pass out quick proto ah from any to any
pass out quick proto ipencap from any to any
pass out quick proto udp from any port = 500 to any port = 500
pass out quick on gif0 from any to anyZum Ende, um dem Computer den Start vom
VPN während der Systeminitialisierung
zu erlauben, fügen Sie folgende Zeilen in ihre
/etc/rc.conf: einipsec_enable="YES"
ipsec_program="/usr/local/sbin/setkey"
ipsec_file="/usr/local/etc/racoon/setkey.conf" # allows setting up spd policies on boot
racoon_enable="yes"OpenSSHChernLeeBeigetragen von OpenSSHSicherheitOpenSSHOpenSSH stellt Werkzeuge bereit,
um sicher auf entfernte Maschinen zuzugreifen. Zusätzlich
können TCP/IP-Verbindungen sicher durch
SSH getunnelt oder weitergeleitet werden.
OpenSSH verschlüsselt alle
Verbindungen. Dadurch wird beispielsweise verhindert, dass die
Verbindung abgehört oder übernommen
(Hijacking) werden kann. Weitere
Informationen zu OpenSSH finden Sie
auf
http://www.openssh.com/.Dieser Abschnitt enthält einen Überblick über die
integrierten Client-Werkzeuge, mit denen Sie sicher auf
entfernte Systeme zugreifen können, oder mit denen Sie sicher
Dateien austauschen können. Der Abschnitt beschreibt auch die
Konfiguration eines SSH-Servers auf einem
&os;-System. Weitere Informationen finden Sie in den hier
erwähnten Manualpages.Die SSH Client-Werkzeuge benutzenOpenSSHClientBenutzen Sie ssh zusammen mit einem
Benutzernamen und einer IP-Adresse oder dem
Hostnamen, um sich an einem SSH-Server
anzumelden. Ist dies das erste Mal, dass eine Verbindung mit
dem angegebenen Server hergestellt wird, wird der Benutzer
aufgefordert, zuerst den Fingerabdruck des Servers zu
prüfen:&prompt.root; ssh user@example.com
The authenticity of host 'example.com (10.0.0.1)' can't be established.
ECDSA key fingerprint is 25:cc:73:b5:b3:96:75:3d:56:19:49:d2:5c:1f:91:3b.
Are you sure you want to continue connecting (yes/no)? yes
Permanently added 'example.com' (ECDSA) to the list of known hosts.
Password for user@example.com: user_passwordSSH speichert einen Fingerabdruck des
Serverschlüssels um die Echtheit des Servers zu überprüfen,
wenn der Client eine Verbindung herstellt. Wenn der Benutzer
den Fingerabdruck mit yes bestätigt, wird
eine Kopie des Schlüssels in
.ssh/known_hosts im Heimatverzeichnis des
Benutzers gespeichert. Zukünftige Verbindungen zu dem Server
werden gegen den gespeicherten Fingerabdruck des Schlüssels
geprüft und der Client gibt eine Warnung aus, wenn sich der
empfangene Fingerabdruck von dem gespeicherten unterscheidet.
Wenn dies passiert, sollte zunächst geprüft werden, ob sich
der Schlüssel geändert hat, bevor die Verbindung hergestellt
wird.In der Voreinstellung akzeptieren aktuelle Versionen von
OpenSSH nur
SSHv2 Verbindungen. Wenn möglich, wird der
Client versuchen Version 2 zu verwenden, ist dies nicht
möglich, fällt er auf Version 1 zurück. Der Client kann
gezwungen werden, nur eine der beiden Versionen zu verwenden,
indem die Option oder
übergeben wird. Weitere Optionen sind in &man.ssh.1;
beschrieben.OpenSSHsecure copy&man.scp.1;Mit &man.scp.1; lassen sich Dateien in einer sicheren
Weise auf entfernte Maschinen übertragen. Dieses Beispiel
kopiert die Datei COPYRIGHT von einem
entfernten System in eine Datei mit dem gleichen Namen auf
das lokale System:&prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT
Password for user@example.com: *******
COPYRIGHT 100% |*****************************| 4735
00:00
&prompt.root;Da der Fingerabdruck für diesen Rechner bereits bestätigt
wurde, wird er automatisch überprüft, bevor der Benutzer zur
Eingabe des Passworts aufgefordert wird.Die Argumente, die scp übergeben
werden, gleichen denen von cp in der
Beziehung, dass die ersten Argumente die zu kopierenden
Dateien sind und das letzte Argument den Bestimmungsort
angibt. Da die Dateien über das Netzwerk kopiert werden,
können ein oder mehrere Argumente die Form
besitzen. Beachten Sie, das scp die
Option verwendet um Dateien rekursiv
zu kopieren, während cp
benutzt.Mit sftp können Dateien über eine
interaktive Sitzung kopiert werden. &man.sftp.1; beschreibt
die verfügbaren Befehle, die während einer
sftp-Sitzung zur Verfügung stehen.Schlüsselbasierte AuthentifizierungEin Client kann bei der Verbindung auch Schlüssel
anstelle von Passwörtern verwenden. Benutzen Sie
ssh-keygen um
RSA-Schlüssel erzeugen. Geben
Sie das entsprechende Protokoll an, wenn Sie einen
öffentlichen und einen privaten Schlüssel erzeugen. Folgen
Sie anschließend den Anweisungen des Programms. Es wird
empfohlen, die Schlüssel mit einer einprägsamen, aber schwer
zu erratenen Passphrase zu schützen.&prompt.user; ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:54Xm9Uvtv6H4NOo6yjP/YCfODryvUU7yWHzMqeXwhq8 user@host.example.com
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| . o.. |
| .S*+*o |
| . O=Oo . . |
| = Oo= oo..|
| .oB.* +.oo.|
| =OE**.o..=|
+----[SHA256]-----+Geben Sie hier die Passphrase ein. Diese darf auch
Leer- und Sonderzeichen enthalten.Geben Sie die Passphrase zur Überprüfung erneut
ein.Der private Schlüssel wird in
~/.ssh/id_rsa und der öffentliche
Schlüssel in ~/.ssh/id_rsa.pub
gespeichert. Der öffentliche Schlüssel
muss zuerst auf den entfernten Rechner nach
~/.ssh/authorized_keys kopiert werden,
damit die schlüsselbasierte Authentifizierung
funktioniert.Viele Benutzer denken, dass die Verwendung von
Schlüsseln generell sicher ist. Sie verwenden dann einen
Schlüssel ohne eine Passphrase. Dies ist jedoch sehr
gefährlich. Ein Administrator kann
überprüfen, ob ein Schlüsselpaar mit einer Passphrase
geschützt ist. Wenn die Datei mit dem privaten Schlüssel
den Text ENCRYPTED enthält, dann hat
der Benutzer eine Passphrase verwendet. Um die Benutzer
zusätzlich zu schützen, kann ein
from-Feld in der Datei des öffentlichen
Schlüssels hinzugefügt werden. Zum Beispiel würde das
Hinzufügen von from="192.168.10.5" vor
dem ssh-rsa-Präfix dafür sorgen, dass
sich ein bestimmter Benutzer nur noch von dieser
IP-Adresse anmelden darf.Die Optionen und Dateinamen sind abhängig von der
eingesetzten Version von OpenSSH.
Die für das System gültigen Optionen finden Sie in
&man.ssh-keygen.1;.Wenn bei der Erzeugung des Schlüssels eine Passphrase
angegeben wurde, wird der Benutzer bei jeder Anmeldung am
Server zur Eingabe der Passphrase aufgefordert. Mit
&man.ssh-agent.1; und &man.ssh-add.1; ist es möglich,
SSH-Schlüssel in den Speicher zu
laden, damit die Passphrase nicht jedes Mal eingegeben
werden muss.ssh-agent übernimmt die
Authentifizierung mit den geladenen privaten Schlüsseln.
ssh-agent kann dazu verwendet
werden, ein anderes Programm zu starten, beispielsweise eine
Shell oder einen Window-Manager.Um ssh-agent in einer Shell zu
verwenden, muss es mit einer Shell als Argument aufgerufen
werden. Die zu verwaltende Identität muss mit
ssh-add sowie der Passphrase für den
privaten Schlüssel übergeben werden. Danach kann sich der
Benutzer mit ssh auf
jedem Rechner anmelden, der einen entsprechenden
öffentlichen Schlüssel besitzt. Dazu ein Beispiel:&prompt.user; ssh-agent csh
&prompt.user; ssh-add
Enter passphrase for /usr/home/user/.ssh/id_rsa:
Identity added: /usr/home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
&prompt.user;Geben Sie hier die Passphrase für den Schlüssel
ein.Um ssh-agent unter
&xorg; zu verwenden, muss ein
Eintrag für das Programm in ~/.xinitrc
aufgenommen werden. Dadurch können alle unter
&xorg; gestarteten Programme die
Dienste von ssh-agent nutzen.
~/.xinitrc könnte etwa so
aussehen:exec ssh-agent startxfce4Dadurch wird bei jedem Start von
&xorg; zuerst
ssh-agent aufgerufen, das wiederum
XFCE startet. Nachdem diese
Änderung durchgeführt wurde, muss
&xorg; neu gestartet werden.
Danach können Sie mit ssh-add die
SSH-Schlüssel laden.SSH-TunnelOpenSSHTunnelMit OpenSSH ist es möglich,
einen Tunnel zu erstellen, in dem ein anderes Protokoll
verschlüsselt übertragen wird.Im folgenden Kommando erzeugt ssh
einen Tunnel für telnet:&prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
&prompt.user;Dieses Beispiel verwendet die folgenden Optionen:Zwingt ssh dazu, die Version 2
des Protokolls zu verwenden, um sich mit dem Server zu
verbinden.Zeigt an, dass ein Tunnel erstellt werden soll.
Ohne diese Option würde ssh eine
normale Sitzung öffnen.Zwingt ssh im Hintergrund zu
laufen.Ein lokaler Tunnel wird in der Form
localport:remotehost:remoteport
angegeben. Die Verbindung wird dabei von dem lokalen
Port localport auf einen
entfernten Rechner weitergeleitet.Gibt den Anmeldenamen auf dem entfernten
SSH-Server an.Ein SSH-Tunnel erzeugt einen Socket
auf localhost und dem angegebenen
lokalen Port. Jede Verbindung, die auf dem angegebenen
Socket aufgemacht wird, wird dann auf den spezifizierten
entfernten Rechner und Port weitergeleitet. Im Beispiel
wird der lokale Port 5023 an die
entfernte Maschine auf Port 23
weitergeleitet. Da der Port 23 für
telnet reserviert ist, erzeugt das eine
sichere &man.telnet.1;-Verbindung durch einen
SSH-Tunnel.Wie in den folgenden Beispielen zu sehen ist, kann diese
Vorgehensweise genutzt werden, um jedes unsichere
TCP-Protokoll, wie
SMTP, POP3 und
FTP, weiterzuleiten.Einen sicheren Tunnel für SMTP
erstellen&prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
&prompt.user; telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTPZusammen mit ssh-keygen und
zusätzlichen Benutzer-Accounts können leicht benutzbare
SSH-Tunnel aufgebaut werden. Anstelle
von Passwörtern können Schlüssel benutzt werden und jeder
Tunnel kann unter einem eigenen Benutzer laufen.Sicherer Zugriff auf einen
POP3-ServerIn diesem Beispiel gibt es einen
SSH-Server, der Verbindungen von außen
akzeptiert. Im selben Netzwerk befindet sich zudem
noch ein Mail-Server, der POP3 spricht.
Um E-Mails auf sichere Weise abzurufen, bauen Sie eine
SSH-Verbindung zu dem
SSH-Server im Netzwerk auf und tunneln
von dort zum Mail-Server weiter.&prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******Wenn Sie den Tunnel eingerichtet haben, konfigurieren
Sie den Mail-Client so, dass er POP3
Anfragen zu localhost auf Port
2110 sendet. Diese Verbindung wird dann über den
gesicherten Tunnel zu
mail.example.com
weitergeleitet.Umgehen einer FirewallEinige Firewalls filtern sowohl eingehende als auch
ausgehende Verbindungen. Zum Beispiel könnte eine
Firewall den Zugriff auf entfernte Rechner auf die Ports
22 und 80 beschränken, um lediglich SSH
und Web-Inhalte zu erlauben. Dies würde den Zugriff auf
Dienste verhindern, die nicht die Ports 22 oder 80
benutzen.Die Lösung hier ist es, eine
SSH-Verbindung zu einer Maschine
außerhalb der Firewall aufzumachen und durch diese zum
gewünschten Dienst zu tunneln:&prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******In diesem Beispiel benutzt ein Ogg Vorbis Client
localhost und Port 8888. Die
Verbindung wird dann zu
music.example.com Port 8000
weitergeleitet. Die Firewall wurde somit erfolgreich
umgangen.Den SSH-Server aktivierenOpenSSHaktivierenNeben den integrierten
SSH Client-Werkzeugen, die zur Verfügung
stehen, kann ein &os;-System auch als
SSH-Server konfiguriert werden, um
Verbindungen von anderen SSH-Clients zu
akzeptieren.Benutzen Sie den Kommando &man.service.8;, um zu prüfen
ob der sshd ausgeführt wird:&prompt.root; service sshd statusWenn der Dienst nicht ausgeführt wird, fügen Sie folgende
Zeile in /etc/rc.conf ein:sshd_enable="YES"Diese Zeile startet sshd, den
OpenSSH-Daemon, beim nächsten
Systemstart. Geben Sie folgendes ein, um den Dienst jetzt
zu starten:&prompt.root; service sshd startWenn sshd erstmalig gestartet wird,
werden die Host-Schlüssel des Systems erzeugt und der
Fingerabdruck wird auf der Konsole angezeigt. Stellen Sie den
Fingerabdruck den Benutzern zur Verfügung, sodass sie ihn
überprüfen können, wenn sie das erste Mal eine Verbindung mit
dem Server herstellen.&man.sshd.8; enthält die verfügbaren Optionen für den
Start von sshd und weitere Informationen
zur Authentifizierung, den Anmeldeprozess und die
verschiedenen Konfigurationsdateien.Ab jetzt sollte sshd für alle
Benutzer mit einem Benutzernamen und Kennwort zur Verfügung
stehen.SSH Server SicherheitObwohl sshd das am weitesten
verbreitete Remote-Administrations-Werkzeug ist, sind
Brute-Force- und
Drive-by-Angriffe auf
öffentliche Netzwerke weit verbreitet. Daher stehen mehrere
Optionen zur Verfügung, um diese Art von Angriffen zu
verhindern. Diese Optionen werden in diesem Abschnitt
beschrieben.Es ist in der Regel ein gute Idee, festzulegen, welche
Benutzer sich von welchem Rechner aus anmelden können. Dies
lässt sich beispielsweise über die Option
AllowUsers festlegen. Soll sich etwa nur
root vom Rechner mit
der IP-Adresse 192.168.1.32 aus einwählen
dürfen, würden Sie folgenden Eintrag in
/etc/ssh/sshd_config aufnehmen:AllowUsers root@192.168.1.32Damit sich admin
von jedem Rechner aus anmelden kann, geben Sie nur den
Benutzernamen an:AllowUsers adminSie können auch mehrere Benutzer in einer Zeile
aufführen:AllowUsers root@192.168.1.32 adminNachdem Sie /etc/ssh/sshd_config
angepasst haben, muss sshd seine
Konfigurationsdateien neu einlesen. Dazu geben Sie Folgendes
ein:&prompt.root; /etc/rc.d/sshd reloadWenn die Option AllowUsers verwendet
wird, ist es wichtig, jeden Benutzer aufzulisten, der sich
an diesem Rechner anmelden muss. Benutzer, die nicht in
dieser Liste aufgeführt sind, dürfen sich nicht anmelden.
Die Optionen für die Konfigurationsdatei von
OpenSSH unterscheiden zwischen
Groß- und Kleinschreibung. Wenn Sie eine Option falsch
schreiben, so wird sie ingnoriert. Testen Sie immer
die Änderungen, um sicherzustellen, dass sie wie erwartet
funktionieren. Weitere Informationen zu den verfügbaren
Optionen finden Sie in &man.sshd.config.5;.Darüber hinaus können Benutzer gezwungen werden, eine
Zwei-Faktor-Authentifizierung mit einem öffentlichen und einem
privaten Schlüssel zu benutzen. Bei Bedarf kann der Benutzer
ein Schlüsselpaar mit &man.ssh-keygen.1; erzeugen und dem
Administrator den öffentlichen Schlüssel zukommen lassen. Der
Schlüssel wird, wie weiter oben beschrieben, in
authorized_keys platziert. Um den
Benutzer zu zwingen, ausschließlich Schlüssel zu benutzen,
kann die folgende Option konfiguriert werden:AuthenticationMethods publickeyVerwechseln Sie nicht
/etc/ssh/sshd_config mit
/etc/ssh/ssh_config (beachten Sie das
zusätzliche d im ersten Dateinamen). Die
erste Datei konfiguriert den Server und die zweite Datei
konfiguriert den Client. &man.ssh.config.5; enthält eine
Auflistung der verfügbaren Client-Einstellungen.Zugriffskontrolllisten für Dateisysteme
(ACL)TomRhodesBeigetragen von ACLZugriffskontrolllisten
(Access Control Lists,
ACL) erweitern die normalen Zugriffsrechte
von &unix; Systemen auf eine kompatible (&posix;.1e) Weise
und bieten feiner granulierte Sicherheitsmechanismen.Der GENERIC-Kernel von &os; bietet
ACL-Unterstützung für
UFS-Dateisysteme. Benutzer, die es vorziehen
einen eigenen Kernel zu übersetzen, müssen die folgende Option
in die Kernelkonfigurationsdatei aufnehmen:options UFS_ACLDas System gibt eine Warnung aus, wenn ein Dateisystem mit
ACLs eingehangen werden soll und die
Unterstützung für ACLs nicht im Kernel
aktiviert ist. ACLs bauen auf den
erweiterten Attributen auf, die von UFS2
standardmäßig unterstützt werden.Dieses Kapitel beschreibt, wie
ACL-Unterstützung aktiviert wird. Zudem
werden einige Anwendungsbeispiele vorgestellt.ACL-Unterstützung aktivierenDie Option in
/etc/fstab aktiviert
Zugriffskontrolllisten für ein Dateisystem. Die bevorzugte
Möglichkeit ist die Verwendung von Zugriffskontrolllisten mit
&man.tunefs.8; (Option ), im Superblock des
Dateisystems festzuschreiben. Diese Möglichkeit hat mehrere
Vorteile:Nochmaliges Einhängen eines Dateisystems (Option
von &man.mount.8;) verändert den
Status der Zugriffskontrolllisten nicht. Die Verwendung
von Zugriffskontrolllisten kann nur durch Abhängen und
erneutes Einhängen eines Dateisystems verändert werden.
Das heißt auch, dass Zugriffskontrolllisten nicht
nachträglich auf dem Root-Dateisystem aktiviert werden
können.Die Zugriffskontrolllisten auf den Dateisystemen sind,
unabhängig von den Optionen in
/etc/fstab oder Namensänderungen der
Geräte, immer aktiv. Dies verhindert auch, dass
Zugriffskontrolllisten aus Versehen auf Dateisystemen ohne
Zugriffskontrolllisten aktiviert werden.Es kann sein, dass sich der Status von
Zugriffskontrolllisten später durch nochmaliges Einhängen
des Dateisystems (Option von
&man.mount.8;) ändern lässt. Die momentane Variante ist
aber sicherer, da der Status der Zugriffskontrolllisten
nicht versehentlich geändert werden kann. Allgemein sollten
Zugriffskontrolllisten auf einem Dateisystem, auf dem sie
einmal verwendet wurden, nicht deaktiviert werden, da danach
die Zugriffsrechte falsch sein können. Werden
Zugriffskontrolllisten auf einem solchen Dateisystem wieder
aktiviert, werden die Zugriffsrechte von Dateien, die sich
zwischenzeitlich geändert haben, überschrieben, was zu
erneuten Problemen führt.Die Zugriffsrechte einer Datei werden durch ein
+ (Plus) gekennzeichnet, wenn die Datei
durch Zugriffskontrolllisten geschützt ist:drwx------ 2 robert robert 512 Dec 27 11:54 private
drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_htmlIn diesem Beispiel sind die Verzeichnisse
directory1,
directory2 und
directory3 durch Zugriffskontrolllisten
geschützt, wohingegen das Verzeichnis
public_html nicht geschützt ist.Zugriffskontrolllisten benutzengetfacl zeigt Zugriffskontrolllisten
an. Das folgende Kommando zeigt die ACLs
auf der Datei test:&prompt.user; getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--setfacl ändert oder entfernt
ACLs auf Dateien. Um alle
ACLs einer Datei zu entfernen, können Sie
die Option benutzen. Es ist jedoch
empfehlenswert die Option zu verwenden, da
sie die erforderlichen Felder, die für ACLs
benötigt werden, beibehält.&prompt.root; setfacl -k testBenutzen Sie um die Einträge der
ACL zu verändern:&prompt.user; setfacl -m u:trhodes:rwx,g:web:r--,o::--- testIn diesem Beispiel gab es keine vordefinierten Einträge,
da sie durch den vorhergehenden Befehl entfernt wurden.
Mit diesem Kommando werden die eben entfernten
Zugriffskontrolllisten wiederhergestellt. Der Befehl gibt die
Fehlermeldung Invalid argument aus,
wenn Sie nicht existierende Benutzer oder Gruppen als
Parameter angeben.Weitere Informationen zu den Optionen dieser Kommandos
finden Sie in &man.getfacl.1; und &man.setfacl.1;.Sicherheitsprobleme in Software von
Drittanbietern überwachenTomRhodesBeigetragen von pkgIn den letzten Jahren wurden zahlreiche Verbesserungen in
der Einschätzung und dem Umgang mit Sicherheitsproblemen
erzielt. Die Gefahr von Einbrüchen in ein System wird
aber immer größer, da Softwarepakete von Dritten
auf nahezu jedem Betriebssystem installiert und konfiguriert
werden.Die Einschätzung der Verletzlichkeit eines Systems ist
ein Schlüsselfaktor für dessen Sicherheit. &os;
veröffentlicht zwar Sicherheitshinweise
(security advisories) für
das Basissystem, das Projekt ist allerdings nicht dazu in der
Lage, dies auch für die zahlreichen Softwarepakete von
Dritten zu tun. Dennoch gibt es einen Weg, auch diese
Programmpakete zu überwachen. Das &os; Dienstprogramm
pkg enthält Optionen für genau
diesen Anwendungsfall.pkg fragt dazu eine Datenbank auf
bekannte Sicherheitsprobleme ab. Diese Datenbank wird vom &os;
Security Team sowie den Ports-Entwicklern aktualisiert und
gewartet.Anweisungen zur Installation von
pkg finden Sie im
.Die Installation enthält Konfigurationsdateien für
&man.periodic.8;, welche die Datenbank von
pkg verwaltet und aktualisiert.
Diese Funktionalität wird aktiviert, wenn in
&man.periodic.conf.5; die Variable
daily_status_security_pkgaudit_enable auf
YES gesetzt wird. Stellen Sie auf jeden Fall
sicher, dass diese (an das E-Mail-Konto von root gesendeten)
Sicherheitsberichte auch gelesen werden.Nach der Installation kann ein Administrator mit dem
folgenden Kommando die Datenbank aktualisieren und sich die
Sicherheitslücken in installierten Paketen anzeigen
lassen:&prompt.root; pkg audit -Fpkg zeigt dann die
Schwachstellen in installierten Pakete an:Affected package: cups-base-1.1.22.0_1
Type of problem: cups-base -- HPGL buffer overflow vulnerability.
Reference: <https://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>
1 problem(s) in your installed packages found.
You are advised to update or deinstall the affected package(s) immediately.Wenn Sie die angegebene URL über einen
Internetbrowser aufrufen, erhalten Sie weitere Informationen
über die bestehende Sicherheitslücke, wie die betroffenen
Versionen, die Version des &os;-Ports sowie Hinweise auf weitere
Seiten, die ebenfalls Sicherheitshinweise zu diesem Problem
bieten.pkg ist ein mächtiges
Werkzeug und insbesondere in Zusammenarbeit mit
ports-mgmt/portmaster äußerst
hilfreich.&os; SicherheitshinweiseTomRhodesBeigesteuert von &os; SicherheitshinweiseWie viele andere Hersteller von hochwertigen
Betriebssystemen, hat auch das &os;-Projekt ein Sicherheitsteam,
das für die Bestimmung des End-of-Life (EoL)
Datum verantwortlich ist. Das Sicherheitsteam stellt zudem
sicher, dass Sicherheitsupdates für unterstützte Versionen,
welche noch nicht ihr EoL erreicht haben, zur
Verfügung gestellt werden. Weitere Informationen über das &os;
Sicherheitsteam und den unterstützten Versionen finden Sie auf
der Webseite &os; Security.Zu den Aufgaben des Sicherheitsteams zählt es, auf gemeldete
Sicherheitslücken im &os;-Betriebssystem zu reagieren. Sobald
eine Sicherheitslücke bestätigt wird, überprüft das
Sicherheitsteam die notwendigen Schritte, um die Schwachstelle
zu beheben und den Quellcode mit der Korrektur zu
aktualisieren. Anschließend veröffentlicht es die Details in
einem Sicherheitshinweis
(Security Advisory). Die
Sicherheitshinweise werden auf der
&os; Webseite und auf den Mailinglisten
&a.security-notifications.name;, &a.security.name; und
&a.announce.name; veröffentlicht.Dieser Abschnitt beschreibt das Format eines
&os; Sicherheitshinweises.Format eines SicherheitshinweisHier ist ein Beispiel für einen &os;
Sicherheitshinweis:=============================================================================
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
=============================================================================
FreeBSD-SA-14:04.bind Security Advisory
The FreeBSD Project
Topic: BIND remote denial of service vulnerability
Category: contrib
Module: bind
Announced: 2014-01-14
Credits: ISC
Affects: FreeBSD 8.x and FreeBSD 9.x
Corrected: 2014-01-14 19:38:37 UTC (stable/9, 9.2-STABLE)
2014-01-14 19:42:28 UTC (releng/9.2, 9.2-RELEASE-p3)
2014-01-14 19:42:28 UTC (releng/9.1, 9.1-RELEASE-p10)
2014-01-14 19:38:37 UTC (stable/8, 8.4-STABLE)
2014-01-14 19:42:28 UTC (releng/8.4, 8.4-RELEASE-p7)
2014-01-14 19:42:28 UTC (releng/8.3, 8.3-RELEASE-p14)
CVE Name: CVE-2014-0591
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit <URL:http://security.FreeBSD.org/>.
I. Background
BIND 9 is an implementation of the Domain Name System (DNS) protocols.
The named(8) daemon is an Internet Domain Name Server.
II. Problem Description
Because of a defect in handling queries for NSEC3-signed zones, BIND can
crash with an "INSIST" failure in name.c when processing queries possessing
certain properties. This issue only affects authoritative nameservers with
at least one NSEC3-signed zone. Recursive-only servers are not at risk.
III. Impact
An attacker who can send a specially crafted query could cause named(8)
to crash, resulting in a denial of service.
IV. Workaround
No workaround is available, but systems not running authoritative DNS service
with at least one NSEC3-signed zone using named(8) are not vulnerable.
V. Solution
Perform one of the following:
1) Upgrade your vulnerable system to a supported FreeBSD stable or
release / security branch (releng) dated after the correction date.
2) To update your vulnerable system via a source code patch:
The following patches have been verified to apply to the applicable
FreeBSD release branches.
a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.
[FreeBSD 8.3, 8.4, 9.1, 9.2-RELEASE and 8.4-STABLE]
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-release.patch
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-release.patch.asc
# gpg --verify bind-release.patch.asc
[FreeBSD 9.2-STABLE]
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-stable-9.patch
# fetch http://security.FreeBSD.org/patches/SA-14:04/bind-stable-9.patch.asc
# gpg --verify bind-stable-9.patch.asc
b) Execute the following commands as root:
# cd /usr/src
# patch < /path/to/patch
Recompile the operating system using buildworld and installworld as
described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
Restart the applicable daemons, or reboot the system.
3) To update your vulnerable system via a binary patch:
Systems running a RELEASE version of FreeBSD on the i386 or amd64
platforms can be updated via the freebsd-update(8) utility:
# freebsd-update fetch
# freebsd-update install
VI. Correction details
The following list contains the correction revision numbers for each
affected branch.
Branch/path Revision
- -------------------------------------------------------------------------
stable/8/ r260646
releng/8.3/ r260647
releng/8.4/ r260647
stable/9/ r260646
releng/9.1/ r260647
releng/9.2/ r260647
- -------------------------------------------------------------------------
To see which files were modified by a particular revision, run the
following command, replacing NNNNNN with the revision number, on a
machine with Subversion installed:
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
Or visit the following URL, replacing NNNNNN with the revision number:
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
VII. References
<URL:https://kb.isc.org/article/AA-01078>
<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0591>
The latest revision of this advisory is available at
<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-14:04.bind.asc>
-----BEGIN PGP SIGNATURE-----
iQIcBAEBCgAGBQJS1ZTYAAoJEO1n7NZdz2rnOvQP/2/68/s9Cu35PmqNtSZVVxVG
ZSQP5EGWx/lramNf9566iKxOrLRMq/h3XWcC4goVd+gZFrvITJSVOWSa7ntDQ7TO
XcinfRZ/iyiJbs/Rg2wLHc/t5oVSyeouyccqODYFbOwOlk35JjOTMUG1YcX+Zasg
ax8RV+7Zt1QSBkMlOz/myBLXUjlTZ3Xg2FXVsfFQW5/g2CjuHpRSFx1bVNX6ysoG
9DT58EQcYxIS8WfkHRbbXKh9I1nSfZ7/Hky/kTafRdRMrjAgbqFgHkYTYsBZeav5
fYWKGQRJulYfeZQ90yMTvlpF42DjCC3uJYamJnwDIu8OhS1WRBI8fQfr9DRzmRua
OK3BK9hUiScDZOJB6OqeVzUTfe7MAA4/UwrDtTYQ+PqAenv1PK8DZqwXyxA9ThHb
zKO3OwuKOVHJnKvpOcr+eNwo7jbnHlis0oBksj/mrq2P9m2ueF9gzCiq5Ri5Syag
Wssb1HUoMGwqU0roS8+pRpNC8YgsWpsttvUWSZ8u6Vj/FLeHpiV3mYXPVMaKRhVm
067BA2uj4Th1JKtGleox+Em0R7OFbCc/9aWC67wiqI6KRyit9pYiF3npph+7D5Eq
7zPsUdDd+qc+UTiLp3liCRp5w6484wWdhZO6wRtmUgxGjNkxFoNnX8CitzF8AaqO
UWWemqWuz3lAZuORQ9KX
=OQzQ
-----END PGP SIGNATURE-----Jeder Sicherheitshinweis verwendet das folgende
Format:Jeder Sicherheitshinweis wird mit dem
PGP-Schlüssel des
Sicherheitsbeauftragten unterzeichnet. Der öffentliche
Schlüssel des Sicherheitsbeauftragten kann in überprüft werden.Der Name des Sicherheitshinweises beginnt immer mit
FreeBSD-SA- (für FreeBSD Security
Advisory), gefolgt vom Jahr im zweistelligen Format
(14:), gefolgt von der Anzahl von
Sicherheitshinweisen für dieses Jahr
(04.), gefolgt vom Namen der Anwendung
oder des betroffenen Subsystems (bind).
Der hier gezeigte Sicherheitshinweis ist der vierte
Hinweis für das Jahr 2014 und betrifft die Anwendung
BIND.Das Feld Topic enthält eine
Beschreibung der Schwachstelle.Das Feld Category beschreibt den
betroffenen Systemteil. Mögliche Werte für dieses Feld
sind core, contrib
oder ports. Die Kategorie
core gilt für Komponenten des
&os;-Betriebssystems, die Kategorie
contrib beschreibt zum Basissystem
gehörende Software Dritter, beispielsweise
BIND. Die Kategorie
ports beschreibt Software, die Teil
der Ports-Sammlung ist.Das Feld Module beschreibt die
betroffene Komponente. Im diesem Beispiel ist das
bind-Modul betroffen, dass heißt
dieses Problem betrifft eine Anwendung aus dem
Betriebssystem.Das Feld Announced gibt den
Zeitpunkt der Bekanntgabe des Sicherheitshinweises
an. Das bedeutet, dass das Sicherheitsteam das Problem
bestätigt hat und das eine entsprechende Korrektur bereits
im &os; Quellcode-Repository zur Verfügung steht .Das Feld Credits gibt die Person
oder Organisation an, die das Sicherheitsproblem
bemerkt und gemeldet hat.Das Feld Affects listet die
&os;-Releases auf, die von dem Problem betroffen
sind.Das Feld Corrected zeigt an,
wann das Problem in welchem Release behoben wurde. Der
Teil in Klammern zeigt an, in welchem Zweig die
Aktualisierung eingeflossen ist und die entsprechende
Versionsnummer und Patch-Level des Release. Der
Patch-Level besteht aus dem Buchstaben
p, gefolgt von einer Nummer. Dies
erlaubt es dem Benutzer festzustellen, welche Korrekturen
bereits auf dem System eingespielt wurden.Reserviert für Informationen, über die
auf
cve.mitre.org nach Sicherheitslücken
gesucht werden kann.Im Feld Background wird
das betroffene Modul beschrieben.Im Feld Problem Description wird
das Sicherheitsproblem beschrieben. Hier wird
fehlerhafter Code beschrieben oder geschildert,
wie ein Werkzeug ausgenutzt werden könnte.Das Feld Impact beschreibt die
Auswirkungen des Sicherheitsproblems auf ein
System.Im Feld Workaround wird
eine Umgehung des Sicherheitsproblems beschrieben.
Die Umgehung ist für Administratoren gedacht,
die das System aus Zeitnot, Netzwerk-technischen oder
anderen Gründen nicht aktualisieren können.Das Feld Solution enthält eine
getestete Schritt-für-Schritt Anleitung, die das
Sicherheitsproblem behebt.Das Feld Correction Details
enthält die Subversion-Tags
der betroffenen Dateien zusammen mit zugehörigen
Revisionsnummern, in denen das Problem behoben
wurde.Im Feld References finden sich
Verweise auf weitere Informationsquellen.Prozess-ÜberwachungTomRhodesBeigetragen von Prozess-ÜberwachungProzess-Überwachung
(Process accounting) ist ein
Sicherheitsverfahren, bei dem ein Administrator verfolgt,
welche Systemressourcen verwendet werden und wie sich diese
auf die einzelnen Anwender verteilen. Dadurch kann das
System überwacht werden und es ist sogar möglich,
zu kontrollieren, welche Befehle ein Anwender eingibt.Die Überwachung von Prozessen hat sowohl Vor- als auch
Nachteile. Positiv ist, dass man einen Einbruchsversuch bis an
den Anfang zurückverfolgen kann. Von Nachteil ist allerdings,
dass durch diesen Prozess Unmengen an Protokolldateien erzeugt
werden, die auch dementsprechenden Plattenplatz benötigen.
Dieser Abschnitt beschreibt die Grundlagen der
Prozess-Überwachung.Wenn Sie eine differenzierte Prozess-Überwachung
benötigen, lesen Sie .Die Prozess-Überwachung aktivieren und
konfigurierenBevor Sie die Prozess-Überwachung verwenden können, müssen
Sie diese über die folgenden Befehle aktivieren:&prompt.root; touch /var/account/acct
&prompt.root; chmod 600 /var/account/acct
&prompt.root; accton /var/account/acct
-&prompt.root; echo 'accounting_enable="YES"' >> /etc/rc.conf
+&prompt.root; sysrc accounting_enable=yesEinmal aktiviert, wird sofort mit der Überwachung von
CPU-Statistiken, Befehlen und anderen
Vorgängen begonnen. Protokolldateien werden in einem
nur von Maschinen lesbaren Format gespeichert und können
mit sa aufgerufen werden. Ohne Optionen
gibt sa Informationen wie die Anzahl der
Aufrufe pro Anwender, die abgelaufene Zeit in Minuten, die
gesamte CPU- und Anwenderzeit in Minuten
und die durchschnittliche Anzahl der Ein- und
Ausgabeoperationen aus. &man.sa.8; enthält eine Liste der
Optionen, welche die Ausgabe steuern.Benutzen Sie lastcomm, um die von den
Benutzern ausgeführten Befehle anzuzeigen. Dieses Beispiel
zeigt die Nutzung von ls durch trhodes auf dem Terminal
ttyp1:&prompt.root; lastcomm ls trhodes ttyp1Zahlreiche weitere nützliche Optionen finden Sie
&man.lastcomm.1;, &man.acct.5; sowie &man.sa.8;.Einschränkung von RessourcenTomRhodesBeigetragen von Ressourcen einschränken&os; bietet dem Systemadministrator mehrere
Möglichkeiten die System-Ressourcen, die ein einzelner
Benutzer verwenden kann, einzuschränken.
Festplatten-Kontingente schränken den Plattenplatz, der
einem Benutzer zur Verfügung steht, ein. Kontingente werden
im diskutiert.QuotasBenutzer einschränkenQuotasEinschränkungen auf andere Ressourcen, wie
CPU und Speicher, können über eine
Konfigurationsdatei oder über die Kommandozeile konfiguriert
werden. Traditionell werden Login-Klassen in
/etc/login.conf definiert. Obwohl diese
Methode immer noch untersützt wird, muss nach jeder Änderung
an dieser Datei die Ressourcen-Datenbank neu gebaut werden.
Zudem müssen Sie die notwendigen Änderungen in
/etc/master.passwd vornehmen und die
Passwort-Datenbnak neu bauen. Dieser Prozess kann, abhängig
davon, wie viele Benutzer bearbeitet werden müssen, sehr
zeitaufwändig sein.Mit
rctl Ressourcen für Benutzer sehr
detailliert gesteuert werden. Dieser Befehl unterstützt nicht
nur die Kontrolle der Ressourcen für Benutzer, sondern auch die
Beschränkung auf Prozesse und Jails.In diesem Abschnitt werden beide Methoden
vorgestellt. Angefangen wird mit der traditionellen
Methode.Login-Klassen konfigurierenBenutzer einschränkenAccountseinschränken/etc/login.confBei der traditionellen Methode werden Login-Klassen und
Ressourcenbeschränkungen in
/etc/login.conf definiert. Jeder
Benutzer kann einer Login-Klasse zugewiesen werden
(standardmäßig default) und jede
Login-Klasse ist mit einem Satz von Login-Fähigkeiten
verbunden. Eine Login-Fähigkeit ist ein
Name=Wert
Paar, in dem Name die Fähigkeit
bezeichnet und Wert ein beliebiger
Text ist, der in Abhänigkeit von
Name entsprechend verarbeitet
wird.Immer wenn /etc/login.conf
verändert wurde, muss die
/etc/login.conf.db mit dem folgenden
Kommando aktualisiert werden:&prompt.root; cap_mkdb /etc/login.confRessourcenbeschränkungen unterscheiden sich von normalen
Login-Fähigkeiten zweifach. Erstens gibt es für jede
Beschränkung ein aktuelles und ein maximales Limit. Das
aktuelle Limit kann vom Benutzer oder einer Anwendung beliebig
bis zum maximalen Limit verändert werden. Letzteres kann
der Benutzer nur heruntersetzen. Zweitens gelten die meisten
Ressourcenbeschränkungen für jeden vom Benutzer gestarteten
Prozess. listet die
gebräuchlichen Ressourcenbeschränkungen auf. Alle verfügbaren
Ressourcenbeschränkungen und Fähigkeiten sind im Detail in
&man.login.conf.5; beschrieben.Benutzer einschränkencoredumpsizeBenutzer einschränkencputimeBenutzer einschränkenfilesizeBenutzer einschränkenmaxprocBenutzer einschränkenmemorylockedBenutzer einschränkenmemoryuseBenutzer einschränkenopenfilesBenutzer einschränkensbsizeBenutzer einschränkenstacksize
Ressourcenbeschränkungen für Login-KlassenRessourcenbeschränkungBeschreibungcoredumpsizeDas Limit der Größe einer core-Datei, die von
einem Programm generiert wird, unterliegt aus
offensichtlichen Gründen anderen Limits der
Festplattenbenutzung, zum Beispiel
filesize oder
Festplattenkontingenten. Es wird oft als weniger
harte Methode zur Kontrolle des
Festplattenplatz-Verbrauchs verwendet. Da Benutzer
die core-Dateien selbst nicht erstellen und sie oft
nicht löschen, kann diese Option davor schützen, dass
kein Festplattenspeicher mehr zur Verfügung steht,
sollte ein großes Programm abstürzen.cputimeDie maximale Rechenzeit, die ein Prozess eines
Benutzers verbrauchen darf. Überschreitet ein Prozess
diesen Wert, wird er vom Kernel beendet. Beachten
Sie, dass die Rechenzeit
limitiert wird, nicht die prozentuale
Prozessorenbenutzung, wie es in einigen Feldern von
top und ps
dargestellt wird.filesizeHiermit lässt sich die maximale Größe einer Datei
bestimmen, die der Benutzer besitzen darf. Im
Gegensatz zu Festplattenkontingenten ist
diese Beschränkung nur für jede einzelne Datei gültig
und nicht für den Platz, den alle Dateien eines
Benutzers verwenden.maxprocDas ist die maximale Anzahl von Prozessen, die
ein Benutzer starten darf, und beinhaltet sowohl
Vordergrund- als auch Hintergrundprozesse. Dieser
Wert nicht höher sein als das System-Limit, das in
kern.maxproc angegeben ist.
Vergessen Sie nicht, dass ein zu kleiner Wert den
Benutzer in seiner Produktivität einschränken könnte,
wenn beispielsweise ein großes Programm übersetzt wird
oder viele Prozesse gestartet sind.memorylockedDieses Limit gibt an, wie viel virtueller
Speicher von einem Prozess maximal im Arbeitsspeicher
festgesetzt werden kann (siehe auch &man.mlock.2;).
Ein paar systemkritische Programme, wie &man.amd.8;,
verhindern damit einen Systemzusammenbruch, der
auftreten könnte, wenn sie aus dem Speicher genommen
werden.memoryuseBezeichnet den maximalen Speicher, den ein
Prozess benutzen darf und beinhaltet sowohl
Arbeitsspeicher-, als auch Swap-Benutzung. Es ist
kein allübergreifendes Limit für den
Speicherverbrauch, aber ein guter Anfang.openfilesMit diesem Limit lässt sich die maximale Anzahl
der von einem Prozess des Benutzers geöffneten Dateien
festlegen. In &os; werden Dateien auch verwendet, um
Sockets und >IPC>-Kanäle
darzustellen. Setzen Sie es deshalb nicht zu niedrig.
Das System-Limit ist in
kern.maxfiles definiert.sbsizeDieses Limit beschränkt den Netzwerk-Speicher,
den ein Benutzer verbrauchen darf. Es kann generell
dazu benutzt werden Netzwerk-Verbindungen zu
beschränken.stacksizeDas ist die maximale Größe, auf die der Stack
eines Prozesses heranwachsen darf. Das allein ist
natürlich nicht genug, um den Speicher zu beschränken,
den ein Programm verwenden darf. Es sollte deshalb in
Verbindung mit anderen Limits verwendet
werden.
Beim Setzen von Ressourcenbeschränkungen sind noch andere
Dinge zu beachten:Von /etc/rc beim Hochfahren des
Systems gestartete Prozesse werden der
daemon Login-Klasse zugewiesen.Obwohl die voreingestellte
/etc/login.conf sinnvolle Limits
enthält, sind sie evtl. nicht für jedes System geeignet.
Ein zu hohes Limit kann das System für Missbrauch anfällig
machen, und ein zu niedriges Limit kann der Produktivität
schaden.&xorg; beansprucht selbst
eine Menge Ressourcen und verleitet die Benutzer dazu,
mehrere Programme gleichzeitig laufen zu lassen.Bedenken Sie, dass viele Limits für einzelne Prozesse
gelten und nicht für den Benutzer selbst. Setzt man zum
Beispiel openfiles auf
50, kann jeder Prozess des Benutzers
bis zu 50 Dateien öffnen. Dadurch
ist die maximale Anzahl von Dateien, die von einem
Benutzer geöffnet werden können,
openfiles mal
maxproc. Das gilt auch für den
Speicherverbrauch.Weitere Informationen über Ressourcenbeschränkungen,
Login-Klassen und -Fähigkeiten finden Sie in &man.cap.mkdb.1;,
&man.getrlimit.2; und &man.login.conf.5;.Einschränkung von Ressourcen aktivieren und
konfigurierenDie Variable kern.racct.enable muss
auf einen Wert ungleich Null eingestellt sein. Angepasste
Kernel benötigen eine spezielle Konfiguration:options RACCT
options RCTLSobald das System mit dem neuen Kernel gestartet wird,
kann rctl benutzt werden, um die Regeln für
das System festzulegen.Die Syntax der Regeln wird durch
subject, subject-id,
resource und action
gesteuert, wie in diesem Beispiel zu sehen ist:user:trhodes:maxproc:deny=10/userDiese Regel zeigt den grundlegenden Aufbau, hier mit dem
Subjekt user und der Subjekt-ID
trhodes. maxproc
definiert die Anzahl der Prozesse. Die Aktiondeny verhindert, dass neue Prozesse
erstellt werden. Im vorherigen Beispiel wurde für den
Benutzer trhodes eine Beschränkung von
10 Prozessen konfiguriert. Zu den weiteren
Aktionen zählen beispielsweise die Protokollierung auf der
Konsole, Benachrichtigungen an &man.devd.8; oder das Senden
eines SIGTERM an einen Prozess.Beim hinzufügen von Regeln müssen einige Dinge beachtet
werden. Das obige Beispiel würde den Benutzer sogar daran
hindern, einfachste Dinge zu tun, nachdem er sich anmeldet und
eine screen Sitzung gestartet hat. Sobald
die Begrenzung für eine Ressource erreicht ist, wird folgende
Fehlermeldung ausgegeben:&prompt.root; man test
/usr/bin/man: Cannot fork: Resource temporarily unavailable
eval: Cannot fork: Resource temporarily unavailable&man.rctl.8; kann auch benutzt werden, um einer Jail
eine Speichergrenze zuzuweisen. Eine solche Regel könnte
wie folgt festgelegt werden:&prompt.root; rctl -a jail:httpd:memoryuse:deny=2G/jailDamit die Regeln auch nach einem Neustart erhalten
bleiben, müssen sie in /etc/rctl.conf
hinzugefügt werden. Dazu schreiben Sie einfach die Regel,
ohne das vorhergehende Kommando. Zum Beispiel:# Block jail from using more than 2G memory:
jail:httpd:memoryuse:deny=2G/jailMit rctl können auch Regeln entfernt
werden:&prompt.root; rctl -r user:trhodes:maxproc:deny=10/user&man.rctl.8; zeigt auch eine Möglichkeit, alle Regeln zu
entfernen. Falls es erforderlich ist alle Regeln für einen
einzelnen Benutzer zu entfernen, kann dieser Befehl verwendet
werden:&prompt.root; rctl -r user:trhodesEs gibt noch viele weitere Ressourcen, die verwendet
werden können, um zusätzliche subjects zu
kontrollieren. Weitere Informationen zu diesem Thema finden
Sie in &man.rctl.8;.Gemeinsame Administration mit SudoTomRhodesBeigetragen von BjörnHeidottingÜbersetzt von SicherheitSudoSystemadministratoren benötigen häufig die Möglichkeit,
Benutzern erweiterte Berechtigungen zu gewähren, damit
diese privilegierte Aufgaben ausführen können. Die Idee, dass
Teammitglieder einen Zugang zu einem &os;-System zur Verfügung
gestellt bekommen, um ihre spezifischen Aufgaben erledigen zu
können, stellt den Administrator vor eine große
Herausforderung. Diese Teammitglieder benötigen in der Regel
nur einen eingeschränkten Zugang. Für manche Aufgaben werden
jedoch die Rechte des Superusers benötigt. Zum Glück gibt es
keinen Grund, diesen Mitgliedern einen solchen Zugang zu geben,
da es Werkzeuge für genau diesen Anwendungsfall gibt.Bislang wurde in diesem Kapitel immer versucht, den Zugriff
für autorisierte Benutzer zu gewähren und den Zugriff für
nicht autorisierte Benutzer zu verhindern. Ein weiteres Problem
entsteht, sobald autorisierte Benutzer Zugriff auf die
Ressourcen des Systems haben. In vielen Fällen benötigen einige
Benutzer Zugriff auf Startskripte von Anwendungen. In anderen
Fällen muss eine Gruppe von Administratoren das System
verwalten. Traditionell wird der Zugriff über Benutzer,
Gruppen, Dateiberechtigungen und manchmal sogar &man.su.1;
verwaltet. Und da immer mehr Anwendungen einen Zugriff brauchen
und immer mehr Benutzer Zugriff auf die Systemressourcen
benötigen, ist ein besserer Lösungsansatz erforderlich. Die am
häufigsten verwendete Anwendung in solchen Fällen ist derzeit
Sudo.Sudo erlaubt dem Administrator
eine rigide Konfiguration des Zugriffs auf bestimmte Kommandos
und stellt einige erweiterte Protokollfunktionen zur Verfügung.
Dieses Werkzeug kann als Port oder Paket
security/sudo installiert werden. Das Paket
wird wie folgt installiert:&prompt.root; pkg install sudoNach der Installation können Sie visudo
benutzen, um die Konfiguration in einem Texteditor zu öffnen.
Es wird ausdrücklich visudo empfohlen, da
dieses Programm die Syntax auf Fehler überprüft, bevor die
Konfigurationsdatei gespeichert wird.Die Konfigurationsdatei besteht aus mehreren kleinen
Abschnitten, die eine umfangreiche Konfiguration ermöglichen.
Im folgenden Beispiel soll der Webentwickler (user1) den Dienst
webservice starten und stoppen
dürfen. Um ihm dieses Recht zu gewähren, fügen Sie folgende
Zeile an das Ende von
/usr/local/etc/sudoers ein:user1 ALL=(ALL) /usr/sbin/service webservice *Der Benutzer kann jetzt
webservice über dieses Kommando
starten:&prompt.user; sudo /usr/sbin/service webservice startDiese Konfiguration gestattet den Zugriff auf den
webservice für einen einzelnen
Benutzer. Jedoch ist in den meisten Organisationen ein ganzes
Team für die Verwaltung eines solchen Dienstes verantwortlich.
Mit einer weiteren Zeile ist es möglich, einer ganzen Gruppe
diesen Zugriff zu geben. Die folgenden Schritte erstellen eine
Gruppe mit den entsprechenden Benutzern. Der Gruppe wird es
dann ermöglicht, diesen Dienst zu verwalten:&prompt.root; pw groupadd -g 6001 -n webteamNun werden die Benutzer mit Hilfe von &man.pw.8; in die
Gruppe webteam hinzugefügt:&prompt.root; pw groupmod -m user1 -n webteamZuletzt wird folgende Zeile in
/usr/local/etc/sudoers hinzugefügt, damit
jedes Mitglied von webteam den Dienst
webservice verwalten kann:%webteam ALL=(ALL) /usr/sbin/service webservice *Im Gegensatz zu &man.su.1;, benötigt
Sudo nur das Passwort des
Benutzers.Benutzer, die mit Hilfe von Sudo
Programme ausführen, müssen lediglich ihr eigenes Passwort
eingeben. Dies ist sicherer und bietet eine bessere Kontrolle
als &man.su.1;, wo der Benutzer das root-Passwort eingibt und damit
alle Rechte von root
erlangt.Viele Organisationen haben bereits auf eine
Zwei-Faktor-Authentifizierung umgestellt. In diesen Fällen
hat der Benutzer möglicherweise gar kein Passwort, welches er
eingeben könnte. Sudo bietet für
solche Fälle die Variable NOPASSWD. Wenn
die Variable in die obige Konfiguration hinzugefügt wird,
dürfen die Mitglieder der Gruppe
webteam den Dienst verwalten, ohne
ein Passwort eingeben zu müssen:%webteam ALL=(ALL) NOPASSWD: /usr/sbin/service webservice *ProtokollierungEin Vorteil von Sudo ist, dass
Sitzungen protokolliert werden können. Mit den integrierten
Protokollmechanismen und dem Befehl
sudoreplay können alle über
Sudo ausgelösten Befehle
protokolliert und zu einem späteren Zeitpunkt überprüft
werden. Um diese Funktion zu aktivieren, fügen Sie einen
Eintrag für das Verzeichnis der Protokolle hinzu. Dieses
Beispiel verwendet eine Benutzervariable. Weitere
Informationen finden Sie in der Manualpage von
sudoreplay.Defaults iolog_dir=/var/log/sudo-io/%{user}Dieses Verzeichnis wird automatisch nach der
Konfiguration erstellt. Um auf der sicheren Seite zu sein,
ist es am besten, das System die Verzeichnisse mit
Standardberechtigungen erstellen zu lassen. Dieser
Eintrag wird auch ein Protokoll für Administratoren
erstellen, wenn diese den Befehl
sudoreplay benutzen. Um dieses
Verhalten zu ändern, kommentieren Sie die entsprechenden
Zeilen in sudoers aus.Nachdem dieser Eintrag in die Datei
sudoers hinzugefügt wurde, kann die
Konfiguration der Benutzer für die Protokollierung
aktualisiert werden. In dem gezeigten Beispiel würde der
aktualisierte Eintrag für das
webteam zusätzlich folgende
Änderung benötigen:%webteam ALL=(ALL) NOPASSWD: LOG_INPUT: LOG_OUTPUT: /usr/sbin/service webservice *Von nun an wird jede Änderung am
webservice protokolliert, wenn sie
von einem Mitglied der Gruppe
webteam initiiert wurde. Eine
Liste der Sitzungen kann wie folgt angezeigt werden:&prompt.root; sudoreplay -lWenn Sie eine bestimmte Sitzung wiedergeben möchten,
suchen Sie in der Ausgabe nach dem Eintrag
TSID= und übergeben Sie den Wert ohne
weitere Optionen an sudoreplay.
Zum Beispiel:&prompt.root; sudoreplay user1/00/00/02Obwohl die Sitzungen protokolliert werden, kann ein
böswilliger Administrator wahllos die Sitzungsprotokolle
löschen. Daher ist es eine gute Idee, eine tägliche
Kontrolle mit einem Intrusion Detection
System (IDS) oder
einer ähnlichen Software durchzuführen, so dass andere
Administratoren auf manuelle Änderungen aufmerksam gemacht
werden.sudoreplay ist extrem
erweiterbar. Lesen Sie die Dokumentation für weitere
Informationen.