DNS configurazione wildcards bind

DNS SPAMMING

Iniziamo il percorso di introduzione alle tecniche dello spamming. Obiettivo migliorare il nostro posizionamento sui motori di ricerca. Il primo metodo tratta di dns spamming. I DNS (acronimo di Domain Name System) costituiscono il software applicativo che permette la risoluzione di nomi di dominio in indirizzi IP.

Tipicamente un file di zona (un banale file di testo contenente la mappatura host/ip) conterrà le informazioni riguardanti server dns [NS],server mail [MX] e i nomi di dominio di terzo livello che ci permetteranno di raggiungere i servizi (www,mail,ftp)

Possiamo preparare il server su Debian in pochi semplici passi:

Installazione server BIND e documentazione:

#apt-get install bind bind-doc

Il server è già pronto per l’uso:

#echo "nameserver localhost" > /etc/resolv.conf

Prima di continuare una saggia lettura file:///usr/share/doc/bind/html/zone.html

Inserimento zona:

#vi /etc/bind/named.conf.local

//
// Add local zone definitions here.
zone "fittizio.it" IN {
type master;
file "/etc/bind/fittizio.it";
allow-update { none; };
};

Creazione del file di zona con wild-card per gestire domini di terzo livello.

#vi /etc/bind/fittizio.it

$TTL    36000
@       IN      SOA     ns1.fittizio.it. root.ns1.fittizio.it. (
2006061200      ; serial
86400           ; refresh
7200            ; retry
2592000         ; expire
0)              ; default-ttl

NS              ns1.fittizio.it.
fittizio.it.                   IN      MX      10      mx.fittizio.it.
ns1                            A               192.168.20.168
mail                           A               192.168.20.162
ftp                            A               192.168.20.169
*                              A               192.168.20.168

Per verificare il corretto inserimento della zona:

Reload del demone bind

#/etc/init.d/bind reload

e

# grep fittizio.it  /var/log/daemon.log

Jun 12 10:40:41 localhost named[18244]: master zone "fittizio.it" (IN) loaded (serial 2006061200)

Con l’utility dig interroghiamo il server…

# dig  questononesiste.fittizio.it

; <<>> DiG 9.2.4 <<>> questononesiste.fittizio.it
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59886
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;questononesiste.fittizio.it.   IN      A

;; ANSWER SECTION:
questononesiste.fittizio.it. 36000 IN   A       192.168.20.168
[...]
;; SERVER: 127.0.0.1#53(127.0.0.1)

Il nostro nameserver ci ha opportunamente risposto che il record A associato al dominio di terzo livello "questononesiste" è associato all'indirizzo 192.168.20.168.

Con "ftp" la risposta sarà

ftp.fittizio.it.        36000   IN      A       192.168.20.169

Ora potete iniziare a modificare i link del vostro sito. Prendiamo come esempio un sito sui personaggi dei mondiali di calcio. Il webmaster ha preparato le pagine per ciascun giocatore (una pagina php preleva da un db le informazioni + mod_rewrite per la riscrittura delle url ), il menù della index linka ogni pagina nel formato http://www.sitosuimondiali.it/cognomegiocatore.html

Esempio http://www.fittizio.it/totti.html

Proviamo utilizzando un nameserver esterno (es 151.99.0.100) a richiamare la pagina http://totti.fittizio.it/totti.html. Il browser vi restituirà un errore non riuscendo a risolvere totti.fittizio.it.

Utilizzate il vostro dns bind e provate con http://forzatotti.fittizio.it/totti.html. Funziona, non vi rimane che ampliare ai domini di X° livello la tecnica senza dover creare nessun sottodominio. Nell'esempio appena fatto interessante la combinazione nazionalità + cognome:

http://brasile.ronaldinho.fittizio.it/brasile/ronaldinho.html

http://italia.totti.fittizio.it/italia/totti.html

PS: non abusatene

Posted in Linux, SEO at June 12th, 2006. No Comments.

SOFTAIR Operation TELIC 22 23 luglio 2006

Red Dragons

INIZIO FILE

Antefatto:

Time: 17 / 03 / 2003 00.25 GMT
Place: Camp Morris – 50 miglia a nord di Kuwait City – Quartier generale delle forze inglesi nel Golfo Persico.

Bene, a lungo avete pregato per avere una missione, ed adesso per i vostri peccati ve ne è stata data una. Gli ordini sono arrivati appena adesso: il nostro obiettivo è conquistare tutta la fascia che dal confine va a Bassora, e ripulirla da tutte le unità dell’esercito di Saddam. Tra 48 ore la prima divisione corazzata, rinforzata dalle unità dei Royal Marines e con il supporto dell’aviazione, supererà il confine e si dirigerà verso l’obiettivo. Ma prima ci sono alcune operazioni che dobbiamo svolgere per rendergli il lavoro più facile.

La città è difesa dai reparti della Guardia Repubblicana Irachena, con truppe di fanteria e corazzate. Sono reparti molto esperti, essendo riusciti a sopravvivere alla guerra Iran – Iraq ed alla prima guerra del golfo, ed uno scontro diretto con questi reparti, anche se vittorioso, comporterebbe un prezzo troppo alto per l’opinione pubblica inglese. Sappiamo per certo che hanno visori ad infrarossi ed unità di controllo del traffico radio, per cui non si può contare sull’oscurità e bisogna limitare al minimo l‘uso delle radio tattiche. Inoltre hanno sicuramente la superiorità numerica, in un rapporto 4:1 con le nostre truppe.

Tuttavia, l’esercito iracheno è organizzato secondo l’ideologia sovietica, per cui gli uomini sul campo sono dei semplici esecutori degli ordini che vengono dall’alto: se si riesce ad interrompere il flusso di informazioni proveniente dagli alti comandi iracheni, distruggendo i loro centri C2 (comando e controllo) le unità sul campo saranno infinitamente meno efficienti. Inaspettatamente, sarà proprio Saddam Hussein a darci una mano: siccome ha una paura folle di un colpo di stato dei suoi stessi generali, tutti i suoi centri C2 sono in superficie, a portata di Scud. Noi approfitteremo di questo errore e raderemo al suolo le postazioni irachene.

Sarà un operazione faticosa, difficile, pericolosa e con un’unica certezza: i chilometri saranno tanti. L’ambiente del delta del Tigri è ricco di vegetazione e di canali, cosa che da un lato potrà aiutarvi perché avrete più copertura, dall’altro la navigazione e l’orientamento saranno più difficili. Un’ operazione perfetta per i fire team del 22 reggimento di fanteria aerotrasportata, meglio noto come SAS. Cioè per voi.

Inoltre, numerosi obiettivi sono stati identificati dai satelliti e dai Predator yankee, ma gli iracheni hanno la pessima abitudine di costruire dei finti obiettivi per ingannare l’intelligence avversaria. Quindi, per distinguere gli obiettivi paganti dai falsi bersagli, è indispensabile una ricognizione ravvicinata. Ovviamente, è indispensabile muoversi nella maniera più discreta possibile, per evitare di allertare le truppe nemiche: in caso di ingaggio, i rinforzi sono troppo lontani per arrivare in tempo utile.

Data Torneo:
22 – 23 Luglio 2006, l’ora di partenza verrà assegnata al momento della consegna del book di gioco.

Costo del torneo:
240,00 euro a team, massimo 15 team.

Consegna book di gioco completo:
Alla chiusura delle iscrizioni via e-mail.

Chiusura iscrizioni:
30 Giugno 2006, termine ultimo per confermare la propria presenza ed effettuare il versamento della tassa di partecipazione.

Luogo di svolgimento torneo:
Campo dei Red Dragons Soft-Air sito in La Cassa (TO).

Durata torneo:
Il tempo massimo di durata torneo è di 18 ore, ma verrà calcolato il tempo totale di missione di ogni team e sarà oggetto della valutazione finale.

Premiazione:
La premiazione avverrà il giorno stesso (la mattina di domenica), con la consegna di Coppe ai vincitori, pin’s per tutti e altri gadget.

INFORMAZIONI:
Contattare Alessandro “cucciolo” VANZI al 349/72.56.695 oppure via mail a alessandro.vanzi@gmail.com – info@reddragons.it.

Posted in Archivio at June 10th, 2006. No Comments.

Gestione DIVX tool Visual Basic

Correva l’anno 2001 quando ancora frequentavo la scuola superiore e dovevo preparare qualcosina per l’esame di maturità. Mi sono presentato portando un progetto scritto in VB 6 che permette la catalogazione dei film divx. Per renderlo più “avanti” avevo introdotto la possibilità di inserire il link alla scheda di ogni film presente nel db di www.filmup.it. Nel frattempo è stato modificato il layout del sito (che ora fa parte del portale leonardo.it). La scheda prelevata da internet è purtroppo posizionata in modo errato :( :(
Ecco come si presenta il menù.
Gestore DIVX

Perdonate lo sfondo nero ma l’immagine era stata creata per il sito www.texilee.tk tuttora raggiungibile
Click per scaricare il Gestore DivX

Posted in Archivio at June 9th, 2006. 1 Comment.

REGEX Espressione regolare controlla e valida indirizzo EMAIL

Espressione regolare per controllare la validità di un indirizzo email, utile per il sanitizing dei form.

/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+-+)|([A-Za-z0-9]+.+)|([A-Za-z0-9]+++))*[A-Za-z0-9]+@((w+-+)|(w+.))*w{1,63}.[a-zA-Z]{2,6}$/
Posted in Linux, Php at June 9th, 2006. No Comments.

Apache 1.3 stato dei processi figli script PHP

Apache 1.3 su Unix è un server Web basato su processi. Il programma Apache, al suo avvio, genera (fork) svariati processi figli; con il fork un processo primario genera copie identiche di se stesso, chiamate figli. Ognuno di tali figli può servire una richiesta indipendente dalle altre, con il vantaggio di migliorare la stabilità: se uno di tali figli ha un comportamento anomalo (va fuori controllo o ha perdite di memoria) può essere interrotto senza alcun effetto sugli altri. La stabilità è conseguita a spese delle prestazioni. Nella maggior parte dei sistemi Unix, la creazione di processi e il cambiamento del contesto (assegnazione di tempo del processore a ogni processo) sono operazioni costose in termini di risorse di sistema, dal momento che i processi sono isolati gli uni dagli altri e non possono quindi facilmente condividere codice e dati. [www.pluto.it]

Per controllare lo “stato” di ognuno dei processi figli di apache via php si può utilizzare questo semplice script, la consultazione dello stato dei processi risulta estremamente rapida.


<?php

echo "<h3>Apache Forked  Status Viewer< /h3>";

$cmd = '/bin/ps --User www-data -o \'%p %C\'';

exec($cmd,$status);

foreach ($status as $val)
echo '<br />'.$val;

?>
Posted in Apache, Linux, Php at June 9th, 2006. No Comments.

JAVASCRIPT Andare a capo alert da variabili PHP

Immaginate di dover mostrare via alert (javascript) il contenuto di una variabile php. Per formattare correttamente l’output potete prendere spunto da questo codice:


$descrizione_JS = ereg_replace("(\r\n|\n|\r)", "\\n'+\n' ", $descrizione);

<script language="JavaScript">
<!--
desc='<?=$descrizione_JS?>'

if (!confirm(" Conferma l'inserimento o premi annulla per tornare
indietro \n\n"+ desc))

{
history.back();
}
//-->
</script>
Posted in Php at June 9th, 2006. No Comments.

SEO Costruire Motore Ricerca

Dopo due settimane dall’inaugurazione il blog è stato inserito nel motore di ricerca della grande G e compagnia. I precedenti articoli e tutorial scritti tempo fa su vari spazi offerti da Altervista.org rimarranno online ma non verranno aggiornati. Per cercare di ottimizzare l’indicizzazione ho seguito le principali regole della SEO senza utilizzare tecniche di spamming e utilizzato il mod_rewrite di apache, strumento efficace ma con una sintassi abbastanza particolare.

Parlando con un amico mi sono ritrovato a rispondere a domande sui motori di ricerca cercando di dargli una risposta di non troppo difficile interpretazione.

Ma come funzionano questi “motori di ricerca” ?? Ne voglio fare uno pure io e indicizzare il mio sito su tutti motori…

I prerequisiti per costruirsi da soli un motore di ricerca sono essenzialmente 3: una macchina collegata alla rete, un bot (Web Crawler/Web Spider o più semplicemente script), un front end (una pagina di ricerca).

Il bot si occuperà (seguendo un determinato algoritmo) di catalogare e ordinare le pagine web (salvataggio su DBRMs).

Non dovrà essere troppo invasivo (pensate al vostro sito preso di “mira” da bot malformati con centinaia di richieste al secondo…) onde evitare DOS

Non dovrà catalogare le pagine escluse dal protocollo robots.txt

Dovrà contenere delle politiche anti-spamming: le tecniche utilizzate (spesso in buona fede) dai webmaster portano a pesanti penalizzazioni, addirittura al ban del dominio!

[Politiche interne MR]

Altre penalizzazioni dette parametri off page: la società di posizionamento X aiuta il sito Y, la società del motore di ricerca Z che non gradisce per i più svariati motivi X e blacklista Y indipendentemente dal fatto che il sito avesse posto in essere delle pratiche di spamming.

Brett Tabke

[/Politiche interne MR]

Ma che cosa sono le pratiche di spamming?

Scriverò qualche post sull’argomento, dopo tanti test è ora di procedere con la pubblicazione dei risultati, spesso contrastanti fra un sito e l’altro.
Fantastico, possiamo iniziare con il codice??

Torniamo al nostro di motore.. si può iniziare con la preparazione di un algoritmo di catalogazione. Siccome sono 10 anni che esistono motori di ricerca ed esiste già una branchia dell’informatica che si occupa del reperimento di documenti elettronici prepariamoci ad una full immersion su

Information Retrieval

Inizialmente il numero di documenti/pagine web online era limitato a quelche migliaia, oggi se ne contano decine di miliardi; un numero destinato a crescere esponenzialmente nei prossimi anni. Le tecniche di indicizzazione praticate dai primi motori di ricerca si sono rivelate obsolete (text-matching) per sottostare all’enorme quantità di dati. Cause non meno importanti l’ambiguità di molti termini del nostro dizionario, la mancanza di una struttura semantica per la rappresentazione delle informazioni, l’uso sconsiderato di tecniche di spam.

Per approfondire l’argomento un’ottima lettura si è rivelata questo testo http://elite.polito.it/tesi/macagno.pdf

Il codice? Semplice: non cè!

Posted in Internet, SEO at June 8th, 2006. No Comments.

Proftpd + TLS How to [DEBIAN]

#Installazione proftpd + tsl su sistema Debian Sarge.
#Installare proftpd server tramite apt-get.
#Il supporto TLS è compilato di default

apt-get install proftpd

#Il meccanismo dei certificati auto firmati e la generazione delle chiavi è la stessa di Apache

cd /etc/proftpd_ssl

#creazione di un certificato di 10 anni…

openssl req -new -x509 -days 3650 -nodes -out ftpd-rsa.pem -keyout ftpd-rsa-key.pem

#passiamo ad inserire le direttive sul file di configurazione di proftpd /etc/proftpd.conf
/////////////////////////////////////////////////////////////////////

# Abilita l’utilizzo del mod_tls
TLSEngine on
# Percorso file di log.. sotto è riportato un esempio di log
TLSLog /var/log/proftpd-tls.log
# Specifico il protocollo da utilizzare
TLSProtocol TLSv1
# Il client è obbligato ad usare tls, altrimenti il server chiude la
connessione…
# Impostandolo ad “off” sta al client la scelta
TLSRequired on
# Path RSA certificate file -> file certificato
TLSRSACertificateFile /etc/proftpd_ssl/ftpd-rsa.pem
# Path RSA certificate key file > file chiave privata
TLSRSACertificateKeyFile /etc/proftpd_ssl/ftpd-rsa-key.pem
# Obbligo il client a fornire un certificato valido prima di iniziare, off
TLSVerifyClient off

////////////////////////////////////////////////////////////////////

Posted in Linux at June 5th, 2006. No Comments.

Mysql Query Cache Tuning

Utilizzo e tuning della Query Cache

mysql

Autore Boyd Hemphill , libera traduzione di Tenivella Enrico.

Mysql implementa un meccanismo per cashare i risultati delle query al fine di poterli riutilizzare senza interrogare di nuovo il DB. Questo meccanismo e’ estremamente utile quando una appz utilizza massivamente le stesse query.

Parametri di configurazione:

Il file di configurazione my.cnf contiene le direttive per settare tutte le opzioni che interagiscono col meccanismo di cache.

Prestare attenzione a query_cache_size e query_cache_type.

have_query_cache

* Indicates that the server supports the query cache
* Specified as Boolean (YES or NO)
* Available as of 4.0.2

query_cache_limit

* Maximum size of a cacheable result set
* Specified in megabytes
* Available as of 4.0.1

La query cache e’ stata introdotta per poter cachare il numero di query maggiore possibile, non il risultato delle query piu’ corpose. Dovrebbe essere settato ad un valore relativamente basso

query_cache_min_res_unit

* Minimum block size of the query cache
* Specifed in kilobytes
* Available as of 4.1

query_cache_size

* Memory allocated to the query cache
* Specified in megabytes
* Available as of 4.0.1

Se il valore impostato e’ 0 il caching e’ disabilitato. Se il valore e’ > 0 ma la direttiva query_cache_type e’ 0 oppure OFF, la memoria dedicata al caching viene utilizzata ma non viene effettivamente letta dal mysql

query_cache_type

* Sets the query cache state
* Specified as an integer (0,1,2)
* Available as of 4.0.3

Se e’ impostato a 0 non viene messo nell cache nulla, ma la memoria dedicata viene lo stesso sporcata(wasted)

Se e’ impostato a 1 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query non contenga la direttiva SQL_NO_CACHE

Se e’ impostato a 2 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query contenga la direttiva SQL_CACHE

query_cache_wlock_invalidate

* Controls locking aspects of tables with rows in the cache
* Specified as integer value of 1
* Available as of 4.0.19
* Specific to MyISAM

Se le tabelle interrogate stanno subendo operazioni e sono in stato di “lock” settando questo parametro a 1 i risultati in cache vengono eliminati e non si ha il rischio di ottenere risultati non piu’ validi.

Abilitare la Query Cache

Per abilitare la cache query basta settare :

query_cache_type a 1 oppure 2
query_cache_size > 0

E’ importante settare correttamente entrambi i parametri, altrimenti si rischia di allocare memoria che non verra’ utilizzata.

Mysql necessita di un minimo di 40Kb di memoria per poter avviare il meccanismo di cache. Se non ce’ abbastanza memoria nel file di log viene inserito un warning

Tuning Query Cache

* FLUSH QUERY CACHE > deframmenta la struttura della memoria, non elimina nessuna query nella cache

* RESET QUERY CACHE > svuota la cache

* SHOW STATUS LIKE ‘qcache_%’ per vedere le statistiche

Qcache_lowmem_prunes -> contiene il numero di query e results sets rimossi dalla cache per far posto a nuovi dati.
Per verificare in generale l’efficienza della cache query si dovrebbe far riferimento a quel valore, se cresce costantemente nel tempo la cache memory non sta fornendo un servizio utile ai fini della velocita’ e dovrebbe essere disabilitata.

Se i valori di Qcache_hits e Qcache_lowmem_prunes crescono rapidamente, bisognerebbe aumentare la query_cache_size

Qcache_not_cached indica il numeri di query eseguite ma non messe in cache

In generale e’ dovuto al valore superato di query_cache_limit.

Aumentare la query_cache_limit puo’ essere utile, bisogna pero’ considerare il rapporto fra Qcache_hits e Qcache_lowmem_prunes, se scende e’ opportuno farlo.

Posted in Linux, Mysql at June 5th, 2006. No Comments.

Workaround php restriction include external files

Questo how-to propone un semplicissimo metodo per raggirare le restrizioni imposte (giustamente) dai fornitori di spazi web php riguardante l’inclusione di file esterni.

La direttiva che inibisce l’inclusione è allow_url_fopen = Off

Viene impostata a livello globale nel file di configurazione di php (php.ini) Mi trovo completamente d’accordo con la politica di Altervista.org che non permette l’inclusione di contenuto non locale via php. Trovo altrettanto giusto informare gli utilizzatori del servizio di hosting gratuito di come si raggira questa restrizione. Per gli utenti Linux non dovrebbero esserci problemi, per gli utenti windows penso seriamente di si :-) perciò mi soffermo esclusivamente sulla configurazione Windows

Iniziamo: gli strumenti “necessari” sono tre e nell’ordine

1) http://www.kalab.com/freeware/cron/cron.zip -> permette di eseguire operazioni ad orari e tempi prestabiliti senza intervento umano

2) http://www.interlog.com/~tcharron/wgetwin-1_5_3_1-binary.zip -> permette il download di pagine o file da riga di comando

3) ftp -> client ftp da linea di comando già presente su windows
Su sistemi Linux questi strumenti sono presenti di default, su windows ovviamente no! Scaricateli ed estraete il contenuto degli zip in una directory ad esempio c:\Programmi\cron

Per rendere l’esercitazione più reale prendiamoci come obiettivo la pubblicazione della foto in prima pagina della sezione sport di Repubblica. Oggi 5 giugno 2006 è dedicata al mitico Valentino Rossi fresco vincitore del GP del Mugello. Pagina target da inviare via ftp: http://www.repubblica.it/sport/index.html

valentino rossi

Prepariamo lo script per inviare la pagina, chiamatelo cron_repubblica.bat e salvatelo sempre in c:\Programmi\cron

<<<<<<< cron_repubblica.bat >>>>>>>

@echo off
wget -O index_sport_rep.html -o logfile.txt http://www.repubblica.it/sport/index.html echo open texilee.altervista.org> upload.ftp
echo texilee>> upload.ftp
echo password>> upload.ftp
echo cd /_php_script>> upload.ftp
echo del index_sport_rep.html>> upload.ftp
echo put index_sport_rep.html>> upload.ftp
echo quit>> upload.ftp
ftp.exe -v -s:upload.ftp
del upload.ftp
del index_sport_rep.html

<<<<<<</ cron_repubblica.bat >>>>>>>

Collegatevi via ftp al vostro spazio e create la direcotry /_php_script, dopodichè lanciate lo script con doppio click e refreshate la directory appena creata.

Se vi appare una finestrella del firewall di windows con avvertimenti vari riguardo al programmino che cerca di accedere alla rete rispondete con “SBLOCCA”. Ora che abbiamo la nostra paginetta uppata sul nostro spazio non ci rimane che scrivere poche linee di codice per trovare il percorso della foto di Valentino Rossi e automatizzare il tutto.

<<<<<< sport_repubblica.php >>>>>

<? // la var $img_url contiene il percorso della img…
$file = file_get_contents(‘index_sport_rep.html’);
$content = explode (‘<!– start cover –>’,$file);
$content = explode (‘” width=’,$content[1]);
$content = explode (‘src=”‘,$content[0]);
$img_url = “http://www.repubblica.it”.$content[1]; ?>

<img xsrc=”<?=$img_url?>” mce_src=”<?=$img_url?>” />
<<<<<< sport_repubblica.php >>>>>

Salvatelo come sport_repubblica.php e mettetelo nel vostro spazio ftp http://texilee.altervista.org/_php_script/sport_repubblica.php

Ultimo passo automatizzare la procedura: cron. Aprite il file “crontab” nella directory c:\Programmi\cron con un editor qualsiasi e commentate le entries di esempio. Aggiungete quella relativa al nostro script.

49 10 * * * c:\Programmi\cron\cron_repubblica.bat

Ogni giorno alle ore 10:49 del mattino verrà eseguito il nostro script. Se volete cambiare orario il primo il formato è * * * * * dove il primo * indica il minuto , il secondo * l’ora.

Se volete farlo eseguire a mezzanotte

0 0 * * * c:\Programmi\cron\cron_repubblica.bat

Se volete una volta ogni mezzora

0,30 * * * * c:\Programmi\cron\cron_repubblica.bat

Copiate un collegamento a cron.exe in Esecuzione Automatica in modo da farlo ripartire ad ogni riavvio.

Posted in Php at June 5th, 2006. 2 Comments.