Tag Archive for 'sicurezza'

La Grande Sorella Alice

Qualche giorno fa ho riattivato l’Alice Gate 2 Plus Wi-Fi poiché il canale wireless era morto sotto i colpi incessanti di un broadcast pesante. Odiando le configurazioni castrate e soprattutto non fidandomi della Telecom e dei suoi prodotti, avevo deciso di cambiare il modem con un D-Link DSL-2640B dato che supporta i multi-virtual-path.

Son riuscito a farlo andare disattivando il dhcp quando il decoder viene acceso (operazione tra l’altro da ripetere ogni volta) ma il segnale della tv in multicast veniva propagato anche sulla linea wireless.

Tornando ad Alice SolaGate, quando per sbaglio ho digitato male un indirizzo sulla barra di firefox, m’è comparsa non la solita pagina d’errore di “Address not found” ma una bella pagina di Alice che mi avvisava dell’errore.

Come diavolo si permettono di inserire la LORO pubblicità, i LORO servizi non richiesti nella MIA connessione?

Allora provando un firmware che villantava lo sbloccaggio di tale affare, in modo da settarmi come risolutori DNS altri servers, cosa scopro?!

  1. Una violazione immane della GPL che presto provvederò a segnalare: il firmware infatti contiene un kernel linux e busybox;
  2. una connessione “management” nascosta;
  3. un controllo remoto attivo (spero utilizzato solo per aggiornare i firmware, ma chissà…)
  4. la segnalazione di una backdoor.

Ho trovato quindi un firmware di un dispositivo della US Robotics, accuratamente modificato che rimuove tutte questi piccoli fastidi…

Per la HomeTv basta creare il secondo PVC e mapparlo sulla porta verde (copio la guida presente anche sul repository dei fw).

1 - creare una connessione WAN aggiuntiva di tipo LLC Bridged sul VCC 8/36:
* Internet -> WAN Setup -> Add
* VPI 8, VCI 36, UBR without PCR, Next
* Type of network protocol Bridging, encapsulation LLC/SNAP - BRIDGING, Next
* spunta su Enable bridge service, Service name br_8_36, Next
* Apply
* Finish

2 - assegnare l’interfaccia appena creata alla porta eth0 :
* LAN -> Mapped Interfaces -> Add
* Group name IPTV, spostare dall’elenco di sinistra all’elenco di destra eth0 e nas_8_36, Save

PS. Mi tengo una copia del firmware (USR/Alice Gate Firmware) qui nel blog, non si sa mai.

Tags: , , ,

Gentoo: Filesystem crittografato con LUKS e EVMS

Ho subito installato la Gentoo sul mio bel protatilino nuovo.

Dato che però il sistema viene fornito di base con lettore di impronte digitali e smartcard, perché non mettere l’intero sistema operativo su una bella partizione crittografata accessibile solamente se le credenziali sono confermate?! Risposta: perché sono un cretino che non sa quanto male mi sto per fare.

Prima di tutto ho avuto bisogno di una Ubuntu su disco esterno e un ciddì della Gentoo. La prima (ovviamente beta) per aver un sistema completo di rete, desktop e quant’altro visto i devices troppo recenti del portatile, mentre la seconda per supplire alla mancanza di EVMS della prima.

