19.04.2023

Linux System

Linux Tastenkombinationen
Konfigurations-Dateien und Verzeichnisse unter Linux
System Anpassung
Systemreparatur
Bootmanager - Grub2/Grub/LiLo
Hardwareerkennung
Paket-Verwaltung
Init-System SysV-Init, Systemd, Upstart, Busybox u.a.
System Protokollierung - syslog
PAM Zugriffssteuerung
Admin-Rechte-Steuerung
Kernel 2.4 | 2.6
Linux Intrusion Detection System (LIDS)
User Mode Linux UML
Dateisysteme
Drucken unter Linux
Sound konfigurieren
Partition kopieren
IPX Protokoll
SoftwareRAID
Netzwerk
Bluetooth
X-Server und Desktops
64Bit und 32Bit auf einem System
ACPI System einrichten
Shared Libraries
Linux Console
Jobs mit cron automatisieren
PCMCIA
ISDN und Capi
VNC-Server einrichten
Verschlüsselter Zugriff auf Ressourcen übers Netzwerk
Festplatten Überwachen mit S.M.A.R.T
Linux Systemhilfe richtig verwenden
sudo konfigurieren
Installation aus den Sourcen
SCSI Emulation für ATAPI Geräte einrichten
cloop (Komprimiertes Loopback Device) einrichten
Übersicht ext2 / ext3 Zusatzflags
Versionsverwaltung von Dateien
SSHFS einrichten
Linux unter VMware
sonstiges

Seitenanfang

System Protokollierung

Sysklogd
Rsyslog

Die Datei /var/log/wtmp speichert jeden Login an System, ist eine Binärdatei und kann mit last lesbar gemacht werden.

Paket
sysklogd - Syslog Daemon
syslog-ng - Next generation logging Daemon
rsyslog - Erweiterter Syslog Daemon

Seitenanfang

Sysklogd

/etc/syslog.conf

Facilities (Nachrichtentypen )
auth Authorisierung aller Art
authpriv Authorisierung aller Art
cron Cron-Dämon
daemon Verschiedene Dämonen
kern Kernel-Nachrichten (unter Debian Woody ist der Facility-Name für "kern" "user")
lpr Drucker-Subsystem
mail E-Mail-Subsystem
mark Zeitstempel (--MARK--) Option -m [Minuten] gibt an, wann die Markierung gesetzt werden soll
news News-Subsystem
security Sicherheitsmeldungen
syslog Syslog-interne Nachrichten
user Nachrichten von Usern
uucp UUCP-Subsystem (Unix-to-Unix-Copy) Datenübertragung Mail, News u.a.
local0 - 7 Reserviert für lokalen Bedarf
Priorität nach schwere aufsteigend geordnet
emerg Das System ist unbrauchbar
alert Es müssen dringend Aktionen eingeleitet werden
crit Kritische Nachricht
err Normaler Fehler
warn Warnung
notice Normale, aber bedeutende Nachricht
info Normale Nachricht
debug Meist unwichtige Nachricht
Ausgabemöglichkeiten
/pfad/datei Schreibe in die Protokolldatei
-/pfad/datei Schreibe in die Protokolldatei, diese wird aber nicht synchronisiert, nachdem die Nachricht geschrieben wurde (steigert Performance durch geringere Plattenauslastung, bei einem stark ausgelasteten System, kann es aber sein, das einzellne Protokolleinträge nicht vollständig oder gänzlich fehlen können.)
| /pfad/pipe in eine Pipe protokollieren
| /dev/tty8 Schreibt auf die TTY8 Konsole
|/dev/xconsole Schreibt Meldungen auf eine X-Konsole
@hostname Leite die Nachrichten zu am angegebenen Rechner weiter (Option -r muss gesetzt sein, bei Debian im init-Script SYSLOGD="-r" eintragen)
user Schreibe auf das Terminal des angegebenen Users
* wall: Schreibe auf alle benutzten Terminals
Variable Bedeutung
$FACILITY Quelle: auth(priv),cron,daemon,ftp,kern,lpr,mail,mark,news,security(=auth, nicht!),syslog,user,uucp,local0-7
$PRIORITY Priorität: debug,info,notice,warn(ing),err(or),crit,alert,emerg/panic
$LEVEL Priorität: debug,info,notice,warn(ing),err(or),crit,alert,emerg/panic
$TAG Quelle+Priorität als 2-stellige Hexzahl
$DATE Datum im Standardformat
$FULLDATE Datum im Standardformat
$ISODATE Datum im Standardformat
$YEAR Jahr (4-stellig)
$MONTH Monat (2-stellig)
$DAY Tag (2-stellig)
$WEEKDAY Wochentag (3-stellig: Mon, Tue, ..., Sat, Sun)
$HOUR Stunde (2-stellig)
$MIN Minute (2-stellig)
$SEC Sekunde (2-stellig)
$TZ Zeitzone (3-stellig)
$TZOFFSET Zeitzonen-Differenz zu GMT (5-stellig)
$FULLHOST Hostname (FQHN, mit Domain)
$HOST Hostname (ohne Domain)
$PROGRAM Programm von dem Meldung stammt
$MESSAGE Eigentlicher Nachrichteninhalt (Text inkl. Programmname + PID)
$MSG Eigentlicher Nachrichteninhalt (Text inkl. Programmname + PID)
$MSGONLY Nur Nachrichtentext

