Backups werden immer wichtiger. Deshalb möchte ich hier backup Strategeien für Windows, sowie für Linux Systeme vorstellen.
Eigenes Debian Repository erstellen
__ Debian ist ein geniales Betriebssystem; der Paketmanager apt ist einer der besten. Und doch hat Debian einen entscheidenden Nachteil: Die Pakete sind meist hoffnungslos veraltet.
Für die "wichtigsten" Pakete wie php, mysql, usw. bei denen man häufig updates benötigt stehen sog. "backports" zur Verfügung, das bekannteste ist etwa dotdeb.org.
Was aber, wenn man eine aktuelle Version eines anderen Pakets benötigt, z.B. Nagios oder Ganglia? -Zwar könnte man diese auch selber kompilieren, allerdings können sie dann erstens nicht mehr über den Paketmanager upgedatet werden und zweitens ist auch eine Deinstallation meist sehr schwierig.
Die Lösung ist es ein eigenes, lokales Debian Repository aufzubauen, dass man dann in die sources.list aufnehmen kann. Dort kann man dann die selbst erstellen Debian Pakate rein legen.
In diesem Workshop werden wir diese Schritte im Beispiel von Ganglia durchgehen.. __
Anforderungen
Folgendes brauchen wir für den Workshop:
- Ein Linux-System
- Installierte kompilier-Umgebung (gcc, g++, make,…)
- checkinstall – Ein Tool um automatisiert Debian Pakete zu erstellen
- Source (.tgz) des Programms, das man installieren möchte; in diesem falle Ganglia
- dpkg-dev – Tools um Debian Pakete zu erstellen
Debian Paket erstellen
Als erstes installieren wir checkinstall:
wget <a href="http://asic-linux.com.mx/~izto/checkinstall/files/deb/checkinstall_1.6.1-1_i386.deb" target="blank">http://asic-linux.com.mx/~izto/checkinstall/files/deb/checkinstall_1.6.1-1_i386.deb</a> dpkg -i checkinstall_1.6.1-1_i386.deb |
Nun bereiten wir die zu installierende Software (hier Ganglia) vor; es werden alle Schritte wie sie zum kompilieren nötig sind ausgeführt, ausser den letzen ("make install") – Diesen muss man lediglich mit "checkinstall" ersetzen um das Paket zu erstellen.
wget <a href="http://downloads.sourceforge.net/ganglia/ganglia-3.0.6.tar.gz?modtime=1197841793&big_mirror=0" target="blank">http://downloads.sourceforge.net/ganglia/ganglia-3.0.6.tar.gz?modtime=1197841793&big_mirror=0</a> tar -xvzf ganglia-3.0.6.tar.gz cd ganglia-3.0.6 ./configure make |
Nun haben wir die kompilierten Dateien, es wurde aber noch nichts installiert. Dies ist auch gut so, denn nun kommt checkinstall zum Einsatz. Checkinstall ruft "make install" auf, fängt dabei die Schritte die hier gemacht würden ab und erstellt damit ein Debian Paket.
[stextbox id=“note“ caption=“Hinweis“]Bei Debian Paketen sollte zusätzlich der Parameter "–review-control" mitgegeben werden, um später die Abhängigkeiten festlegen zu können;
ansonsten würde nur die Software installiert ohne ggf. andere dazu benötigte Programme (Im Fall von Ganglia z.B. das RRDTool).
checkinstall --review-control make install |
[/stextbox]
Danach kann man noch einige Angaben zum Paket machen wie z.B. eine Beschreibung. -Falls das Paket (in einer älteren Version) im offiziellen Debian repository enthalten ist am besten die originale übernehmen. Infos zum jeweiligen Debian Paket kann man unter: http://packages.debian.org/ nach schauen.
Am Schluss wird dann noch das sog. Controlfile aufgerufen. Dies ist eine spezielle Datei in der man die Angaben zum Paket wie Name, Abhängigkeiten, Empfehlungen, usw. bearbeiten kann.
Am wichtigsten sind hier die Abhängigkeiten (Depends). Diese findet man, wenn man unter http://packages.debian.org/ das jeweilige Paket sucht.
Diese sollte man nun so wie Sie auf der Seite stehen übernehmen, inklusive der runden Klammern.
Ein Beispiel für das Controlfile von Ganglia:
(Paketbeschreibung unter: http://packages.debian.org/stable/gmetad?lang=en )
Package: ganglia Priority: extra Section: checkinstall Installed-Size: 1132 Maintainer: meine@email-adresse.tld Architecture: i386 Version: 3.0.6-1 Depends: adduser, libart-2.0-2, libc6, libc6.1, librrd2 Suggests: ganglia-monitor, ganglia-webfrontend Description: Ganglia is a scalable, real-time cluster monitoring environment with that collects cluster statistics in an open well-defined XML format. This package contains the 'gmetad', which collects information from ganglia monitor clients, and writes them to RRD databases. |
[stextbox id=“note“ caption=“Hinweis“]In den eckigen Klammern steht die Architektur;
normalerweise braucht man nur die Pakete einzubinden auf dessen Architektur man sie installieren möchte;
in den meisten Fällen also i386, bzw. ia64.[/stextbox]
Wenn wir alles angepasst haben speichern und schliessen wir die Datei.
So, nun haben wir in dem Verzeichnis ein .deb File, dass wir nun mit: "dpkg -i ganglia.deb" bereits installieren könnten.
Wir wollen aber noch einen Schritt weiter gehen und gleich ein lokales repository einrichten, so dass wir ab nun die selbst erstellten Pakete ganz einfach mittels "apt-get NAME" installieren und updaten können.
{209:left} !Debian repository Erstellen
Hierzu müssen wir noch zuerst die dpkg-dev Tools installieren:
apt-get install dpkg-dev |
Nun können wir die Verzeichnisstruktur anlegen. Die sieht bei i386 Systemen so aus:
dists/etch/main/binary-i386/
Eine genaue Beschreibung wie eine Debian Repository aussehen muss findet sich im Debian repository-howto ; hier werden deshalb nur auf die nötigsten Schritte eingegangen.
Diese erstellen wir nun:
mkdir -p /repo/dists/etch/main/binary-i386/ |
Hier kopieren wir nun das .deb File hin:
cp -pv ganglia_3.0.6-1_i386.deb /repo/dists/etch/main/binary-i386/ |
Nun wechseln wir in dieses Verzeichnis und erstellen mit dem tool "dpkg-scanpackages" die Index Datei für den packetmanager:
cd /repo/dists/etch/main/binary-i386/ dpkg-scanpackages /repo/dists/etch/main/binary-i386/ /dev/null | gzip -9c > /repo/dists/etch/main/binary-i386/Packages.gz |
Diese Datei hat genau den gleichen Aufbau wie die das Controlfile plus evtl. noch einige weitere Angaben, wie z.B. wo sich das deb-file befindet.
Diese kontrollieren und ergänzen wir nun ggf.:
vi /repo/dists/etch/main/binary-i386/Packages.gz |
Für Ganglia sieht dies z.B. so aus:
Package: ganglia Priority: extra Section: checkinstall Installed-Size: 1132 Maintainer: meine@email-adresse.tld Architecture: i386 Version: 3.0.6-1 Depends: adduser, libart-2.0-2 (>= 2.3.16), libc6 (>= 2.3.5-1), librrd2 Suggests: ganglia-monitor, ganglia-webfrontend Description: Ganglia is a scalable, real-time cluster monitoring environment with that collects cluster statistics in an open well-defined XML format. This package contains the 'gmetad', which collects information from ganglia monitor clients, and writes them to RRD databases. Filename: dists/etch/main/binary-i386/ganglia_3.0.6-1_i386.deb |
Repository aufnehmen
Nun muss man eigentlich das Repository nur noch in die /etc/apt/sources.list eintragen:
echo "deb file:///repo/ etch main" >> /etc/apt/sources.list |
Ab jetzt kann man die aktuelle Software ganz einfach mittels:
apt-get install NAME |
installieren.
Related Links
|| Link | Beschreibung
[http://www.linux-user.de/ausgabe/2006/07/047-checkinstall/index.html|Linux-User Beitrag 07/2006] | Dieser Beitrag erklärt die Bedienung von checkinstall.
[http://linuxwiki.de/CheckInstall|Tips&Tricks zu Checkinstall] | Kleine Tips-Seite auf linuxwiki.de
[http://www.debian.org/doc/debian-policy/ch-relationships.html|Debian Packaging Manual] | Informationen über das Erstellen von Debian Paketen
[http://www.debian.org/doc/manuals/repository-howto/repository-howto.de.html|Debian repository-howto] | Eine detaillierte Anleitung wie man Debian repositorys erstellt
[http://www.apt-get.org/|apt-get.org] | Beispiele von "echten" Debian repositorys
||
Related Downloads
|| File | Beschreibung
[http://asic-linux.com.mx/~izto/checkinstall/|CheckInstall] | Ein Programm um automatisch Debian und RPM-Pakete zu erstellen. Sehr nützlich!
||
Booten vom Netzwerk
Das booten eines Betriebssystems oder Installation eines Betriebssystems über einen so genannten „Netzwerk-Boot“ wäre eine praktische Sache: So könnte man die Server installieren ohne ein CD-ROM Laufwerk einzubauen, oder man könnte eine „Notfall-Konsole“ vom Netzwerk aus starten wenn das Betriebssystem mal kaputt ist um es zu reparieren und seine Daten zu Retten.
Mit einem zusätzlichen Webserver lassen sich dann auch komplexe automatisierte Installationen machen.
Hier wollen wir mal Schritt für Schritt beschreiben wie man einen Netzwerkboot einrichtet.
Continue reading Booten vom Netzwerk
Papierkorb für Netzlaufwerke
__ Falls man auf einem Netzlaufwerk Dateien löscht, werden diese normalerweise nicht in den Papierkorb verschoben, sondern direkt und unwiederbringlich gelöscht.
Wünscht man sich auch für Netzlaufwerke einen "Papierkorb" lässt sich dies mit einem kleinen samba-feature einfach Nachrüsten. __
Dazu trägt man einfach bei der entsprechenden samba freigabe folgendes ein:
[FreigabeMitPapierkorb] comment = Temporary file space path = /share public = yes # vfs modul 'Papierkorb' einbinden vfs objects = recycle recycle: repository = .recycle recycle: keeptree = Yes recycle: exclude = <em>.tmp, </em>.temp, <em>.log, </em>.ldb recycle: exclude_dir = tmp recycle:versions = Yes |
Hinweise zur Verwendung der Parameter liefert die [http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/VFS.html#id2651247|SAMBA-Dokumentationsseite] zu VFS-Objekten; dort finden sich auch einige andere interessante Beispiele.
Virenscanner
[stextbox id=“warning“ caption=“Achtung“]Diese Seite befindet sich noch in der bearbeitung – Benutzen auf eigene Gefahr![/stextbox]
__ Bei Fileservern ist es wichtig diese sauber zu halten; Viren und Würmer verbreiten sich oft auch auf Netzlaufwerken.
Mit "samba-vscan" gibt es eine gute Lösung, die Viren "on-access" scannt, d.h. jede Datei die auf den Fileserver kopiert wird, wird auf Viren überprüft; ist die Datei ein Virus wird diese automatisch in quarantäne gestellt; es lassen sich also keine Viren mehr auf Netzlaufwerken erstellen. __
LDAP-Verzeichnisserver
[stextbox id=“warning“ caption=“Achtung“]Diese Seite befindet sich noch in der bearbeitung – Benutzen auf eigene Gefahr![/stextbox]
__ LDAP-Verzeichnisse stellen eine art globale Datenbank dar. -Die einfachtse Anwendung ist hier z.B. das Führen von Firmen-/ oder Familienweiten Adressbüchern.
Oftmals kennt man dies von den Mailsystemen in Outlook oder Lotus Notes, bei dem man einfach nur den Namen des Mitarbeiters eingeben kann und die e-mail Adresse erscheint. Oder die "Who-is-who" Verzeichnisse, bei denen man die Telefonnummern, Foto, usw. von anderen mitarbeitern nachschlagen kann.
Doch mit LDAP lässt sich noch viel mehr machen. Man kann sozusagen das gesammte inventar in einem LDAP-Verzeichniss speichern und interessante Web-Anwendungen damit machen.
Wir werden hier jetzt auf Debian-etch einen solchen LDAP-Server installieren und in anderen Tutorials spezifisch erweitern (z.B. für SAMBA).
Zusätzlich wird mit phpLDAPadmin noch eine schöne Web-Administraions Oberfläche aufgesetzt. __
Vorbemerkungen
Unter Debian genügen die "apt-get install" aufrufe, da dort alle Abhängigkeiten automatisch installiert werden. Für andere Distributionen hier die Pakete die benötigt werden; diese kann man sich seperat downloaden und dann z.B. mit "rpm -ihv [paket]" installieren.
Grundinstallation des LDAP Dienstes
Benötigte Software-Pakete
Main Pakages
- libiodbc2
- libldap-2.3-0 libslp1
- libslp1
Dependencies
- make, gcc, gcc++
- gengetopt libpopt-dev python-crypto
- libpopt-dev
- python-crypto
Installation
Zunächst mal die abhängikeiten installieren (kann nicht verkehrt sein g):
apt-get install make gcc gcc++ gengetopt libpopt-dev python-crypto |
Dann LDAP selbst:
apt-get install slapd ldap-utils |
Nun müssen wir den noch rekonfigurieren:
dpkg-reconfigure slapd |
Die Fragen werden nun wie folgt beantwortet:
<SMALL>Hinweis: Der DNS-Name kann auch etwas anderes sein, z.B. ‚fileserver.home.meinName.tld‚</SMALL>
Soll die OpenLDAP-Server-Konfiguration ausgelassen werden?: Nein
DNS Name: samba.local
Name seiner Organisation: samba.local
Admin Kennwort: 123456
Kennwort wiederholen: 123456
Zu verwenden Datenbankmaschine : BDB
soll die Datenbank entfernt werden, wenn slapd vollständig gelöscht wird?: Nein
Es möchte die alte Datenbank verschieben: Ja__
LDAPV2: Nein
Testen kann man das ganze nun mit:
ldapsearch -x -b "dc=samba,dc=local" |
(oder halt der DNS Name, den ihr eingegeben habt)
Dabei sollte sowas rauskommen:
# extended LDIF # # LDAPv3 # base with scope subtree # filter: (objectclass=*) # requesting: ALL # # samba.local dn: dc=samba,dc=local objectClass: top objectClass: dcObject objectClass: organization o: samba.local dc: samba # admin, samba.local dn: cn=admin,dc=samba,dc=local objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2 |
Nun müssen wir noch den apache2-webserver installieren (für die Weboberfläche):
apt-get install apache2 |
Und schliesslich die Weboberfläche selbst 😉 :
apt-get install phpldapadmin |
Nun kann man sich unter: http://IP-DES-SERVERS/phpldapadmin anmelden und Einträge hinzufügen.
Auf diese kann man nun ganz einfach mit Thunderbird, Outlook, usw. zugreifen.
Hier die Schritte für Thunderbird:
# Extras – Adressbuch
# Extras – Einstellungen
# Unter "Verfassen" die Registerkarte "Adressieren" wählen
# Häckchen bei "LDAP-Verzeichnisserver", dann "Anpassen" drücken
# "Hinzufügen" wählen
# Daten Eingeben, z.B. LDAP-Server / 10.0.0.3 / cn=admin,dc=samba,dc=local
Für ein Adressbuch reicht dies bereits aus. Wer bereits SAMBA als Domaincontroller einsetzt interessiert sich vielleicht auch für die nächsten Schritte, wenn wir LDAP in SAMBA integrieren.
Logging einrichten
Standardmässig werden die LDAP-Meldungen ins syslog geloggt. Da man aber besonders beim deubbgen extrem viele Meldungen bekommt, möchte man besser ein eigenes Logfile dafür haben.
Dazu muss man in syslog-deamon nur den Eintrag: "local4" konfigurieren:
touch /var/log/ldap.log chown openldap:openldap /var/log/ldap.log echo "local4.* /var/log/ldap.log" >> /etc/syslog.conf /etc/init.d/sysklogd restart && /etc/init.d/slapd restart |
Die Meldungen des LDAP-Servers werden nun unter: /var/log/ldap.log gespeichert.
Integration in einen SAMBA Server
Dieses Tutorial geht davon aus, dass ein SAMBA Domaincontroller bereits nach dem Linux Fileserver Tutorial einsatzbereit läuft.
LDAP Anpassungen
Zusätzliche Software
Für die Installation von PAM mit OpenLDAP werden noch die folgenden Pakete beötigt: libnss-ldap, libpam-ldap und nscd.
apt-get install libnss-ldap libpam-ldap nscd |
Die folgenden Fragen wie folgt beantworten:
Make local root Database admin: Ja
Does the LDAP database require login: Nein
Root login account: cn=admin,dc=samba-ldap,dc=local
Root login password: samba-ldap
Local crypt to use when changing passwords: crypt
LDAP Server host: 127.0.0.1
The distinguished name of the search base: dc=samba-ldap,dc=local
LDAP version to use: 3
Datenbank benötigt Login: Nein
Konfiguration nur für den Eigentümer les-/schreibbar machen: Ja
Nun muss noch der NSCD-Dienst gestartet werden:
/etc/init.d/nscd start |
Nun können wir LDAP an SAMBA anpassen. Dazu generieren wir als erstes mal ein Verschlüsseltes LDAP-Passwort:
slappasswd |
Die Ausgabe, etwas wie: " {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+" können wir gleich in die Zwischenablage kopieren.
Nun das File: /etc/ldap/slapd.conf öffnen und die 2 Zeilen rootdn/rootpw ändern/einfügen (rootpw ist das Passwort, dass wir vorhin erstellt haben):
rootdn "cn=admin,dc=samba-ldap,dc=local" rootpw {SSHA}EDmTvpZ56jZAOelNPBR4MwReReHNJXo+ |
Da wir für unsere Anwendung ganz andere Zugrissrechte als die Standardmässigen benötigen, schiessen wir die folgenden am besten gleich raus:
access to attrs=userPassword by dn="cn=admin,dc=samba-ldap,dc=local" write by anonymous auth by self write by * none access to dn.base="" by * read access to * by dn="cn=admin,dc=samba-ldap,dc=local" write by * read |
Dafür setzten wir nun diese ein:
access to attrs=userPassword by self write by anonymous auth by * none access to attrs=sambaLMPassword by self write by anonymous auth by * none access to attrs=sambaNTPassword by self write by anonymous auth by * none access to * by * read |
Dann muss noch die Zeile:
index objectClass eq |
ersetzt werden durch:
index objectClass,uidNumber,gidNumber eq index cn,sn,uid,displayName pres,sub,eq index memberUid,mail,givenname eq,subinitial index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq |
Nun können wir diese Datei schliessen und dafür: /etc/default/slapd öffnen.
Dort ersetzen wir:
SLAPD_OPTIONS="" |
in
SLAPD_OPTIONS="-4" |
, speichern und schliessen die Datei und öffnen: /etc/ldap/ldap.conf.
Hier tragen wir noch HOST, BASE und URI ein:
HOST 127.0.0.1 BASE dc=samba-ldap,dc=local URI ldap://localhost:389 |
SAMBA Anpassungen
Zusätzliche Software
Als erstes müssen wir nun noch die samba-Dokumentation, die smbldap-tools, sowie das Tool: "mkntpwd" installieren; letzteres ist dazu da NT-Passwörter zu kreieren.
apt-get install samba-doc |
Dann noch einige LDAP-Tools:
apt-get install smbldap-tools |
Um die funktionstüchtigkeit von den sambaldap-tools zu gewärleisten, müssen noch einige Perl-Module installiert werden:
apt-get install libnet-ldap-perl libcrypt-smbhash-perl libunicode-maputf8-perl libio-socket-ssl-perl libdigest-sha1-perl |
Dazu müssen wir noch die smbldap-tools configfiles kopieren:
gunzip -c /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf cp -pv /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf |
Nach dem wir alle Perl-Module installiert haben, können wir einen Test der sambaldap-tools machen:
smbldap-usershow |
Kommt nun folgende Ausgabe, hat die Installation des sambaldap Tools und die Installation der Perl Module funktionert:
(c) Jerome Tournier - IDEALX 2004 (<a href="http://www.idealx.com)-" target="blank">http://www.idealx.com)-</a> Licensed under the GPL Usage: /usr/local/sbin/smbldap-usershow [-?] username -? show this help message |
mkntpwd muss kompiliert werden:
$ cd /opt/ wget <a href="http://www.silcom.com.pe/soft/mkntpwd.tar.gz" target="blank">http://www.silcom.com.pe/soft/mkntpwd.tar.gz</a> tar -zxf mkntpwd.tar.gz cd mkntpwd make cp mkntpwd /usr/local/bin |
Testen mit:
mkntpwd |
Ausgabe:
# mkntpwd Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd] mkntpwd password mkntpwd -f [-] [filename] -L lanmgrpasswd LanManager cleartextpwd <= 14 chars -N ntpasswd NT cleartextpwd <=128 chars (usually <=14) with both options present the encrypted LanManager-Pwd is printed first, followed by a ':' and the encrypted NT-Pwd. The second usage behaves like mkntpwd -L pwd -N pwd The third usage reads the password from STDIN or a File. Printout is the same as second. anton@genua.de |
smbldap-tools Konfiguration
Nun können wir die smbldap-tools konfigurieren.
Als erstes müssen wir die so genannte SID unserer Domäne ermitteln. Diese wird bei jeder Domäne anders aussehen, deswegen nicht wundern wenn Ihr eine andere habt als hier angegeben.
net getlocalsid SAMBA-LDAP |
SID for domain SAMBA-LDAP is: S-1-5-21-2856778860-2055491937-1446371655
Diese SID müssen wir jetzt in die smbldap.conf einfügen:
/etc/smbldap-tools/smbldap.conf
Dort suchen wir jetzt nach dem SID Eintrag und löschen das Beispiel von IDEALIX.ORG raus und tragen dafür unseren ein:
SID="Eure SID" |
Als nächstes müssen wir den Wert sambaDomain in dieser Datei auf unsere Domäne so wie in der smb.conf angegeben abändern:
sambaDomain="SAMBA-LDAP" |
Wir verwenden in diesem HowTo keine Verschlüsselung und somit können wir ldapTLS auf = 0 setzen.
ldapTLS="0" |
Für die Installation benötigen die smbldap-tools noch unseren LDAP Suffix:
suffix="dc=samba-ldap,dc=local" |
Wie in der smb.conf angegeben verwalten wir die Computer Accounts im SubTree Machines. Aus diesem Grund müssen wir noch den computersdn ändern:
computersdn="ou=Machines,${suffix}" |
Um herauszufinden welche UnixIDs noch frei sind müssen wir noch angeben in welchen Domain Pools nach freien IDs suchen soll:
sambaUnixIdPooldn="sambaDomainName=SAMBA-LDAP,${suffix}" |
Da wir schon in der smb.conf schon angeben haben wo sich das Home Verzeichnis der Benutzer befindet können wir den Wert userSmbHome auf „“ setzen.
userSmbHome="" |
Das gleiche auch mit den Benutzerprofilen:
userProfile="" |
Nun hinterlegen wir noch den Laufwerksbuchstaben für das Persönliche Laufwerk:
userHomeDrive="H:" |
Da auch die smbldap-tools wissen müssen in welchem Server die Daten gespeichert warden sollen, tragen wir jetzt in die /etc/smbldap-tools/smbldap_bind.conf die benötigten Werte ein.
/etc/smbldap-tools/smbldap_bind.conf
Die vorhanden Daten ersetzen wir gegen:
slaveDN="cn=admin,dc=samba-ldap,dc=local" slavePw="samba-ldap" |
masterDN="cn=admin,dc=samba-ldap,dc=local" masterPw="samba-ldap" |
Nun gehts ans anpassen der Samba-Config.
<EM>Achtung: </EM>Wenn ihr den Samba-Server schon produktiv im einsatz habt am besten ein Backup der smb.conf machen: cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap! -Dann könnt ihr, falls was schief geht durch austauschen der smb.conf.noldap wieder die alte Funktionalität herstellen.
Folgende zusätzliche Änderungen sind nun in die /etc/samba/smb.conf Einzutragen:
# Password Backend passdb backend = ldapsam:ldap://127.0.0.1/ |
# Samba Tools zur Verwaltung der Benutzer, Gruppen und Computerkonten im LDAP add user script = /usr/local/sbin/smbldap-useradd –m –a “%u” delete user script = /usr/local/sbin/smbldap-userdel “%u” add group script = /usr/local/sbin/smbldap-groupadd –p “%g” delete group script = /usr/local/sbin/smbldap-groupdel “%g” add user to group script = /usr/local/sbin/smbldap-groupmod –m “%u” “%g” delete user from group script = /usr/local/sbin/smbldap-groupmod –x “%u””%g” set primary group script = /usr/local/sbin/smbldap-usermod –g “%u” “%g” add machine script = /usr/local/sbin/smbldap-useradd –w “%u” |
# LDAP werte für den Zugriff von Samba auf die LDAP Datenbank ldap admin dn = cn=admin,dc=samba-ldap,dc=local ldap delete dn = Yes ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap machine suffix = ou=Machines ldap passwd sync = Yes ldap suffix = dc=samba-ldap,dc=local ldap ssl = no host msdfs = Yes |
# Administratoren des Servers – alle Aktionen warden mit dem Systembenutzer root # ausgeführt admin users = root, Administrator |
Damit LDAP auch weiß, wie es mit Samba Benutzern und seinen Passwörtern umzugehen hat müssen wir jetzt noch das samba Schema entpacken und in der slapd.conf eintrage.
gunzip –c /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema |
In der Datei slapd.conf im /etc/ldap/ Verzeichniss tragen wir nach den vorhanden Schemas noch das samba.schema ein, wie unten zu sehen ist.
# Schema and objectClass definitions include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/samba.schema |
Damit der smbd und LDAP auch miteinander Kommunizieren können und dürfen muss noch das admin Kennwort in der secrets.tdb hinterlegt werden. Dies geschieht durch den smbpasswd Befehl mit der Option –w.
Das Passwort muss natürlich angepasst werden.
smbpasswd -w samba-ldap |
Ausgabe:
"Setting stored password for "cn=admin,dc=samba-ldap,dc=local" in secrets.tdb"
Systen Anpassen / PAM-NSS
Testumgebung einrichten
Wenn man einen Produktiven SAMBA-PDC auf LDAP authentifizierung upgraded, kann es in der Anfangsphase häufig zu Problemen kommen, so dass ein login an der Domäne teilweise gar nicht mehr möglich ist.
Hat man also keine Testumgebung zur Verfügung, bzw. arbeiten schon user an der Domäne, muss man diese quasi auf "knopfdruck" wieder zur alten Konfiguration herstellen können.
Ich habe mir zu diesem zeck von jedem configfile, dass verändert wird 2 Kopien gemacht: Eine ldap-version und eine noldap-Version. Mit 2 kleinen Scripts setze ich jeweils links auf diese Versionen. Die noldap-Version habe ich zudem mit dem "immutable" attribut ausgestattet, damit sicher gestellt wird, dass diese nicht verändert werden kann.
So richtet man sich eine solche Umgebung ein:
pam.d-Verzechnis auserhalb des /etc kopieren:
cp -pRv /etc/pam.d /root/ldap-pam |
2 Versionen der Files anlegen:
cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.ldap cp -pv /root/ldap-pam/common-account /root/ldap-pam/common-account.noldap cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.ldap cp -pv /root/ldap-pam/common-auth /root/ldap-pam/common-auth.noldap cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.ldap cp -pv /root/ldap-pam/common-password /root/ldap-pam/common-password.noldap cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.ldap cp -pv /root/ldap-pam/common-session /root/ldap-pam/common-session.noldap cp -pv /root/ldap-pam/login /root/ldap-pam/login.ldap cp -pv /root/ldap-pam/login /root/ldap-pam/login.noldap cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.ldap cp -pv /etc/samba/smb.conf /etc/samba/smb.conf.noldap |
Funktionierende Config unveränderbar machen:
chattr -V +i /root/ldap-pam/*.noldap chattr -V +i /etc/samba/smb.conf.noldap |
Scripts schreiben:
vi /root/ldapon.sh
ln -vs /root/ldap-pam/common-account.ldap /etc/pam.d/common-account ln -vs /root/ldap-pam/common-auth.ldap /etc/pam.d/common-auth ln -vs /root/ldap-pam/common-password.ldap /etc/pam.d/common-password ln -vs /root/ldap-pam/common-session.ldap /etc/pam.d/common-session ln -vs /root/ldap-pam/login.ldap /etc/pam.d/login ln -vs /etc/samba/smb.conf.ldap /etc/samba/smb.conf /etc/init.d/samba restart |
vi /root/ldapoff.sh
ln -vs /root/ldap-pam/common-account.noldap /etc/pam.d/common-account ln -vs /root/ldap-pam/common-auth.noldap /etc/pam.d/common-auth ln -vs /root/ldap-pam/common-password.noldap /etc/pam.d/common-password ln -vs /root/ldap-pam/common-session.noldap /etc/pam.d/common-session ln -vs /root/ldap-pam/login.noldap /etc/pam.d/login ln -vs /etc/samba/smb.conf.noldap /etc/samba/smb.conf /etc/init.d/samba restart |
Scripts ausführbar machen:
chmod 755 /root/ldapon.sh chmod 755 /root/ldapoff.sh |
So kann ich einerseits die "normalen" configdateien in /etc/pam.d bearbeiten (da sie ja nur links sind) nicht ausversehen die "falschen" editieren (da sie unveränderbar sind) und mittels /.ldapon.sh, bzw. /.ldapoff.sh jederzeit die LDAP-, oder die (funktionierende) nicht-LDAP Umgebung aufrufen.
Hinweis: Läuft die LDAP-Konfiguration sollte man die links unter /etc/pam.d/ löschen und stattdessen die *.ldap Files wieder Zurück kopieren.
So, nun werden die Security-Module des Systems noch so konfiguriert, dass auch das ganze Linux System die Infos zuerst aus der LDAP-Datenbank liesst.
<EM>Achtung:</EM> Damit wird ggf. das /etc/passwd /etc/groups und /etc/shadow System ungültig! -Die User/PW Daten sind dann alle in der LDAP Datenbank!
Daher erfolgt hier zu einigen der zu bearbeitenden Dateien eine genauere Beschreibung; es ist sehr wichtig zu wissen, was ihr hier ändert!
PAM common settings für alle Services
<SMALL>PAM steht für "Pluggable Authentication Modules". Diese regeln unter Linux den Modus für die Zugriffs-Liste. Standardmässig werden bei einem Unix-System die Benutzer-Infos aus den Dateien: /etc/passwd /etc/groups und /etc/shadow gelesen.
Diese kann man aber im PAM Modul ändern, so dass die Infos z.B. auch aus einer mysql, oder eben LDAP Datenbank (oder beiden) geholt werden können.
Es gilt grundsätzlich, dass zuerst der erste Eintrag in der Reihenfolge abgefragt wird, dann der Zweite, dann der dritte, usw.
D.h. wenn ich einem PAM File angebebe, dass die User-Authentifizierung über LDAP, mysql, passwd erfolgen soll, wird bei einem Login erst das LDAP verzeichnis abgefragt; findet sich die Info darin erfolgt das Login, falls nicht wird die mysql, dann das passwd-file, usw. abgefragt. Ist die Information in allen angegebenen sourcen nicht verfügbar wird eine "login failed" fehlermeldung ausgegeben.</SMALL>
/etc/pam.d/
<SMALL>Im Verzeichnis /etc/pam.d werden die Konfigurationsdateien für jeden Service gespeichert, der die PAM Module nutzt. In unserem Fall also z.B. samba/ldap.</SMALL>
/etc/pam.d/common-account
<SMALL>Das Account Modul regelt ob und wie sich ein benutzer einloggen kann und schaut z.B. nach ob das PW abgelaufen ist, er sich nur zu bestimmten tagen einloggen darf oder ob er sich remote bzw. über die Konsole anmeldet, usw.</SMALL>
account required pam_unix.so account sufficient pam_ldap.so |
/etc/pam.d/common-auth
<SMALL>Im Auth-Modul wird geprüft ob es den Benutzer gibt, dieser ein gültiges Passwort eingegeben hat und zu welcher Gruppe dieser gehört. (Standardmässig sind das die Files: /etc/passwd, /etc/shadow und /etc/group)</SMALL>
auth sufficient pam_unix.so nullok_secure auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so |
/etc/pam.d/common-password
<SMALL>Dieses Modul regelt das updaten/ändern des User-Passworts</SMALL>
password sufficient pam_unix.so nullok obscure min=4 max=8 md5 password sufficient pam_ldap.so use_first_pass use_authtok password required pam_deny.so |
/etc/pam.d/common-session
<SMALL>Dinge die getan werden, bevor der Benutzer sich einloggt; dies sind z.B. das Mounten von User-Spezifischen verzeichnissen, Umgebungsvariablen, usw.</SMALL>
session required pam_unix.so session optional pam_ldap.so |
/etc/nsswitch.conf
<SMALL>Diese Datei enthält die Sourcen wo bestimmte system-calls ihre Informationen abrufen. Die Shell kann sich z.B. die Passwörter von Files oder Datenbanken holen, die Namensauflösung vom DNS-Server, usw.</SMALL>
passwd: compat ldap group: compat ldap shadow: compat ldap |
NSS anpassen
/etc/libnss-ldap.conf
~ Zeile: 50
rootbinddn cn=admin,dc=samba-ldap,dc=local |
~ Zeile: 179
nss_base_passwd ou=Users,dc=samba-ldap,dc=local?one |
nss_base_passwd ou=Machines,dc=samba-ldap,dc=local?one |
nss_base_shadow ou=Users,dc=samba-ldap,dc=local?one |
nss_base_group ou=Groups,dc=sama-ldap,dc=local?one |
~ Zeile: 217
pam_password md5 |
~ Zeile: 275
ssl no |
Nun haben wire s fast geschaft. Jetzt müssen wir nur noch die Grunddaten in die LDAP Datenbank schreiben.
Da bei manchen Installationen beim ersten Start nach der Installation nur fehlerhafte Daten in die Datenbank geschrieben werden, werden wir diese erstmal stoppen und dann löschen. Nach einem erfolgreichen löschen der Daten müssen wir allerdings vor dem Eintragen unserer Daten die LDAP Datenbank wieder starten.
debain-pdc:~# /etc/init.d/slapd stop
debian-pdc:~# rm /var/lib/ldap/.
debian-pdc:~# /etc/init.d/slapd start
Nun ist die Datenbank soweit vorbereitet damit wir unsere Daten mit smbldap-populate einspielen:
smbldap-populate |
Ausgabe:
Populating LDAP directory for domain SAMBA-LDAP (S-1-5-21-2856778860-2055491937-1446371655) (using builtin directory structure) adding new entry: dc=samba-ldap,dc=local adding new entry: ou=Users,dc=samba-ldap,dc=local adding new entry: ou=Groups,dc=samba-ldap,dc=local adding new entry: ou=Machines,dc=samba-ldap,dc=local adding new entry: ou=Idmap,dc=samba-ldap,dc=local adding new entry: uid=root,ou=Users,dc=samba-ldap,dc=local adding new entry: uid=nobody,ou=Users,dc=samba-ldap,dc=local adding new entry: cn=Domain Admins,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Domain Users,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Domain Guests,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Domain Computers,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Administrators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Account Operators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Print Operators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Backup Operators,ou=Groups,dc=samba-ldap,dc=local adding new entry: cn=Replicators,ou=Groups,dc=samba-ldap,dc=local adding new entry: sambaDomainName=SAMBA-LDAP,dc=samba-ldap,dc=local Please provide a password for the domain root: Changing password for root New password : samba-ldap Retype new password : samba-ldap |
Jetzt können wir den smbd Final neustarten und versuchen auf die Freigaben zu zugreifen.
/etc/init.d/samba restart |
Related Links
|| Link | Beschreibung
[http://www.openldap.org/|openldap.org] | Der bekannte LDAP Server für Linux, Dokumentation
[http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP.html|YoLinux LDAP Tutorial] | Gutes tutprial mit lauffähigem Beispiel
[http://www.pro-linux.de/t_office/openldap-adressbuch.html|Openldap Adressbuch] | Infos für die integration in Outlook/Thunderbird/etc. Clients
[http://www.linux-magazin.de/heft_abo/ausgaben/2001/05/straffe_verwaltung|Linux-Magazin: OpenLDAP Praxis] | Einige interessante Info szum Aufbau von LDAP Servern
[http://www.samba-ldap.de/|samba-ldap.de] | Eine Ganze Webseite, die sich mit dem Thema beschäftigt
||
Related Downloads
|| File | Beschreibung
[http://phpldapadmin.sourceforge.net/|phpLDAPadmin] | Sehr schöne Weboberfläche für die Administration von LDAP-Servern
[http://www-unix.mcs.anl.gov/~gawor/ldap/|LDAPBrowser] | JAVA LDAP-Browser um die LDAP-Verbindung zu testen und Einträge zu Erstellen; klappt damit manchmal besser als mit dem Web-Tool!
||
Printserver
Hat man erst mal einen SAMBA-Fileserver eingerichtet, möchte man auch die Drucker über diesen steuern; besonders bei Netzwerkdruckern wird man die erweiterten Möglichkeiten wie History der gedruckten Dokumente, Druckerstatus, usw. Nutzen.
Und das schönste: Mittlerweile ist die Einrichtung mit SAMBA & CUPS kein Problem mehr!
Continue reading PrintserverNamesverwaltung mit DNS
In diesem Tutorial werden wir einen Nameserver mit bind auf CentOS erstellen. Die Konfiguration halten wir dabei sehr flexibel, dass man diesen sowohl als DNS-Server fürs lokale Netzwerk zuhause, wie auch als „Webhosting-Nameserver“ gebrauchen kann.
Continue reading Namesverwaltung mit DNS
DHCP
DHCP steht für <I>Dynamic Host Configuration Protocol</I> und ist ein Protokoll, mit dem sich ein Computer selbständif fürs Netzwerk konfigurieren kann.
[stextbox id=“note“ caption=“Hinweis“]Falls beim Start des DHCPs ein Fehler kommt, muss man ihn vorher evtl. auf eth1 (statt standardmässig eth0) um konfigurieren.
Bei Debian geht das so:
vi /etc/default/dhcp |
, dort das verwendete (interne) interface eintragen und mittels:
dpkg-reconfigure dhcp |
neu Konfigurieren.[/stextbox]
Nun öffnen wir die DHCP Konfigurations-Datei mittels: vi /etc/dhcpd.conf -Falls diese Datei noch nicht existiert, muss sie erstellt werden.
Darin schreiben wir folgendes (evtl. schon vorhandenen Text löschen):
subnet 10.1.1.0 netmask 255.255.255.0 { # Global options range 10.1.1.100 10.1.1.240; option subnet-mask 255.255.255.0; option routers 10.0.0.1; option domain-name-servers 10.1.1.3; option domain-name "home.lan"; option ip-forwarding on; option netbios-node-type 1; } |
Mit dem obigen Code definieren wir mit der Zeile subnet 10.1.1.0 netmask 255.255.255.0 ein Klasse-A-Netzwerk (10.1.1.x) mit der Netzmaske: 255.255.255.0, dies entspricht der Konfiguration, die wir im ersten Artikel bei allen Computern eingetragen haben.
Innerhalb der geschweiften Klammern können wir dann angeben, wie die einzelnen PCs konfiguriert werden sollen:
- der DHCP-Server IP-Adressen von 10.1.1.100-10.1.1.240 vergeben kann <SMALL>(range 10.1.1.100 10.1.1.240)</SMALL>
- die subnet maske immer auf 255.255.255.0 gesetzt wird <SMALL>(option subnet-mask 255.255.255.0;)</SMALL>
- Das Standard Gateway auf: 10.1.1.1 <SMALL>(option routers 10.1.1.1;)</SMALL>
- Der DNS Server auf 10.1.1.3 (Das wird später unser DNS) <SMALL>(option domain-name-servers 10.1.1.3;)</SMALL>
- Das DNS Suffix auf home.lan gesetzt wird; d.h. es werden allen lokalen Namen der Zusatz home.lan angehängt. So kann man später einfach pc01 wählen, anstatt der volle Name: pc01.home.lan. Dies macht natürlich nur Sinn, wenn man nachher den DNS Server noch aufsetzt… g<SMALL>(option domain-name "home.lan";)</SMALL>
- IP-Forwarding aktiviert wird <SMALL>(option ip-forwarding on;)</SMALL><LI>NetBIOS über TCP/IP aktiviert wird <SMALL>(option netbios-node-type 1;)</SMALL>
Nun würden alle PCs jeweils eine zufällige IP-Adresse von 10.1.1.100 bis 10.1.1.240 bekommen, was zwar ganz praktisch ist, wenn mal ein fremder PC ans Netzwerk angeschlossen wird, aber eher weniger geeignet, für unsere festen PCs, da wir uns ja dann nie recht wüssten was für eine IP wir gerade haben. Deshalb geben wir den festen PCs im Netzwerk auch eine feste IP-Adresse.
Diese definieren wir mit:
host pc-name { hardware ethernet 00:00:00:00:00:00; fixed-address 0.0.0.0; } |
host pc-name leitet hier die Konfiguration für den PC mit dem namen pc-name ein, die Optionen in den geschweiften Klammern bedeuten:
- Die Physikalische Adresse der Netzwerkkarte des PCs pc-name (du findest diese Adresse raus, wenn du in Windows 2000/XP unter Start-Ausführen-cmd ipconfig /all eingibst*) <SMALL>(hardware ethernet 00:00:00:00:00:00; )</SMALL>
- Die feste IP Adresse, z.B. 10.0.0.10 für den ersten PC <SMALL>(fixed-address 0.0.0.0;)</SMALL><SMALL>*Windows zeigt die Hardware-Adresse in der Form 00-AA-00-00-00-00 an; für die DHCP-Konfiguration musst du aber : als Trenner verwenden und nicht -!</SMALL>
Ein solcher host-block musst du nun für jeden PC im Netzwerk definieren, der eine feste IP-Adresse bekommen soll; diese Blöcke müssen wiederum innerhalb des subnet-blocks stehen.
Für unsere 3 PCs aus dem ersten Beitrag sähe die Konfigurationsdatei dhcpd.conf also so aus (Die Physikalischen Adressen sind rein zufällig und müssen angepasst werden!):
################################################################################ # # # DHCP Configuration for home.lan on eth1 # # # ################################################################################ subnet 10.1.1.0 netmask 255.255.255.0 { #Globale Optionen range 10.1.1.100 10.1.1.240; option subnet-mask 255.255.255.0; option routers 10.0.0.1; option domain-name-servers 10.1.1.3; option ip-forwarding on; option netbios-node-type 1; #Einzelkonfigurationen host pc01 { hardware ethernet 00:FF:00:33:00:BB; fixed-address 10.1.1.10; } host pc02 { hardware ethernet BB:00:20:00:FF:00; fixed-address 10.1.1.20; } host pc03 { hardware ethernet 22:FF:00:00:00:AA; fixed-address 10.1.1.30; } } |
Damit hättest du den DHCP-Server auch schon fertig konfiguriert!
Nun kannst du den DHCP-Server starten mit:
/etc/init.d/dhcp start |
Related Links
|| Link | Beschreibung
[http://www.geo.uni-bonn.de/members/kuepper/linux/DHCP.txt|DHCP-Textfile] | Umfangreiche Informationen über die Einstellungsmöglichkeiten beim DHCPD
||
Zusätzliche Services Installieren
Nachdem wir nun ein sicheres Gateway installiert und dieses abgeschottet haben, kommen wir zum dritten Teil des Workshops: Das konfortable Verwalten des Netzwerks mittels DHCP und DNS, sowie das aktivieren von Services auf Drittrechnern, wie z.B. Webserver mittels Port Forwarding.
Zum Schluss wird noch gezeigt, wie man die Firewall selbstständig erweitern kann.