Procedura di installazione

Navigation:  Reparto Hardware e Sistemi > Operativo > Linux > Creazione Log Server >

Procedura di installazione

Previous pageReturn to chapter overviewNext page

Vademecum implementazione gestione log su strutture con macchine SLES 10

(procedura senza RELP e senza tunnel SSL)

 

NOTA IMPORTANTE: per agevolare l’implementazione nell’archivio sono stati inclusi, pronti da essere copiati o integrati, tutti i file di configurazione necessari per il funzionamento della soluzione; in questo modo è possibile evitare di dover riscrivere “a mano” tutti i file di configurazione descritti nel documento. E’ ovviamente bene – prima di sovrascrivere file già esistenti – verificare di non stare eliminando eventuali configurazioni ulteriori impostate da altri in precedenza. Ogni file modificato o sostituito deve essere controllato, perché fa riferimento a parametri generici da modificare cliente per cliente.  

 

Creazione logserver

 

Creare una macchina virtuale SLES 11 (non SLES 10!), effettuare il solito setup e, al termine, installare dal dvd il pacchetto rsyslog-3.18.3-7.18 e disinstallare syslog-ng.

 

Impostare i parametri del file /etc/sysconfig/syslog come segue:

 

KERNEL_LOGLEVEL=1

SYSLOGD_PARAMS=""

KLOGD_PARAMS="-x"

SYSLOG_DAEMON="rsyslogd"

SYSLOG_NG_PARAMS=""

SYSLOG_NG_PARAMS=""

RSYSLOGD_COMPAT_VERSION=""

RSYSLOGD_PARAMS=""

 

Editare il file /etc/rsyslog.d/remote.conf impostando quanto segue:

 

$ModLoad imudp.so  # abilita la ricezione di syslog in upd

$UDPServerRun 514 # avvia un server in ascolto alla porta 514

 

Editare il file /etc/rsyslog.conf impostando quanto segue (se non presente):

 

$ModLoad immark.so  

$ModLoad imuxsock.so

$ModLoad imklog.so  

 

$IncludeConfig /var/run/rsyslog/additional-log-sockets.conf

 

