Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de
В önceki yazılarımızdan biri şirketlerin kurumsal portallarında iki faktörlü kimlik doğrulamanın öneminden bahsettik. Geçen sefer IIS web sunucusunda güvenli kimlik doğrulamanın nasıl kurulacağını göstermiştik.

Yorumlarda bizden Linux için en yaygın web sunucuları olan nginx ve Apache için talimatlar yazmamız istendi.

Siz sordunuz, biz yazdık.

Başlamak için neye ihtiyacınız var?

  • Herhangi bir modern Linux dağıtımı. MX Linux 18.2_x64 üzerinde bir test kurulumu yaptım. Bu elbette bir sunucu dağıtımı değil ancak Debian için herhangi bir farklılık olması pek olası değil. Diğer dağıtımlar için yapılandırma kitaplıklarına giden yollar biraz farklılık gösterebilir.
  • Jeton. Modeli kullanmaya devam ediyoruz Rutoken EDS PKI'sıKurumsal kullanım için hız özellikleri açısından idealdir.
  • Linux'ta bir belirteçle çalışmak için aşağıdaki paketleri yüklemeniz gerekir:
    libccid libpcsclite1 pcscd pcsc-tools opensc

Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

Sertifikaların verilmesi

Önceki yazılarımızda sunucu ve istemci sertifikalarının Microsoft CA kullanılarak verileceği gerçeğine güvenmiştik. Ancak her şeyi Linux'ta kurduğumuz için, size bu sertifikaları Linux'tan ayrılmadan vermenin alternatif bir yolunu da anlatacağız.
XCA'yı CA ​​olarak kullanacağız (https://hohnstaedt.de/xca/), herhangi bir modern Linux dağıtımında mevcuttur. XCA'da gerçekleştireceğimiz tüm eylemler, OpenSSL ve pkcs11 aracı yardımcı programları kullanılarak komut satırı modunda yapılabilir, ancak daha fazla basitlik ve netlik sağlamak için bunları bu makalede sunmayacağız.

Başlarken

  1. Düzenlemek:
    $ apt-get install xca
  2. Ve koşuyoruz:
    $ xca
  3. CA için veritabanımızı oluşturuyoruz - /root/CA.xdb
    Sertifika Yetkilisi veritabanını yalnızca yöneticinin erişebildiği bir klasörde saklamanızı öneririz. Bu, diğer tüm sertifikaları imzalamak için kullanılan kök sertifikaların özel anahtarlarını korumak açısından önemlidir.

Anahtarlar ve kök CA sertifikası oluşturun

Açık anahtar altyapısı (PKI), hiyerarşik bir sisteme dayanmaktadır. Bu sistemdeki ana şey kök sertifika yetkilisi veya kök CA'dır. İlk önce sertifikasının oluşturulması gerekir.

  1. CA için RSA-2048 özel anahtarı oluşturuyoruz. Bunu yapmak için sekmede Özel Anahtarlar itmek Yeni Anahtar ve uygun türü seçin.
  2. Yeni anahtar çifti için bir ad belirleyin. Buna CA Anahtarı adını verdim.
  3. Oluşturulan anahtar çiftini kullanarak CA sertifikasını kendisi veriyoruz. Bunu yapmak için sekmeye gidin Sertifikalar ve tıkla Yeni Sertifika.
  4. Seçtiğinizden emin olun SHA-256, çünkü SHA-1'i kullanmak artık güvenli sayılamaz.
  5. Şablon olarak seçtiğinizden emin olun [varsayılan]CA. Tıklamayı unutmayın Tümünü uygulaaksi takdirde şablon uygulanmaz.
  6. çıkıntı Konu anahtar çiftimizi seçin. Orada sertifikanın tüm ana alanlarını doldurabilirsiniz.

Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

Anahtarlar ve https sunucu sertifikası oluşturma

  1. Benzer şekilde sunucu için RSA-2048 özel anahtarı oluşturuyoruz, buna Sunucu Anahtarı adını verdim.
  2. Sertifika oluştururken sunucu sertifikasının CA sertifikası ile imzalanması gerektiğini seçiyoruz.
  3. Seçmeyi unutmayın SHA-256.
  4. Şablon olarak seçiyoruz [varsayılan] HTTPS_sunucusu. Tıklamak Tümünü uygula.
  5. Daha sonra sekmede Konu anahtarımızı seçin ve gerekli alanları doldurun.

Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

