postazione per pubblicità sicura?

10 risposte [Ultimo contenuto]
Ritratto di tab
tab
(Junior)
Offline
Junior
Iscritto: 19/12/2013
Messaggi: 6

Buon giorno,
sto realizzando una postazione per trasmettere pubblicità sugli schermi, una sistema digital signage insomma.
Questi sono gli aspetti che vorrei curare:
[*] ambiente desktop limitato in modo che non sia possibile farci nulla se inseriti mouse e/o tastiera
[*] possibilità di disattivare mouse e tastiera
[*] criptare la home in modo che non sia possibile leggerne il contenuto leggendo, magari, l'HDD dall'esterno
[*] creare un account limitato che non possa fare nulla.

In pratica, la mia idea è quella che la postazione viene accesa e dopodichè deve fare tutto da sola. Quindi lancerà in automatico uno script che aprirà il browser, ecc ecc.

Vorrei sentire, però, anche un vostro parere per sapere se, per caso, sto tralasciando altri aspetti della sicurezza.
E magari, se poteste darmi anche qualche dritta su come realizzare i punti sopra elencati ve ne sarei immensamente grato

Ritratto di pietro
pietro
(Collaboratore)
Offline
Collaboratore
Iscritto: 30/06/2005
Messaggi: 1124

Quello di cui hai bisogno è un'installazione di un chiosco (kiosk). Cerca su Internet per vederese c'è qualcosa di già fatto che può fare al tuo scopo:

https://www.google.com/search?q=internet+kiosk+linux+debian

se non trovi niente ci risentiamo. Comunque è tutto fattibile.