I passi da compiere:

  1. Boot della Ubuntu da disco esterno usb
  2. Copiare il file image.squashfs dal ciddì della gentoo sul disco e montarlo con
    1. mount -o loop image.squashfs /mnt/livecd
  3. Eseguire evmsn
  4. Nella sezione Disk Segment:
    1. Brasare tutto il disco dove installare il sistema (sda nel mio caso)
    2. Creare una partizione normale primaria e bootabile per la cartella /boot (~128 Mb)
    3. Creare partizione globale (il resto del disco - anche primaria) sulla quale mettere LVM2
    4. Creare container LVM2 (nome master)
    5. Creare le varie regioni in LVM2 (ho un disco da 160 Gb)
      • slash da 20 Gb (partizione root)
      • swap da 6 Gb
      • portage 5 Gb (/usr/portage)
      • ccache 2.5 Gb (/var/tmp/ccache)
      • tmpportage 7 Gb (/var/tmp/portage)
      • home 100 Gb (/home)
      • varcache 1 Gb (/var/cache)
    6. Per ogni regione, creare un corrispettivo Volume EVMS. Attenzione: mai dare nome “root” altrimenti all’avvio si sovrascrivono e succede un macello.
    7. Se non salva e dice che non trova il device, bisogna riavviare con il ciddì della Gentoo e usare l’evmsn da lì, salvare e riavviare.
  5. Generare le chiavi per le partizioni (anche se ne basterebbe una sola - uuencode è nel pacchetto sharutils):
    1. for i in slash swap home tmpportage ccache portage varcache; do
    2. head -c 256 /dev/random | uuencode -m - | head -n 2 | tail -n 1 > $i;
    3. done
  6. Formattare le partizioni con LUKS:
    1. for i in slash swap home tmpportage ccache portage varcache; do
    2. cryptsetup -c aes-cbc-essiv:sha256 -s 256 luksFormat /dev/evms/$i /path/to/keys/$i;
    3. done
  7. Aprire le partizioni:
    1. for i in slash swap home tmpportage ccache portage varcache; do
    2. cryptsetup -d /path/to/keys/$i luksOpen /dev/evms/$i decrypt-$i
    3. done
  8. Formattare i vari decrypt-* con i filesystems, montare le varie cartelle, continuare con l’installazione seguendo l’handbook.
  9. Ricordarsi di copiare le chiavi sul disco e impostare /etc/conf.d/dmcrypt per usarle e decryptare le partizioni.

Per la mia installazione ho scelto di utilizzare xfs per slash, ext2 per boot, portage e varcache, jfs per la home e reiserfs per ccache. Scelte motivate da fattori apparenti di performance.

Per il boot invece ho utilizzato il comando genkernel dove nella cartella /usr/share/initramfs c’è l’overlay per il software v86d così da utilizzare un framebuffer recente in attesa che i driver per la intel vengano rilasciati:

  1. genkernel –evms –luks –splash=natural_gentoo –initramfs-overlay=/usr/share/initramfs/ –all-initrd-modules –menuconfig –save-config –no-clean –kernel-config=… all

E i parametri di grub per il boot sono stati:

  1. intel_iommu=off video=uvesafb:1440×900-32,mtrr:3,ywrap root=/dev/ram0 init=/linuxrc crypt_root=/dev/evms/slash root_key=rootkey root_keydev=/dev/evms/boot real_root=/dev/mapper/root splash=verbose,theme:natural_gentoo console=tty1 quiet doevms nodetect doload=aes-x86_64,cbc,sha256_generic,dm-crypt,ahci,sd_mod,ext2,xfs

Dove intel_iommu=off è relativo ad un bug del kernel presumo poi nodetect per evitare i caricamenti dei moduli inutili e infine doload racchiude i moduli necessari per l’avvio della macchina.

Tags: , , ,

iTunes Shared Library

La più grande pecca del monolitico programma per ascoltare musica e sincronizzare i propri iPod, meglio conosciuto come iTunes, è sicuramente quello di essere completamente progettato su se stesso pur esistendo la possibilità di utilizzare delle pseudo librerie condivise.

Ora, chi ha la facoltà di avere una sorta di file server dove incentrare la propria (e non solo) musica ma mantiene la necessità di dover sincronizzare diversi iPod da diversi computer, sicuramente la scelta migliore non è iTunes ma bensì qualcosa come Floola o aTunes (o magari aspettare la giusta maturità d Songbird…) ovvero programmi più aperti e che non obbligano a sincronizzare lo stesso device dallo stesso computer.

