25/09/2009
Script Bash per l'invio tramite SMS dei risultati delle partite
Vi è mai capitato di aver giocato una o più schedine e di non poter controllare i risultati aggiornati perchè ci si trova fuori casa? Ebbene, questo è lo script che fa per voi. Basta avere a disposizione una macchina Linux ed un numero Vodafone abilitato alla ricezione degli MMS.
Per prima cosa andiamo ad individuare quali software sono necessari per il corretto funzionamento dello script:
1) Lynx, ovvero un browser testuale. Per installarlo basta digitare il comando (su Kubuntu 9.04)
sudo apt-get install lynx
2) MoioSMS, ovvero un client da linea di comando che ci permette di inviare gratuitamente MMS verso i numeri Vodafone. Per installarlo occorre aggiornare la lista dei repository aggiungendo la seguente stringa al file /etc/apt/sources.list
deb http://www.moioli.net/files/repository ubuntu beta
e successivamente lanciando il comando
sudo apt-get update
Bene, una volta completata l'installazione dei software sopra elencati possiamo procedere con la creazione di una nuova directory, che nella fattispecie chiameremo partite, all'interno della quale salvare tutti i file necessari al nostro script. Digitiamo quindi:
mkdir partite
dopo esserci posizionati sulla nostra home.
Adesso creiamo il file controlla_partite, all'interno del quale andremo ad inserire il nome di una o più squadre impegnate nei match di nostro interesse.
touch controlla partite
Apriamo il file in scrittura usando un editor di testo ed aggiungiamo ad esempio la stringa AS Roma. Salviamo e chiudiamo il file. Di seguito è presente un esempio del contenuto relativo al file controlla_partite:
Juventus
As Roma
Lazio
Creiamo il file di log che chiameremo matchlog in cui verranno salvati tutti gli eventuali errori generati durante l'esecuzione del nostro script. Tale file dovrà essere posizionato all'interno della dir /var/log:
sudo touch /var/log/matchlog
Ora creiamo un altro file chiamato match all'interno del quale andremo ad inserire il seguente codice:
#!/bin/bash
#File di log
FILELOG=/var/log/matchlog
#Numero di Telefono a cui inviare
NUMERO=<numero di cell al quale inviare gli MMS>
#Account MMS
ACCOUNT="Vodafonemms"
ROOT_UID=0 #necessario per MoioSMS e per scrivere nella cartella /var/log
#Controllo che lo script venga eseguito da root
if [ "$UID" -ne "$ROOT_UID" ];then
ERRORE1="Errore 1: Devi essere root per eseguire lo script"
echo $ERRORE1
echo "$(date) $ERRORE1" >> $FILELOG
exit 1
fi
if [ -s controlla_partite ];then
lynx -dump www.livescore.com > risultati.txt
while read line
do
cat risultati.txt | grep "${line}" >> cambiamenti;
sed -i 's/[[0-9a-zA-Z.]*]//g' cambiamenti; #rimuovo i marcatori generati da lynx
done < controlla_partite
if [ -s cambiamenti ];then
sed -i 's/ */ /g' cambiamenti; #sostituisco gli spazi multipli con un unico spazio
cut -d" " -f 3- cambiamenti > cambiamenti_temp;
if [ -f cambiamenti_temp ];then
sed -i 's/^[ t]*//g' cambiamenti_temp; #elimino gli spazi vuoti ad inizio riga
if [ -f cambiamenti_backup ];then
#confronto i due file e salvo le differenza all'interno di notifica
diff cambiamenti_temp cambiamenti_backup > notifica
else
touch cambiamenti_backup;
cp cambiamenti_temp cambiamenti_backup
rm cambiamenti
exit 1
fi
else
ERRORE3="Errore 3: Il file cambiamenti_temp non esiste."
echo $ERRORE3
echo "$(date) $ERRORE3" >> $FILELOG
exit 1
fi
else
if [ -f cambiamenti ];then
rm cambiamenti #nel caso in cui cambiamenti sia vuoto
else
ERRORE2="Errore 2: Il file cambiamenti non esiste. Controlla i permessi"
echo $ERRORE2
echo "$(date) $ERRORE2" >> $FILELOG
fi
exit 1
fi
#se il file notifica esiste e non risulta vuoto, ovvero ci sono differenze
if [ -s notifica ];then
#aggiorno il file di backup usato per il confronto
cp cambiamenti_temp cambiamenti_backup
#individuo i parametri da inviare con l'SMS
TESTOSMS=$(cat cambiamenti)
ESITO=$(sms $NUMERO "$TESTOSMS" $ACCOUNT) #invio le informazioni
#ora posso rimuovere il file notifica in quanto il messaggio risulta inviato
rm notifica
#elimino il file cambiamenti in quanto il messaggio risulta inviato
rm cambiamenti
else
rm notifica
rm cambiamenti
fi
else
if [ -f cambiamenti_temp ];then
rm cambiamenti_temp;
fi
if [ -f cambiamenti_backup ];then
rm cambiamenti_backup;
fi
exit 1
fi
exit 0
Come potete notare lo script è ampiamente commentato, quindi vi sarà certamente possibile capirne il senso. Ho inoltre inserito parecchi controlli (aumentando inevitabilmente le righe di codice) per evitare comportanenti inaspettati.
Digitiamo, inoltre, il comando:
sudo chmod +x match
per rendere eseguibile il nostro file.
Non ci resta che mandare in esecuzione lo script ogni 5 minuti in modo che venga effettuato un monitoraggio costante delle partite. Per fare ciò basta aggiungere la seguente regola a cron, editando il file /etc/crontab:
*/5 * * * * root cd /home/nightfly/partite && ./match > /dev/null 2>&1
A presto.
PS: ovviamente lo script non è immune da eventuali errori o miglioramenti, nel caso in cui ne individuaste qualcuno non esitate a contattarmi.
PPS: se non volete controllare l'esito di alcun match rimuovete il file controlla_partite oppure svuotatelo completamente mediante il comando:
sudo cat /dev/null > controlla_partite
e successivamente, per verificare che il file sia effettivamente vuoto basta digitare:
stat -c %s controlla_partite
20:23 Scritto da: nazarenolatella in SO: Linux | Link permanente | Commenti (3) | Segnala | Tag: bash, scommesse, kubuntu 9.04, script, mms gratis | OKNOtizie |
Facebook
20/09/2009
Installare e configurare Snort 2.8.4 su Kubuntu 9.04
Recentemente ho notato (con mio sommo dispiacere) che l'unica versione di Snort installabile su Kubuntu 9.04 mediante repository è la 2.7.x. Peccato però che tale versione non sia più supportata; ecco allora che ho pensato bene di rimuoverla dal mio sistema ed installare, previa compilazione, la versione 2.8.4.
Per prima cosa occorre scaricare la tarball in cui sono contenuti i sorgenti di Snort (seguite questo link). Fatto ciò controllate, prima di partire con la compilazione vera a propria, che tutte le dipendenze (librerie e compagnia bella) necessarie al software in questione siano soddisfatte. A tal proposito bisogna posizionarsi nella cartella in cui abbiamo precedentemente salvato la tarball e lanciare il comando:
tar -xzvf /home/nightfly/snort-2.8.1.tar.gz
Una volta estratti i file accediamo alla directory appena creata
cd /home/nightfly/snort-2.8.1
Bene, adesso lanciamo il comando ./configure che servirà proprio a verificare che tutte le dipendenze siano soddisfatte. Solitamente le librerie che Snort richiede sono libpcap0.8-dev e libpcre3-dev. Entrambe possono essere installate digitando:
sudo apt-get install libpcap0.8-dev
sudo apt-get install libpcre3-dev
Se la procedura di configurazione avviata in precedenza va a buon fine, possiamo usare il comando:
make
per compilare i sorgenti e successivamente
make install
per effettuare l'installazione vera e propria di Snort.
Creiamo la directory in cui andrà inserito il file di configurazione relativo a Snort, le regole di rilevamento delle intrusioni (rules) ed altri file necessari al corretto funzionamento dell'applicativo in questione:
sudo mkdir /etc/snort
sudo mkdir /etc/snort/rules
Andiamo a creare, inoltre, la directory in cui Snort salverà i log delle intrusioni
sudo mkdir /var/log/snort
Sempre dalla cartella in cui abbiamo estratto la tarball lanciamo il comando
rm Makefile Makefile.in Makefile.am
e successivamente
sudo cp etc /etc/snort
Passiamo adesso alla configurazione di Snort, la quale può essere effettuata mediante la modifica ad hoc del file snort.conf posizionato nella dir /etc/snort.
sudo nano /etc/snort/snort.conf
Impostiamo il valore della variabile HOME_NET con la classe di indirizzi IP utilizzata nell'ambito della nostra LAN, mentre nella variabile EXTERNAL_NET andreamo a sostituire any con !$HOME_NET. In questo modo stiamo dicendo a Snort di considerare come indirizzi esterni alla nostra LAN (e quindi sorgenti di potenziali attacchi) tutti quelli che non rientrano nella classe associata ad HOME_NET. Modifichiamo inoltre la variabile RULE_PATH assegnandogli il valore /etc/snort/rules.
Questa piccola modifica del file di configurazione ci consente di fare in modo che Snort inizi ad effettuare il monitoraggio della nostra rete in modo corretto. E' possibile comunque adattare ulteriormente Snort alle nostre esigenze andando a modificare la sezione relativa ai cosiddetti "preprocessori", quali, ad esempio, http_inspect (per l'individuazione di attacchi basati sul protocollo HTTP) oppure sfportscan (per la rilevazione dei portscan).
Passiamo adesso al download delle rules, necessario affinche Snort ci segnali eventuali tentativi di intrusione. Tale operazione può essere eseguita utilizzando un semplice programmino a linea di comando, ovvero oinkmaster. Non perdiamo tempo ed installiamolo:
sudo apt-get install oinkmaster
Per poter installare le rules è necessario dapprima registrarsi sul sito snort.org e successivamente procedere con la generazione di un oinkcode (ovvero di un digest MD5) che ci identifica univocamente. In particolare, sarà possibile fare ciò andando qui (previo login) e cliccando sul pulsante Generate code.
Fatto ciò passiamo alla modifica del *.conf ad esso associato.
sudo nano /etc/oinkmaster.conf
e inseriamo la seguente stringa:
url = http://www.snort.org/pub-bin/oinkmaster.cgi/<nostro_oinkcode>/snortrules-snapshot-2.8.tar.gz
Una volta completati download ed installazione delle rules, possiamo avviare Snort in modalità "test" per verificarne il corretto funzionamento. Digitiamo quindi:
sudo snort - T -c /etc/snort/snort.conf
e se ricevete la seguente stringa in output
Snort sucessfully loaded all rules and checked all rule chains!
Snort exiting
avete la prova che Snort sta funzionando correttamente. Un altro test che potrebbe tornare utile è quello che ci permette di visualizzare in tempo reale i pacchetti sniffati da snort:
sudo snort -c /etc/snort/snort.conf -v
Ora non ci resta che eseguire automaticamente Snort ad ogni avvio del sistema, possibilmente in modalità demone, ovvero in background. Per fare ciò andiamo ad editare il file rc.local presente nella directory /etc:
sudo nano /etc/rc.local
e successivamente inseriamo la stringa
sudo snort -c /etc/snort/snort.conf -i eth1 -l /var/log/snort -D
dove la flag -D specifica proprio l'esecuzione in background.
Infine, se ad esempio volessimo effettuare il download e l'aggiornamento delle rules ogni ora, possiamo procedere con la creazione di una regola per cron, mediante l'editing del file crontab:
sudo nano /etc/crontab
e digitiamo
0 * * * * root oinkmaster -o /etc/snort/rules/
Bene, adesso Snort è configurato e pronto per l'uso. A presto.
PS: ho realizzato un piccolo programmino che invia, mediante SMS, gli alert generati da Snort. Per ulteriori informazioni non esitate a contattarmi.
PPS: è possibile effettuare download dal sito Snort.org solo ad intervalli (minimi) di quindici minuti, ergo non impostate regole di cron che agiscano troppo frequentemente.
00:01 Scritto da: nazarenolatella in Sicurezza | Link permanente | Commenti (2) | Segnala | Tag: linux, snort, ids, nids, sniffer, kubuntu 9.04 | OKNOtizie |
Facebook
















