Freitag, 11. März 2011

Samba Multi-Domain Authentifizierung mit Windows-ADS und RHEL 5.4

Die Herausforderung in diesem HowTo ist die Anbindung eines Linux-Servers an eine bestehende MS ADS-Domaene.

Der Knackpunkt hierbei ist dass eine Anmeldung am Linux-Server fuer zwei Domaenen funktionieren muss. Es handelt sich um die Domaene "Bremen.local" und "Hamburg.local". Die Authentifizierung soll außerdem fuer Samba via dem Hoellenhund "Kerberos" moeglich sein und auch eine SSH-Verbindung muss mit Domain-Authentifizierung funktionieren.

Nun nicht lange schnaggen, Kopp in' Nacken! ;=)


1. System- und Paketinformationen
Linux: Red Hat Enterprise Linux 5.4
IP = 10.14.8.138
Name = client01

Kerberos: rpm -qa | grep "krb"
krb5-auth-dialog-0.7-1
krb5-workstation-1.6.1-36.el5
pam_krb5-2.2.14-10
krb5-devel-1.6.1-36.el5
krb5-libs-1.6.1-36.el5
pam_krb5-2.2.14-10
krb5-libs-1.6.1-36.el5_5.6

Samba: rpm -qa | grep "samba"
samba3-client-3.5.8-43.el5
samba3-utils-3.5.8-43.el5
samba3-cifsmount-3.5.8-43.el5
samba3-3.5.8-43.el5
samba3-winbind-3.5.8-43.el5
samba3-debuginfo-3.5.8-43.el5

Active Directory:
Windows 2008 Domaene = Hamburg.local
Windows 2000 Domaene = Bremen.local


2. Installation - Pakete / Dienste
Zunaechst muessen wir uns die aktuellen Pakete von Sernet herunterladen:
http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64
Wir benoetigen ALLE Pakete die dort aufgelistet sind.

Dann deinstallieren wir alle vorhandenen Pakete (Samba v. 3.4.9):
rpm -e --allmatches --nodeps samba3-cifsmount-3.4.9-42.el5
rpm -e --allmatches --nodeps samba3-utils-3.4.9-42.el5
rpm -e --allmatches --nodeps samba3-winbind-3.4.9-42.el5
rpm -e --allmatches --nodeps samba3-3.4.9-42.el5
rpm -e --allmatches --nodeps libsmbclient0-3.4.9-42.el5

Nun installieren wir alle neuen Samba-Pakete (Samba v. 3.5.8):
rpm -Fvh ldb-tools-3.5.8-43.el5.x86_64.rpm
rpm -Fvh libwbclient0-3.5.8-43.el5.x86_64.rpm
rpm -Fvh libwbclient-devel-3.5.8-43.el5.x86_64.rpm
rpm -Fvh libsmbclient0-3.5.8-43.el5.x86_64.rpm
rpm -Fvh libsmbclient-devel-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-client-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-cifsmount-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-debuginfo-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-doc-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-utils-3.5.8-43.el5.x86_64.rpm
rpm -Uvh samba3-winbind-3.5.8-43.el5.x86_64.rpm

Bei der Installation des Paketes "samba3-doc-3.5.8-43.el5.x86_64.rpm"
werden einige Perl-Fehler geworfen, da Abhaengigkeiten zu aktuelleren Paketen
"nicht" hergestellt werden koennen. -> Dies kann ignoriert werden!


3. Konfiguation - Kerberos
Um die Aufloesung der einzelnen Hosts im Netzwerk gewaehrleisten zu koennen,
sollte zwingend ein DNS-Server konfiguriert sein. Ist dies nicht der Fall, so
muessen alle DC's und der Linux-Server entsprechend in der /etc/hosts hinterlegt
werden.

Inhalt der /etc/hosts:
10.14.8.138 client01.hamburg.local client01
10.14.8.1 dchh01.hamburg.local dchh01
10.14.3.4 bremen-rootdc1.bremen.local bremen-rootdc1

- client01.hamburg.local ist hierbei unser Linux-Server
- dchh01.hamburg.local ist der Domaincontroller der Domaene "hamburg.local"
- bremen-rootdc1.bremen.local ist der Domaincontroller der Domaene "bremen.local"

Via dem PING-Tool koennen wir nun die Aufloesung von "Name" in "IP" ueberpruefen.

