Kami menetapkan prosedur untuk akses kecemasan kepada hos SSH dengan kunci perkakasan

Kami menetapkan prosedur untuk akses kecemasan kepada hos SSH dengan kunci perkakasan

Dalam siaran ini, kami akan membangunkan prosedur untuk akses kecemasan kepada hos SSH menggunakan kunci keselamatan perkakasan di luar talian. Ini hanyalah satu pendekatan, dan anda boleh menyesuaikannya mengikut keperluan anda. Kami akan menyimpan kuasa sijil SSH untuk hos kami pada kunci keselamatan perkakasan. Skim ini akan berfungsi pada hampir semua OpenSSH, termasuk SSH dengan log masuk tunggal.

Untuk apa semua ini? Nah, ini adalah pilihan terakhir. Ini adalah pintu belakang yang akan membolehkan anda mendapat akses ke pelayan anda apabila atas sebab tertentu tiada apa-apa yang berfungsi.

Mengapa menggunakan sijil dan bukannya kunci awam/peribadi untuk akses kecemasan?

  • Tidak seperti kunci awam, sijil boleh mempunyai jangka hayat yang sangat singkat. Anda boleh menjana sijil yang sah selama 1 minit atau bahkan 5 saat. Selepas tempoh ini, sijil akan menjadi tidak boleh digunakan untuk sambungan baharu. Ini sesuai untuk akses kecemasan.
  • Anda boleh membuat sijil untuk mana-mana akaun pada hos anda dan, jika perlu, hantar sijil "sekali" sedemikian kepada rakan sekerja.

Apa yang anda perlukan

  • Kunci keselamatan perkakasan yang menyokong kunci pemastautin.
    Kunci pemastautin ialah kunci kriptografi yang disimpan sepenuhnya dalam kunci keselamatan. Kadangkala ia dilindungi oleh PIN alfanumerik. Bahagian awam kunci pemastautin boleh dieksport daripada kunci keselamatan, secara pilihan bersama pemegang kunci peribadi. Sebagai contoh, kekunci USB siri Yubikey 5 menyokong kekunci pemastautin. Adalah dinasihatkan bahawa ia hanya bertujuan untuk akses kecemasan kepada hos. Untuk siaran ini saya hanya akan menggunakan satu kunci, tetapi anda harus mempunyai satu kunci tambahan untuk sandaran.
  • Tempat yang selamat untuk menyimpan kunci tersebut.
  • OpenSSH versi 8.2 atau lebih tinggi pada komputer tempatan anda dan pada pelayan yang anda ingin dapatkan akses kecemasan. Ubuntu 20.04 dihantar dengan OpenSSH 8.2.
  • (pilihan, tetapi disyorkan) Alat CLI untuk menyemak sijil.

Latihan

Pertama, anda perlu membuat pihak berkuasa pensijilan yang akan terletak pada kunci keselamatan perkakasan. Masukkan kunci dan jalankan:

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

Sebagai ulasan (-C) saya nyatakan [e-mel dilindungi]jadi anda tidak lupa kunci keselamatan mana yang dimiliki oleh pihak berkuasa sijil ini.

Selain menambah kunci pada Yubikey, dua fail akan dijana secara tempatan:

  1. sk-user-ca, pemegang kunci yang merujuk kepada kunci peribadi yang disimpan dalam kunci keselamatan,
  2. sk-user-ca.pub, yang akan menjadi kunci awam untuk pihak berkuasa sijil anda.

Tetapi jangan risau, Yubikey menyimpan kunci peribadi lain yang tidak boleh diambil semula. Oleh itu, semuanya boleh dipercayai di sini.

Pada hos, sebagai akar, tambah (jika anda belum melakukannya) yang berikut pada konfigurasi SSHD anda (/etc/ssh/sshd_config):

TrustedUserCAKeys /etc/ssh/ca.pub

Kemudian pada hos, tambahkan kunci awam (sk-user-ca.pub) ke /etc/ssh/ca.pub

Mulakan semula daemon:

# /etc/init.d/ssh restart

Sekarang kita boleh cuba mengakses hos. Tetapi pertama-tama kita memerlukan sijil. Buat pasangan kunci yang akan dikaitkan dengan sijil:

