Provvedimento del garante sugli Amministratori di sistema

Premetto che la ritengo una gran cagata… e completamente inutile, visto che i log NON HANNO ALCUN VALORE PROBATORIO!

Ma visto che dobbiamo adeguarci… cerchiamo di farlo a COSTO ZERO!

Io ho risolto (sto risolvendo) così:

Installo rsyslog con logging su file sul logserver

Su un server linux CentOs 5.*

yum install rsyslog*
vim /etc/sysconfig/rsyslog
sostituisco
SYSLOGD_OPTIONS=”-m 0″
con
SYSLOGD_OPTIONS=”-m 0 -r”
vim /etc/rsyslog.conf
###################################################
$template DynAuth, “/var/log/TUTTI/%$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
###################################################

Abilitare il logging su tutti i server linux

Su un qualsiasi server linux

cat /etc/syslog.conf

auth.*;authpriv.*;local1.*          @logserver.dominio

Su ogni server devo poi creare utenti PERSONALI da assegnare a tutti gli AdS:
useradd -G wheel -m -s /bin/bash username
passwd username
Aggiungo
AllowUsers username
in /etc/ssh/sshd_config
lancio
visudo
e aggiungo o decommento la riga seguente:
%wheel  ALL=(ALL)       ALL
In questo modo gli AdS dovranno loggarsi con il loro account ed usare sudo
(consiglio il sudo -i o sudo -u per diventare root)
Il vantaggio dell’uso di sudo sta nel fatto che ho potuto cambiare password a root e metterla in cassaforte senza la necessità di comunicarla a tutti gli AdS (dato che sudo permette di diventare root inserendo la propria password)

Abilitare il logging su Oracle 9i

mkdir /var/log/oracle/
chown -R oracle:dba /var/log/oracle/
SHOW PARAMETER audit
ALTER SYSTEM SET audit_trail=OS SCOPE=SPFILE;
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET audit_file_dest=”/var/log/oracle” SCOPE=SPFILE;
AUDIT SESSION;
SHUTDOWN IMMEDIATE
startup
Occorre poi creare un cron sul logserver che filtra solo i login/logout e prelevi i risultati.
Nella ver 9i infatti non è possibile inviare i log a un remote syslog

Abilitare il logging su Postgres

Modifico
/usr/local/pgsql/data/postgresql.conf
come segue:

log_destination = ‘syslog’

syslog_facility = ‘LOCAL1’
syslog_ident = ‘postgres’
log_connections = true
log_disconnections = true
log_duration = true
log_hostname = true

Abilitare il logging su MySql

Dato che mysql non supporta la scrittura di log su syslog si può risolvere nel seguente modo:

Nel file
/etc/my.cnf

nella sezione
[mysqld]

aggiungo
log=/var/log/mysql.log

Poi lancio all’avvio il seguente comando:

tail -f /var/log/mysql.log | egrep ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql &

(ringrazio Stefano Coletta (http://www.mindcreations.com/) per la precisazione:

l’egrep va corredato dall’opzione –line-buffered altrimenti non funziona correttamente)

tail -f /var/log/mysql.log | egrep –line-buffered ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql &

e lo salvo nell’ rc.local

e lo metto anche nella sezione postrotate del logrotate in
/etc/logrotate.d/mysql-log-rotate

Altrimenti, come suggeritomi dal buon Alessandro Corbelli di www.web4web.it si possono usare le named pipe:

http://www.linuxjournal.com/article/2156

http://www.linuxjournal.com/content/using-named-pipes-fifos-bash

Non loggo tutto su file ma ho creato una named pipe ed in inittab ho inserito, in respawn, uno script così composto

while [ true ]; do
tail -f <namedpipe> | egrep ‘Connect|Quit’ | logger…
done

Le prestazioni sono ‘abbastanza’ decenti.
Il while sarebbe anche superfluo…

Occorre fare attenzione a un particolare:

Se si utilizza la named pipe con lo script in inittab, nello script NON deve esserci il tail, ma il cat.

Quindi lo script diventa:

while [ true ]; do
cat <namedpipe> | egrep ‘Connect|Quit’ | logger -p LOCAL1.info -t mysql
done


Abilitare il logging sui server Windows

Sui server windows

Ho usato snare:

SnareSetup-3.1.5-MultiArch.exe

http://www.intersectalliance.com/projects/SnareWindows/index.html

Come “Destination snare server address” ho messo lo stesso ip del log server e come porta la 514

Abilitare il logging su Exchange

Per abilitare il logging sel mailserver:

Gestore sistema Exchange -> Gruppi amministrativi -> <nome>  -> server -> NomeServer -> tasto dx sul server -> registrazione Diagnostica
-> MSExchangeIS -> private o cassetta postale -> Accessi = minima; Controllo accessi = minima (oppure logons=minima e access control = minima)

Poi su snare:
Creo un nuovo oggetto:
Identify the high level event = Any event(s)
Event ID Search Term = 1009,1016,1013,1029
General Search Term = *
Select the User Match Type = Include
User Search Term = *admin*
Identify the event types to be captured = Success Audit + Failure Audit
Identify the event logs = Security  + Application
Select the Alert Level = Critical

Abilitare il logging sul FileServer

Creo un nuovo oggetto:
Identify the high level event = Any event(s)
Event ID Search Term = 538,540,552,551,682,683,528
General Search Term = *
Select the User Match Type = Include
User Search Term = *admin*
Identify the event types to be captured = TUTTI
Identify the event logs = Security
Select the Alert Level = Critical

Immodificabilità dei log

Ogni notte, sul logserver, parte un cron che mi crea un md5 di tutti i file di log

Lo chiamo Z_calcola_md5.sh in modo che il cron lo chiama da ultimo DOPO il logrotate

cat /etc/cron.daily/Z_calcola_md5.sh

########################################
#!/bin/bash
TMP=`/bin/date –date=’1 days ago’ +%m/%d`
FILE_NAME=”MD5-`/bin/date –date=’1 days ago’ +%m-%d`.md5″
DEST_DIR01=”/var/log/TUTTI”
DEST_DIR=”$DEST_DIR01/$TMP/”
MD5_DIR=”/var/log/TUTTI/MD5/”
cd $MD5_DIR
find  $DEST_DIR  -type f -exec md5sum {} \;  > $FILE_NAME
#########################################

A questo punto posso creare un tar.gz e salvare i log su un dvd o effettuarne un backup

Ripristino restore di un server con BackupPc

Installazione di una Distro linux “simile” a quella da ripristinare
Nelle mie prove ho installato, sulla macchina su cui eseguire il ripristino, la stessa ver. di distribuaione linux della macchina da ripristinare e tutto è andato a buon fine
Ho notato che la presenza del kudzu (riconoscimento hardware) è molto utile.
Conviene, quindi, in questa fase, installare kudzu e farlo partire al boot

Copia di alcuni file originali
I seguenti file/cartelle sono necessari per il primo boot successivo al ripristino e quindi ne salvo una copia

cp -r /boot /boot.ORIG
cp /etc/grub.conf /etc/grub.conf.ORIG
cp /etc /fstab /etc /fstab.ORIG
cp /etc /mtab /etc /mtab.ORIG
cp /etc/modprobe.conf /etc/modprobe.conf.ORIG
Installare e configurare rsyncd
Sulle CentOS:
yum install rsync rsyncd xinetd
vim /etc/rsyncd.conf
##################################
[root]
comment = root area
path = /
read only = no
list = yes
uid = root
gid = root
hosts allow = 127.0.0.0/8 10.100.100.14/32 10.100.100.0/24
##################################

/etc/init.d/xinetd restart

controllare che la porta 873 sia in ascolto

Eseguo il ripristino da BackupPc
Configuro la macchina su cui devo eseguire il ripristino come se fosse una macchina da backuppare.
[Nel nostro backuppc esiste già una macchina che si chiama “test” configurata sull’ip 10.100.100.3 che serve per i ripristini ]
Mi collego sul profilo della macchina da ripristinare -> naviga nel backup -> seleziona tutto ripristina
Ripristino dei file sull’host -> Scegliere la macchina SU CUI ESEGUIRE IL RIPRISTINO (test)
Ripristino dei file sulla condivisione -> root
Ripristino dei file al di sotto della directory (relativa alla condivisione) -> /
Ed avvio il ripristino (che ci mette una vita!)

Operazioni Post-Ripristino
Finito il ripristino mi collego alla macchina appena restorata e ri-copio i file originali:

cp -r /boot /boot.RECOVERY
cp /etc/grub.conf /etc/grub.conf.RECOVERY
cp /etc /fstab /etc /fstab.RECOVERY
cp /etc /mtab /etc /mtab.RECOVERY
cp /etc/modprobe.conf /etc/modprobe.conf.RECOVERY

cp -r /boot.ORIG /boot
cp /etc/grub.conf.ORIG /etc/grub.conf
cp /etc/fstab.ORIG /etc/fstab
cp /etc/mtab.ORIG /etc/mtab
cp /etc/modprobe.conf.ORIG /etc/modprobe.conf

a questo punto re-installo il grub:

grub-install –-recheck /dev/sda

[Nota:
in realtà nella prova che ho fatto le operazioni appena descritte le ho fatte da una slax live con la seguente procedura:

loadkeys it
mount -o bind /dev /mnt/sda1/dev
mount -t proc none /mnt/sda1/proc
chroot /mnt/sda1 /bin/bash
grub-install /dev/sda

SE GRUB DA ERRORE
/dev/sda1 does not have any corresponding BIOS drive.

allora usa il seguente comando:
grub-install –recheck /dev/sda
]

Riavviare il server e configurarlo correttamente in rete

Codec Multimediali su Fedora Core 7

Per installare i codec apriamo la shell, diventiamo root e diamo questi comandi singolarmente:

wget ftp://mplayerhq.hu/MPlayer/releases/codecs/all-20061022.tar.bz2tar xjf all-20061022.tar.bz2
mkdir /usr/lib/win32
mv all-20061022/* /usr/lib/win32
rm -fr all-20061022

Fedora java runtime engine jre e java development kit jdk e firefox plugin

Installo i pacchetti necessari:
yum install compat-libstdc++-296.i386 compat-libstdc++-33.i386
Installiamo la jre e la jdk
Andiamo su
http://java.sun.com/javase/downloads/index.jsp
e scarichiamo la jdk (ultima versione formato rpm)

chmod ugo+x jdk-6u1-linux-i586-rpm.bin
./jdk-6u1-linux-i586-rpm.bin
rispondere yes per accettare la licenza

[root@trinity2 ~]# ls /usr/bin/java -la
lrwxrwxrwx 1 root root 22 12 giu 20:56 /usr/bin/java ->
/etc/alternatives/java
[root@trinity2 ~]# ls -la /etc/alternatives/java
lrwxrwxrwx 1 root root 35 12 giu 20:56 /etc/alternatives/java ->
/usr/lib/jvm/jre-1.5.0-gcj/bin/java
[root@trinity2 ~]# rm /etc/alternatives/java
rm: rimuovere link simbolico `/etc/alternatives/java’? y
[root@trinity2 ~]# ln -s /usr/java/jdk1.6.0_01/bin/java
/etc/alternatives/java

[root@trinity2 ~]# java -version
java version “1.6.0_01”
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)

adesso abilitiamo il plugin per firefox
[root@trinity2 ~]# ln -s
/usr/java/jdk1.6.0_01/jre/plugin/i386/ns7/libjavaplugin_oji.so
/usr/lib/firefox-2.0.0.4/plugins/

Installare Macromedia Flash Player su Fedora Core 7

da root

nano /etc/yum.repos.d/macromedia.repo e copincolliamo e salviamo questo

[macromedia]
name=Macromedia for i386 Linux baseurl=http://macromedia.rediris.es/rpm/ #baseurl=http://macromedia.mplug.org/rpm/ #baseurl=http://sluglug.ucsc.edu/macromedia/rpm/ enabled=1 gpgcheck=1 gpgkey=http://macromedia.rediris.es/FEDORA-GPG-KEY

e con questo abbiamo addato il repo Macromedia (serve solo per FlashPlayer).

yum -y install flash-plugin