Kullanıcı için anahtarlar ve sertifika oluşturun

  1. Kullanıcının özel anahtarı jetonumuzda saklanacaktır. Bununla çalışmak için web sitemizden PKCS#11 kitaplığını yüklemeniz gerekir. Popüler dağıtımlar için burada bulunan hazır paketleri dağıtıyoruz - https://www.rutoken.ru/support/download/pkcs/. Ayrıca arm64, armv7el, armv7hf, e2k, mipso32el için SDK'mızdan indirilebilen derlemelerimiz de mevcuttur - https://www.rutoken.ru/developers/sdk/. Linux için derlemelerin yanı sıra macOS, freebsd ve android için de derlemeler vardır.
  2. XCA'ya yeni bir PKCS#11 Sağlayıcısı ekleniyor. Bunu yapmak için menüye gidin Opsiyonlar sekmeye PKCS#11 Sağlayıcısı.
  3. basıyoruz Ekle ve PKCS#11 kitaplığının yolunu seçin. Benim durumumda usrliblibrtpkcs11ecp.so.
  4. Biçimlendirilmiş bir Rutoken EDS PKI belirtecine ihtiyacımız olacak. rtAdmin yardımcı programını indirin - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Gerçekleştiriyoruz
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Anahtar türü olarak Rutoken EDS PKI için RSA-2048 anahtarını seçiyoruz. Bu anahtara İstemci Anahtarı adını verdim.

    Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

  7. PIN kodunu girin. Ve anahtar çiftinin donanım üretiminin tamamlanmasını bekliyoruz

    Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

  8. Kullanıcı için sunucu sertifikasına benzeterek bir sertifika oluşturuyoruz. Bu sefer bir şablon seçiyoruz [varsayılan] HTTPS_istemcisi ve tıklamayı unutmayın Tümünü uygula.
  9. çıkıntı Konu kullanıcı hakkındaki bilgileri girin. Belirteç için sertifikanın kaydedilmesi talebine olumlu yanıt veriyoruz.

Sonuç olarak, sekmede Sertifikalar XCA'da buna benzer bir şey almalısınız.

Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de
Bu minimum anahtar ve sertifika seti, sunucuları kendileri kurmaya başlamak için yeterlidir.

Yapılandırmak için CA sertifikasını, sunucu sertifikasını ve sunucu özel anahtarını dışa aktarmamız gerekiyor.

Bunu yapmak için XCA'daki ilgili sekmede istediğiniz girişi seçin ve tıklayın. Ihracat.

nginx

Bir nginx sunucusunun nasıl kurulacağını ve çalıştırılacağını yazmayacağım - internette bu konuyla ilgili yeterince makale var, resmi belgelerden bahsetmeye bile gerek yok. Bir belirteç kullanarak doğrudan HTTPS ve iki faktörlü kimlik doğrulamayı ayarlamaya başlayalım.

Nginx.conf'taki sunucu bölümüne aşağıdaki satırları ekleyin:

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;
}

Nginx'te SSL'yi yapılandırmayla ilgili tüm parametrelerin ayrıntılı bir açıklamasını burada bulabilirsiniz - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Kendime sorduklarımı kısaca anlatacağım:

  • ssl_verify_client - sertifikanın güven zincirinin doğrulanması gerektiğini belirtir.
  • ssl_verify_length - Zincirdeki güvenilen kök sertifikanın arama derinliğini tanımlar. İstemci sertifikamız kök sertifika üzerinde hemen imzalandığı için derinlik 1 olarak ayarlanmıştır. Kullanıcı sertifikası bir ara CA'da imzalanmışsa bu parametrede 2 belirtilmelidir vb.
  • ssl_client_certificate - kullanıcının sertifikasına olan güveni kontrol ederken kullanılan güvenilen kök sertifikanın yolunu belirtir.
  • ssl_certificate/ssl_certificate_key - sunucu sertifikasının/özel anahtarın yolunu belirtir.

Yapılandırmada yazım hatası olmadığını ve tüm dosyaların doğru yerde olduğunu vb. kontrol etmek için nginx -t komutunu çalıştırmayı unutmayın.

