Monitoriamo il Sistema: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (riformattazione)
 
(10 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
==Introduzione==
{{Versioni compatibili|Squeeze|Wheezy|Jessie}}


Il Wake On Lan � una funzione molto utile che permette di accendere il proprio computer a distanza dall'interno della propria rete locale. Molte schede
== Introduzione ==
di rete, soprattutto gli ultimi chip integrati, supportano questa caratteristica che in alcuni casi si pu� rivelare davvero molto utile. Immaginate ad esempio di avere due pc in due stanze/uffici diverse dello stesso piano o perch� no, proprio in due piani diversi e di essere impegnati sulla prima postazione.. vi ricordate per� che avete bisogno di andare a controllare un documento che sta sull'altro computer e pensate di aprire vnc ma purtroppo la seconda postazione e' ancora spenta quindi non vi potete collegare.. a questo punto solo una cosa vi pu� aiutare: il '''MagicPacket(tm)'''!
Come facciamo a scoprire se veniamo infettati da un RootKit?
Con il checksum dei binari di sistema, in questa guida vedremo come fare.


Partiamo dal presupposto che per poter mettere in atto quanto diremo da qui in poi abbiamo bisogno o di una macchina con sistema operativo appena installato o dobbiamo essere sicuri al 300% che la nostra macchina non sia compromessa.


==Software necessario==
Partiamo con lo scaricarci uno di questi due software: AFICK AIDE (si veda fondo pagina per i link).
 
Avremmo bisogno di due programmi:
* ethtool
* etherwake
 
Per installarli � sufficiente un:


== Configurazione ==
Il bello di questi programmi e che oltre che calcolare il checksum dei binari , possono controllare gli accessi, i permessi, il numero di link simbolici e tanto altro ancora, per questa guida io mi baserò su AFICK, a noi interessa il file <code>afick.pl</code> e <code>afick.conf</code> il suo file di configurazione.<br/>
Mettiamo questi due file in <code>/root</code> e prepariamoci per modificare il file di configurazione, per esempio:
<pre>
<pre>
# apt-get install ethtool etherwake
# esempio di file di configurazione
database:=./afick
warn_dead_symlinks := yes
exclude_suffix := wav WAV mp3 avi
=/ d+i+p+u+g
=/bin p+n+b+m+c+md5
=/sbin p+n+b+m+c+md5
=/usr/sbin p+n+b+m+c+md5
=/usr/bin p+n+b+m+c+md5
</pre>
</pre>


 
dopo aver controllato che la prima riga di <code>afick.pl</code> contenga la locazione precisa dell'eseguibile Perl, possiamo passare a inizializzare il database dei nostri binari,digitiamo da console quanto segue:
==Utilizzo di ethtool==
 
All'avvio del computer entrate nel BIOS e attivate il Wake-On-Lan;  solitamente trovate l'impostazione sotto la voce
"Power Management Setup".
 
Una volta avviato Linux lanciate:
<pre>
<pre>
# ethtool eth0
# ./afick.pl -c afick.conf -i
</pre>
</pre>


{{ Warningbox | in questo e nei futuri esempi, sostituite eth0 con il nome corrispondente alla scheda di rete che state usando! }}
bene, così abbiamo creato il nostro database di sistema.


== Test di funzionamento ==
Ora facciamo passare un po' di tempo e poi controlliamo come va.


A questo punto dovreste vedere una serie di informazioni tra cui qualcosa di simile a questo:
<pre>
<pre>
        Supports Wake-on: g
# ./afick.pl -c afick.conf -k
        Wake-on: d
</pre>
</pre>


La voce "Supports Wake-on" specifica i metodi di wake-on supportati dalla vostra scheda di rete; se non la vedete � un brutto segno!
se non abbiamo modificato nessun binari inserito nel file di configurazione dovrebbe apparirci in risposta dal programma:
La voce "Wake-on" specifica il metodo in uso; d sta per disabled mentre g � quello che andremo ad usare (Wake on MagicPacket(tm)). ''Se per qualche motivo avete gi� la voce "Wake-on" impostata a "g" potete terminare qui la lettura di questa pagina ;)''


Per impostare il metodo a "g" assicuratevi di avere la lettera "g" tra quelle che seguono la voce "Supports Wake-on" e poi digitate:
<pre>
# ethtool -s eth0 wol g
</pre>
Se rilanciate
<pre>
<pre>
# ethtool eth0
Hash Database : numero file scanned 0 changed ecc
</pre>
</pre>


dovreste avere "'''Wake-on: g'''".
bene ora proviamo a modificare qualche file, banalmente:


