Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: A.2 Voraussetzungen Anhang A
Samba mit SSL konfigurieren
Next: A.4 SSL Proxy einrichten
 

A.3 SSLeay installieren

Samba verwendet das SSLeay-Paket, geschrieben von Eric Young, um für Secure Sockets Layer-Unterstützung auf der Serverseite zu sorgen. Nun, wegen des U.S.-Exportgesetzes kann das SSLeay-Paket nicht mit Samba-Distributionen, die aus den Vereinigten Staaten stammen, versendet werden. Aus diesem Grund bestimmten die Samba-Entwickler, es als ganz eigenes Paket zu belassen. Du kannst die SSLeay-Distribution von einer der folgenden Sites herunterladen:

Die letzte Version während dieses Drucks ist 0.9.0b. Lade sie auf denselben Server wie die Samba-Distribution, dann entpacke und enttare sie. Du solltest ein Verzeichnis namens SSLeay-0.9.0b erhalten. Nach dem Wechseln in dieses Verzeichnis, musst du das SSL-Verschlüsselungspaket in derselben Weise konfigurieren und aufbauen, wie du es bei Samba getan hast.

SSLeay verwendet ein Perl-basiertes configure-Skript. Dieses Skript modifiziert das Makefile, welches die Utilities und Bibliotheken des SSLeay-Pakets aufbaut. Nun, das Default-Skript ist darauf festgelegt, Perl unter /usr/local/bin/perl zu finden. Du musst vielleicht das configure-Skript ändern, damit es auf den Standort der Perl-Ausführungsdatei auf deinem Unixsystem zeigt. Du kannst z.B. das Folgende eintippen, um die Perl-Ausführungsdatei zu lokalisieren:

# which perl
/usr/bin/perl

Dann modifiziere die erste Zeile des configure-Skripts, um die Verwendung der korrekten Perl-Ausführungsdatei zu erzwingen. Zum Beispiel auf unserem Red Hat Linuxsystem:

#!/usr/bin/perl
#
# see PROBLEMS for instructions on what sort of things to do
# when tracking a bug -tjh
...

Danach musst du das configure-Skript unter Angabe einer Ziel-Plattform für die Distribution ausführen. Diese Ziel-Plattform kann eine der folgenden sein:

BC-16              BC-32              FreeBSD            NetBSD-m86
NetBSD-sparc       NetBSD-x86         SINIX-N            VC-MSDOS
VC-NT              VC-W31-16          VC-W31-32          VC-WIN16
VC-WIN32           aix-cc             aix-gcc            alpha-cc
alpha-gcc          alpha400-cc        cc                 cray-t90-cc
debug              debug-irix-cc      debug-linux-elf    dgux-R3-gcc
dgux-R4-gcc        dgux-R4-x86-gcc    dist               gcc
hpux-cc            hpux-gcc           hpux-kr-cc         irix-cc
irix-gcc           linux-aout         linux-elf          ncr-scde
nextstep           purify             sco5-cc            solaris-sparc-cc
solaris-sparc-gcc  solaris-sparc-sc4  solaris-usparc-sc4 solaris-x86-gcc
sunos-cc           sunos-gcc          unixware-2.0       unixware

Für unser System würden wir Folgendes eingeben:

# ./Configure linux-elf
CC            =gcc
CFLAG         =-DL_ENDIAN -DTERMIO -DBN_ASM -O3 -fomit-frame-pointer 
EX_LIBS       =
BN_MULW       =asm/bn86-elf.o
DES_ENC       =asm/dx86-elf.o asm/yx86-elf.o
BF_ENC        =asm/bx86-elf.o
CAST_ENC      =asm/cx86-elf.o
RC4_ENC       =asm/rx86-elf.o
RC5_ENC       =asm/r586-elf.o
MD5_OBJ_ASM   =asm/mx86-elf.o
SHA1_OBJ_ASM  =asm/sx86-elf.o
RMD160_OBJ_ASM=asm/rm86-elf.o
THIRTY_TWO_BIT mode
DES_PTR used
DES_RISC1 used
DES_UNROLL used
BN_LLONG mode
RC4_INDEX mode		

