... | ... | @@ -5,7 +5,7 @@ Le scelte più importanti rispetto alla sicurezza sono quelle che riguardano l'u |
|
|
|
|
|
Altre configurazioni sensibili sono quelle dell'archivio dei messaggi su server (Message Archive Management). Questa è una funzionalità molto utile che permette di avere un'esperienza di chat simile a quella degli altri provider, cioè la possibilità di lasciare i messaggi ricevuti sul server per poterli scaricare in un secondo momento. Questa funzione però espone l'utente ad un rischio: nel caso il server venisse compromesso i messaggi archiviati con MAM sarebbero leggibili. Una precauzione da adottare per proteggersi da questa evenienza è l'utilizzo della cifratura end to end. Quindi abbiamo optato per una configurazione che permetta di salvare i messaggi sul server, conservandoli però per un periodo massimo di 2 settimane.
|
|
|
|
|
|
Coerentemente con questa scelta utilizziamo la funzione di archiviazione dei messaggi interna di prosody (su file) invece di archiviare i messaggi nel database.
|
|
|
Coerentemente con questa scelta utilizziamo la funzione di archiviazione dei messaggi interna di prosody (su file) invece di archiviare i messaggi nel database.
|
|
|
|
|
|
Infatti il problema di archiviare le chat nel database sarebbe quello di avere gli archivi di alcune conversazioni nei backup periodici del database.
|
|
|
|
... | ... | @@ -26,7 +26,7 @@ Ed infine clonare il repository dei [prosody-modules](http://hg.prosody.im/proso |
|
|
|
|
|
Per ottenere un servizio di chat il più possibile sicuro ma allo stesso tempo facilmente utilizzabile, coerentemente con le riflessioni fatte in precendenza abbiamo configurato il server nel seguente modo.
|
|
|
|
|
|
Le configurazioni possono essere divise in
|
|
|
Le configurazioni possono essere divise in
|
|
|
|
|
|
### Generali
|
|
|
|
... | ... | @@ -47,7 +47,7 @@ Impostate le seguenti configurazioni: |
|
|
* certificate = "/path/to/file/fullchain.pem"; `File contenente il certificato`
|
|
|
* key = "/path/to/file/privkey.pem"; `File contenente la chiave privata del certificato`
|
|
|
* ciphers = "ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305-D:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305-D:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA"; `I cifrari da usare, in ordine di sicurezza`
|
|
|
* dhparam = "/path/to/filedhparam4096.pem"; `Parametri Diffie-Helman generati per l'host, veddi logjam attack`
|
|
|
* dhparam = "/path/to/filedhparam4096.pem"; `Parametri Diffie-Helman generati per l'host, vedi logjam attack`
|
|
|
* curve = "secp384r1"; `La curva da usare fra quelle disponibili`
|
|
|
* protocol = "tlsv1_2"; `Abilita solo tls1.2, gli altri sono da considerare 'bucabili' limita il supporto a client recenti.`
|
|
|
* options = { "no_sslv2", "no_sslv3", "no_tlsv1", "no_tlsv1_1", "no_ticket", "no_compression", "cipher_server_preference", "single_dh_use", "single_ecdh_use" }; `Disabilita SSLv2 e v3 che sono considerati insicuri così come TLSv1 e TLSv2, impone di rispettare l'ordine dei cifrari del server più altri accorgimenti.`
|
... | ... | @@ -57,7 +57,7 @@ Impostate le seguenti configurazioni: |
|
|
|
|
|
* Moduli disabilitati
|
|
|
* dialback `Un metodo basato su dns per la verifica dell'identità del server a cui connettersi`
|
|
|
|
|
|
|
|
|
* Moduli abilitati
|
|
|
* tls
|
|
|
Impostate le seguenti configurazioni:
|
... | ... | @@ -76,16 +76,16 @@ Abilitati i moduli: |
|
|
* http-files
|
|
|
* http_uppload
|
|
|
* http_max_content_size = 5000000000 `Imposta il limite di upload per i file degli utenti`
|
|
|
* http_upload_file_size_limit = 5000000000
|
|
|
* http_upload_file_size_limit = 5000000000
|
|
|
|
|
|
* register
|
|
|
* register
|
|
|
* allow_registration = false `Impedisce la registrazione di nuovi utenti ma permette a quelli correnti di cambiarsi la password da soli`
|
|
|
|
|
|
> Le prossime 3 servono soprattutto per i dispositivi mobili per risparmiare batteria
|
|
|
|
|
|
* csi `Abilita il client state indication`
|
|
|
* throttle_presence `I client possono avvertire quando non sono attivi e non vogliono visualizzare gli stati "è online/offline"`
|
|
|
* filter_chatstates `Come sopra ma per "sta digitando"`
|
|
|
* filter_chatstates `Come sopra ma per "sta digitando"`
|
|
|
* carbons `Abilita le carbon-copies, un messaggio viene ricevuto su tutte le istanze collegate per un dato account`
|
|
|
* mam `Abilita l'archivio dei messaggi su server quando un client è offline`
|
|
|
* mam_muc `Abilita l'archivio dei messaggi delle chatroom su server quando un client è offline`
|
... | ... | @@ -124,4 +124,4 @@ Per i certificati SSL una buona scelta è quella di usare letsencrypt: fornisce |
|
|
### Database
|
|
|
|
|
|
Prosody supporta diversi metodi per memorizzare i dati, in particolare diversi moduli possono usare diversi 'backend' quelli disponibili vanno dallo storage null(non persistente e che fallisce sempre) a quello su file (internal) fino ad arrivare ai database (sql). I database supportati fra i quali scegliere sono SQLite3, MySQL e PostgreSQL.
|
|
|
Il fatto che diversi moduli possano usare diversi backend è comodo perché permette ad esempio di usare sql per tutto tranne che per l'archivio dei messaggi, le motivazioni sono riportate sopra. Oltre a questo permette di avere più flessibilità. |
|
|
\ No newline at end of file |
|
|
Il fatto che diversi moduli possano usare diversi backend è comodo perché permette ad esempio di usare sql per tutto tranne che per l'archivio dei messaggi, le motivazioni sono riportate sopra. Oltre a questo permette di avere più flessibilità. |