Um Kerberos nutzen zu koennen muessen wir die Konfigurationsdatei des Dienstes unterhalb von /etc/ anpassen:

Inhalt der /etc/krb5.conf:
[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log

[libdefaults]
default_realm = HAMBURG.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 600
forwardable = true
proxiable = true
default_keytab_name = FILE:/etc/krb5.keytab

[realms]
HAMBURG.LOCAL = {
kdc = dchh01.hamburg.local
master_kdc = dchh01.hamburg.local
admin_server = dchh01.hamburg.local
#default_domain = HAMBURG.LOCAL
}
BREMEN.LOCAL = {
kdc = bremen-rootdc1.bremen.local
}

[domain_realm]
.hamburg.local = HAMBURG.LOCAL
hamburg.local = HAMBURG.LOCAL
.bremen.local = BREMEN.LOCAL
bremen.local = BREMEN.LOCAL

[login]
krb4_convert = true
krb4_get_tickets = true

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = true
}


4. TEST - Kerberos-Authentifizierung
kinit administrator@HAMBURG.LOCAL
Password for administrator@HAMBURG.LOCAL: !wbc01 {ENTER}
-> "Administrator-Password" wird abgefragt, an dieser Stelle bitte das Passwort
eingeben und mit ENTER bestaetigen -> hier duerfen keine Fehler auftreten!

Ueberpruefen ob wir ein gueltiges Kerberos TGT Ticket erhalten haben:
klist
-> der Inhalt sollte so aussehen:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@HAMBURG.LOCAL
Valid starting Expires Service principal
01/20/11 17:36:17 01/21/11 03:39:06 krbtgt/HAMBURG.LOCAL@HAMBURG.LOCAL
renew until 01/21/11 17:36:17
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached


5. Konfiguration - Samba / Winbind
Nachdem der Kerberos-Dienst konfiguriert und erfolgreich getestet wurde,
muessen wir unseren Samba-Dienst entsprechend konfigurieren. Samba wird hierbei mit Hilfe von Winbind die Daten aus dem ADS von Microsoft beziehen (SID/RID, Gruppennamen, Benutzernamen) und diese dann auf die bekannten Linux UID's / GID's mappen.

Inhalt der /etc/samba/smb.conf:
# GLOBAL PARAMETERS
[global]
#netbios name = HAMBURG1
workgroup = HAMBURG
realm = HAMBURG.LOCAL
password server = *
preferred master = no
server string = Linux Test Server
security = ads
encrypt passwords = yes
local master = no
log level = 1
log file = /var/log/samba/%m
max log size = 50
#printcap name = cups
#printcap = cups
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind nested groups = Yes
winbind separator = \\
winbind refresh tickets = yes
winbind offline logon = true
winbind trusted domains only = no
map untrusted to domain = Yes
allow trusted domains = yes
obey pam restrictions = no
idmap backend = tdb
idmap uid = 10000-600000
idmap gid = 10000-600000
passdb backend = tdbsam
;template primary group = "domain users"
template shell = /bin/bash
winbind nss info = rfc2307
client use spnego = yes
client ntlmv2 auth = yes
restrict anonymous = 2

[homes]
comment = Heimatverzeichnisse
valid users = %S
path = /home/HAMBURG/
read only = no
browseable = no
create mask = 0700
directory mask = 0700

[testsh01]
comment = Rechtevergabe testen
valid users = root,@"domain users",@"BREMEN\domänen-benutzer"
path = /srv/smb/testsh
readonly = no
read list = @"domain admins",@"domain users"
write list = @"domain admins",@"domain users"
browseable = yes
force create mode = 0770
force directory mode = 0770
level2 oplocks = No
wide links = No
follow symlinks = No

Nachdem wir die Samba-Konfiguration ueberarbeitet haben, koennen wir mit "testparm" unsere smb.conf ueberpruefen.

Als naechstes legen wir die benoetigen Verzeichnisse an:
mkdir -p /home/HAMBURG
mkdir -p /home/DFD
mkdir -p /srv/smb/testsh

