Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux
В unu di i nostri articuli precedenti avemu parlatu di l'impurtanza di l'autentificazione di dui fattori nantu à i portali corporativi di l'imprese. L'ultima volta avemu dimustratu cumu stabilisce l'autentificazione sicura in u servitore web IIS.

In i cumenti, ci hè statu dumandatu à scrive struzzioni per i servitori web più cumuni per Linux - nginx è Apache.

Avete dumandatu - avemu scrittu.

Chì avete bisognu per cumincià?

  • Ogni distribuzione Linux moderna. Aghju fattu una configurazione di prova in MX Linux 18.2_x64. Di sicuru, questu ùn hè micca una distribuzione di u servitore, ma ùn ci hè improbabile di esse diffirenzii per Debian. Per altre distribuzioni, i percorsi di e librerie di cunfigurazione pò differisce ligeramente.
  • Token. Avemu cuntinuà à aduprà u mudellu Rutoken EDS PKI, chì hè ideale in termini di caratteristiche di velocità per l'usu corporativu.
  • Per travaglià cù un token in Linux, avete bisognu di installà i seguenti pacchetti:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

Emissione di certificati

In articuli precedenti, avemu basatu nantu à u fattu chì i certificati di u servitore è di u cliente seranu emessi cù Microsoft CA. Ma postu chì avemu stallatu tuttu in Linux, vi diceremu ancu di un modu alternativu per issuà sti certificati - senza lascià Linux.
Useremu XCA cum'è CA (https://hohnstaedt.de/xca/), chì hè dispunibule nantu à qualsiasi distribuzione Linux muderna. Tutte l'azzioni chì faremu in XCA ponu esse fattu in modu di linea di cummanda utilizendu l'utilità OpenSSL è pkcs11-tool, ma per più simplicità è chiarità, ùn l'avemu micca prisentatu in questu articulu.

Getting passé

  1. Installa:
    $ apt-get install xca
  2. E corremu:
    $ xca
  3. Creemu a nostra basa di dati per CA - /root/CA.xdb
    Avemu cunsigliatu per almacenà a basa di dati di l'Autorità di Certificazione in un cartulare induve solu l'amministratore hà accessu. Questu hè impurtante per prutege e chjavi privati ​​​​di i certificati radicali, chì sò usati per firmà tutti l'altri certificati.

Crea chjavi è certificatu CA root

Una infrastruttura di chjave publica (PKI) hè basatu annantu à un sistema gerarchicu. A cosa principal in stu sistema hè l'autorità di certificazione di a radica o CA di a radica. U so certificatu deve esse creatu prima.

  1. Creemu una chjave privata RSA-2048 per u CA. Per fà questu, nantu à a tabulazione Chjave Privata spinta Chjave nova è selezziunate u tipu adattatu.
  2. Pone un nome per a nova coppia di chjave. L'aghju chjamatu CA Key.
  3. Emettemu u certificatu CA stessu, utilizendu a coppia di chjave creata. Per fà questu, andate à a tabulazione Certificates è cliccate Novu Certificatu.
  4. Assicuratevi di sceglie SHA-256, perchè l'usu di SHA-1 ùn pò più esse cunsideratu sicuru.
  5. Assicuratevi di sceglie cum'è mudellu [default] CA. Ùn vi scurdate di cliccà Applicà tuttu, altrimenti u mudellu ùn hè micca applicatu.
  6. In a tabulazione sughjettu sceglite a nostra coppia di chjave. Quì pudete cumplettà tutti i campi principali di u certificatu.

Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

Crea chjavi è un certificatu di servitore https

  1. In una manera simile, creamu una chjave privata RSA-2048 per u servitore, l'aghju chjamatu Server Key.
  2. Quandu creanu un certificatu, selezziunate chì u certificatu di u servitore deve esse firmatu cù un certificatu CA.
  3. Ùn vi scurdate di sceglie SHA-256.
  4. Avemu sceltu cum'è mudellu [default] HTTPS_server. Cliccate nant'à Applicà tuttu.
  5. Allora nantu à a tabulazione sughjettu selezziunà a nostra chjave è compie i campi richiesti.

Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

Crea chjavi è certificatu per l'utilizatore

  1. A chjave privata di l'utilizatore serà guardata nantu à u nostru token. Per travaglià cun ellu, avete bisognu di stallà a libreria PKCS#11 da u nostru situ web. Per distribuzioni populari, distribuemu pacchetti pronti, chì si trovanu quì - https://www.rutoken.ru/support/download/pkcs/. Avemu ancu assemblee per arm64, armv7el, armv7hf, e2k, mipso32el, chì ponu esse scaricati da u nostru SDK - https://www.rutoken.ru/developers/sdk/. In più di assemblee per Linux, ci sò ancu assemblee per macOS, freebsd è android.
  2. Aghjunghjendu un novu Fornitore PKCS#11 à XCA. Per fà questu, andate à u menu options à a tabulazione Fornitore PKCS#11.
  3. Premumu Ajouter è selezziunate u percorsu à a biblioteca PKCS#11. In u mo casu hè usrliblibrtpkcs11ecp.so.
  4. Avemu bisognu di un token Rutoken EDS PKI furmatu. Scaricate l'utilità rtAdmin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Facemu
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Selezziunamu a chjave RSA-2048 per u Rutoken EDS PKI cum'è u tipu chjave. Aghju chjamatu sta chjave Client Key.

    Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

  7. Entre u codice PIN. È aspittemu a fine di a generazione di hardware di u paru chjave

    Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

  8. Creemu un certificatu per l'utilizatore per analogia cù u certificatu di u servitore. Sta volta selezziunà un mudellu [default] HTTPS_client è ùn vi scurdate di cliccà Applicà tuttu.
  9. In a tabulazione sughjettu entre infurmazione nantu à l'utilizatore. Rispondemu in l'affirmative à a dumanda di salvà u certificatu per u token.