Per la cifratura usa LUKS + dm-crypt (tra l'altro si può fare anche in fase di installazione): il problema è che al boot devi inserire una password e se non c'è nessuno nel chiosco diventa difficile... a meno che non prenda la password dall'esterno, come una chiavetta USB, ma se prendono anche la chiavetta hanno la chiave!

Debian. Be unique.

Ritratto di tab
tab
(Junior)
Offline
Junior
Iscritto: 19/12/2013
Messaggi: 6

Grazie delle info Pietro.
Riguardo alla cifratura pensavo di farla dopo l'installazione giusto per evitare che collegando l'hdd esternamente riescano a leggere i dati.
A tal proposito cosa mi consigli? Perchè poi questo chiosco si accenderà automaticamente ogni giorno quindi non è prevista alcune interazione umana diciamo.

Ritratto di pietro
pietro
(Collaboratore)
Offline
Collaboratore
Iscritto: 30/06/2005
Messaggi: 1124

Non puoi cifrare il root file system dopo l'installazione, a meno che tu non voglia staccare l'HD, metterlo su un altro PC, copiare tutti i dati da un'altra parte, cifrare l'HD, ricreare il file system, ricopiarci i dati, reinstallarlo sul PC e sperare che riparta dopo aver acceso un cero a San IGNUcius Wink.

L'installer Debian offre la possibilità di cifrare il fs durante l'installazione in fase di partizionamento: perché non sfruttare quest'occasione?

Se poi vuoi cifrare solo il fs con i dati allora il discorso cambia: devi usare i comandi:

- cryptsetup luksFormat per formattare la partizione
- cryptsetup luksOpen per aprire il device con un NOME che scegli tu (poi lo trovi su /dev/mapper/NOME)
- creare il file system su /dev/mapper/NOME
- montare il fs

Poi devi aggiornare i file /etc/crypttab e /etc/fstab per montarlo al boot. C'è un sacco di documentazione in rete:

https://www.google.com/search?q=cryptsetup%20luks

Comunque io ormai da anni sui miei PC adotto la seguente configurazione:

- partizione /boot in chiaro (ext2)
- tutto il resto in un'unica partizione criptata
- la partizione criptata la configuro con LVM
- su LVM creo tutti i file system che mi servono (almeno root e swap ed i fs di dati se servono)

Se vuoi mettere la chiave in automatico al boot cerca l'opzione 'keyscript' nel manuale di crypttab. Ti consiglio di creare uno script che prende la chiave di cifratura da una chiavetta USB in maniera da usare la chiavetta come "token" di autenticazione (ovviamente lo script deve essere reperibile al boot, quindi non puoi metterlo nella partizione criptata). Se qualcuno dovesse prendersi l'HDD non riuscirebbe a fare nulla, ma se dovessero rubare l'HDD e la chiavetta in teoria sarebbero in grado di decifrare il disco.

Quello che potresti fare per aumentare la sicurezza è cifrare ulteriormente la chiave che metti sulla chiavetta USB usando come seconda chiave una stringa che è propria del tuo PC, come ad esempio il serial number della motherboard, l'hw address della scheda di rete, ecc. In questa maniera anche se dovessero prendere HDD e chiavetta non riuscirebbero a decodificare il disco perché manca la seconda chiave che serve a decodificare il tutto. Ovviamente se dovessero prendere tutto il PC avrebbero libero accesso a tutto (ma dovrebbero essere ladri mediamente smanettoni...).

Non so se sono stato chiaro.

Pietro

Debian. Be unique.

Ritratto di tab
tab
(Junior)
Offline
Junior
Iscritto: 19/12/2013
Messaggi: 6

Ciao Pietro,
si sei stato chiaro ma è davvero tanta la roba da fare! Big Grin
Pensavo fosse più semplice realizzare il tutto.
Quindi, ricapitolando, se installo il SO con home separata e poi cifro la home sto tranquillo che non riescano a decifrare il contenutosmontando l'hdd ad esempio?
E' questa la parte che ho capito di meno Wink

Ritratto di pietro
pietro
(Collaboratore)
Offline
Collaboratore
Iscritto: 30/06/2005
Messaggi: 1124

Per questo ti consigliavo di usare uno dei sistemi totem/kiosk già fatti... Ma non devi lasciarti spaventare dalla complessità: è tutto ben documentato.

Riguardo alla cifratura: l'anello debole di ogni sistema crittografico è sempre la password/passphrase! Su LUKS la chiave di cifratura è memorizzata all'interno della partizione criptata ma è a sua volta criptata con una password: in parole povere, la password che devi inserire per montare il file system serve a sbloccare la chiave di decodifica vera e propria.

Comunque, se la partizione root è in chiaro e quella dati/home è criptata, anche se ti prendono l'hd al massimo riusciranno a leggere quella in chiaro: la partizione criptata risulterà impossibile da leggere a meno che non sappiano la password (che ovviamente non devi memorizzare sulla partizione in chiaro!). Più la password è forte e meno rischi corri.

Ma perché non vuoi criptare tutto il disco in fase di installazione lasciando solo /boot in chiaro? Qualche dato sensibile nella partizione root c'è sempre... banalmente, potrebbero tentare un brute force attack sul file delle password, leggere eventuali password di reti wi-fi, consultare i log di sistema....

Che tipologia di dati hai bisogno di criptare? Se si tratta di pubblicità immagino che hai tutto l'interesse a diffonderla il più possibile... Wink

Alternativamente puoi fare un totem "stupido" senza dati e prendere tutte le informazioni da un server remoto blindato attraverso protocolli web.

Debian. Be unique.

Ritratto di tab
tab
(Junior)
Offline
Junior
Iscritto: 19/12/2013
Messaggi: 6

Si tratta di pubblicità, vero, ma non vorrei che replicassero il sistema (anche se dal lato web è stato fatto un lavoro discreto, non è esente al 100% da bugs) su altre postazioni o che manomettessero il sistema aggiungendo/rimuovendo le pubblicità.
In ogni caso penso di criptare, come dicevi tu, tutto in fase di installazione.
Un mio amico mi suggeriva di crittare anche il boot e di inserire una password direttamente nel grub, per avere ancora più sicurezza.
Spero, inoltre, di trovare il modo di installare qualcosa che lo renda kiosk magari affidandomi a qualche guida o a qualche tuo altro consiglio Wink

Per ora ho trovato solo questo
http://webconverger.org/blog/entry/Debian_Web_Kiosk/
e questo
http://www.alandmoore.com/blog/2011/11/05/creating-a-kiosk-with-linux-and-x11-2011-edition/
che però è un po datato visto che è stato scritto nel 2011.

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

tab ha scritto:

Un mio amico mi suggeriva di crittare anche il boot e di inserire una password direttamente nel grub, per avere ancora più sicurezza.

Non riesco a immaginare come farlo: Grub risiede nella partizione di boot.

Per ogni partizione che decidi di cifrare, se il sistema deve avviarsi da solo, allora bisogna registrare in chiaro una password in un posto accessibile prima di montare tale partizione. Se cifri la home, puoi mettere la password nella root. Se cifri anche la root, devi metterla nel boot. Se cifri l'intero disco, devi metterla in una chiavetta esterna, il che ha il vantaggio che la password e i dati protetti da essa sono su due dispositivi fisicamente separati. Questo potrebbe disorientare il malintenzionato della domenica, ma non fermare quello davvero agguerrito.

Ritratto di pietro
pietro
(Collaboratore)
Offline
Collaboratore
Iscritto: 30/06/2005
Messaggi: 1124

Non ho capito dove vuoi mettere il totem e come vuoi utilizzarlo. Sarà una postazione interattiva (cioè il pubblico può usare il sistema per navigare le pagine della pubblicità) oppure è semplicemente un display che mostra in sequenza pagine web e/o video e non è prevista nessuna interazione con il pubblico?

In quest'ultimo caso non devi preoccuparti più di tanto della sicurezza quando è acceso: ti basta rimuovere fisicamene tastiera e mouse e mettere in blacklist i rispettivi moduli del kernel o comunque disabilitare le periferiche e le porte USB in altro modo in maniera che nessuno può collegarci alcunché. Puoi anche cifrare tutto il disco e mettere GRUB su una chiavetta che dovrai collegare per effettuare il boot (a patto che il tuo PC possa fare il boot da USB).

Alternativamente puoi usare il seguente metodo: se hai un altro PC in rete in luogo sicuro e non accessibile, puoi mandare la chiave via rete. Se installi 'cryptsetup' c'è scritto tutto nel file '/usr/share/doc/cryptsetup/README.remote.gz', trovi una spiegazione più dettagliata qua:

http://blog.neutrino.es/2011/unlocking-a-luks-encrypted-root-partition-remotely-via-ssh/

Se invece gli utenti devono smanettarci allora devi curare la sicurezza nei minimi dettagli, non solo al boot ma anche a run-time.

Una volta ero in un albergo e c'era un totem Internet con Windows... appena l'ho visto mi sono messo a ridere: è bastato digitare "C:\" nella barra dell'URL e si è aperto il file manager (Explorer), ho fatto doppio click sull'interprete comandi ed avevo una bella shell DOS dove un attacker avrebbe potuto fare di tutto.

Debian. Be unique.

Ritratto di kripsio
kripsio
(Collaboratore)
Offline
Collaboratore
Iscritto: 10/09/2004
Messaggi: 1515

Faccio un intervento NON tecnico.
Sicuramente non è complicato trovare delle aziende che possono fornirti quello che chiedi bello è pronto e più o meno personalizzabile sia a livello tecnico / contenuti che di "scatolone che contiene il totem".
Il costo potrebbe essere un po' più alto che "tirarlo su" per conto tuo (che poi, se metti insieme tutto...) ma, se ti rifornisci, hai un livello di responsabilità minore e, questo, non è banale. Vedi il "Pietro Hacker" Tongue. Se Pietro avesse manomesso un apparecchio da te fornito l'eventuale querela non puoi "scaricarla" al fornitore.
Se stai pensando di lanciare una "linea di Totem per agenzie" o cose così la strada che hai preso è corretta, tutt'altro che semplice e, soprattutto, la questione "come fare il totem" è il 20% (abbondante) del tutto.
Se devi fornire una manciata di totem a qualche cliente per farci girare pubblicità più o meno tua (nel senso che la rivendi) il mio consiglio è: trova un fornitore di Totem che sia all'altezza delle tue aspettative Wink

Bon... torniamo a parlare di bash... Smile

Ritratto di tab
tab
(Junior)
Offline
Junior
Iscritto: 19/12/2013
Messaggi: 6

Grazie per le vostre risposte.
Cerco di rispondere a tutti chiarendo, come detto nel primo post, qual è il mio intento: sto realizzando delle postazioni con monitor che trasmettono pubblicità. Ognuno di questi monitor è ovviamente collegato ad un mini pc con debian.
Quello che vorrei fare è dare un po' di sicurezza e quindi fare in modo che se uno colleghi un mouse o una tastiera non riesca a farci nulla (a meno che non viva proprio da cracker) e in più vorrei mettere pure un po di sicurezza alla cartella coi files da me creati secondo un certo algoritmo che riconosce uniocamente ogni postazione.
Perciò forse la soluzione migliore sarebbe:
- disabilitare mouse e tastiera
- criptare solo la cartella contenente i miei files
Per entrambi i punti però non saprei da dove partire.