$ ssh-keygen -t ecdsa -f emergency

Sijil dan pasangan SSH
Kadangkala tergoda untuk menggunakan sijil sebagai pengganti pasangan kunci awam/peribadi. Tetapi sijil sahaja tidak mencukupi untuk mengesahkan pengguna. Setiap sijil juga mempunyai kunci peribadi yang dikaitkan dengannya. Inilah sebabnya mengapa kita perlu menjana pasangan kunci "kecemasan" ini sebelum kita mengeluarkan sijil sendiri. Perkara penting ialah kami menunjukkan sijil yang ditandatangani kepada pelayan, menunjukkan pasangan kunci yang kami mempunyai kunci peribadi.

Jadi pertukaran kunci awam masih hidup dan sihat. Ini berfungsi walaupun dengan sijil. Sijil hanya menghapuskan keperluan untuk pelayan menyimpan kunci awam.

Seterusnya, buat sijil itu sendiri. Saya memerlukan kebenaran pengguna ubuntu dalam selang 10 minit. Anda boleh melakukannya dengan cara anda.

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

Anda akan diminta menandatangani sijil menggunakan cap jari anda. Anda boleh menambah nama pengguna tambahan yang dipisahkan dengan koma, contohnya -n ubuntu,carl,ec2-user

Itu sahaja, kini anda mempunyai sijil! Seterusnya anda perlu menentukan kebenaran yang betul:

$ chmod 600 emergency-cert.pub

Selepas ini, anda boleh melihat kandungan sijil anda:

$ step ssh inspect emergency-cert.pub

Ini adalah rupa saya:

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

Di sini kunci awam ialah kunci kecemasan yang kami buat dan sk-user-ca dikaitkan dengan pihak berkuasa pensijilan.

Akhirnya kami bersedia untuk menjalankan arahan SSH:


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

  1. Anda kini boleh membuat sijil untuk mana-mana pengguna pada hos yang mempercayai pihak berkuasa sijil anda.
  2. Anda boleh mengalih keluar kecemasan. Anda boleh menyimpan sk-user-ca, tetapi anda tidak perlu melakukannya kerana ia juga pada kunci keselamatan. Anda juga mungkin mahu mengalih keluar kunci awam PEM asal daripada hos anda (contohnya dalam ~/.ssh/authorized_keys untuk pengguna ubuntu) jika anda menggunakannya untuk akses kecemasan.

Akses Kecemasan: Pelan Tindakan

Tampalkan kunci keselamatan dan jalankan arahan:

$ ssh-add -K

Ini akan menambah kunci awam pihak berkuasa sijil dan deskriptor kunci kepada ejen SSH.

Sekarang eksport kunci awam untuk membuat sijil:

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

Buat sijil dengan tarikh tamat tempoh, sebagai contoh, tidak lebih daripada satu jam:

$ 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

Dan kini SSH sekali lagi:

$ ssh -i emergency username@host

Jika fail .ssh/config anda menyebabkan beberapa masalah semasa menyambung, anda boleh menjalankan ssh dengan pilihan -F none untuk memintasnya. Jika anda perlu menghantar sijil kepada rakan sekerja, pilihan yang paling mudah dan selamat ialah Lubang Cacing Ajaib. Untuk melakukan ini, anda hanya memerlukan dua fail - dalam kes kami, kecemasan dan kecemasan-cert.pub.

Apa yang saya suka tentang pendekatan ini ialah sokongan perkakasan. Anda boleh meletakkan kunci keselamatan anda di dalam peti besi dan ia tidak akan pergi ke mana-mana.

Sebagai iklan

Pelayan epik - Adakah VPS murah dengan pemproses berkuasa daripada AMD, kekerapan teras CPU sehingga 3.4 GHz. Konfigurasi maksimum membolehkan anda menyelesaikan hampir semua masalah - 128 teras CPU, 512 GB RAM, 4000 GB NVMe. Sertai kami!

Kami menetapkan prosedur untuk akses kecemasan kepada hos SSH dengan kunci perkakasan

Sumber: www.habr.com

Tambah komen