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

Problemi con grub – Risolverli con slax

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
/usr/sbin/update-grub

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

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

Libnet questa introvabile sconosciuta

Dato che per compilare snort serve libnet 1.02a
Dato che il sito di riferimento (http://www.packetfactory.net/projects/libnet/) non è raggiungibile
Ho trovato il pacchetto in questo sito:
http://www.filewatcher.com/m/libnet-1.0.2a.tar.gz.140191.0.0.html
e per sicurezza ne allego una copia quilibnet-102a

Fedora 10 – Could not create a python script engine for plasmoid

This is my solution:

Remove any plasmoid and its directory in $HOME/.kde/share/apps/

yum remove kdebase-workspace-python-applet

yum install python-dev compat-python24-devel.i386 compat-python24-tools.i386 dbus-python-devel.i386 gnome-python2-devel.i386 ipython.noarch  pymol-wxpython.i386 python-devel.i386 python-fedora.noarch python-py.i386 python-pysctp.i386

yum install kdebase-workspace-python-applet

the re-install plasmoid with command:

plasmapkg -i plasmoid

plasmapkg -i 101229-gmail-plasmoid-0.7.3.plasmoid

madwifi-ng driver on fedora 8 and packet lost

Questi i passi necessari:

svn checkout http://svn.madwifi-project.org/madwifi/trunk/ madwifi-ng

madwifi-unload

cd madwifi-ng

make clean && make && make install

modprobe ath_pci

depmod -ae

iwconfig wlan0 essid wlan rate 11M

A questo punto ad ogni ping perdevo molti pacchetti. Per risolvere:

iwpriv wlan0 mode 2

in modo da forzare il funzionamento in 802.11b

Adesso tutto funziona!