In u risultatu, nantu à a tabulazione Certificati in XCA duvete ottene qualcosa cusì.

Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux
Stu settore minimu di chjavi è certificati hè abbastanza per inizià a stallazione di i servitori stessi.

Per cunfigurà, avemu bisognu di esportà u certificatu CA, u certificatu di u servitore è a chjave privata di u servitore.

Per fà questu, selezziunate l'entrata desiderata nantu à a tabulazione currispondente in XCA è cliccate Esporta.

Nginx

Ùn scriveraghju micca cumu installà è eseguisce un servitore nginx - ci sò abbastanza articuli nantu à questu tema in Internet, per ùn dì micca a documentazione ufficiale. Andemu direttamente à stallà HTTPS è l'autentificazione à dui fattori cù un token.

Aghjunghjite e seguenti linee à a sezione di u servitore in nginx.conf:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

Una descrizzione dettagliata di tutti i paràmetri ligati à a cunfigurazione di ssl in nginx pò esse truvata quì - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Descriveraghju brevemente quelli chì m'aghju dumandatu:

  • ssl_verify_client - specifica chì a catena di fiducia per u certificatu deve esse verificatu.
  • ssl_verify_depth - Definisce a prufundità di ricerca per u certificatu root di fiducia in a catena. Siccomu u nostru certificatu di u cliente hè firmatu immediatamente nantu à u certificatu radicali, a prufundità hè stabilita à 1. Se u certificatu d'utilizatore hè firmatu in una CA intermediata, allora 2 deve esse specificatu in questu paràmetru, è cusì.
  • ssl_client_certificate - specifica u percorsu à u certificatu root di fiducia, chì hè utilizatu per verificà a fiducia in u certificatu di l'utilizatore.
  • ssl_certificate/ssl_certificate_key - indica u percorsu à u certificatu di u servitore / chjave privata.

Ùn vi scurdate di eseguisce nginx -t per verificà chì ùn ci sò micca typos in a cunfigurazione, è chì tutti i schedari sò in u locu ghjustu, è cusì.

È questu hè tuttu! Comu pudete vede, a stallazione hè assai simplice.

Verificate chì funziona in Firefox

Siccomu facemu tuttu cumpletamente in Linux, assumeremu chì i nostri utilizatori travaglianu ancu in Linux (se anu Windows, allora vede l'istruzzioni per a stallazione di i navigatori in l'articulu precedente.

  1. Lancemu Firefox.
  2. Pruvate prima di accede senza token. Avemu ottene sta stampa:

    Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

  3. Andemu à circa: preferenze # privacy, è andemu à Dispositivi di sicurezza...
  4. Premumu Loadper aghjunghje un novu PKCS # 11 Device Driver è specificà u percorsu à u nostru librtpkcs11ecp.so.
  5. Per verificà chì u certificatu hè visibile, pudete andà à Manager Certificatu. Vi sarà dumandatu à entre u vostru PIN. Dopu un input currettu, pudete verificà ciò chì hè nantu à a tabulazione I vostri certificati u nostru certificatu da u token apparsu.
  6. Avà andemu cù u token. Firefox vi invita à selezziunate un certificatu chì serà sceltu per u servitore. Sceglite u nostru certificatu.

    Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

  7. Prufittu!

    Autentificazione à dui fattori in u situ cù un token USB. Avà ancu per Linux

A stallazione hè fatta una volta, è cum'è pudete vede in a finestra di dumanda di certificatu, pudemu salvà a nostra selezzione. Dopu questu, ogni volta chì accede à u portale, avemu solu bisognu di inserisce un token è inserisce u codice PIN d'utilizatore chì hè statu specificatu durante u furmatu. Dopu una tale autentificazione, u servitore sà digià quale utilizatore hà cunnessu è ùn pudete più creà alcuna finestra supplementaria per a verificazione, ma immediatamente lasciate l'utilizatore in u so contu persunale.

Apache

Cum'è cù nginx, nimu ùn deve avè prublemi à installà apache. Se ùn sapete micca cumu installà stu servitore web, basta aduprà a documentazione ufficiale.

E cuminciamu à stallà u nostru HTTPS è l'autentificazione à dui fattori:

  1. Prima avete bisognu di attivà mod_ssl:
    $ a2enmod ssl
  2. È dopu attivate i paràmetri HTTPS predeterminati di u situ:
    $ a2ensite default-ssl
  3. Avà editemu u schedariu di cunfigurazione: /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

    Comu pudete vede, i nomi di i paràmetri praticamenti coincidenu cù i nomi di i paràmetri in nginx, perchè ùn li spiegheraghju micca. In novu, qualcunu interessatu in i dettagli hè benvenutu à a documentazione.
    Avà riavvia u nostru servitore:

    $ service apache2 reload
    $ service apache2 restart

  4. Comu pudete vede, a creazione di l'autentificazione à dui fattori in ogni servitore web, sia in Windows o Linux, dura una ora massima. È a stallazione di i navigatori dura circa 5 minuti. Parechje persone pensanu chì a creazione è u travagliu cù l'autentificazione à dui fattori hè difficiule è pocu chjaru. Spergu chì u nostru articulu debunks stu mitu, almenu un pocu.

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Avete bisognu di struzzioni per stabilisce TLS cù certificati secondu GOST 34.10-2012:

  • Iè, TLS-GOST hè assai necessariu

  • No, sintonizza cù l'algoritmi GOST ùn hè micca interessante

44 utilizatori anu vutatu. 9 utilizatori si sò astenuti.

Source: www.habr.com

Add a comment