Da es unter 64-Bit Systemen (allgemein im Linux-Umfeld) immer mal wieder Probleme mit den Libaries / Bibliotheken gibt, kopieren wir diese noch an die richtigen Stellen im Dateisystem:
ln -s /lib/libnss_winbind.so.2 /lib/libnss_winbind.so
cp /lib/libnss_winbind.so* /usr/lib/
cp /lib/libnss_winbind.so* /usr/lib/security/
cp /lib/libnss_winbind.so* /lib64/
cp /lib/libnss_winbind.so* /usr/lib64/
cp /lib/libnss_winbind.so* /usr/lib64/security/
cp /lib/libnss_winbind.so* /usr/lib/nss/
cp /lib/libnss_winbind.so* /usr/lib64/nss/

Danach tragen wir den Samba-Dienst und Winbind-Dienst noch via "chkconfig" im Systemstart ein:
chkconfig smb on && chkconfig winbind on
Jetzt starten wir samba und winbind:
service smb start && service winbind start

Beide Dienste sollten nun gestartet sein, ein "ps ax | grep smb" bzw. "ps ax | grep winbind" sollte die jeweiligen Prozesse anzeigen.


6. Domain-Join (ADS)
Nachdem Samba, Winbind und Kerberos konfiguriert wurden, muessen wir unsere Linux-Maschine zum ADS hinzufuegen (sog. Domain-Join).

net ads join -U Administrator
-> "Administrator-Password" wird abgefragt, an dieser Stelle bitte das Passwort
eingeben und mit ENTER bestaetigen -> hier duerfen keine Fehler auftreten!

Auch hier duerfen "KEINE" Fehler auftreten. Nachdem der Join durchgefuehrt wurde muss eine Kerberos-Keytab Datei angelegt werden. Samba automatisiert diesen Prozess mit folgendem Befehl:
net ads keytab create
-> an dieser Stelle bitte das Passwort eingeben und mit ENTER bestaetigen
-> hier duerfen keine Fehler auftreten!

Info:
-> um einem ADS-Beitritt zu negieren, folgenden Befehl absetzen
-> net ads leave -U administrator


7. TEST - Winbind
Nun muessen wir Sicherstellen, dass winbind die Benutzerdaten und Gruppendaten aus dem ADS beziehen kann:
wbinfo -u
-> "wbinfo -u" listet die Benutzer aus dem AD auf
wbinfo -g
-> "wbinfo -g" listet die Gruppen aus dem AD auf
wbinfo -t
-> ueberprueft den "secret trust" fuer die Domaene "Hamburg.local"
wbinfo -m
-> listet alle bekannten "Interdomain-Vertrauensstellungen" zw. den Domains / Forests auf


8. Name Service Switch (NSS) konfigurieren
folgende Zeilen in der /etc/nsswitch.conf aendern:
ALT =>
passwd: db files nisplus nis
shadow: db files nisplus nis
group: db files nisplus nis

NEU =>
passwd: files winbind
shadow: files winbind
group: files winbind


9. Plugable Authentication Modules (PAM) konfigurieren
Achtung: Aenderungen an den PAM-Einstellungen koennen das System beschaedigen...
Bitte vorher ein Backup der /etc/pam.d/system-auth erstellen!
Wir "inkluden" nun die Module pam_winbind, pam_mkhomedir und pam_krb5:
vi(m) /etc/pam.d/system-auth
-> der Inhalt sollte so aussehen:
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_smb_auth.so use_first_pass nolocal
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.so

account required pam_unix.so broken_shadow
account sufficient pam_succeed_if.so uid < 500 quiet account sufficient pam_krb5.so account sufficient pam_winbind.so account required pam_permit.so

password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_krb5.so use_authtok
password sufficient pam_winbind.so use_authtok
password required pam_deny.so

session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_krb5.so
session required pam_mkhomedir.so skel=/etc/skel umask=0077


10. SSH-Dienst "kerberisieren"
folgende Zeilen zur /etc/ssh/sshd_config hinzufuegen:
KerberosAuthentication yes
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes

SSH-Dienst neustarten:
service sshd restart


11. TEST - Authentifizierung (am prompt / an der Kommandozeile)
via STRG+ALT+F2 wechseln wir auf das zweite Konsolenfenster.

client01 login: schlegels
Password: hamburg01
-> Ausgabe:
Warning: Your password will expire in 2 days.
Creating directory '/home/EOS/schlegels'.
Creating directory '/home/EOS/schlegels/.mozilla'.
Creating directory '/home/EOS/schlegels/.mozilla/plugins'.
Creating directory '/home/EOS/schlegels/.mozilla/extensions'.
Last login: Thu Mar 10 18:22:12 2011 from 10.14.3.240