Una funzione che però mi sconfifera non poco è il supporto con il protocollo DAAP. Questo arnese, in combinazione con l’architettura Zeroconf, o Bonjour che a dir si voglia, può essere la soluzione giusta per chi desidera avere una rete locale piena di servizi che non necessitano di alcuna configurazione poiché, con un approccio molto simile a quello di un comune virus, vengono annunciati e pubblicati per tutta la rete. Approccio poco controllabile in termini di sicurezza.

Con il software Firefly è possibile pubblicare un intero Media Server visibile soprattutto anche da iTunes ma purtroppo ci sono vari problemi:

  • non si possono tenere sotto controllo le interfacce di rete sulle quali aprire le porte per la condivisione;
  • non c’è la modalità di scrittura;
  • le canzoni non avranno sempre lo stesso id e quindi rende la sincronizzazione con l’ipod assai difficile;
  • l’aggiornamento della lista compie una scansione di TUTTE le cartelle.

Male, molto male. Quindi: rimandato a settembre!.

Tags: , , , , ,

HTTP to HTTPS

Quando si effettua un login in un qualsiasi sito abbastanza professionale di solito (anche se ahimè non sempre) la trasmissione del nome utente e della password non avvengono in chiaro ma attraverso una connessione crittografata con HTTPS.

Questo però non avviene di default sui siti caserecci.

Per forzare un redirect da HTTP a HTTPS avendo l’Apache Web Server, si può impostare questa regola del mod_rewrite sia attraverso la configurazione standard che attraverso il file .htaccess (in questo caso dopo aver ovviamente abilitato la direttiva AllowOverride All nella relativa directory).

contenuto .htaccess:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3. RewriteCond %{HTTPS} off
  4. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  5. </IfModule>

Diviene molto utile se combinato con phpLDAPadmin (phpMyAdmin invece già include una tecnica simile attivabile dalle impostazioni).

Per Wordpress il discorso è diverso: esiste infatti il plugin Admin SSL il quale provvede a costringere solamente il traffico “sensibile” a passare attraverso una strada sicura lasciando il blog fruibile tramite una normale connessione in chiaro. Il tutto in pochi click!

Tags: , , , , ,

LDAP: primi passi

Sono anni che mi riprometto di provare questa tecnologia che fa tutto e niente in stile molto enterprise decisamente sconsigliata per chi preferisce mantenere un minimo di sanità mentale.

Il protocollo LDAP è una sorta di database tuttofare orientato alle cartelle attraverso il quale si può non solo gestire l’autenticazione degli utenti ma anche l’agenda dei contatti dei più diffusi programmi di posta elettronica, oppure le configurazioni dei programmi in modo da avere allo stesso tempo tutte le informazioni centralizzate (condividendo ad esempio gli stessi dati di autenticazione degli utenti tra più servizi) ma anche distribuite poiché il database è facilmente replicabile su varie macchine.

Una volta installato OpenLDAP, il gioco non è assolutamente fatto.

Sì, perché gli sviluppatori hanno avuto la geniale idea di iniziare ad usare lo stesso database LDAP per configurare il server LDAP deprecando il file di configurazione /etc/openldap/slapd.conf. Che siano maledetti dal Dio della ricorsività! :P

Fortunatamente se si configura il file e si da il comando:

  1. slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

vengono convertite automaticamente le impostazioni nel formato LDIF così da poter avviare il server con il nuovo sistema di configurazione dinamica (che dovrebbe essere modificabile a runtime con i comandi ldapmodify e ldapadd, ma non ho provato). Non sono riuscito a capire perché non funziona se si segue la guida invece di fare questa conversione… Mah…

Se si ha la malsana idea di voler attivare il supporto al TLS nelle comunicazioni, è necessario assicurarsi che il certificato della CA sia valido e ovviamente presente nella cartella specificata da (ocl)TLSCACertificatePath e TLS_CACERTDIR rispettivamente nella configurazione del server e del client. In questo caso bisogna anche aggiungere in ldap.conf l’opzione

  1. TLS_REQCERT never

così da far accettare la connessione dalle funzioni nel php pur se compare l’errore “Unknow CA” ed utilizzare quindi phpLDAPadmin.

Tags: , , ,