Nachdem das Paket konfiguriert wurde, kannst du es builden durch die Eingabe von make. Wenn Build nicht erfolgreich beendet wurde, konsultiere die mit der Distribution mitgekommene Dokumentation oder die FAQ bei http://www.cryptsoft.com/ssleay/ für mehr Information darüber, was passiert sein könnte. Wenn Build beendet wurde, gib make install ein, um die Bibliotheken auf dem System zu installieren. Beachte, dass das Makefile das Paket per Voreinstellung in /usr/local/ssl installiert. Wenn du beschließt, es in einem anderen Verzeichnis zu installieren, erinnere dich an das Verzeichnis, als du Samba für die Verwendung von SSL konfiguriertest.

A.3.1 SSLeay für dein System konfigurieren

Das Erste, was du machen musst, ist die Umgebungsvariable PATH auf deinem System zu setzen, um das Verzeichnis /bin der SSL-Distribution aufzunehmen. Das kann mit dem folgenden Ausdruck geschehen:

PATH=$PATH:/usr/local/ssl/bin

Das ist der leichte Teil. Dem folgend, musst du eine zufällige Reihe von Zeichen erzeugen, die verwendet werden, den Zufallsgenerator des SSLeay bereitzumachen. Der Zufallsgenerator wird gebraucht, um Key-Paare für Client und Server zu erzeugen. Du kannst diese Zufallsreihe erzeugen, indem du eine Textdatei mit einer langen Reihe von Zufallszeichen anfüllst. Du kannst z.B. deinen Lieblingseditor benützen, um eine Textdatei mit Zufallszeichen zu erstellen, oder diesen Befehl verwenden und willkürliche Zeichen bei der Standardeingabe eingeben:

cat >/tmp/private.txt

Die Samba-Dokumentation empfiehlt, dass du Zeichen für länger als eine Minute tippst, bevor du den Eingabestrom mit Control-D unterbrichst. Versuch nicht, nur die Buchstaben unter deinen Fingern auf dem Keyboard zu tippen, streu auch Symbole und Ziffern ein. Sobald du die Zufallsdatei fertiggestellt hast, kannst du den Zufallsgenerator mit dem folgenden Befehl bereitmachen:

# ssleay genrsa -rand /tmp/private.txt >/dev/null
2451 semi-random bytes loaded
Generating RSA private key, 512 bit long modulus
..+++++
.................................+++++
e is 65537 (0x10001)

Die Ausgabe dieses Befehls kannst du ruhig ignorieren. Nachdem sie abgeschlossen ist, entferne die Reihe der zum Erzeugen des Keys verwendeten Zeichen, weil diese benützt werden könnte, private Keys zu rekonstruieren, die von diesem Zufallsgenerator erzeugt wurden:

rm -f /tmp/private.txt

Das Ergebnis dieses Befehls ist die versteckte Datei . rnd, die in deinem Home-Verzeichnis gespeichert wird. SSLeay wird diese Datei benützen, wenn es in Zukunft Key-Paare erzeugt.

A.3.2 Samba für die Verwendung von SSL konfigurieren

Jetzt kannst du Samba kompilieren, damit es SSL benützt. Erinnere dich, dass wir in Kapitel 2, Samba auf einem Unix-System installieren, sagten, du musst zuerst das Script configure ausführen, welches das Makefile initialisiert, bevor du Samba kompilierst. Um SSL bei Samba zu verwenden, musst du das Makefile rekonfigurieren:

./configure --with-ssl

Danach kannst du Samba mit den folgenden Befehlen kompilieren:

# make clean
# make all

Wenn du auf einen Fehler triffst, der sagt, der smbd vermisse die Datei ssl.h, dann hast du wahrscheinlich SSLeay nicht im vorgesehenen Verzeichnis installiert. Benütze die configure-Option --with-sslinc, um auf das Hauptverzeichnis der SSL-Distribution zu zeigen - in diesem Fall das Verzeichnis, das include/ssl.h enthält.

Wenn du andererseits ein sauberes Kompilationsergebnis hast, bist du für den nächsten Schritt bereit: Zertifikate erzeugen.

A.3.3 Eine Certificate Authority werden

Das SSL-Protokoll erfordert die Verwendung von X 509-Zertifikaten im Protokoll-Handshake, um sicherzugehen, dass entweder einer oder beide in die Kommunikation eingebundene Partner tatsächlich das sind, was sie sagen. Zertifikate im wirklichen Leben, so wie diese sie für SSL-Verbindungen auf öffentlichen Websites verwenden, können auf dem Markt 300$ im Jahr kosten. Das deswegen, weil das Zertifikat eine digitale Kennung haben muss, die von einer certificate authority an es vergeben wird. Eine Certificate Authority ist ein Wesen, das für die Echtheit eines digitalen Zertifikats bürgt, indem es dieses mit seinem eigenen privaten Key kennzeichnet. Auf diese Weise kann einfach jeder, der die Echtheit des Zertifikats prüfen will, den öffentlichen Key der Certificate Authority verwenden, um die Kennung zu prüfen.

