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.

8.8.08

Installare kismet sulla fonera

Alcuni link utili:

http://www.dd-wrt.com/wiki/index.php/LaFonera_Software_Kismet
http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/wifi

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.