Nach dem Login via SSH solltet ihr außerdem ein Kerberos-Ticket erhalten haben, dies kann via "klist" ueberprueft werden:
Ticket cache: FILE:/tmp/krb5cc_10269_Vr7ojc
Default principal: schlegels@HAMBURG.LOCAL

Valid starting Expires Service principal
03/11/11 14:00:28 03/12/11 00:00:28 krbtgt/HAMBURG.LOCAL@HAMBURG.LOCAL
renew until 03/12/11 00:00:28


Kerberos 4 ticket cache: /tmp/tkt10269
klist: You have no tickets cached

Soweit zur Authentifizierung an der HAMBURG.LOCAL - Domaene.
Der Parameter "winbind use default domain" sorgt dafuer das wir kein "HAMBURG" vor dem Benutzernamen eingeben muessen. Sonst wuerde die Anmeldung wie die eines Benutzers aus der "BREMEN"-Domaene aussehen.

Authentifizierung an der BREMEN-Domaene testen:
via STRG+ALT+F3 wechseln wir auf das dritte Konsolenfenster.

client01 login: dfd\schlegels
Password: Bremen01
-> Ausgabe:
Your password will expire in 13 days.

Creating directory '/home/DFD/schlegels'.
Creating directory '/home/DFD/schlegels/.mozilla'.
Creating directory '/home/DFD/schlegels/.mozilla/plugins'.
Creating directory '/home/DFD/schlegels/.mozilla/extensions'.
Last login: Fri Mar 11 12:45:03 2011 from 10.14.3.240

Nach dem Login via SSH solltet ihr außerdem ein Kerberos-Ticket erhalten haben, dies kann via "klist" ueberprueft werden:
Ticket cache: FILE:/tmp/krb5cc_11696
Default principal: schlegels@BREMEN.LOCAL

Valid starting Expires Service principal
03/11/11 14:07:18 03/11/11 14:17:18 krbtgt/BREMEN.LOCAL@BREMEN.LOCAL
renew until 03/18/11 14:07:18
03/11/11 14:07:19 03/11/11 14:17:18 krbtgt/HAMBURG.LOCAL@BREMEN.LOCAL
renew until 03/18/11 14:07:18
03/11/11 14:07:19 03/11/11 14:17:18 CLIENT01$@HAMBURG.LOCAL
renew until 03/18/11 14:07:18
03/11/11 14:07:19 03/11/11 14:17:18 CLIENT01$@HAMBURG.LOCAL
renew until 03/18/11 14:07:18


Kerberos 4 ticket cache: /tmp/tkt11696
klist: You have no tickets cached

Wenn die Authentifizierung am Systemprompt funktioniert hat, kann die Verbindung via SSH getestet werden.

Als letzten Schmankerl testen wir nach der Anmeldung noch die Verbindung auf eine Samba-Freigabe (testsh01) -> siehe smb.conf.

HAMBURG-User: schlegels
smbclient //client01/testsh01 -k
-> Ausgabe:
[schlegels@client01 ~]$ smbclient //client01/testsh01 -k
Domain=[HAMBURG] OS=[Unix] Server=[Samba 3.5.8]
smb: \>

-> TOP! Die Watte quillt! ;=)

BREMEN-User: BREMEN\schlegels
smbclient //client01/testsh01 -k
-> Ausgabe:
[BREMEN\schlegels@client01 ~]$ smbclient //client01/testsh01 -k
Domain=[HAMBURG] OS=[Unix] Server=[Samba 3.5.8]
smb: \>


Soooo.... Das wars auch schon. Wenn alles soweit geklappt hat, dann seid ihr im Besitz einen kerberisierten Samba- und SSH-Diensts welcher oben drein am Microsoft Active Directory angebunden ist. Somit wird die komplette System- und Samba-Authentifizerung mit Hilfe des ADS vorgenommen.

Sollten Fragen / Schwierigkeiten / Probleme bei der Konfiguration auftreten oder allgemein Kritik bestehen, dann bitte einfach eine Nachricht an mich schicken oder
einen Kommentar hinterlassen! ;-)