Du darfst mit SSLeay eine öffentliche Certificate Authority benützen. Dennoch du musst nicht. Statt dessen erlaubt dir SSLeay, dich selbst zu einer vertrauenswürdigen Certificate Authority zu erklären - und festzulegen, welche Clients du als vertrauenswürdig wählst und welche nicht. Um das zu tun, musst du einige Aufgaben mit der SSLeay-Distribution durchführen.

Das Erste, das du tun musst, ist, einen sicheren Ort festzulegen, wo die Zertifikate der Clients und potentiell des Servers gespeichert werden. Wir haben /etc/certificates als unseren vorherbestimmten Ort gewählt. Führe die folgenden Befehle als root durch:

# cd /etc
# mkdir certificates
# chmod 700 certificates

Beacht, dass wir jeden Zugriff von Usern außer root für dieses Verzeichnis ausschließen. Dies ist sehr wichtig.

Als Nächstes musst du die SSLeay-Skripts und -Konfigurationsdateien einrichten, um die in diesem Verzeichnis gespeicherten Zertifikate zu verwenden. Um das zu tun, modifiziere zuerst das CA.sh-Skript, das in /usr/local/ssl/bin/CA.sh liegt, damit du den Ort des gerade erzeugten Verzeichnisses festlegst. Finde die Zeile, die den folgenden Eintrag enthält:

CATOP=./demoCA

Dann ändere ihn auf:

CATOP=/etc/certificates

Als Nächstes musst du die Datei /usr/local/ssl/lib/ssleay.cnf modifizieren, um dasselbe Verzeichnis festzulegen. Finde den Eintrag:

[ CA_default ]
dir     = ./demoCA             # Where everything is kept

Dann ändere ihn auf:

[ CA_default ]
dir     =  /etc/certificates   # Where everything is kept

Als Nächstes führe das Certificate Authority-Setup-Skript CA.sh aus, um die Zertifikate zu erzeugen. Stell sicher, dass du das als derselbe User machst, den du verwendet hast, weiter oben den Zufallsgenerator bereitzustellen:

/usr/local/ssl/bin/CA.sh -newca
mkdir: cannot make directory '/etc/certificates': File exists
CA certificate filename (or enter to create)

Drück die Enter-Taste, um ein Zertifikat für die CA zu erzeugen. Du solltest dann sehen:

Making CA certificate ...
Using configuration from /usr/local/ssl/lib/ssleay.cnf
Generating a 1024 bit RSA private key
.............................+++++
.....................+++++
writing new private key to /etc/certificates/private/cakey.pem
Enter PEM pass phrase:

Gib eine neue Pass-Phrase für dein Zertifikat ein. Du musst es zweimal korrekt eingeben, bevor es SSLeay akzeptiert:

Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

Merk dir auf jeden Fall diese Pass-Phrase. Du wirst sie in Zukunft brauchen, um die Client-Zertifikate zu kennzeichnen. Sobald SSLeay die Pass-Phrase akzeptiert hat, fährt es mit einer Reihe von Fragen für jedes Feld im X509-Zertifikat fort:

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.

Füll den Rest der Felder mit Information über deine Firma aus. Unser Zertifikat schaut z.B. wie das aus:

Country Name (2 letter code) [AU]:

US
State or Province Name (full name) [Some-State]:

California
Locality Name (eg, city) []:

Sebastopol
Organization Name (eg, company) []:

O'Reilly
Organizational Unit Name (eg, section) []:

Books
Common Name (eg, YOUR name) []:

John Doe
Email Address []:

doe@ora.com

Danach ist SSLeay als Certificate Authority konfiguriert und kann verwendet werden, Zertifikate für Client-Maschinen zu kennzeichnen, die sich mit dem Sambaserver verbinden.

A.3.4 Zertifikate für Clients erzeugen

Ein Zertifikat für eine Client-Maschine zu erzeugen ist einfach. Zuerst musst du ein öffentlich/privates Key-Paar für jedes Wesen generieren, eine Zertifikats-Request-Datei erzeugen und dann SSLeay benützen, um die Datei als vertrauenswürdige Authority zu kennzeichnen.

