Donanım anahtarlarıyla SSH ana bilgisayarlarına acil erişim için bir prosedür belirliyoruz

Donanım anahtarlarıyla SSH ana bilgisayarlarına acil erişim için bir prosedür belirliyoruz

Bu yazıda, donanım güvenlik anahtarlarını çevrimdışı kullanarak SSH ana bilgisayarlarına acil erişim için bir prosedür geliştireceğiz. Bu yalnızca bir yaklaşımdır ve bunu ihtiyaçlarınıza göre uyarlayabilirsiniz. Ana bilgisayarlarımız için SSH sertifika yetkisini donanım güvenlik anahtarında saklayacağız. Bu şema, tek oturum açmalı SSH dahil hemen hemen tüm OpenSSH'lerde çalışacaktır.

Bütün bunlar ne için? Tabi bu son çare seçeneğidir. Bu, herhangi bir nedenle başka hiçbir şeyin çalışmadığı durumlarda sunucunuza erişmenizi sağlayacak bir arka kapıdır.

Acil durum erişimi için neden genel/özel anahtarlar yerine sertifikalar kullanılmalı?

  • Genel anahtarların aksine, sertifikaların ömrü çok kısa olabilir. 1 dakika, hatta 5 saniye geçerli bir sertifika oluşturabilirsiniz. Bu sürenin sonunda sertifika yeni bağlantılarda kullanılamaz hale gelecektir. Bu acil erişim için idealdir.
  • Ana bilgisayarlarınızda herhangi bir hesap için bir sertifika oluşturabilir ve gerekirse bu tür "tek seferlik" sertifikaları meslektaşlarınıza gönderebilirsiniz.

Neye ihtiyacın var

  • Yerleşik anahtarları destekleyen donanım güvenlik anahtarları.
    Yerleşik anahtarlar, tamamen güvenlik anahtarının içinde saklanan kriptografik anahtarlardır. Bazen alfasayısal bir PIN ile korunurlar. Yerleşik anahtarın genel kısmı, isteğe bağlı olarak özel anahtar tanıtıcısıyla birlikte güvenlik anahtarından dışarı aktarılabilir. Örneğin, Yubikey 5 serisi USB anahtarları yerleşik anahtarları destekler ve bunların yalnızca ana bilgisayara acil erişim için tasarlanması tavsiye edilir. Bu yazı için yalnızca bir anahtar kullanacağım, ancak yedekleme için ek bir anahtara sahip olmanız gerekir.
  • Bu anahtarları saklamak için güvenli bir yer.
  • Yerel bilgisayarınızda ve acil erişime sahip olmak istediğiniz sunucularda OpenSSH sürüm 8.2 veya üzeri. Ubuntu 20.04, OpenSSH 8.2 ile birlikte gelir.
  • (isteğe bağlı, ancak önerilir) Sertifikaları kontrol etmek için bir CLI aracı.

Eğitim

Öncelikle donanım güvenlik anahtarı üzerinde yer alacak bir sertifika yetkilisi oluşturmanız gerekir. Anahtarı takın ve çalıştırın:

$ ssh-keygen -t ecdsa-sk -f sk-user-ca -O resident -C [security key ID]

Yorum olarak (-C) belirttim [e-posta korumalı]böylece bu sertifika yetkilisinin hangi güvenlik anahtarına ait olduğunu unutmazsınız.

Anahtarın Yubikey'e eklenmesine ek olarak yerel olarak iki dosya oluşturulacaktır:

  1. sk-user-ca, güvenlik anahtarında saklanan özel anahtarı ifade eden bir anahtar tanıtıcısı,
  2. Sertifika yetkilinizin ortak anahtarı olacak sk-user-ca.pub.

Ancak endişelenmeyin, Yubikey geri alınamayacak başka bir özel anahtar saklıyor. Bu nedenle burada her şey güvenilirdir.

Ana bilgisayarlarda root olarak SSHD yapılandırmanıza (/etc/ssh/sshd_config) aşağıdakileri ekleyin (henüz yapmadıysanız):

TrustedUserCAKeys /etc/ssh/ca.pub

Daha sonra ana bilgisayarda genel anahtarı (sk-user-ca.pub) /etc/ssh/ca.pub dosyasına ekleyin.

Daemon'u yeniden başlatın:

# /etc/init.d/ssh restart

Artık hosta erişmeyi deneyebiliriz. Ama önce bir sertifikaya ihtiyacımız var. Sertifikayla ilişkilendirilecek bir anahtar çifti oluşturun:

$ ssh-keygen -t ecdsa -f emergency

Sertifikalar ve SSH çiftleri
Bazen genel/özel anahtar çiftinin yerine sertifika kullanmak cazip gelebilir. Ancak bir sertifika tek başına kullanıcının kimliğini doğrulamak için yeterli değildir. Her sertifikanın kendisiyle ilişkilendirilmiş özel bir anahtarı da vardır. Bu nedenle kendimize bir sertifika vermeden önce bu "acil durum" anahtar çiftini oluşturmamız gerekiyor. Önemli olan imzalı sertifikayı, özel anahtarımız olan anahtar çiftini belirterek sunucuya göstermemizdir.