Beispiel

template("[$YEAR/$MONTH/$DAY $HOUR:$MIN:$SEC] $PRIORITY $FACILITY $MESSAGE\n")
destination sql {
	program("/usr/local/sbin/log2mysql.sh"
	template("$HOUR $MIN $HOST $MSG")
	template_escape(yes)
};
in einem Selektor kann man mehrere Facilities durch Kommata getrennt angeben. Das gilt aber nicht für Prioritäten, es kann in einem Selektor nur eine Priorität angegeben werden. Dafür kann man mehrere Selektoren durch Semikola getrennt angeben. Enthält eine Zeile mehrere Selektoren, so wird diese von links nach rechts ausgewertet. Ein Reihe von Selektoren fungiert so wie ein Filter, erst werden allgemeine Selektoren angegeben, gefolgt von spezifischeren.

Format syslog.conf
Ursprung.Level [;Ursprung.Level... ]

- alle Meldungen der Facility mail und uucp ab der Priorität notice
mail,uucp.notice /var/log/mail

- alle Meldungen der Facility mail und uucp ab der Priorität notice und uucp, aber Nachrichten der Priorität alert werden ausgeschlossen.
mail,uucp.notice;uucp.!=alert /var/log/mail

*.info alle Nachrichten ab Priorität info und höher
*.!alert keine Nachrichten der Priorität alert und höher.
*.=alert alle Nachrichten der Priorität alert
*.!=alert alle Nachrichten die nicht die Priorität alert haben

Download: syslog.conf

Testen der Syslog Konfiguration mit "logger"
- Testnachricht der Facility kern mit Priorität notice absetzen.
logger -p kern.notice "Testnachricht kern.notice"
  
- Testnachricht mit allen Prioritäten
for p in {debug,info,notice,warn,err,crit,alert,emerg}
 do
  logger -p kern.$p "Testnachricht kern Priorität $p"
done
  
- Testnachricht an alle Facilities mit Priorität senden
for f in {auth,authpriv,cron,daemon,kern,lpr,mail,mark,news,syslog,security,user,uucp,
local0,local1,local2,local3,local4,local5,local6,local7} # eine Zeile
 do
   for p in {debug,info,notice,warn,err,crit,alert,emerg}
   do
     logger -p $f.$p "Testnachricht Facility $f Priorität $p"
   done
done
  
Fifo-Puffer einrichten
mkfifo -m 0664 /var/log/debug

durch den Fifo-Puffer können mehrere Programme lesend oder schreibend auf eine Datei zugreifen.

Eintrag in /etc/syslog.conf
*.=debug |/var/log/debug

Ausgabe unter X auf die xconsole

- /dev/xconsole anlegen
mknod -m 644 /dev/xconsole p

- Benutzer in die Gruppe adm aufnehmen. (unter Debian ist die xconsole der Gruppe "adm" zugeteielt)
adduser [loginname] adm

- Meldungen von der xconsole anzeigen. (in der /etc/syslog.conf muss auch ein Eintrag existieren der die Ausgabe auf |/dev/xconsole leitet)
xconsole -geom 650x180-0-0 -daemon -notify -verbose -fn fixed -exitOnFail -file /dev/xconsole

- Testen der xconsole als root
echo "Test /dev/xconsole..." > /dev/xconsole

Logrotate (LOG Dateien sichern und archivieren)

Datei Beschreibung
logrotate /etc/logrotate.conf Logrotate ausführen (Standard ist Täglich mit cron Job)
logrotate -f /etc/logrotate.d/apache2 Logrotate von Hand ausführen, nur die Konfiguration für Apache2
logrotate -df /etc/logrotate.d/apache2 wie oben, nur im Debuggmodus
/etc/logrotate.conf Konfigurationsdatei
/etc/logrotate.d Konfigurationsdateien für einzelne Programme und deren LOGs
/var/lib/logrotate/status Statusinfo
Kommandos Aktion
compress Benutzt gzip zur Kompression alter Dateien
nocompress Alte Logs werden nicht komprimiert
copytruncate Kopiert das Log und kürzt dann das alte Log
nocopytruncate Logs werden nicht kopiert und gekürzt
create 774 User Group Benutzt die angegebenen Rechte fürs neue Log; sind keine Rechte angegeben, werden die Rechte des alten Logs übernommen.
nocreate Gegenteil von create
daily Logs rotieren täglich
weekly Logs rotieren wöchentlich
monthly Logs rotieren monatlich
delaycompress Kompression bei der nächsten Rotation
errors MAILTO Sendet Fehler an die angegebene Mailadresse
ifempty Rotiert auch leere Logs
include DATEI Fügt die angegebene Datei in die Konfigurationsdatei ein
mail MAILTO Sendet Logs zur angegebenen Mailadresse, wenn sie gelöscht werden.
nodelaycompress Alte Logs werden sofort komprimiert
olddir VERZEICHNIS Alte Logs werden in das angegebene Verzeichnis verschoben.
noolddir Alte Logs werden nicht in ein anderes Verzeichnis verschoben
notifempty Leere Logs werden nicht komprimiert
postrotate Startet Skript nach der Rotation
prerotate Startet Skript vor der Rotation
rotate N Gibt die Anzahl der alten Logs an, die archivert werden.
size N Rotation, wenn das Log die angegebene Größe erreicht hat.(k für kB und M für MB)

Eintrag in /etc/logrotate.conf

# Globale Optionen
# Wöchentliche Rotation
weekly

# Haltbarkeit der archivierten Logs:
# Vier Wochen
rotate 4

# Erstellt ein neues Logfile nachdem das alte gesichert wurde
create

# Logfiles komprimieren
#compress
# Archiv der alten LOG Files
olddir /var/log/OLD

# Externe Konfigurationen
include /etc/logrotate.d
# Datei Optionen
# besondere Einstellung für die Dateien /var/log/wtmp und /var/log/btmp
/var/log/wtmp {

# Monatliche Rotation
monthly

# erstellt eine neue Datei /var/log/wtmp mit den Zugriffsbits 0664, dem Eigentümer
root und der Gruppe utmp
create 0664 root utmp

# eine Alte-Version behalten
rotate 1

# die älteste LOG Datei an die Mail ADR "user@online.de" versenden und löscht diese dann.
mail user@domain.tld
}
Seitenanfang

Rsyslog

Rsyslog Projekt
Rsyslog Wiki
rsyslog.conf
PHPlogCon
Systemüberwachung mit rsyslog

/etc/default/rsyslog - Daemon Konfigurationsdatei
/etc/rsyslog.conf - Konfigurationsdatei
/etc/rsyslog.d/ - Verzeichnis für .conf Dateien

# /etc/default/rsyslog
RSYSLOGD_OPTIONS="-c3"
# /etc/rsyslog.conf
#################
#### MODULES ####
#################
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability
# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
###########################
#### GLOBAL DIRECTIVES ####
###########################
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
###############
#### RULES ####
###############
#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log
#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err
#
# Logging for INN news system.
#
news.crit			/var/log/news/news.crit
news.err			/var/log/news/news.err
news.notice			-/var/log/news/news.notice
#
# Some "catch-all" log files.
#
*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none		-/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg		*
#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8
# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
#
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
	news.err;\
	*.=debug;*.=info;\
	*.=notice;*.=warn	|/dev/xconsole
Befehl Erläuterung
invoke-rc.d rsyslog reload Daemon neustarten
   
   
   
   
   
   

rsyslog mit MySQL Datenbank

- Paket rsyslog-mysql installieren

- MySQL Datenbank Syslog mit Benutzer rsyslog manuell erzeugen.

dpkg-reconfigure rsyslog-mysql

- MySQL Benutzer rsyslog an der Datenbank Syslog alle Rechte zuweisen

mysql -u root -p Syslog
Enter password:
> grant ALL ON Syslog.* to rsyslog@localhost identified by 'passwort';
> flush privileges;

- Änderung der conf Datei

# /etc/rsyslog.conf
$ModLoad MySQL
mail.* >localhost,Syslog,rsyslog,passwort

Templates

Beispiel für ein tägliches MailLogfile

$template dailyMail, "/var/log/%fromhost:::lowercase, secpath-drop%/mail-%$day%.log"

%fromhost - der HostNamen des Senders
$day - aktueller Tag des Monats

- Selbstdefiniertes LogFormat benutzen

$template MyLogFormat,"%facility% %timestap:::rfc-3339% %msg%\n"
mail.*		-/var/log/mail.log;MyLogFormat

rfc-3339 - Zeitstempel mit bis zu Mikrosekunden Genauigkeit

- Beispiel für die Nutzung zweier Templates

$template dailyMail, "/var/log/%fromhost:::lowercase, secpath-drop%/mail-%$day%.log"
$template MyLogFormat,"%facility% %timestap:::rfc-3339% %msg%\n"
mail.*		?;MyLogFormat;dailyMail

? - gibt an das es sich um ein Dynafile handelt, hier stehen die Dateinamen nicht fest, er wird erst aus dem Nachrichtentext generiert.

Expression Based Filters

- Filtern nach einen bestimmten Hostname, bei ErrorMessage in ein bestimmtes LogFile schreiben

if $fromhost == 'server.domain.tld' and $msg contains 'error' then /var/log/server.log

- Filter schreibt SSH Authentifizierungsfehler in die /var/log/sshd Datei.

if $syslogfacility-text == 'auth' and ($msg contains 'Failed' or $msg contains 'Accepted') then /var/log/sshd
Filter Parameter Erläuterung
$syslogfacility-text Facility Name
$msg sucht nach der Zeichenkette in der Meldung
contains Groß- und Kleinschreibung wird beachtet
contains_i Groß- und Kleinschreibung wird nicht beachtet
and und
or oder
   

RSyslog Einstellungen

# /etc/rsyslog.conf
$SystemLogRateLimitInterval 30
$SystemLogRateLimitBurst 2000