Schoene Grueße aus CuBa!
~Steven

Montag, 10. Januar 2011

Jablocom - GSM Security Camera EYE-02

Das letzte WE habe ich mit der Konfiguration und Verkabelung einer Security Camera der Firma Jablocom verbracht. Die Cam funktioniert via GSM und ist somit in der Lage SMS-, Email- und MMS-Benachrichtigungen zu verschicken. Ausserdem kann mit Hilfe einer integrierten SIM-Karte auch eine Anrufwarnung ausgeloest werden.

Web:
Jablocom - Eye-02 Security-Camera

Die Softwareinstallation und der Anschluss der Cam via USB ist kinderleicht. Windows XP und Windows 7 erkennen das Geraet nach der Programminstallation (JabloTool) ohne Probleme. Das JabloTool dient zur "lokalen" Konfiguration der Cam und ist sehr einfach zu bedienen. Noch einfacher ist die Konfiguration via Jablo-Web, somit kann eine oder auch mehrere Cam's via Internet von ueberall aus konfiguriert werden. Ueber das Web werden ebenfalls das jeweils aktuelle Bild der Cam uebertragen und auch die Web-Software steht dem JabloTool (Desktop-Anwendung) in nichts nach.

Die Einrichtung des Jablo-Web Zugangs ist allerdings ein wenig tricky :D
Man muss darauf achten das die Cam "GSM" zur Verfuegung hat und auch ueber die Jablocom-Website zu erreichen ist. Im Erdgeschoss eines Hamburger-Wohnblocks war es mir nicht moeglich eine Webverbindung herzustellen, in meiner Wohnung (3. OG) klappte die Verbindung ohne Probleme (nach ca. 2-3 Minuten stand die Verbindung zur Cam).

Testen konnte ich bisher nur die Benachrichtigung via Email und SMS. Beide Varianten funktionieren bei mir tadellos und vor allem "parallel". Allerdings ist der SMS-Versand um ca. 30-60 Sekunden schneller als der Email-Versand. Man muss allerdings gestehen, dass via Email auch aktuelle Bildaufnahmen bzw. Videoaufnahmen verschickt werden.

Die Cam hat einen relativ guenstigen Preis (ca. 500 €), die Einrichtung dauert keine 30 min. und das System arbeitet zuverlaessig. Ob sich die Cam auch als Ueberwachungsinstrument fuer Shop's, Cafe's, Tankstellen und Aehnliches eignet bleibt allerdings noch abzuwarten.
Zukunft hat diese Technik bzw. dieses Produkt auf jeden Fall.

Noch zu testen: MMS-Versand
Ich werde in den naechsten Tagen noch den MMS-Versand testen und versuchen diesen ebenfalls als Benachrichtigungsmethode einzusetzen. Der Versand an zwei Emailadressen funktioniert ebenfalls tadellos. Ausserdem sollte noch die Konfiguration der Benachrichtigungsstufen feiner abgestimmt werden.

Zum Abschluss noch ein Hinweis:
Die GSM-Verbindungen und die verschiedenen Benachrichtigungsmethoden koennen erhebliche Kosten verursachen. Eine Mobilfunkkarte mit UMTS-Flat ist daher zwingend pflicht, um einer Kostenexplosion vorzubeugen.


In den naechsten Tagen werde ich noch einige Bilder bzw. Videos in Youtube hochladen. Hier koennt ihr dann einen Blick auf die Software und auch auf die Cam werfen. Ich schaetze zum Ende der Woche (quasi Sonntag) gibt es die ersten "HowTo"-Videos zu sehen.

Bis dahin!!!
Moegen die bITs mit euch sein ;D

Neue Herausforderung

Nach langer Abstinenz im Bezug auf IT, habe ich nun endlich eine neue Herausforderung gefunden. Als Mitarbeiter im Bereich der Netzwerkadministration betreue ich die gesamte Infrastruktur des Unternehmens angestellt.

Fuer mich ist dieser Bereich etwas ganz besonderes. Die letzten 3 Jahre habe ich primaer mit der Administration und Integration von Systemen verbracht. Nun kann ich mich endlich im Bereich Netzwerk weiterbilden und habe unter anderem mit MPLS/VPLS/MSTP/VRRP und Layer-3 Switching zu tun.

Bis dahin!
Der IT-Spinner xD