$IncludeConfig /etc/rsyslog.d/*.conf

 

kern.warning;*.err;authpriv.none         /dev/tty10;RSYSLOG_TraditionalFileFormat

kern.warning;*.err;authpriv.none        |/dev/xconsole;RSYSLOG_TraditionalFileFormat

*.emerg                                  *

 

Aggiungere la seguente sezione:

 

# TEMPLATE ORGANIZZAZIONE LOG

 

$template DynAuth, "/var/log/REGISTRAZIONI/%$YEAR%/%$MONTH%/%$DAY%/%FROMHOST%.log"

 

local1.*,user.*,auth.*,authpriv.*,kern.* ?DynAuth

 

$EscapeControlCharactersOnReceive off

 

%msg:::space-cc%

 

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

 

authpriv.*                                              /var/log/secure

 

mail.*                                                  -/var/log/maillog

 

cron.*                                                  /var/log/cron

 

*.emerg                                                 *

 

uucp,news.crit                                          /var/log/spooler

 

local7.*                                                /var/log/boot.log

 

local3.*                                                /var/log/varie.log

 

Riavviare il demone rsyslogd e effettuare il refresh della configurazione tramite il comando

 

SuSEconfig (altrimenti la perde al primo riavvio).

 

Impostazione sulle macchine dotate della SLES 10

 

Editare il file /etc/syslog-ng/syslog-ng.conf.in come segue: : (ATTENZIONE A NON EDITARE IL FILE SYSLOG-NG.CONF! Deve essere quello che termina col .in altrimenti la Suse 10 lo ripristina alla versione precedente.)

 

Verificare la presenza delle seguenti definizioni:

 

options { long_hostnames(off); sync(0); perm(0640); stats(3600); };

 

filter f_iptables   { facility(kern) and match("IN=") and match("OUT="); };

 

filter f_console    { level(warn) and facility(kern) and not filter(f_iptables)

                     or level(err) and not facility(authpriv); };

 

filter f_newsnotice { level(notice) and facility(news); };

filter f_newscrit   { level(crit)   and facility(news); };

filter f_newserr    { level(err)    and facility(news); };

 

filter f_news       { facility(news); };

 

filter f_mailinfo   { level(info)      and facility(mail); };

filter f_mailwarn   { level(warn)      and facility(mail); };

filter f_mailerr    { level(err, crit) and facility(mail); };

filter f_mail       { facility(mail); };

 

filter f_cron       { facility(cron); };

 

filter f_local      { facility(local0, local1, local2, local3,

                              local4, local5, local6, local7); };

 

filter f_acpid      { match('^\[acpid\]:'); };

filter f_netmgm     { match('^NetworkManager:'); };

 

filter f_messages   { not facility(news, mail) and not filter(f_iptables); };

filter f_warn       { level(warn, err, crit) and not filter(f_iptables); };

filter f_alert      { level(alert); };

 

Aggiungere al file

 

#FILTRI PER LOGGARE

filter f_auth   { facility(auth); };

filter f_authpriv {facility(auth, authpriv); };

 

#SEZIONE GESTIONE LOG REMOTI

destination d_loghost { udp("INDIRIZZOIPDELLOGSERVER"); };

 

log { source(src); filter(f_auth); destination(d_loghost); };

#log { source(src); filter(f_authpriv); destination(d_loghost); };

 

Effettuare il refresh della configurazione tramite il commando SuSEconfig, quindi riavviare il demone syslog-ng

 

 

Impostazione rsyslog su macchine dotate della SLES 11 o di altra distribuzione.

 

Installare rsyslog e abilitarlo come gestore predefinito, impostare (se necessario) i parametri del file /etc/sysconfig/syslog come segue:

 

KERNEL_LOGLEVEL=1

SYSLOGD_PARAMS=""

KLOGD_PARAMS="-x"

SYSLOG_DAEMON="rsyslogd"

SYSLOG_NG_PARAMS=""

SYSLOG_NG_PARAMS=""

RSYSLOGD_COMPAT_VERSION=""

RSYSLOGD_PARAMS=""

 

 

Editare il file /etc/rsyslog.conf impostando quanto segue (se non presente):

 

$ModLoad immark.so  

$ModLoad imuxsock.so

$ModLoad imklog.so  

 

$IncludeConfig /var/run/rsyslog/additional-log-sockets.conf

 

$IncludeConfig /etc/rsyslog.d/*.conf

 

kern.warning;*.err;authpriv.none         /dev/tty10;RSYSLOG_TraditionalFileFormat

kern.warning;*.err;authpriv.none        |/dev/xconsole;RSYSLOG_TraditionalFileFormat

*.emerg                                  *

 

Aggiungere la seguente sezione:

 

auth, authpriv.* @IPDELLOGSERVER

 

Riavviare il demone rsyslogd e effettuare il refresh della configurazione tramite il comando

 

SuSEconfig (altrimenti la perde al primo riavvio).

 

Installazione SNARE sulle macchine Windows

 

Scaricare Snare dal sito http://prdownloads.sourceforge.net/snare/SnareForWindows-4.0.1.2-MultiArch.exe ed installarlo col classico schema Next à Next à Next.

 

Terminata la installazione entrare sul browser nella interfaccia di gestione: http://localhost:6161/

Nella sezione “Network Configuration” settare l’IP del logserver SLES11 che abbiamo precedentemente creato inserendolo nel campo Destination Snare Server address; nel campo Destination Port inserire la porta 514.

 

Nel campo “Remote control configuration” impostare a 127.0.0.1 il campo IP Address allowed to remote control SNARE e abilitare e settare una password di gestione nel campo “Require a password for remote control?

Nel campo Objectives Configuration rimuovere tutte le configurazioni preimpostate e creare un profilo personalizzato che rispecchi quanto presente nella immagine “gestione log.png” allegata al documento.

 

Ovviamente, se l’account di amministrazione non è “administrator” occorrerà variare il nome con quanto necessario.

 

Infine recarsi sul campo Apply the Latest Configuration e salvare ed applicare la configurazione.

Creazione hash, cancellazione automatica log aventi più di 6 mesi e riduzione footprint

 

Creare una cartella /var/log/REGISTRAZIONI/HASH

 

Creare un file /etc/cron.daily/Z_gestione-log e dargli il chmod a +x ; il nome con la Z serve solo per far sì che venga eseguito come ultimo cron giornaliero.

 

Il contenuto del file è il seguente:

(OCCHIO ALLA IMPLEMENTAZIONE! Prestare la massima attenzione alla differenza che c’è tra i caratteri ` e ' perché sono diversi, non invertibili e corrispondono ad una sintassi del tutto differente.)

 

#!/bin/bash

 

# la variabile IERI sotto definita genera una stringa in formato AAAA/MM/GG relativa alla data di ieri

 

IERI=`/bin/date --date='1 days ago' +%Y/%m/%d`

 

# la variabile NOMEFILE crea una stringa in formato MD5-AAAA-MM-GG relativa alla data di ieri

 

NOMEFILE="MD5-`/bin/date --date='1 days ago' +%Y-%m-%d`.md5"

 

# il percorso generico dei log

 

PERCORSO_LOG="/var/log/REGISTRAZIONI"

 

# indichiamo dove verranno trovati i file di log di ieri di cui calcolare gli hash

 

PERCORSO_LOG_IERI="$PERCORSO_LOG/$IERI/"

 

# il percorso generico degli hash

 

MD5_DIR="/var/log/REGISTRAZIONI/HASH/"

 

cd $MD5_DIR

 

# cerchiamo nella cartella dei log di ieri tutti gli oggetti di tipo file e li reindirizziamo a md5sum che a sua volta

#scrive il proprio output nella cartella MD5_DIR in un file col nome dato dalla variabile NOMEFILE che contiene

#l'indicazione del nome del file di log e del relativo hash.

 

find $PERCORSO_LOG_IERI -type f | xargs md5sum > $NOMEFILE

 

# Ogni giorno, all'esecuzione del cron, identifichiamo tutti i file di log e tutti gli hash avente una eta' maggiore di 6 mesi, ovvero 366/2=193 giorni

# dopo averli trovati, li eliminiamo

 

find $PERCORSO_LOG -type f -mtime +193 | xargs rm -f

 

# identifichiamo tutte le cartelle vuote dall'albero dei log ed eliminiamole, per minimizzare la

# occupazione su disco e renderne piu' semplice la consultazione

 

find $PERCORSO_LOG -type d -empty | xargs rmdir

 

I commenti spiegano già la sintassi ed il funzionamento; in ogni caso, supponiamo che oggi sia il 20 marzo; il risultato della operazione è creare in /var/log/REGISTRAZIONI/HASH un file avente ad esempio nome MD5-2012-03-19.md5 (cioè facente capo ai log di ieri )il cui contenuto è strutturato come segue:

 

1945e0ef61febe2c6059adbb7359ee16  /var/log/REGISTRAZIONI/2012/03/19/10.40.2.65.log

3d290c94c9a52f9eebc2ff98b663c925  /var/log/REGISTRAZIONI/2012/03/19/10.40.2.111.log

7cf0cf67d9fa179faa4871da0f2745d8  /var/log/REGISTRAZIONI/2012/03/19/10.40.1.66.log

5a6c74461b1067f98cbbd34b71720b0d  /var/log/REGISTRAZIONI/2012/03/19/10.40.1.130.log

c5b89139fd1c25fa7cf055620b677d4e  /var/log/REGISTRAZIONI/2012/03/19/10.40.2.119.log

 

La seconda parte dello script analizza i timestamp di ultima modifica dei file di log e reindirizza via xargs tutti i file aventi almeno 193 giorni a rm –f.

 

La terza parte cerca le cartelle vuote (poiché svuotate dal comando di sopra) e le elimina; serve per mantenere pulito l’albero nei mesi e negli anni.