Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly1st Edition November 1999 1-56592-449-5, Order Number: 4495 416 pages, $34.95 |
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/perlDann 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 unixwareFü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 modeNachdem 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, gibmake
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/binDas 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.txtDie 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.txtDas 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-sslDanach 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=./demoCADann ändere ihn auf:
CATOP=/etc/certificatesAls 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 keptDann ändere ihn auf:
[ CA_default ] dir = /etc/certificates # Where everything is keptAls 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/certificatesJetzt 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-SHADanach 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.
© 1999, O'Reilly & Associates, Inc.