Yani genel anahtar değişimi hâlâ canlı ve iyi durumda. Bu, sertifikalarla bile çalışır. Sertifikalar, sunucunun genel anahtarları saklama ihtiyacını ortadan kaldırır.

Daha sonra sertifikanın kendisini oluşturun. 10 dakikalık aralıklarla ubuntu kullanıcı yetkilendirmesine ihtiyacım var. Bunu kendi yönteminle yapabilirsin.

$ ssh-keygen -s sk-user-ca -I test-key -n ubuntu -V -5m:+5m emergency

Parmak izinizi kullanarak sertifikayı imzalamanız istenecektir. Virgüllerle ayrılmış ek kullanıcı adları ekleyebilirsiniz; örneğin -n ubuntu,carl,ec2-user

İşte bu kadar, artık bir sertifikanız var! Daha sonra doğru izinleri belirtmeniz gerekir:

$ chmod 600 emergency-cert.pub

Bundan sonra sertifikanızın içeriğini görüntüleyebilirsiniz:

$ step ssh inspect emergency-cert.pub

Benimki şöyle görünüyor:

emergency-cert.pub
        Type: [email protected] user certificate
        Public key: ECDSA-CERT SHA256:EJSfzfQv1UK44/LOKhBbuh5oRMqxXGBSr+UAzA7cork
        Signing CA: SK-ECDSA SHA256:kLJ7xfTTPQN0G/IF2cq5TB3EitaV4k3XczcBZcLPQ0E
        Key ID: "test-key"
        Serial: 0
        Valid: from 2020-06-24T16:53:03 to 2020-06-24T17:03:03
        Principals:
                ubuntu
        Critical Options: (none)
        Extensions:
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

Burada genel anahtar oluşturduğumuz acil durum anahtarıdır ve sk-user-ca sertifika yetkilisi ile ilişkilendirilir.

Sonunda SSH komutunu çalıştırmaya hazırız:


$ ssh -i emergency ubuntu@my-hostname
ubuntu@my-hostname:~$

  1. Artık bir ana bilgisayardaki, sertifika yetkilinize güvenen herhangi bir kullanıcı için sertifika oluşturabilirsiniz.
  2. Acil durumu kaldırabilirsiniz. Sk-user-ca'yı kaydedebilirsiniz, ancak aynı zamanda güvenlik anahtarında da bulunduğundan buna gerek yoktur. Acil durum erişimi için kullandıysanız orijinal PEM genel anahtarını ana bilgisayarlarınızdan (örneğin ubuntu kullanıcısı için ~/.ssh/authorized_keys dosyasında) kaldırmak isteyebilirsiniz.

Acil Durum Erişimi: Eylem Planı

Güvenlik anahtarını yapıştırın ve şu komutu çalıştırın:

$ ssh-add -K

Bu, sertifika yetkilisinin genel anahtarını ve anahtar tanımlayıcısını SSH aracısına ekleyecektir.

Şimdi bir sertifika oluşturmak için ortak anahtarı dışa aktarın:

$ ssh-add -L | tail -1 > sk-user-ca.pub

Son kullanma tarihi örneğin bir saatten fazla olmayan bir sertifika oluşturun:

$ ssh-keygen -t ecdsa -f emergency
$ ssh-keygen -Us sk-user-ca.pub -I test-key -n [username] -V -5m:+60m emergency
$ chmod 600 emergency-cert.pub

Ve şimdi tekrar SSH:

$ ssh -i emergency username@host

Eğer .ssh/config dosyanız bağlanırken bazı sorunlara neden oluyorsa, bunu atlamak için ssh'yi -F none seçeneğiyle çalıştırabilirsiniz. Bir meslektaşınıza sertifika göndermeniz gerekiyorsa en kolay ve en güvenli seçenek sihirli solucan deliği. Bunu yapmak için yalnızca iki dosyaya ihtiyacınız var; bizim durumumuzda, acil durum ve acil durum-cert.pub.

Bu yaklaşımda hoşuma giden şey donanım desteğidir. Güvenlik anahtarlarınızı bir kasaya koyabilirsiniz; hiçbir yere gitmezler.

Reklam gibi

Epik sunucular - Mı ucuz VPS AMD'nin güçlü işlemcileriyle, CPU çekirdek frekansı 3.4 GHz'e kadar. Maksimum yapılandırma neredeyse her sorunu çözmenize olanak tanır - 128 CPU çekirdeği, 512 GB RAM, 4000 GB NVMe. Bize katılın!

Donanım anahtarlarıyla SSH ana bilgisayarlarına acil erişim için bir prosedür belirliyoruz

Kaynak: habr.com

Yorum ekle