Ve hepsi bu! Gördüğünüz gibi kurulumu çok basit.

Firefox'ta çalışıp çalışmadığını kontrol etme

Her şeyi tamamen Linux'ta yaptığımız için kullanıcılarımızın da Linux'ta çalıştığını varsayacağız (eğer Windows'ları varsa o zaman) önceki makaledeki tarayıcıları ayarlama talimatlarına bakın.

  1. Firefox'u başlatalım.
  2. Önce jeton olmadan giriş yapmayı deneyelim. Bu resmi elde ediyoruz:

    Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

  3. Git hakkında: tercihler # gizlilikve biz gidiyoruz Güvenlik aletleri…
  4. basıyoruz Yükyeni bir PKCS#11 Aygıt Sürücüsü eklemek ve librtpkcs11ecp.so dosyamızın yolunu belirtmek için.
  5. Sertifikanın görünür olup olmadığını kontrol etmek için şu adrese gidebilirsiniz: Sertifika Yöneticisi. PIN'inizi girmeniz istenecektir. Doğru girişi yaptıktan sonra sekmede ne olduğunu kontrol edebilirsiniz. Sertifikalarınız tokendan gelen sertifikamız ortaya çıktı.
  6. Şimdi jetonla devam edelim. Firefox sizden sunucu için seçilecek bir sertifika seçmenizi ister. Sertifikamızı seçin.

    Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

  7. KAR!

    Bir USB belirteci kullanarak sitede iki faktörlü kimlik doğrulama. Artık Linux için de

Kurulum bir kere yapılıyor ve sertifika istek penceresinde gördüğünüz gibi seçimimizi kaydedebiliyoruz. Bundan sonra portala her giriş yaptığımızda yalnızca bir jeton girmemiz ve biçimlendirme sırasında belirtilen kullanıcı PIN kodunu girmemiz gerekecek. Böyle bir kimlik doğrulamadan sonra, sunucu hangi kullanıcının oturum açtığını zaten bilir ve artık doğrulama için herhangi bir ek pencere oluşturamazsınız, ancak kullanıcının hemen kişisel hesabına girmesine izin verebilirsiniz.

Apache

Tıpkı nginx'te olduğu gibi, hiç kimsenin apache kurulumunda sorun yaşamaması gerekiyor. Bu web sunucusunu nasıl kuracağınızı bilmiyorsanız resmi belgeleri kullanın.

Ve HTTPS'mizi ve iki faktörlü kimlik doğrulamamızı ayarlamaya başlıyoruz:

  1. Öncelikle mod_ssl'yi etkinleştirmeniz gerekir:
    $ a2enmod ssl
  2. Ardından sitenin varsayılan HTTPS ayarlarını etkinleştirin:
    $ a2ensite default-ssl
  3. Şimdi yapılandırma dosyasını düzenliyoruz: /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

    Gördüğünüz gibi parametre adları pratik olarak nginx'teki parametre adlarıyla örtüşüyor, bu yüzden bunları açıklamayacağım. Yine ayrıntılarla ilgilenen herkesi belgelere bekliyoruz.
    Şimdi sunucumuzu yeniden başlatıyoruz:

    $ service apache2 reload
    $ service apache2 restart

  4. Gördüğünüz gibi, ister Windows ister Linux olsun, herhangi bir web sunucusunda iki faktörlü kimlik doğrulamayı ayarlamak maksimum bir saat sürer. Tarayıcıların kurulumu yaklaşık 5 dakika sürer. Birçok kişi iki faktörlü kimlik doğrulamayı kurmanın ve onunla çalışmanın zor ve belirsiz olduğunu düşünüyor. Umarım makalemiz bu efsaneyi en azından biraz çürütmüştür.

Ankete sadece kayıtlı kullanıcılar katılabilir. Giriş yapLütfen.

GOST 34.10-2012'ye göre sertifikalarla TLS'yi kurmak için talimatlara ihtiyacınız var mı:

  • Evet, TLS-GOST çok gerekli

  • Hayır, GOST algoritmalarıyla ayarlama yapmak ilginç değil

44 kullanıcı oy kullandı. 9 kişi çekimser kaldı.

Kaynak: habr.com

Yorum ekle