Für unseren Muster-Client phoenix läuft das auf drei SSLeay-Befehle hinaus. Der erste generiert ein Key-Paar für den Client und legt es in die Datei phoenix.key. Der private Key wird verschlüsselt, in diesem Fall unter Verwendung von dreifachem DES. Gib eine Pass-Phrase ein, wenn sie unten verlangt wird - du brauchst sie für den nächsten Schritt:

# ssleay genrsa -des3 1024 >phoenix.key
1112 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
........................................+++++
.............+++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

Nachdem dieser Befehl abgeschlossen ist, tippe folgendes Kommando ein:

# ssleay req -new -key phoenix.key -out phoenix-csr
Enter PEM pass phrase:

Gib die Pass-Phrase für das Client-Zertifikat ein, die du gerade erzeugt hast (nicht die Certificate Authority). Jetzt musst du den Fragebogen wieder beantworten, diesmal für die Client-Maschine. Zusätzlich musst du ein Aufforderungs-Passwort und einen optionalen Firmennamen eintippen - die spielen hier keine Rolle. Wenn der Befehl beendet ist, hast du eine Zertifikats-Anfrage in der Datei phoenix-csr.

Dann musst du die Zertifikats-Anfrage als die vertrauenswürdige Certificate Authority kennzeichnen. Tippe folgenden Befehl ein:

# ssleay ca -days 1000 -inflies phoenix-csr >phoenix.pem

Dieser Befehl fordert dich auf, die PEM Pass-Phrase der certificate authority einzugeben. Vergewissere dich, dass du nicht die PEM Pass-Phrase des Client-Zertifikats eingibst, die du gerade erzeugt hast. Nach der Eingabe der korrekten Pass-Phrase solltest du das Folgende sehen:

Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows:
...

Das wird gefolgt von der Information, die du gerade für das Client-Zertifikat eingabst. Tritt ein Fehler in den Feldern auf, benachrichtigt dich das Programm. Wenn andererseits alles hinhaut, bestätigt SSLeay, dass es das Zertifikat kennzeichnen und in die Datenbank eintragen sollte. Das fügt dem Verzeichnis /etc/certificates/newcerts einen Datensatz des Zertifikats hinzu.

Die maßgeblichen Dateien am Ende dieser Übung sind phoenix.key und phoenix.pem , die im laufenden Verzeichnis liegen. Diese Dateien werden zum Client ausgegeben, mit dem der SSL-fähige Sambaserver zusammenarbeitet, und werden vom SSL-Proxy verwendet.

A.3.5 Den Sambaserver konfigurieren

Der nächste Schritt ist die Modifizierung der Samba Konfigurationsdatei, damit folgende Setup-Optionen aufgenommen werden. Diese Optionen setzen voraus, dass du das Verzeichnis der Zertifikate für die Certificate Authority in /etc/certificates eingerichtet hast:

[global]
	ssl = yes
	ssl server cert = /etc/certificates/cacert.pem
	ssl server key = /etc/certificates/private/cakey.pem
	ssl CA certDir = /etc/certificates

Jetzt musst du die Samba-Dämonen killen und sie manuell neu starten:

# nmbd -D
# smbd -D
Enter PEM pass phrase:

Du musst die PEM Pass-Phrase der Certificate Authority eingeben, um die Samba-Dämonen zu starten. Beachte, dass dies ein Problem in Hinsicht auf den Start des Programms mit normalen Mitteln darstellen könnte. Nun, du kannst das umgehen, indem du fortgeschrittene Skriptsprachen, wie Expect oder Python, verwendest.

A.3.6 Testen mit smbclient

Eine gute Möglichkeit zu testen, ob Samba richtig arbeitet, ist die Verwendung des Programms smbclient. Gib auf dem Sambaserver folgenden Befehl ein, indem du die entsprechende Share und den User für eine Verbindung einsetzt:

# smbclient //hydra/data -U tom

Du solltest einige Debugging-Erklärungen sehen, gefolgt von einer Zeile, die den ausgehandelten Code enthält, wie:

SSL: negotiated cipher: DES-CBC3-SHA

Danach kannst du dein Passwort eingeben und dich normal mit der Share verbinden. Wenn das funktioniert, kannst du sicher sein, dass Samba SSL-Verbindungen korrekt unterstützt. Nun auf zum Client-Setup.


Previous: A.2 Voraussetzungen Next: A.4 SSL Proxy einrichten
A.2 Voraussetzungen Buch-Index (engl.) A.4 SSL Proxy einrichten

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.