A questo punto spegnendo il computer lo potrete accendere da un'altra postazione usando etherwake.
==Utilizzo di etherwake==
etherwake serve per inviare il MagicPacket(tm) alla scheda di rete del pc che volete accendere, accendendolo.
Ovviamente, dal momento che il pc spento non vi potete basare sul indirizzo IP; dovrete usare il MAC Address.
Per trovare il MAC Address del pc di destinazione lanciate da quest'ultimo il comando:
<pre>
# ifconfig
</pre>
ed individuate la riga:
<pre>
<pre>
eth0      Link encap:Ethernet  '''HWaddr 00:50:6D:EA:A2:DC'''
# touch /sbin/lilo
# ln-s /sbin/sulogin /usr/sbin/sulogin
</pre>
</pre>


Il MAC Address e' la parte che segue la dicitura "HWaddr" ovvero, nel nostro esempio, "00:50:6D:EA:A2:DC" (senza virgolette).
ora rieseguiamo il controllo come prima, questa volta in risposta avremmo:
 
 
Segnatevi il MAC Address e dopo aver impostato il metodo di wake-on a "g" sul pc di destinazione, spegnetelo e recatevi sull'altra postazione.
A questo punto lanciate:


<pre>
<pre>
# etherwake <mac address> -D
new symbolic link : /usr/sbin/sulogin
 
changed file : /sbin/lilo
esempio:
changed directory :/usr/sbin
# etherwake 00:50:6D:EA:A2:DC -D
</pre>
</pre>


L'opzione -D serve solo ad avere in ouput qualche informazione in pi� sull'operazione.
seguito dai dettagli delle varie operazioni compiute.
Se tutto � andato per il verso giusto, il secondo pc dovrebbe essersi acceso..


Dal momento che sappiamo che queste modifiche le abbiamo fatte noi, ora dobbiamo riaggiornare il database:


==Ultimi ritocchi==
Ora, se il pc partito, noterete che lanciando nuovamente "ethtool eth0" il metodo di wake-on tornato a "d".
Per far si che ogni volta che accendete il computer il metodo usato sia "g" ci sono varie strade; di seguito spiegher quella che ho scelto ovvero
la modifica del file di avvio della rete.
Aprite il file '''/etc/init.d/networking''' e modificatelo come segue:
<pre>
<pre>
#!/bin/sh
# ./afick.pl -c afick.conf -u
#
# manage network interfaces and configure some networking options
 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
if ! [ -x /sbin/ifup ]; then
    exit 0
fi
 
spoofprotect_rp_filter () {
    # This is the best method: turn on Source Address Verification and get
    # spoof protection on all current and future interfaces.
   
    if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
        for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
            echo 1 > $f
        done
        return 0
    else
        return 1
    fi
}
 
spoofprotect () {
    echo -n "Setting up IP spoofing protection: "
    if spoofprotect_rp_filter; then
        echo "rp_filter."
    else
        echo "FAILED."
    fi
}
 
ip_forward () {
    if [ -e /proc/sys/net/ipv4/ip_forward ]; then
        echo -n "Enabling packet forwarding..."
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo "done."
    fi
}
 
syncookies () {
    if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
        echo -n "Enabling TCP/IP SYN cookies..."
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
        echo "done."
    fi
}
 
doopt () {
    optname=$1
    default=$2
    opt=`grep "^$optname=" /etc/network/options`
    if [ -z "$opt" ]; then
        opt="$optname=$default"
    fi
    optval=${opt#$optname=}
    if [ "$optval" = "yes" ]; then
        eval $optname
    fi
}
 
case "$1" in
    start)
doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no
 
        echo -n "Configuring network interfaces..."
        ifup -a
ethtool -s eth0 wol g
echo "done."
;;
    stop)
        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
          grep -q "^/ nfs$"; then
            echo "NOT deconfiguring network interfaces: / is an NFS mount"
        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
          grep -q "^/ smbfs$"; then
            echo "NOT deconfiguring network interfaces: / is an SMB mount"
elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
          grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
            echo "NOT deconfiguring network interfaces: network shares still mounted."
        else
            echo -n "Deconfiguring network interfaces..."
            ifdown -a --exclude=lo
    echo "done."
        fi
;;
    force-reload|restart)
doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no
        echo -n "Reconfiguring network interfaces..."
        ifdown -a --exclude=lo
        ifup -a
ethtool -s eth0 wol g
echo "done."
;;
    *)
echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
exit 1
;;
esac
 
exit 0
 
</pre>
</pre>


Le uniche due modifiche che ho fatto sono le due aggiunte del comando '''ethtool -s eth0 wol g''' nella sezione di start e restart delle interfacce di rete. Copiate solo quel comando nel vostro file nel punto corrispondente; evitate di fare il copia e incolla dell'intero file.
ora sappiamo usare il nostro Monitor di sistema.


{{ Warningbox | gli utenti k/ubuntu hanno una versione leggermente diversa; il comando sopracitato va messo dopo il blocco "if" }}
Un consiglio che mi sento di darvi è di aggiungere un controllo al db tramite [[Cron]], in base all'uso della macchina, ogni giorno o ogni 2 ore, vedete voi.


