Ultima versione
Versione stabile:
3.1.5
 
Servizi
» Cerca
 
Cerca
Ricerca parole o frasi all’interno del sito.
 
Statistiche
Visite: 124958
 
Donazioni
Flatnuke e' software libero ed e' distribuito grautitamente. Se pensi che flatnuke ti sia stato in qualche modo di aiuto, puoi contribuire con una donazione libera:

Vuoi saperne di piu'?

 
Login





Non sei ancora registrato?
Registrati ora!
Recupera password
Choose your language:
deutsch english espa?ol fran?ais italiano portugu?s
 
Utenti
Persone on-line:
admins 0 amministratori
users 0 utenti
guests 1 ospiti
 
Netsons Ads

Forum



Benvenuto sconosciutoModifica profiloEntraAiuto 1038 utenti registrati

Navigazione:

[ Forum / Mods estensioni plugins / Tips and tricks / [SCRIPT] Aggiornamento automatico ipblacklist ]


UtenteMessaggio
Lucio
Lucio

0
10
Livello 0

levellevellevellevellevellevellevellevellevellevel
profile home page
Jabber
Giovedi 14 Luglio 2011 00:50:43

Ultima modifica di Lucio (Giovedi 14 Luglio 2011 00:52:49)

[SCRIPT] Aggiornamento automatico ipblacklist

Ciao a tutti,
ho deciso di automatizzare l'aggiornamento dell'IP blacklist servendomi del file csv messo a disposizione giornalmente da Spam-ip.
Ho fatto così:

#!/bin/sh
# mi posiziono nella directory di lavoro
cd ~/altervista_ipblacklist
# cancello i vecchi file di backup
rm spam-ip.com_old.txt~
rm ipblacklist_old.php~
rm spam-ip.com_old.csv~
# faccio il backup degli ultimi file elaborati
mv spam-ip.com_*.txt spam-ip.com_old.txt~
mv ipblacklist.php ipblacklist_old.php~
mv spam-ip.com_*.csv spam-ip.com_old.csv~
# preparo il file con l'URL da dare in pasto a wget;
# il nome del file aggiornato è costituito da
# spam-ip.com_DATA_ODIERNA, pertanto:

echo http://spam-ip.com/csv_dump/spam-ip.com_`date +%m-%d-%Y`.csv > spam-ip.com-URL_today.txt
# scarico il file aggiornato dando come input
# il file appena creato

wget -i spam-ip.com-URL_today.txt
# estraggo la seconda colonna del file csv
# (quella che contiene gli indirizzi IP) e creo
# il file spam-ip.com_DATA_ODIERNA.txt

cut -d "," -f 2 spam-ip.com_`date +%m-%d-%Y`.csv > spam-ip.com_`date +%m-%d-%Y`.txt
# elimino la prima riga dal file file spam-ip.com_DATA_ODIERNA.txt
# e creo il file ipblacklist.txt

sed '/ip/d' spam-ip.com_`date +%m-%d-%Y`.txt > ipblacklist.txt
# concateno il file ipblacklist.dist (quello
# originale di FlatNuke) e il file ipblacklist.txt
# appena creato; l'output è il file ipblacklist.php

cat ipblacklist.dist ipblacklist.txt > ipblacklist.php
# eseguo lo script ftp-altervista.sh per effettuare
# l'upload sul server di AlterVista

sh ftp-altervista.sh


Per connettermi ho creato lo script ftp-altervista.sh (ho l'hosting gratuito di AlterVista):

#!/bin/sh
SERVER="lucio.altervista.org"

# definisco il file da caricare sul server
FILE="ipblacklist.php"

# e la directory remota su cui caricare il file
UPLOAD_DIR="/include/blacklists"

# login automatico al server remoto
# (vedi il file .netrc)
ftp -i $SERVER <<EOF
cd $UPLOAD_DIR
mput $FILE
bye
EOF


Essendo un'operazione completamente automatica predispongo il file .netrc per poter effettuare l'autologin:

machine lucio.altervista.org
login lucio
password ********


creo il cronjob per lanciare lo script spam-ipcop-cron-script.sh tutti i giorni alle 23:30:

$ crontab -e
30 23 * * * sh /home/lucio/altervista_ipblacklist/spam-ipcop-cron-script.sh

Fatto.

L.

--
Debian GNU/Linux 5.0.8 [Lenny] - Registered Linux user #158396
Lucio
Lucio

0
10
Livello 0

levellevellevellevellevellevellevellevellevellevel
profile home page
Jabber
Domenica 17 Luglio 2011 07:43:57

Ultima modifica di Lucio (Domenica 17 Luglio 2011 23:20:36)

Re: [SCRIPT] Aggiornamento automatico ipblacklist - Update

Dal momento che il file csv fornisce anche gli indirizzi email degli spammers, ho integrato lo script così:
#!/bin/sh

# posizionamento sulla directory di lavoro
cd ~/altervista_ipblacklist

# rimozione dei backup obsoleti
rm spam-ip.com_old.txt~
rm ipblacklist_old.php~
rm spam-ip.com_old.csv~
rm spam-emails.com_old.txt~
rm emails_old.php~

# generazione dei nuovi backup
mv ipblacklist.php ipblacklist_old.php~
mv emails.php emails_old.php~
mv spam-ip.com_*.csv spam-ip.com_old.csv~
mv spam-ip.com_*.txt spam-ip.com_old.txt~
mv spam-emails.com_*.txt spam-emails.com_old.txt~

# recupero file csv aggiornato
echo http://spam-ip.com/csv_dump/spam-ip.com_`date +%m-%d-%Y`.csv > spam-ip.com-URL_today.txt
wget -i spam-ip.com-URL_today.txt

# estrazione indirizzi IP dal file csv
cut -d "," -f 2 spam-ip.com_`date +%m-%d-%Y`.csv > spam-ip.com_`date +%m-%d-%Y`.txt
sed '/ip/d' spam-ip.com_`date +%m-%d-%Y`.txt > ipblacklist.txt

# estrazione indirizzi email dal file csv
cut -d "," -f 4 spam-ip.com_`date +%m-%d-%Y`.csv > spam-emails.com_`date +%m-%d-%Y`.txt
sed '/email/d' spam-emails.com_`date +%m-%d-%Y`.txt > emails.txt

# generazione dei nuovi files ipblacklist.php e emails.php
cat ipblacklist.dist ipblacklist.txt > ipblacklist.php
cat emails.dist emails.txt > emails.php

# invio files aggiornati al server remoto
sh ftp-altervista.sh

Per cui lo script per l'upload sul server (ftp-altervista.sh) diventa:
#!/bin/sh
SERVER="lucio.altervista.org"

# definisco i file da caricare sul server remoto
FILE1="ipblacklist.php"
FILE2="emails.php"

# definisco la directory di destinazione
UPLOAD_DIR="/include/blacklists"

# login sul server remoto
ftp -i $SERVER <<EOF
cd $UPLOAD_DIR
mput $FILE1 $FILE2
bye
EOF

Dal momento che io sono un asino, sicuramente c'è un modo più elegante per compiere quest'operazione, ma funziona e mi accontento... ;-)

Ciao
L.

--
Debian GNU/Linux 5.0.8 [Lenny] - Registered Linux user #158396
marcosegato
marcosegato

0
10
Livello 10

levellevellevellevellevellevellevellevellevellevel
profile home page
Jabber Skype
Sabato 23 Luglio 2011 10:17:35

Re: [SCRIPT] Aggiornamento automatico ipblacklist - Update

Il metodo è bellissimo, complimenti, ma è anche usabile?
Nel senso: vedo che il csv fornito è di circa 17 Mb, con 280.000 record univoci di spammers che ogni volta FN deve processsare per i vari controlli... non è che l'impatto sulle prestazioni del sito è troppo elevato rispetto ai benefici?
In fin dei conti non è proprio il sito della NASA che dobbiamo proteggere...
Comunque bravo!

--
Linux Registered User 265651
Lucio
Lucio

0
10
Livello 0

levellevellevellevellevellevellevellevellevellevel
profile home page
Jabber
Sabato 23 Luglio 2011 15:27:47

Ultima modifica di Lucio (Sabato 23 Luglio 2011 15:33:20)

Re: [SCRIPT] Aggiornamento automatico ipblacklist - Update

Il metodo è bellissimo, complimenti, ma è anche usabile?
Nel senso: vedo che il csv fornito è di circa 17 Mb, con 280.000 record univoci di spammers che ogni volta FN deve processsare per i vari controlli... non è che l'impatto sulle prestazioni del sito è troppo elevato rispetto ai benefici?
In fin dei conti non è proprio il sito della NASA che dobbiamo proteggere...
Comunque bravo!

Ciao Marco,
non sarà il sito della nasa ma un'intrusione non fa piacere a nessuno... :-D.
Il dubbio è venuto anche a me, ma nell'uso normale non si sono verificati rallentamenti apprezzabili. Una volta elaborato il file csv ottengo emails.php (6.2MB) e ipblacklist.php (4.3MB).
Piuttosto il file csv di spam-ip.com (che viene aggiornato ogni ora) a volte anziché fornire la lista completa è costituito da un semplice aggiornamento (circa 130-140 KB), per cui pensavo di usare - al posto del programma standard di Linux ftp - lftp, che attraverso l'opzione --script=FILE permette di usare uno script esterno nel quale inglobare il comando mirror, davvero ricco di opzioni con cui operare. Dalla pagina man di lftp:

 mirror [OPTS] [source [target]]

Mirror specified source directory to local target directory. If target
directory ends with a slash, the source base name is appended to target
directory name. Source and/or target can be URLs pointing to directories.

-c, --continue continue a mirror job if possible
-e, --delete delete files not present at remote site
--delete-first delete old files before transferring new ones
--depth-first descend into subdirectories before transferring files
-s, --allow-suid set suid/sgid bits according to remote site
--allow-chown try to set owner and group on files
--ascii use ascii mode transfers (implies --ignore-size)
--ignore-time ignore time when deciding whether to download
--ignore-size ignore size when deciding whether to download
--only-missing download only missing files
--only-existing download only files already existing at target
-n, --only-newer download only newer files (-c won?t work)
--no-empty-dirs don?t create empty directories (implies --depth-first)
-r, --no-recursion don?t go to subdirectories
--no-symlinks don?t create symbolic links
-p, --no-perms don?t set file permissions
--no-umask don?t apply umask to file modes
-R, --reverse reverse mirror (put files)
-L, --dereference download symbolic links as files
-N, --newer-than=SPEC download only files newer than specified time
--on-change=CMD execute the command if anything has been changed
--older-than=SPEC download only files older than specified time
--size-range=RANGE download only files with size in specified range
-P, --parallel[=N] download N files in parallel
--use-pget[-n=N] use pget to transfer every single file
--loop loop until no changes found
-i RX, --include RX include matching files
-x RX, --exclude RX exclude matching files
-I GP, --include-glob GP include matching files
-X GP, --exclude-glob GP exclude matching files
-v, --verbose[=level] verbose operation
--log=FILE write lftp commands being executed to FILE
--script=FILE write lftp commands to FILE, but don?t execute them
--just-print, --dry-run same as --script=-
--use-cache use cached directory listings
--Remove-source-files remove files after transfer (use with caution)
-a same as --allow-chown --allow-suid --no-umask

When using -R, the first directory is local and the second is remote. If the second
directory is omitted, base name of first directory is used.
If both directories are omitted, current local and remote directories are used. If
target directory ends with a slash (except root directory)
then base name of source directory is appended.

RX is an extended regular expression, just like in egrep(1).

GP is a glob pattern, e.g. ?*.zip?.

Include and exclude options can be specified multiple times. It means that a file
or directory would be mirrored if it matches an include and does not match to
excludes after the include, or does not match anything and the first check is exclude.
Directories are matched with a slash appended.

Note that symbolic links are not created when uploading to remote server, because
ftp protocol cannot do it. To upload files the links refer to, use ?mirror -RL? command
(treat symbolic links as files).

For option --newer-than you can either specify a file or time specification like that used by
at(1) command, e.g. ?now-7days? or ?week ago?. If you specify a file, then modification
time of that file will be used.

Verbosity level can be selected using --verbose=level option or by several -v options,
e.g. -vvv. Levels are:
0 - no output (default)
1 - print actions
2 - +print not deleted file names (when -e is not specified)
3 - +print directory names which are mirrored

--only-newer turns off file size comparison and uploads/downloads only newer files
even if size is different. By default older files are transferred and replace newer ones.

You can mirror between two servers if you specify URLs instead of directories. FXP
is used automatically for transfers between ftp servers, if possible.

Some ftp servers hide dot-files by default (e.g. .htaccess), and show them only when
LIST command is used with -a option. In such case try to use ?set ftp:list-options -a?.

Appena ho un po' di tempo lo faccio e aggiorno il post.

Ciao
L.

--
Debian GNU/Linux 5.0.8 [Lenny] - Registered Linux user #158396


print

Freely inspired to Mollio template