ProHoster > blog > amministrazione > Autenticazione a due fattori sul sito tramite token USB. Ora anche per Linux
Autenticazione a due fattori sul sito tramite token USB. Ora anche per Linux
В uno dei nostri articoli precedenti abbiamo parlato dell'importanza dell'autenticazione a due fattori sui portali aziendali delle aziende. L'ultima volta abbiamo dimostrato come impostare l'autenticazione sicura nel server web IIS.
Nei commenti ci è stato chiesto di scrivere le istruzioni per i server Web più comuni per Linux: nginx e Apache.
Hai chiesto - abbiamo scritto.
di cosa hai bisogno per iniziare?
Qualsiasi distribuzione Linux moderna. Ho eseguito una configurazione di prova su MX Linux 18.2_x64. Ovviamente questa non è una distribuzione server, ma è improbabile che ci siano differenze per Debian. Per altre distribuzioni, i percorsi delle librerie di configurazione possono variare leggermente.
Gettone. Continuiamo a utilizzare il modello Rutoken EDS PKI, che è ideale in termini di caratteristiche di velocità per uso aziendale.
Per lavorare con un token in Linux, è necessario installare i seguenti pacchetti:
libccid libpcsclite1 pcscd pcsc-tools opensc
Emissione certificati
Negli articoli precedenti abbiamo fatto affidamento sul fatto che i certificati server e client verranno emessi tramite Microsoft CA. Ma poiché stiamo configurando tutto in Linux, ti parleremo anche di un modo alternativo per emettere questi certificati, senza uscire da Linux.
Useremo XCA come CA (https://hohnstaedt.de/xca/), disponibile su qualsiasi distribuzione Linux moderna. Tutte le azioni che eseguiremo in XCA possono essere eseguite in modalità riga di comando utilizzando le utilità OpenSSL e pkcs11-tool, ma per maggiore semplicità e chiarezza non le presenteremo in questo articolo.
Guida introduttiva
Installare:
$ apt-get install xca
E corriamo:
$ xca
Creiamo il nostro database per CA - /root/CA.xdb
Si consiglia di archiviare il database dell'autorità di certificazione in una cartella a cui ha accesso solo l'amministratore. Ciò è importante per proteggere le chiavi private dei certificati root, che vengono utilizzati per firmare tutti gli altri certificati.
Crea chiavi e certificato CA radice
Un'infrastruttura a chiave pubblica (PKI) si basa su un sistema gerarchico. La cosa principale in questo sistema è l'autorità di certificazione radice o CA radice. Il relativo certificato deve essere prima creato.
Creiamo una chiave privata RSA-2048 per la CA. Per fare ciò, nella scheda Chiavi private spingere Nuova chiave e seleziona il tipo appropriato.
Imposta un nome per la nuova coppia di chiavi. L'ho chiamato chiave CA.
Emettiamo il certificato CA stesso, utilizzando la coppia di chiavi creata. Per fare ciò, vai alla scheda Certificati e spingere Nuovo certificato.
Assicurati di scegliere SHA-256, perché l'utilizzo di SHA-1 non può più essere considerato sicuro.
Assicurati di scegliere come modello [predefinito]CA. Non dimenticare di fare clic su Applicare tutte, altrimenti il modello non viene applicato.
linguetta Oggetto scegli la nostra coppia di chiavi. Lì puoi compilare tutti i campi principali del certificato.
Creazione di chiavi e di un certificato del server https
In modo simile, creiamo una chiave privata RSA-2048 per il server, l'ho chiamata Server Key.
Quando creiamo un certificato, selezioniamo che il certificato del server debba essere firmato con un certificato CA.
Non dimenticare di selezionare SHA-256.
Scegliamo come modello [predefinito] server_HTTPS. Clicca su Applicare tutte.
Quindi sulla scheda Oggetto seleziona la nostra chiave e compila i campi richiesti.
Creare chiavi e certificato per l'utente
La chiave privata dell'utente verrà archiviata sul nostro token. Per utilizzarlo, è necessario installare la libreria PKCS#11 dal nostro sito web. Per le distribuzioni più diffuse, distribuiamo pacchetti già pronti, che si trovano qui - https://www.rutoken.ru/support/download/pkcs/. Abbiamo anche assembly per arm64, armv7el, armv7hf, e2k, mipso32el, che possono essere scaricati dal nostro SDK - https://www.rutoken.ru/developers/sdk/. Oltre agli assembly per Linux, esistono anche assembly per macOS, freebsd e Android.
Aggiunta di un nuovo provider PKCS#11 a XCA. Per fare ciò, vai al menu Opzioni alla scheda Fornitore PKCS#11.
? Aggiungi e seleziona il percorso della libreria PKCS#11. Nel mio caso è usrliblibrtpkcs11ecp.so.
Selezioniamo la chiave RSA-2048 per Rutoken EDS PKI come tipo di chiave. Ho chiamato questa chiave Chiave Cliente.
Inserisci il codice PIN. E aspettiamo il completamento della generazione hardware della coppia di chiavi
Creiamo un certificato per l'utente per analogia con il certificato del server. Questa volta selezioniamo un modello [predefinito] HTTPS_client e non dimenticare di fare clic Applicare tutte.
linguetta Oggetto inserire le informazioni sull'utente. Rispondiamo affermativamente alla richiesta di salvare il certificato per il token.
Di conseguenza, nella scheda Certificati in XCA dovresti ottenere qualcosa di simile.
Questo set minimo di chiavi e certificati è sufficiente per iniziare a configurare i server stessi.
Per configurare, dobbiamo esportare il certificato CA, il certificato del server e la chiave privata del server.
A tale scopo selezionare la voce desiderata nella scheda corrispondente in XCA e fare clic Esportare.
Nginx
Non scriverò come installare ed eseguire un server nginx: ci sono abbastanza articoli su questo argomento su Internet, per non parlare della documentazione ufficiale. Andiamo direttamente alla configurazione di HTTPS e dell'autenticazione a due fattori utilizzando un token.
Aggiungi le seguenti righe alla sezione server in nginx.conf:
Mi limiterò a descrivere brevemente quelli che mi sono chiesto:
ssl_verify_client: specifica che la catena di fiducia per il certificato deve essere verificata.
ssl_verify_length: definisce la profondità di ricerca per il certificato radice attendibile nella catena. Poiché il nostro certificato client viene firmato immediatamente sul certificato radice, la profondità è impostata su 1. Se il certificato utente è firmato su una CA intermedia, è necessario specificare 2 in questo parametro e così via.
ssl_client_certificate: specifica il percorso del certificato radice attendibile, che viene utilizzato durante la verifica dell'attendibilità del certificato dell'utente.
ssl_certificate/ssl_certificate_key - indica il percorso del certificato del server/chiave privata.
Non dimenticare di eseguire nginx -t per verificare che non ci siano errori di battitura nella configurazione e che tutti i file siano nel posto giusto e così via.
E questo è tutto! Come puoi vedere, la configurazione è molto semplice.
Proviamo prima ad accedere senza token. Otteniamo questa immagine:
Vai a su: preferenze # privacy, e andiamo a Dispositivi di sicurezza…
? Caricareper aggiungere un nuovo driver di dispositivo PKCS#11 e specificare il percorso del nostro librtpkcs11ecp.so.
Per verificare che il certificato sia visibile, puoi andare su Gestione certificati. Ti verrà richiesto di inserire il PIN. Dopo l'inserimento corretto, puoi controllare cosa c'è nella scheda I tuoi certificati è apparso il nostro certificato dal token.
Ora andiamo con il token. Firefox richiede di selezionare un certificato che verrà selezionato per il server. Scegli il nostro certificato.
UTILE!
La configurazione viene eseguita una volta e, come puoi vedere nella finestra di richiesta del certificato, possiamo salvare la nostra selezione. Dopodiché, ogni volta che effettueremo l'accesso al portale, dovremo solo inserire un token e inserire il codice PIN utente specificato durante la formattazione. Dopo tale autenticazione, il server sa già quale utente ha effettuato l'accesso e non è più possibile creare ulteriori finestre di verifica, ma consentire immediatamente all'utente di accedere al proprio account personale.
Apache
Proprio come con nginx, nessuno dovrebbe avere problemi con l'installazione di Apache. Se non sai come installare questo server web, utilizza semplicemente la documentazione ufficiale.
E iniziamo a configurare il nostro HTTPS e l'autenticazione a due fattori:
Per prima cosa devi attivare mod_ssl:
$ a2enmod ssl
Quindi abilita le impostazioni HTTPS predefinite del sito:
$ a2ensite default-ssl
Ora modifichiamo il file di configurazione: /etc/apache2/sites-enabled/default-ssl.conf:
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/sites-enabled/Server.crt
SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
SSLVerifyClient require
SSLVerifyDepth 10
Come puoi vedere, i nomi dei parametri praticamente coincidono con i nomi dei parametri in nginx, quindi non li spiegherò. Ancora una volta, chiunque sia interessato ai dettagli è benvenuto nella documentazione.
Ora riavviamo il nostro server:
$ service apache2 reload
$ service apache2 restart
Come puoi vedere, la configurazione dell'autenticazione a due fattori su qualsiasi server Web, sia Windows che Linux, richiede al massimo un'ora. E la configurazione dei browser richiede circa 5 minuti. Molte persone pensano che configurare e utilizzare l’autenticazione a due fattori sia difficile e poco chiaro. Spero che il nostro articolo sfati questo mito, almeno un po’.
Solo gli utenti registrati possono partecipare al sondaggio. AccediPer favore.
Hai bisogno di istruzioni per configurare TLS con certificati secondo GOST 34.10-2012:
Sì, TLS-GOST è molto necessario
No, la sintonizzazione con gli algoritmi GOST non è interessante
44 utenti hanno votato. 9 utenti si sono astenuti.