presentazione-pass/content/_index.md

5.4 KiB

+++ title = "Introduzione a pass" outputs = ["Reveal"]

+++

Il problema della condivisione dei segreti

  • i segreti condivisi sono ancora segreti ?

  • attenzione a con chi si condivide, la fiducia nelle pratiche altrui.

  • quando e' necessario condividere un segreto ?

    quando si lavora in gruppo, e tutto il gruppo deve avere accesso alle cose segrete del gruppo.


problematiche nella condivisione dei segreti

i segreti devono essere custoditi e trasmessi crittati

se si vuole celarne ulteriormente l'esistenza anche il canale di comunicazione deve essere crittato

i segreti devono essere disponibili per il gruppo in modo immediato (no telefonate in urgenza)

i segreti (e gli eventuali loro aggiornamenti) devono essere resi disponibili in modo il piu' possibile semplice ed automatizzato.

deve essere semplice revocare l'accesso ai segreti a una persona

deve essere semplice aggiungere una persona all'accesso dei segreti.

deve essere possibile tornare a una versione precedente in caso di problemi.


il formato in cui salvare i segreti

ovviamente devono essere crittati in qualche modo:

crittografia simmetrica: 1 password uguale per tutti.

e' piu' semplice da implementare, ma c'e' il problema di comunicare la password a tutti

crittografia asimmetrica: ognuno ha le sue credenziali per decrittare

richiede che tutti usino un software che supporti questa funzione (es. gnupg)


il modo in cui condividere i segreti

  • mail - il piu' semplice ma non automatizzato

  • cloud - puo' essere manuale o automatizzato ma non c'e' versioning

  • git - puo' essere automatizzato e ha il versioning


PASS

https://www.passwordstore.org/

apt-get install pass

dipendenze:

  • gnupg per la crittazione

  • git per la distribuzione (non obbligatorio)


  • permette di salvare ogni singola password in un file crittato con gpg

  • e' possibile specificare piu' di una chiave per cui crittare le password

  • le password possono essere divise per progetto, ogni progetto con i suoi membri.


Inizializzazione dello store

pass init KEY-ID

questo crea la cartella $HOME/.password-store/ contenente il file .gpg-id che contiene il KEY-ID (che puo' essere sia il key id della chiave che un indirizzo email)

in genere meglio usare il key-id per essere certi di usare proprio la chiave che vogliamo, e non semplicemente la chiave associata a un indirizzo email (che chiunque potrebbe creare).


Aggiunta di una password

pass generate unit/wiki 32

genera (automaticamente) una password di 32 caratteri casuali e la salva crittata per la chiave definita in $HOME/.password-store/.key-id nel file $HOME/.password-store/unit/wiki.gpg

pass insert unit/ldap-root

aggiunge una password che deve essere digitata (2 volte per conferma)


Visualizzazione di una password

pass ls

vi mostra tutto l'albero delle password salvate

pass show unit/wiki

vi mostra la password (a schermo) dopo averla decrittata (puo' essere necessario digitare la password della chiave gpg se il gpg-agent non l'ha in memoria). Per non mostrarla a video ma copiarla nella clipboard aggiungere l'opzione "-c"

(bash completion ???)


modifica ed eliminazione di una password

pass edit unit/wiki

modificare una password esistente

pass rm unit/wiki

eliminare una password

pass mv unit/nextcloud unit/web_team/nextcloud

sposta una password in un'altra posizione


organizzare le password in cartelle/progetti

le password possono salvate come un albero di cartelle e files

pass generate personal/posta_ai

ora potete vedere le password divise per le varie cartelle/directory, in pratica ogni directory puo' essere un progetto ogni directory/progetto puo' avere il suo .gpg-id che contiene le chiavi per cui crittare le pwd in quel progetto


aggiungere chiavi di crittazione

se ad es. Terry entra nel progetto unit, bisogna aggiungere il suo key-id al file .gpg-id del progetto, in ~/.password-store/unit/.gpg-id

NOTA IMPORTANTE: la sua chiave deve essere "trusted", quindi dovete importarla anche nel vostro keyring personale e firmarla gpg --edit-key jane@acme.org gpg> lsign

e poi il progetto va reinizializzato in modo che tutte le pwd al suo interno siano recrittate usando i key-id aggiornati.

pass init -p unit/ $(cat ~/.password-store/unit/.gpg-id)


la distribuzione

bisogna prendere tutta la cartella del progetto e passarla in qualche modo a chi di dovere

si puo' fare in molti modi, ma forse il piu' comodo e' git perche' consente il versioning.

inoltre e' possibile creare un repository git per i vari progetti, sincronizzando quindi i dati dei diversi progetti in modo compartimentato.


estensioni

  • pass-tomb
  • pass-otp
  • pass-import

pass clients

  • passmenu (dmenu script)
  • qtpass (GUI per linux)
  • passff (firefox extension)
  • browserpass (chrome extension)
  • password-store.el (emacs package)
  • pass-git-helper (git credentials helper)

ansible e pass

esiste un modulo ansible per usare pass che potrebbe consentire di non usare il vault ma direttamente le pwd salvate in pass ????

https://docs.ansible.com/ansible/latest/plugins/lookup/passwordstore.html

accortezze

  • se qualcuno vede la cartella delle password, dai nomi dei file puo' capire a cosa serve la password che c'e' in quel file. Quindi magari il repository pur contenendo password crittate e' meglio che non sia pubblico.

  • non si deve usare su server remoti (perche' non e' una buona idea usare GPG su macchine remote).