Apr 15 2010

Nagios – NTP Offset monitoren

Nur ganz kurz: Wenn es um zeitkritische Dienste geht, wie z.B. bei der vor kurzem beschriebenen LDAP StandbyMaster / Multi-Master Geschichte, dann lohnt es sich auch den NTP-Offset Wert mit Nagios zu ueberwachen… z.B. mit:

 ./check_ntp_time -H 123.123.123.123 -w 0,005 -c 0,01

Mrz 31 2010

LDAP – logging, loglevel, seperate logfile, logrotate

Das loglevel wird in der /etc/ldap/slapd.conf mit dem Eintrag

 loglevel INTEGER

festgelegt. Moegliche Werte sind (man slapd.conf)

  • 1 (0×1 trace) trace function calls
  • 2 (0×2 packets) debug packet handling
  • 4 (0×4 args) heavy trace debugging (function args)
  • 8 (0×8 conns) connection management
  • 16 (0×10 BER) print out packets sent and received
  • 32 (0×20 filter) search filter processing
  • 64 (0×40 config) configuration file processing
  • 128 (0×80 ACL) access control list processing
  • 256 (0×100 stats) connections, LDAP operations, results (recommended)
  • 512 (0×200 stats2) stats log entries sent
  • 1024 (0×400 shell) print communication with shell backends
  • 2048 (0×800 parse) entry parsing
  • 16384 (0×4000 sync) LDAPSync replication
  • 32768 (0×8000 none) only messages that get logged whatever log level is set

Diese Zahlen sind auch beliebig kombinierbar. Moechte man z.B. das loglevel 128 und 32 kombiniert haben, traegt man loglevel 160 ein.

Der LDAP logt normalerweise nach /var/log/syslog. Moechte man eine eigene Logfile haben, z.B. /var/log/slapd.log, dann die folgende Zeile in /etc/syslog.conf bzw. /etc/rsyslog.conf hinzufuegen:

 local4.*		/var/log/sldap.log

Um die logfile in logrotate mit aufzunehmen die Datei /etc/logrotate.d/slapd anlegen und wie folgt fuettern:

/var/log/slapd.log
{
	rotate 7
	daily
	missingok
	notifempty
	delaycompress
	compress
	postrotate
		invoke-rc.d rsyslog reload > /dev/null
	endscript
}

Nach entsprechenden Aenderungen natuerlich die jeweiligen Dienste (ldap, rsyslog) neustarten…


Mrz 23 2010

LDAP-Backup erstellen

Ich bin ein Freund vom Plain text. Damit laesst sich IMHO immer noch am besten Arbeiten. Man kann es in alle denkbaren Formate umwandeln, umbiegen, exportieren, was auch immer, und ist deswegen was Backups angeht das Ziel meiner Wahl. Natuerlich habe ich bei dem LDAP-Server das /var/lib/ldap/ im Backuppath mit drin, aber es geht nichts ueber eine Textdatei in der die Werte nochmal als Plain text drinstehen; gleiches gilt uebrigens fuer MySQL-Datenbanken…

Die Backupdatei erstelle ich mit slapcat. Wichtig dabei ist zu beachten, dass die slap* Tools ganz anders arbeiten als die entsprechenden ldap* Gegenstuecke. Beispiel slapadd und ldapadd. Die ldap* Tools sind LDAP-Clients die ueber das LDAP-Protokoll auf die Datenbank zugreifen. Die slap* Befehle aber greifen direkt auf die lokalen Datenbankdateien zu, die Berkley DB = *.bdb Dateien in /var/lib/ldap/. Da die slap* Befehle direkt darauf zugreifen koennen Sie natuerlich nur auf dem Rechner ausgefuehrt werden auf dem der LDAP-Server laeuft, und es ist wichtig, dass der LDAP-Daemon nicht laeuft. Entsprechend ist auch das Backup-Skript was fuer den LDAP laeuft, einmal taeglich per Cron aufgerufen:

#!/bin/bash
 
SLAPCAT=/usr/sbin/slapcat
GZIP=/bin/gzip
BACKUPDIR=/root/ldapbackup/
 
 
# Daemon stoppen
/etc/init.d/slapd stop > /dev/null 2>&1
if [ $? != "0" ]; then
  logger -t "LDAP-Backup:" "Fehler beim Stoppen des slapd Daemons."
  exit 1
fi
 
 
# Backup in Textdatei erzeugen
$SLAPCAT > $BACKUPDIR/$(date +%Y%m%d)-ldapbackup.ldif
if [ $? != "0" ]; then
  logger -t "LDAP-Backup:" "Fehler beim Schreiben der Backupdatei mit slapcat."
  exit 1
fi
 
 
# Textdatei komprimieren
$GZIP $BACKUPDIR/$(date +%Y%m%d)-ldapbackup.ldif
if [ $? != "0" ]; then
  logger -t "LDAP-Backup:" "Fehler beim Komprimieren der erstellten Backupdatei."
  exit 1
fi
 
 
# Daemon starten und wenn es ueberall keine Probleme gab dann Erfolgsmeldung in syslog
/etc/init.d/slapd start > /dev/null 2>&1
if [ $? != "0" ]; then
  logger -t "LDAP-Backup:" "Fehler beim Starten des slapd Daemons."
  exit 1
else
  logger -t "LDAP-Backup:" "Das Backup der LDAP-Datenbank wurde erfolgreich durchgefuehrt."
fi

Nov 26 2009

Samba/LDAP: Benutzeraccount auf Rechner beschraenken

Wie Ihr merkt beschaeftige ich mich in der letzten Zeit vermehrt mit dem Thema, hier nochmal eben festgehalten wie man einen Benutzeraccount so beschraenkt, dass er sich nur an bestimmten Rechnern anmelden darf:

  • phpLDAPadmin oeffnen und den entsprechenden Benutzeraccount auswaehlen
  • Klick auf “Add new attribute
  • Im Dropdown Menue des Punkts “Add new attribute” den Punkt “sambaUserWorkstations” auswaehlen und als Parameter die Rechnernamen angeben an denen der User sich anmelden darf, Bsp: dnpw-ab-123$
  • Speichern, fertig

Loeschen kann man das ganze indem man einfach alle Attributparameter loescht und speichert. Mehrere Rechnernamen werden mit Komma getrennt hintereinander angegeben.

Evtl. ist noch interessant unter Windows in den Gruppenrichtlinien (Windows+R -> gpedit.msc) den Punkt “Computerkonfiguration -> Administrative Vorlagen -> System -> Benutzerprofile ->  Benutzer bei Fehlschlag des servergespeicherteten Profils abmelden” zu aktivieren. Ansonsten bekommt der User eine Fehlermeldung das er sich nicht an der Domaene anmelden darf u wird temporaer mit einer lokalen Kopie angemeldet.