'''Esempio estratto dal file networking di kubuntu:'''
==Non è finita qui==
<pre>
Credete che questo basti, invece no. Pensate un momento se un hacker riuscisse a penetrare il vostro sistema; anche se il nostro db fosse conservato in una partizione apposita read-only, se l'hacker riuscisse a guadagnare l'accesso come [[root]] potrebbe rimontare la partizione in r/w e compromettere il nostro db, quindi come fare diciamo che sarà la base per un prossimo articolo e si chiama RFC e GRSEC
        if [ "$VERBOSE" != no ]; then
            ifup -a
        else
            ifup -a >/dev/null 2>&1
        fi
ethtool -s eth0 wol g
</pre>


==Link==
* http://afick.sourceforge.net
* http://www.cs.tut.fi/~rammer/aide.html


==Conclusioni==
Un consiglio scaricate pure chkrootkit e utilizzatelo insieme a Cron e al tool per il controllo da voi scelto.


La tecnologia Wake-On-Lan si pu� rendere utile solo nei rari casi in cui si disponga di una LAN con postazioni molto distanti tra loro, tuttavia in tali situazioni si rivela una risorsa davvero preziosa che pu� aiutare tra le altre cose a risparmiare energia, spegnendo i computer non usati "perch� tanto poi ...".
* http://www.chkrootkit.org


{{Autori
|Autore = [[Utente:TheNoise|TheNoise]]
}}


---- [[Utente:Virtual DarKness|Virtual DarKness]] 16:58, Giu 23, 2005 (EDT)
[[Categoria:Monitoraggio]]
[[Categoria:Networking]]

Versione attuale delle 09:12, 17 apr 2016

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
Debian 8 "jessie"

Introduzione

Come facciamo a scoprire se veniamo infettati da un RootKit? Con il checksum dei binari di sistema, in questa guida vedremo come fare.

Partiamo dal presupposto che per poter mettere in atto quanto diremo da qui in poi abbiamo bisogno o di una macchina con sistema operativo appena installato o dobbiamo essere sicuri al 300% che la nostra macchina non sia compromessa.

Partiamo con lo scaricarci uno di questi due software: AFICK AIDE (si veda fondo pagina per i link).

Configurazione

Il bello di questi programmi e che oltre che calcolare il checksum dei binari , possono controllare gli accessi, i permessi, il numero di link simbolici e tanto altro ancora, per questa guida io mi baserò su AFICK, a noi interessa il file afick.pl e afick.conf il suo file di configurazione.
Mettiamo questi due file in /root e prepariamoci per modificare il file di configurazione, per esempio:

# esempio di file di configurazione
database:=./afick
warn_dead_symlinks := yes
exclude_suffix := wav WAV mp3 avi
=/ d+i+p+u+g
=/bin p+n+b+m+c+md5
=/sbin p+n+b+m+c+md5
=/usr/sbin p+n+b+m+c+md5
=/usr/bin p+n+b+m+c+md5

dopo aver controllato che la prima riga di afick.pl contenga la locazione precisa dell'eseguibile Perl, possiamo passare a inizializzare il database dei nostri binari,digitiamo da console quanto segue:

# ./afick.pl -c afick.conf -i

bene, così abbiamo creato il nostro database di sistema.

Test di funzionamento

Ora facciamo passare un po' di tempo e poi controlliamo come va.

# ./afick.pl -c afick.conf -k

se non abbiamo modificato nessun binari inserito nel file di configurazione dovrebbe apparirci in risposta dal programma:

Hash Database : numero file scanned 0 changed ecc

bene ora proviamo a modificare qualche file, banalmente:

# touch /sbin/lilo
# ln-s /sbin/sulogin /usr/sbin/sulogin

ora rieseguiamo il controllo come prima, questa volta in risposta avremmo:

new symbolic link : /usr/sbin/sulogin
changed file : /sbin/lilo
changed directory :/usr/sbin

seguito dai dettagli delle varie operazioni compiute.

Dal momento che sappiamo che queste modifiche le abbiamo fatte noi, ora dobbiamo riaggiornare il database:

# ./afick.pl -c afick.conf -u

ora sappiamo usare il nostro Monitor di sistema.

Un consiglio che mi sento di darvi è di aggiungere un controllo al db tramite Cron, in base all'uso della macchina, ogni giorno o ogni 2 ore, vedete voi.

Non è finita qui

Credete che questo basti, invece no. Pensate un momento se un hacker riuscisse a penetrare il vostro sistema; anche se il nostro db fosse conservato in una partizione apposita read-only, se l'hacker riuscisse a guadagnare l'accesso come root potrebbe rimontare la partizione in r/w e compromettere il nostro db, quindi come fare diciamo che sarà la base per un prossimo articolo e si chiama RFC e GRSEC

Link

Un consiglio scaricate pure chkrootkit e utilizzatelo insieme a Cron e al tool per il controllo da voi scelto.




Guida scritta da: TheNoise Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized