Il blog è stato spostato! Redirecting...

Stai per essere spostato sul nuovo indirizzo. Se non funziona vai su http://www.lejubila.net e aggiorna il tuo bookmark.

29.12.08

Connessione ssh verso un host remoto dietro nat grazie ad un tunnel comandato a distanza

Dopo avere visto come accedere tramite tunnel ssh ad un host remoto dietro nat (Connessione ssh verso un host dietro nat), vediamo come attivare/disattivare tale tunnel grazie ad un semplice file di testo posto sul web server del host che fungerà da host pubblico.

Elementi in gioco:
  • host-dietro-nat: host su cui vogliamo accedere, sarà lui a creare il tunnel
  • server-pubblico: server pubblico a cui abbiamo accesso e che conterrà il file di testo con il comando per aprire o chiudere il tunnel; per accedere a server-pubblico dovremo bussare alla porta 1234
Cosa vogliamo ottenere:
Vogliamo che host-dietro-nat controlli periodicamente un file sul server web server-pubblico e in base a questo apra/chiuda un tunnel ssh sempre verso server-pubblico. Una volta aperto il tunnel ssh dal server pubblico potremo accedere ad host-dietro-nat con un semplice ssh -p 2222 localhost impoartito su server-pubblico.

File con comando:
Il file contenente il comando per aprire/chidere la connessione ssh deve risiedere sulla web root di server-pubblico ed è nominato o.txt. Deve contenere uno dei seguenti caratteri seguito dal ritorno a capo (\n)
  • r: reset - killa ssh bussanti, ssh tunnel e riapre il tunnel
  • o: open - apre il tunnel
  • c: close - chiude il tunnel (killa ssh bussanti e ssh tunnel)

Vediamo gli script che dovranno essere eseguiti da host-dietro-nat:

open-tunnel-ssh.sh
#!/bin/sh
COMANDO=`wget -q -O - http://server-pubblico/o.txt`

echo "COMANDO=$COMANDO"

if [ "$COMANDO" == "r" ] || [ "$COMANDO" == "c" ]; then
echo "reset"
kill_ssh_bussanti
kill_ssh_tunneling
fi

if [ "$COMANDO" == "r" ] || [ "$COMANDO" == "o" ]; then

PORTAAPERTA=`ps |grep "[s]sh -f -N -R 2222" | wc -l`

if [ "$PORTAAPERTA" == "0" ]; then
echo "sto bussando"
ssh -p 1234 server-pubblico &
sleep 10
echo "apro il tunnel"
ssh -f -N -R 2222:localhost:22 user@server-pubblico

kill_ssh_bussanti
fi
fi


kill_ssh_tunneling
#!/bin/sh
echo "killo ssh tunneling"
for KPID in `ps |grep "[s]sh -f -N -R 2222" | tr -s ' ' | cut -d ' ' -f 2 `; do
kill -9 $KPID
done


kill_ssh_bussanti
#!/bin/sh
echo "killo ssh bussanti"
for KPID in `ps | grep "[s]sh -p 1234" | tr -s ' ' | cut -d ' ' -f 2 `; do
kill -9 $KPID
done


Vediamo i passi che eseguire lo script open-tunnel-ssh.sh:
  • recupera il comando da eseguire inserendolo nella variabile COMANDO (wget -q -O - http://server-pubblico/o.txt)
  • chiude eventuali richieste di port knocking ed eventuali tunnel aperti quando il comando è reset o close grazie agli script kill_ssh_bussanti e kill_ssh_tunneling
  • se il comando impartito è reset oppure open prosegue bussando a server-pubblico (sh -p 1234 server-pubblico &) e aprendo il tunnel ssh verso server-pubblico (ssh -f -N -R 2222:localhost:22 user@server-pubblico)
Si da per scontato che il tutto funziona utilizzando la chiave pubblica ssh di host-dietro-nat in modo che ssh non richieda la password di autenticazione.

Una volta inserito nel crontab di host-dietro-nat lo script open-tunnel-ssh.sh potremo aprire o chiudere il tunnel grazie al contenuto del file o.txt residente su server-pubblico.

23.12.08

Backup di siti ftp con lftp

Avendo la necessità di eseguire il backup di un sito ftp ho fatto un po di ricerche e ho scoperto che con lftp è possibile eseguire la copia ricorsiva dei dati presenti sul sito prelevando soltanto i file/directory variati dal ultimo backup.

Basterà impartire il comando
lftp -f commandfile

dove commandfile sarà un file contenente i comandi che lftp dovrà eseguire, che potranno essere i seguenti:

open -u user,password sito_ftp/path/da/backuppare
mirror --verbose
quit


Con open indichiamo l'utente e password (separati dalla virgola) utilizzati per collegarsi a sito_ftp dove sarà possibile indicare anche il path iniziale.
Il comando mirror invece permette di lanciare il backup che per default viene eseguito da remoto a locale, ma con l'opzione -R sarà possibile fare anche il contrario. mirror possiede molti parametri di cui rimando alla man page per approfondimenti.
Con quit invece usciremo dalla sessione ftp.

Se tutto va bene una volta eseguito il comando come sopra indicato ci ritroveremo nella directory corrente il mirror del nostro sito ftp.

22.12.08

Come un telefono ip può mettere in ginoccio un server di produzione

All'avvicinarsi della vigilia di Natale mi accingevo a trascorrere con la massima tranquillità questi due giorni lavorativi.

Purtroppo così non è stato, inspiegabilmente domenica pomeriggio il server aziendale ha iniziato a manifestare problemi di connettività sulla rete.
Iniziando il turno lavorativo di produzione alle 6,00 del mattino, ho rimesso la sveglia ad un orario ASSURDO per presentarmi in ditta all'alba in modo da potere constatare cosa diavolo era successo.

Arrivo alle 6,02, sostituisco la patch che collega il server allo switch. Tentativo inutile.
Dopo varie verifiche, riavvio lo switch, ma anche questo non da esito positivo.
Ok, è la scheda di rete guasta, vai con la sostituzione. Niente di niente !!!!!!
Cosa cavolo sta succedendo.
A questo punto impartisco un bel

ifconfig eth0 down

e butto giù la scheda di rete del server.
Da un altro host azzero la tabella di arp

arp -d 172.26.1.1


eseguo un ping sul server

ping 172.26.1.1


host irraggiungibile, ricontrollo la tabella di arp e stranamente trovo un mac address per l'ip del server.
Una rapida ricerca e scopro che tale mac address appartiene ad un telefono ip Grandstream. Fortunatamente in ditta ce n'è soltanto uno di tale marca. Mi dirigo verso l'oggetto incriminato e strappo via la patch che lo collega alla rete.

Ora tutto torna a funzionare, il telefono è guasto e per qualche strano motivo rispondeva lui alle richieste arp, non solo del server ma anche di altri pc windows.

Alla fine, dopo più di 4 ore di stress, la situazione è tornata sotto controllo.


Aggiornamento del 23/12/2008:
Ieri dopo che si sono calmate le acque, ho provveduto a posizionare un altro telefono voip GRANDSTREAM Budge Tone-200, stessa marca/modello di quello incriminato.

STAMANI SI E' RIPRESENTATO IL PROBLEMA !!!!!!

Ma cosa hanno questi maledetti telefoni, qualcuno ha riscontrato problemi simili ?????

19.11.08

Wake on lan (wol) su Dd-wrt da command line ssh

Avendo accesso solo tramite ssh al nostro dd-wrt è possibile utilizzare il wol anche da shell

/usr/sbin/wol -i 192.168.50.255 aa:bb:cc:dd:ee:ff

dove 192.168.50.255 è l'indirizzo di brodcast del segmento di lan dove è posizionato l'host da svegliare, mentre aa:bb:cc:dd:ee:ff è il suo mac address.

18.11.08

Dizionari per attacchi bruteforce

http://packetstormsecurity.org/Crackers/wordlists/

Attaccare Windows con la Null Session

Segnalo a questo link l'articolo in oggetto presente su PillolHacking che descrive l'utilizzo della null session come strumento di hacking su sistemi windows.

28.10.08

fonKounter, contatore e statistiche di accesso per il tuo sito web senza mysql (e installazione su Aruba)

Recentemente realizzando il sito web di un cliente ho avuto la necessita di implementarvi un contatore di accessi con relative statistiche.
Esistono molti prodotti open source di ottimo livello ma la maggior parte necessitano php e mysql lato server per funzionare. Avendo solo a disposizione php dovevo trovare qualcosa di diverso. Dopo un pò di ricerche ho trovato l'ottimo funKounter. Questo non necessita di mysql in quanto archivia i dati di accesso su dei semplici file di testo.


Vediamo come installarlo:

Scarichiamo il pacchetto da qui e decomprimiamolo.
Troviamo dentro fkounter5/conf/ il file di configurazione di esempio conf_sample.php
Copiamo il file sostituendo _sample con un identificativo a piacere del contatore che vogliamo creare,
questo sarà l'id a cui fare riferimento. Per esempio io per il blog ho scelto 'blog'.

Editando il file troviamo diversi parametri da impostare, di cui alcuni:

$cnf__mtime_unique_accs
intervallo di tempo espresso in minuti dentro il quale il conteggio delle visite di una pagina viene ignorata se un'utente la visita più volte, normalmente è impostato a 30.

$cnf__count_per_pages
se lo stesso contatore e posizionato su più pagine dello stesso sito, questo parametro indica se incrementare le visite per ogni pagina visitata da un'utente o soltanto sulla prima raggiunta

$cnf__last_entries
numero delle ultime visite di cui mantenere il dettaglio, normalmente impostato a 15, io l'ho portato a 100

Per approfondimenti rimando al manuale ufficiale.

Una volta terminata la configurazione, la cartella fkounter5 potrà essere uplodata direttamente sulla root del nostro spazio web.


Inserimento del contatore nelle pagine web:

L'inserimento avviene semplicemente tramite codice javascript, di cui abbiamo tre possibilità:










l'id a cui si fa riferimento nel codice js è quello associato al file di configurazione editato
precedentemente, in questo l'id è blog per il file di configurazione conf_blog.php

Visualizzazione delle statistiche:


A questo punto la visualizzazione delle statistiche avverrà puntando il browser al file /fkounter5/stats.php?id=blog del nostro spazio web,
esempio http://www.miospazioweb.it/fkounter5/stats.php?id=blog


Installazione su Aruba:

Il sito sviluppato per il cliente di cui parlavo al inizio è ospitato su Aruba. Seguendo le istruzioni sopra indicate però funKounter non funziona, in quanto durante il primo accesso al contatore, il programma non riesce a creare alcune directory di servizio necessarie alla memorizzazione dei dati. Ho risolto il problema creandole direttamente a mano del pannello di controllo di Aruba e sono:
back
data

temp

tutte da creare sotto fkounter5


Conclusioni:


fanKounter è stato utilizzato anche per questo blog, se volete dare un'occhiata alle statistiche potete farlo dal link in alto a destra o a fondo pagina.

Buon conteggio a tutti.

24.10.08

Udev e seriali usb

Ho avuto la necessità di installare 4 adattatori usb-seriale su un pc ubuntu 8.04.
Il device creato da udev all'inserimento dell'adattatore doveva puntare link simbolico che fosse sempre lo stesso in corrispondenza dell'adattatore, in modo da riconosce univocamente la seriale.

Questo è quanto ho inserito in /etc/udev/rules.d/10-local.rules

#
# Regole udev per assegnare un link simbolico
# al device in base alla porta usb dove viene
# collegato il cavo usb-seriale
# La regola discriminante è il parametro KERNELS
# (Es.: KERNELS=="1-2:1.0")
#
# Per ricavare il valore KERNELS assegnato alla porta usb
# che ci interessa proseguire come segue
# 1. collegare alla porta usb il convertitore usb-seriale
# in modo che venga creato il device /dev/ttyUSB0
# 2. eseguire il comando udevinfo -p /sys/class/tty/ttyUSB0 -a
# 3. a vide verrà presentato un output simile al seguente,
# il valore che ci interessa è quello riportato alla voce KERNELS:
#
# looking at device '/class/tty/ttyUSB0':
# KERNEL=="ttyUSB0"
# SUBSYSTEM=="tty"
# DRIVER==""
# ATTR{dev}=="188:0"
#
# looking at parent device '/devices/pci0000:00/0000:00:02.0/usb1/1-3/1-3:1.0/ttyUSB0':
# KERNELS=="ttyUSB0"
# SUBSYSTEMS=="usb-serial"
# DRIVERS=="pl2303"
#
# looking at parent device '/devices/pci0000:00/0000:00:02.0/usb1/1-3/1-3:1.0':
#
# KERNELS=="1-3:1.0" <=== QUESTO E' IL VALORE CHE CI INTERESSA
#
# SUBSYSTEMS=="usb"
# DRIVERS=="pl2303"
# ATTRS{modalias}=="usb:v067Bp2303d0400dc00dsc00dp00icFFisc00ip00"
# ATTRS{bInterfaceProtocol}=="00"
# ATTRS{bInterfaceSubClass}=="00"
# ATTRS{bInterfaceClass}=="ff"
# ATTRS{bNumEndpoints}=="03"
# ATTRS{bAlternateSetting}==" 0"
# ATTRS{bInterfaceNumber}=="00"
#
#

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-1:1.0", NAME="%k", SYMLINK="seriale1", GROUP="dialout", OPTIONS="last_rule"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-2:1.0", NAME="%k", SYMLINK="seriale2", GROUP="dialout", OPTIONS="last_rule"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-3:1.0", NAME="%k", SYMLINK="seriale3", GROUP="dialout", OPTIONS="last_rule"

KERNEL=="ttyUSB[0-9]*", KERNELS=="1-4:1.0", NAME="%k", SYMLINK="seriale4", GROUP="dialout", OPTIONS="last_rule"

14.10.08

Generatore di file favicon

Segnalo un ottimo e semplice tool online che a partire da un'immagine fornita permette di generare il corrispondente file favicon.

http://tools.dynamicdrive.com/favicon/

10.10.08

Backup di un server remoto da un client con ssh

In alternativa Backup su client remoto con tar e ssh ho illustrato come eseguire un backup di un disco locale su un host remoto, qui invece parlo del contrario, ovvero di come eseguire il backup dati di un server remoto direttamente da un client.

ssh user@server 'tar cf - /home /etc /var /usr/local /lib' > ./backup.tar

con il comando supra eseguiamo il backup delle directory /home /etc /var /usr/local /lib dell'host server nel file locale backup.tar

6.8.08

Usare dd-wrt come client ssh con autenticazione con chiave pubblica

In queste note cercherò di dare una piccola illustrazione su come riuscire ad utilizzare dropbear, il server/client ssh di dd-wrt, come client con autentificazione a chiave pubblica.

Innanzi tutto abbiamo bisogno di generare la chiave pubblica, questa può essere creata a partire dalla chiave privata già presente su dd-wrt oppure da una nuova che possiamo creare noi.

La creazione della chiave privata avviene tramite il comando dropbearkey:

dropbearkey -t rsa -f file_private_key.db

con -t possiamo specificare la chiave che può essere di tipo rsa o dss, mentre con -f indichiamo in quale file salvare la chiave privata. Ci verrà chiesto anche la passfrase da utilizzare per crittografare la chiave, che potrà anche non essere inserita se vogliamo che al momento del login del client ssh non venga richiesta nessuna password.

Una volta che abbiamo la chiave privata possiamo creare la chiave pubblica così

dropbearkey -y -f file_private_key.db

oppure così per partire dalla chiave privata già presente in dd-wrt

dropbearkey -y -f /tmp/root/.ssh/ssh_host_rsa_key

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwCRmLfMW6fd
UTSxFdZyH8QTdrRn4QmuRPTF7vJOSCEoPfk7oo05OpMfKEZp
d7+pgQmCP4UjINHaX34dEoCah6aL4U6bH6QFLrCpk5H3DQap
OmFTVqW25/59ZHJEnRRei8o6DUJKh1g9776yP3X9+XtQ+Pucn
zuDpMK3FzWUK/qOEM57 david@nbdavid
Fingerprint: md5 ce:e8:a8:cf:d9:ed:11:63:ec:49:0e:b5:de:e3:cf:38


l'output risultante sarà composto dalla chiave pubblica più il fingerprint, quello che a noi interessa è la chiave pubblica che potrà essere inserita nel file authorized_keys del server ssh a cui vogliamo accedere.

Però c'è un problema, l'implementazione di dropbear presente su dd-wrt (o almeno dd-wrt per SysLink 54GL) non supporta l'opzione -y che è quella che ci permette di generare la chiave pubblica, infatti con il comando sopra indicato non verrò generato nessun output.

Come risolvere il problema ?
Abbiamo bisogno di un'implementazione di dropbear funzionante su un altro pc, copiarci la chiave privata e generare li sopra la chiave pubblica da distribuire sui server ssh interessati.

È opportuno fare ATTENZIONE che la chiave privata non vada in mani sbagliate per non cadere in gravi problemi di sicurezza.

da dd-wrt copio la chiave privata su Ubuntu:
dd-wrt# scp /tmp/root/.ssh/ssh_host_rsa_key user@ubuntu:ssh_host_rsa_key.dd-wrt

installo dropbear su ubuntu:
ubuntu# sudo apt-get install dropbear

genero la chiave pubblica a partire da quella privata e la metto in ssh_host_rsa_key.pub:
ubuntu# dropbear -y ssh_host_rsa_key.dd-wrt | grep -v Fingerprint > ssh_host_rsa_key.pub

ricopio la chiave privata appena generata su dd-wrt:
ubuntu# scp ssh_host_rsa_key.pub user@dd-wrt:.ssh/.

ora per motivi di sicurezza eliminiamo sia la chiave privata sia quella pubblica appena generata dal pc di transito.

A questo punto su dd-wrt avremo la chiave pubblica appena creata nel file /tmp/root/.ssh/ssh_host_rsa_key.pub da utilizzare per essere distribuita su i server a cui vorremo accedere. Ricordiamo che dd-wrt utilizza filesystem volatile, nel momento che lo riavvieremo il file sparirà quindi è opportuno conservarlo in una memoria non volatile, magari una partizione jffs sempre sullo stesso dd-wrt.

Una volta impostata la chiave pubblica sul server interessato potremo accederci da dd-wrt in questo modo:

ssh user@server -i /tmp/root/.ssh/ssh_host_rsa_key

con l'opzione -i dobbiamo indicare la chiave privata da utilizzare per la connessione.

Nel caso non avessimo utilizzato una passfrase non ci verrà richiesta nessuna password di accesso. Se vogliamo utilizzare ssh come client all'interno di uno script shell potrebbe essere opportuno indicare l'opzione -y con la quale non viene chiesta nessuna conferma sul fingerprint.

Gestore degli appunti anche su Ubuntu Hardy Heron

Nella precedente incarnazione di Ubuntu usavo con soddisfazione Glipper come gestore della clipboard. Purtroppo in Ubuntu 8.04 questo ha problemi di avvio e il 90% delle volte si blocca inesorabilmente.

Grazie a Pedro Fragoso, che ha fixato il problema, possiamo continuare ad usare il nostro gestore degli appunti preferito.

Troviamo il pacchetto da lui creato qui http://launchpadlibrarian.net/14965046/glipper_1.0-1ubuntu2%7Eppa1_i386.deb

4.8.08

Notificare in una dialogbox la posta in arrivo su Thunderbird

Thunderbird 2.0 ha già un sistema di notifica della posta in arrivo. Nel momento in cui arriva un nuovo messaggio questo viene notificato con una piccola casella di testo in basso a destra che ci informa sul nuovo evento. Questa però rimane presente a video solo per qualche secondo, così che se siamo un po' distratti o ho non siamo presenti davanti al pc la notifica ci sfugge.

Quello di cui avremmo bisogno sarebbe un bel messaggio a video che scompare solo dopo averci cliccato. Niente problema, quanto detto può essere realizzato grazie ai seguenti tre strumenti:
Scarichiamo MailBox Alert da qui e installiamolo su Thunderbird dal menù "Strumenti / Componenti aggiuntivi"
Installiamo Zenity da linea di comando con:
sudo apt-get install zenity

Creiamo il nostro script ad hoc che verrà richiamato da MailBox Alert ed eseguirà la notifica della posa in arrivo. Sempre da linea di comando eseguire
gksudo gedit /usr/local/bin/notifica-nuova-mail.sh
ed in collare dentro il file di testo il seguente script:

#!/bin/bash

zenity --info --text="A T T E N Z I O N E \! \! \!\n\nC'E' UN NUOVO MESSAGGIO\n\nCONTROLLA LA POSTA"
thunderbird

dopo di che salvare ed uscire.


Adesso configuriamo MailBox Alert in modo da richiamare il mostro script quando c'è nuova posta in arrivo.
Da Thunderbird andiamo sul menù "Strumenti / Opzioni MailBox Alert" selezioniamo la checkbox "Esegui un comando", nella casella di testo inseriamo il path del nostro script /usr/local/bin/notifica-nuova-mail.sh e confermiamo cliccando sul pulsante "OK"


Adesso non ci rimane altro che aspettare una nuova mail.

1.8.08

Escludere "grep" dall'output di "ps"

Molte volte si presenta la necessità di ricavare informazioni su un i processi in esecuzione utilizzando il comando ps in combinazione con grep, per esempio:


#ps ax |grep "ssh -N -R 3333"

7988 ? Ss 0:00 ssh -N -R 3333:localhost:222 host.com -f
8067 pts/1 R+ 0:00 grep ssh -N -R 3333


Si può notare che l'ultima riga dell'output riguarda il processo di grep utilizzato per estrarre le righe contenenti ssh.
Potremmo avere l'esigenza di non dovere fare comparire quest'ultima riga. Qui di seguito elenco alcune soluzioni:

# ps ax |grep "ssh -N -R 3333" | grep -v grep

con il grep -v grep non considera le righe contenenti la stringa grep

# ps ax |grep "[s]sh -N -R 3333"

invece grep [s]sh filtra soltanto le righe al cui interno c'è la parola ssh

# ps u -C ssh

l'opzione -C di ps estrae solo i processi del comando specificato, il problema è che nel nostro caso non possiamo filtrare tutta la stringa ssh -N -R 3333 in quanto ps u -C "ssh -N -R 3333" non sono riusci to a farlo funzionare

# ps u -N -C grep | grep "ssh -N -R 3333"

così invece prima togliamo tutte le righe di processi generati dal comando grep e poi filtriamo quello che interessa


Sicuramente le diverse soluzioni non sono perfette, può andare bene una piuttosto che un'altra a seconda dei casi specifici.

Ci fossero altre soluzione sarebbero ben gradite.

29.7.08

Guida e trucchi per Nokia N80

A questo link troviamo una guida sul Nokia N80

http://www.mobileblog.it/static/guida-nokia-n80/

24.7.08

Configurare DD-WRT come repeater sul SysLink wrt54gl (come utilizzare l'adsl del vicino via wifi)

Un paio di anni fa ho sottoscritto l'abbonamento Alice Night & Weekend che mi permette di avere accesso ad internet durante le ore notturne, nel fine settimana e nei giorni festivi. Con il trascorrere del tempo mi sono accorto questo tipo di contratto iniziava a starmi un po stretto. Per fortuna il vicino di casa, avendo un contratto flat, mi ha gentilmente offerto la sua connessione.

ATTENZIONE !!!!!!

Come riportato nei commenti da alcuni lettori, attualmente questa pratica in Italia non è legale, in genere i fornitori di connettività vietano la fornitura a terzi, in più attualmente è vietato l'utilizzo di ponti radio al di fuori della propria abitazione.
Questo articolo NON VUOLE ESSERE IN NESSUN MODO UN INCITAMENTO PER IL LETTORE AD INFRANGERE LA LEGGE, ma solo una guida per chi si trovasse in difficoltà nel configurare DD-WRT.

L'adsl su cui mi apprestavo ad agganciarmi stava dietro un router wireless Sitecom, come fare ad eseguire la connessione ? Semplice ho acquistato un Cisco Linksys wrt54gl, ho upgradato dd-wrt v23rc7 alla v24 e l'ho sostituito al mio attuale AP, configurandolo in modalità Repeater.
Tra l'altro grazie a dd-wrt sono riuscito a configurare diversi servizi che prima non avevo: dns e dhcp sulla rete locale, visibilità pubblica grazie a DynDns, accesso da remoto verso la rete interna, wake on lan dei pc della lan, ecc...)

Scenario

Definiamo le due reti: HOME è la mia rete locale, mentre VICINOCASA è la rete del vicino di casa che offre la connessione adsl. La rete HOME sarà connessa ad internet grazie al nostro router SysLink con dd-wrt configurato in modalità repeater, in modo che questo faccia da ponte verso il router adsl wirelss (Sitecom) posto sulla rete VICINOCASA. Quindi avremo uno scenario simile a questo

Network HOME 192.168.50.0/24
  • router SysLink con dd-wrt
    192.168.50.254 - Interfaccia verso rete interna (HOME)
    192.168.0.254 - Interfaccia verso rete rete VICINOCASA (collegata via wifi in modalità repeater)
Network VICINO CASA 192.168.0.0/24
  • router Siecom (router adsl wifi)
    192.168.0.1 - Interfaccia verso rete interna (VICINOCASA)
Come possiamo notare i router SysLink e Sitecom sono in comunicazione tra loro grazie alle due interfacce che hanno in comune la rete 192.168.0.0/24













CONFIGURAZIONE LinkSys wrt54gl con DD-WRT

Passiamo ora alla configurazione di dd-wrt:
  1. Definiamo una interfaccia wireless virtuale che utilizzeremo in modalità access point per fare collegare i nostri dispositivi mobili (notebook, telefoni wifi, ecc...) sulla rete locale (network Home 192.168.50.0/24). Per fare questo posizioniamoci sul menu "Wireless/Impostazioni base", clickiamo su Aggiungi nella sezione Virtual Interfaces e definiamo l'SSID della nostra rete wireless (nel mio caso lejubila), mentre nella sezione Wireless Physical interface impostiamo la Modalità wireless come Repeater e nel campo Nome retewireless mettiamo l'SSID della rete wifi del vicino di casa(nel mio caso Sitecom). A questo punti clickiamo su "Applica", il nostro dd-wrt attivera la nostra rete wifi e contemporaneamente instaurerà la connessione alla rete wifi del vicino di casa.
  2. Definiamo il sistema crittografia e le chiavi per le l'interfaccia wifi fisica e virtuale. Posizioniamoci nel menu "Wireless/Wireless Security", nella sezione Interfaccia fisica wl0 impostiamo il sistema di crittografia adottato sull'access point del vicino di casa, mentre nella sezione Interfacce virtuali wl0.1 definiamo il tipo di crittografia della nostra wifi. Clickiamo sempre su Apllica per abilitare le modifiche.
  3. Definiamo ora l'indirizzo ip dell'interfaccia di dd-wrt che si affaccia sulla rete wifi del vicino (questa interfaccia viene considerata al pari della Wan e verrà utilizzata da dd-wrt per uscire su internet). Posizioniamoci su "Setup/Setup base" e nella sezione Tipo di connessione internet configurarla come segue:
    • Tipo di Connessione: IP Statico
    • Indirizzo IP Internet: impostare un indirizzo di rete compatibile con la rete wifi del vicino, nel mio caso 192.168.0.254
    • Subnet Mask: come sopra
    • Gateway: indirizzo ip del router del vicino di casa, nel mio caso 192.168.0.1
    • Dns statico: gli indirizzi ip del dns del provider
  4. Impostiamo l'indirizzo di rete locale di dd-wrt nella sezione Setup Rete sempre dal menu "Setup/Setup base" (nel mio caso 192.168.50.254)
  5. Applicare e salvare le modifiche
A questo punto se tutto è stato fatto correttamente dovremmo essere in grado di connetterci ad internet grazie alla linea del nostro vicino.

Buona navigazione.

19.7.08

Dd-wrt: indirizzo ip di emergenza

Se abbiamo incasinato la configurazione del router o non ricordiamo l'indirizzo ip, possiamo provare a fare puntare il browser verso http://169.254.255.1 dopo avere collegato tramite cavo il pc al router.
Naturalmente dobbiamo avere configurato l'interfaccia di rete del nostro pc con un ip compatibile (se avahi-daemon è avviato è probabile che l'indirizzo ip sia già impostato).
Dd-wrt tiene sulla lan un ip aggiuntivo (di emergenza ?) oltre a quello configurabile dall'utente e sarà proprio per mezzo di questo che potremo ancora accedere al router.

18.7.08

Quali antenne devo usare

Un articolo che spiega che antenne utilizzare nelle varie casistiche di connessione wireless

http://www.napoliwireless.net/doku/doku.php?do=show&id=faq%3Aqualiantenne

17.7.08

Backup su client remoto con tar e ssh

In passato ho avuto l'esigenza di eseguire il backup di alcuni dati direttamente su un pc remoto senza salvare il file tgz direttamente in locale.
Per fare questo ho utilizzato in combinazione tar e ssh, si presuppone che sul pc remoto (quello dove verrà memorizzato il backup) sia presente la chiave pubblica ssh del pc da backuppare in modo da potervi accedere senza digitare la password.
Il comando è il seguente:

tar -czf - /path/da/backupare/ | ssh utente@host_remoto 'cat > /path/destinazione/backup/backup.tgz'

Come iniziare con il tuo Neo FreeRunner Openmoko

Dobbiamo fare i complimenti a jollyr0ger che su TuguLab ha realizzato la traduzione in italiano della guida ufficiale Getting Started with your Neo FreeRunner.
Chi ha la fortunato di possedere della saponetta telefonica più famosa del web può fare riferimento a questa guida.

Ubuntu (Debian) Linux non si spenge su vecchi pc: soluzione

In alcuni pc un pò datati la nostra Ubuntu (ma anche le altre distribuzioni in generale) potrebbe avere dei problemi nello spengimento. Se dopo lo shutdown il pc si blocca visualizzando il messaggio System halted e successivamente dovete premere il pulsante per eseguire lo spengimento effettivo, allora probabilmente potrete risolvere il problema così:

Da terminale digitare:
sudo gedit /etc/modules

ed aggiungere come ultima riga quanto segue:
apm power_off=1










Una volta salvato e riavviato il pc a questo punto molto probabilmente avremo risolto il nostro problema.

( spengimento spengere spegnere spengimento spegnimento poweroff shutdown )

16.7.08

Installazione DD-WRT su La Fonera con client Linux Ubuntu 8.04

Da pochi giorni mi è arrivato il famoso router wifi La Fonera. Ho acquistato l'oggetto perché mio serve per mettere in piedi un repeter in modo da fare espandere la raggiungibilità della mia attuale rete wireless.
Appena arrivato il router ho provveduto ad installare DD-WRT nell'attuale versione v24 stabile seguendo la guida do CroccoBiscotto "Come installare dd-wrt sulla fonera".

Spudoratamente copiati dalla guida sopra menzionata, riepilogo i passi seguiti per effettuare l'installazione. L'unica differenza è l'utilizzo di un pc linux ubuntu 8.04 al posto di windows e dei rispettivi programmi menzionati nella guida originale.

Aprire la porta ssh
  1. Scollegare il cavo di rete che collega la Fonera al router adsl
  2. Accendere la Fonera ed attendere circa 5 minuti
  3. Premere il pulsante di reset posto sulla parte inferiore della Fonera e tenerlo premuto per almeno 30 secondi
  4. Continuando a tenere premuto il tasto di reset staccare l'alimentazione della Fonera
  5. Tenendo sempre premuto il tasto reset ricollegare l'alimentazione
  6. Sempre tenendo reset premuto aspettiamo circa 2-3 minuti finché il led Wlan non si accende e subito si rispenge, a questo punto possiamo lasciare il tasto reset
A questo punto il firmware della Fonera è stato riportato alla versione senza aggiornamenti con cui è possibile collegarsi via ssh.
È importante non ricollegare la Fonera al router adsl altrimenti questa eseguirà nuovamente l'aggiornamento del firmware ad una versione più recente e quindi dovremo rieseguire la procedura finora elencata.

Ora dobbiamo potere collegare la Fonera ad internet senza che questa esegua l'aggiornamento del nuovo firmware, per fare questo sfrutteremo un dns ad ok, quindi eseguire i seguenti passi:
  1. Collegarsi tramite Network Manager alla rete wifi "MyPlace", verrà richiesta la chiave wpa, inserire come chiave il numero di serie che si trova sul retro della Fonera
  2. Aprire il browser e puntare all'indirizzo 192.168.10.1 che è quello della Fonera, in modo che venga presentato l'interfaccia di configurazione, alla richiesta di username e passwor dinserire il valore admin per tutti e due
  3. Entrati nell'interfaccia di configurazione raggiungere la sezione Advanced / Internet connection
  4. Nel campo mode scegliere static ip e impostare un indirizzo ip compatibile con il nostro router adsl. Es. se il nostro router ha come indirizzo 192.168.50.254 impostare come segue:
    • Ip address 192.168.50.253
    • Netmask 255.255.255.0
    • Gateway 192.168.50.254
    • Dns server 88.198.165.155

  5. Confermiamo la configurazione appena modificata (importante è avere inserito il dns 88.198.165.155)
  6. Ricollegare la Fonera al router adsl
  7. Riavviare la Fonera staccando e riattando l'alimentazione

Ora dobbiamo modificare alcuni script sulla Fonera in modo da mantenere sempre la porta ssh aperta:
  1. Ricollegarsi sempre con Network Managere alla rete wifi "MyPlace" della Fonera
  2. Collegarsi come utente root via ssh alla Fonera digitando come password admin
    • ssh -l root 192.168.10.1
  3. Una volta collegati via ssh alla shell della Fonera rinominare il file dropbear
    • mv /etc/init.d/dropbear /etc/init.d/S50dropbear
  4. Con vi editare il file /etc/firewall.user (vi /etc/firewall.user) e scommentare (togliere il simbolo #) dalle righe della sezione contrassegnata con ###Open port to Wan
  5. Salvare ed uscire

Modificare redboot

Ora dobbiamo modificare il boot loader della Fonera per far si che ad ogni riavvio questa si metta in ascolto con indirizzo ip 192.168.1.254 sulla porta 9000 con il protocollo telnet.
Mantenendo la Fonera collagata ad internet eseguire i seguenti passi:
  1. Collegarsi via ssh alla Fonera come indicato precedentemente
  2. Impartire i seguenti comandi
    • cd /tmp
    • wget http://www.croccobiscotto.it/download/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
  3. Una volta terminato il download procedere come segue:
    • mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
  4. Al termine dell'operazione riavviamo la Fonera e stacchiamo il cavo dal router adsl per evitare eventuali aggiornamenti
  5. Una volta riavviata ricolleghiamoci via ssh alla fonera e riattacchiamo il cavo al router adsl e impartire i seguenti comandi
    • cd /tmp
    • wget http://www.croccobiscotto.it/download/out.hex
  6. Al termine del download impartire questo comando
    • mtd -e "RedBoot config" write out.hex "RedBoot config"
Una volta modificato redboot questo al boot si metterà per dieci secondi in ascolto sull'indirizzo 192.168.1.254 porta 9000 protocollo telnet.

Installare DD-WRT

L'installazione di dd-wrt avviene collegandosi via telnet al bootloader della Fonera.
È fondamentale che durante la fase di flashing del firmware non scollegarisi dal telnet e non spengere la Fonera altrimenti renderemo del tutto inutilizzabile quest'ultima
  1. Installare sul proprio pc il server tftp con il seguente comando
    • sudo apt-get install tftpd-hpa
  2. Modificare il file di configurazione del server (vi /etc/default/tftpd-hpa) sostituendo la riga RUN_DAEMON="no" con RUN_DAEMON="yes"
  3. Scarichiamo il firmware dd-wrt v24 nella directory del server tft
    • cd /var/lib/tftpboot
    • wget http://www.dd-wrt.com/dd-wrtv2/downloads/stable/dd-wrt.v24/Atheros%20WiSoc/Fonera/linux.bin
  4. Fare partire il server tftp
    • sudo /etc/init.d/tftpd-hpa start
  5. Scolleghiamo il cavo al router adsl e colleghiamolo alla scheda di rete del nostro pc
  6. Impostiamo la scheda di rete del nostro pc con valori compatibili con il boot loader della Fonera (disattiviamo la voce "roming" sulla configurazione della scheda di rete in modo che Network Manager non la controlli direttamente)
    • Ip address 192.168.1.2
    • Netmask 255.255.255.0
  7. Riavviamo la Fonera e dopo circa 3-4 secondi colleghiamoci via telnet
    • telnet 192.168.1.254 9000
  8. Entrati nella shell di redboot procedere come segue
    • ip_addr -h 192.168.1.2 -l 192.168.1.254/24
    • fis init (premere y alla richiesta di conferma)
    • load -r -v -b 0×80041000 linux.bin
    • fis create linux
      questo comando impiegherà 15-20 minuti prima che venga eseguito, mi raccomando non spengere e non interrompere per nessun motivo altrimenti renderemo la Fonera un oggetto inutilizzabile
  9. Modifichiamo lo script di avvio di redboot per fare caricare dd-wrt come segue
    • fconfig
    • fis load -l linux (confermare con invio)
    • exec (confermare con invio)
    • Confermare quello che compare a video e con y quando richiesto
    • Alla fine digitare reset per riavviare la Fonera
Una volta riavviata la Fonera potremo accedere a DD-WRT, sarà disponibile il segnale della rete wifi dd-wrt, l'interfaccia di configurazione è disponibile all'indirizzo 192.168.1.1 ed entreremo con utente root e password admin.

Ricordo che questa guida è solo un promemoria per me per successive installazioni, per maggiori informazioni, dubbi o approfondimenti è preferibile consultare l'articolo di CroccoBiscotto da cui questa quida è tratta http://www.croccobiscotto.it/?p=1584

15.7.08

I colori del web

Alcune tabelle con codici e nomi di colori per le pagine web

http://www.molly.com/molly/webdesign/136_colors.html







http://www.molly.com/molly/webdesign/color_names.html












http://www.molly.com/molly/webdesign/colorchart.html

crontab

Un veloce schema sul formato del file crontab per l'esecuzione pianificata di comandi personalizzati

* * * * * root /usr/local/bin/comando_da_eseguire.sh
^ ^ ^ ^ ^ ^ ^
| | | | | | |
| | | | | | +---- Comando da eseguire
| | | | | +--------- Utente che esegue il comando
| | | | +----------- Giorno della settimana: 0-7
| | | | (il valore 0 e 7 indicano la domentica)
| | | +------------- Mese: 1-12
| | +--------------- Giorno del mese: 1-31
| +----------------- Ora: 0-23
+------------------- Minuti: 0:59

Se impostiamo il valore * (asterisco) indica che che l'esecuzione deve avvenire sempre (ogni minuto, ora, giorno, ecc... a seconda della colonna indicata)
Altrimenti i valori possono essere inseriti nella seguente forma:
  • Singolo valore: 5 (se nella colonna dei minuti, viene eseguito al quinto minuto di ogni ora)
  • Valori intervallati da virgola: 5,10,15 (Se nella colonna dei minuti, viene eseguito il quinto, il decimo e il quindicesimo minuto)
  • Valori intervallati dal meno: 5-15 (Se nella colonna dei minuti, viene eseguito ogni minuto dal quinto al quindicesimo minuto dell'ora)
  • Valori con step: 1-30/5 (Se nella colonna dei minuti, viene eseguito ogni cinque minuti dal primo al trentesimo minuto dell'ora)
Esempio:

10-50/5 * * * 2,4,6 david /usr/local/bin/comando.sh

Esegue comando.sh ogni 5 minuti a partire dal decimo al 50 minuto dell'ora, soltanto nei giorni della settimana 2, 4 e 6, ovvero martedì, giovedì e sabato

Creare menu css

Alcuni link di generatori menu css

http://cssmenumaker.com/
http://www.13styles.com/

8.7.08

Utilizzare find per eseguire operazioni (eliminare) su i file trovati

Avendo la necessità di eliminare dei file nella directory corrente e nelle sue sotto directory è possibile utilizzare il comando find:


find . -name "*~" -exec rm {} \;


in questo modo vengono eliminati tutti i file che corrispondo al wildchar *~ ovvero tutti quelli che finiscono per ~

Come funziona:
il parametro -exec di find permette di eseguire un comando a piacimento sostituendo {} con il file trovato. La stringa \; è necessaria per indicare la fine del comando fornitor a -exec

7.7.08

Come installare dd-wrt sulla fonera

Su http://www.croccobiscotto.it/?p=1584 troviamo un'ottima guida per installare DD-Wrt sulla Fonera

Altri link utili:
http://www.ptlug.org/wiki/Howto_Installazione_DD-WRT_sulla_Fonera
http://www.andreabeggi.net/2008/01/27/installare-dd-wrt-su-la-fonera-problemi-di-timeout/

Connessione ssh verso un host dietro nat

Supponiamo di aver un host A con un indirizzo pubblico e un host B su una lan dietro Nat, a questo punto vogliamo raggiungere dall'host A l'host B tramite ssh ma non possiamo mettere mano al gateway che Natta B.
Una possibile soluzione è fare aprire a B un tunnel ssh su A tramite il quale poi ci collegheremo

open_tunnel_ssh.sh

#!/bin/bash
PORTAAPERTA=`ps u -N -C grep |grep "ssh -N -R 3333" | tr -s ' ' | cut -d ' ' -f 11 | wc -l`

if [ "$PORTAAPERTA" == "0" ]; then
ssh -N -R 3333:localhost:22 user@host_A.com -f
fi

questo script può essere inserito nel crontab di B in modo che venga eseguito ogni cinque minuti. Se il tunnel è già aperto la connessione ssh non verrà rieseguita altrimenti verra aperta la porta 3333 sull'host A che punterà alla porta 22 (ssh) dell'host B

A questo punto dall'host A possiamo impartire il comando

ssh -p 3333 localhost

e avremo accesso a l'host B

nell'eventualità che il tunnel cada questo verrà ripristinato dopo cinque minuti grazie al crontab.

Per fare funzionare il tutto è fondamentale che la connessione ssh da B verso A funzioni senza dovere impartire la password ma grazie alla chiave pubblica di B precedentemente generata
ssh-keygen -t dsa
e salvata in
~/.ssh/authorized_keys
di A

25.6.08

Controllare la replica mysql

Dopo diversi problemi con la replica di mysql ho realizzato uno script che una volta inserito nel crontab mi avverte per posta di un eventuale errore

check_mysql_replicate.sh

#!/bin/bash
check_str=`mysql -u user_mysql --password=password_mysql -e "SHOW SLAVE STATUS\G" |grep Last_Error | cut -d ':' -f 2 `
check=`echo $check_str | tr -d ' '`
if [ $check ]; then
echo " ATTENZIONE !!!!!"
echo "POSSIBILE ERRORE NELLA REPLICA DI MYSQL"
echo
echo
echo ERRORE=$check_str
fi

Google Maps Api

Alcuni link utili che documentano le api di Google Maps

Google Maps Api
http://code.google.com/apis/maps/

Aggiungere Google Maps ad una pagina Web
http://www.deelan.com/dev/google-maps/

Maps Apli Blog (blog ufficiale)
http://googlemapsapi.blogspot.com/

17.6.08

Esempi di query mysql 5.0

Qui troviamo molti esempi di query mysql 5.0

http://www.artfulsoftware.com/infotree/queries.php

3.5.08

2.5.08

Impianto di irrigazione con la Fonera

Ecco qui in bel articolo per realizzare una centralina per comandare un impianto di irrigazione con il roiter/ap Fonera