Di perusahaan saya, kami menggunakan LDAP untuk memiliki set akun yang konsisten di semua mesin dan kemudian menggunakan alat manajemen konfigurasi (dalam kasus kami saat ini adalah cfengine) untuk mendistribusikan authorized_keys
file untuk setiap pengguna di semua server. File-file kunci sendiri disimpan (bersama dengan informasi konfigurasi sistem lainnya) dalam repositori git sehingga kita dapat melihat kapan kunci datang dan pergi. cfengine juga mendistribusikan sudoers
file yang mengontrol siapa yang memiliki akses untuk menjalankan apa sebagai root pada setiap host, menggunakan pengguna dan grup dari direktori LDAP.
Otentikasi kata sandi sepenuhnya dinonaktifkan pada server produksi kami, jadi kunci kunci SSH adalah wajib. Kebijakan mendorong penggunaan kunci terpisah untuk setiap laptop / desktop / apa pun dan menggunakan frasa sandi pada semua tombol untuk mengurangi dampak laptop yang hilang / dicuri.
Kami juga memiliki host benteng yang digunakan untuk mengakses host di jaringan produksi, memungkinkan kami untuk memiliki aturan firewall yang sangat ketat di sekitar jaringan itu. Sebagian besar insinyur memiliki beberapa konfigurasi SSH khusus untuk menjadikan ini transparan:
Host prod-*.example.com
User jsmith
ForwardAgent yes
ProxyCommand ssh -q bastion.example.com "nc %h %p"
Menambahkan kunci baru atau menghapus yang lama membutuhkan sedikit upacara dalam pengaturan ini. Saya berpendapat bahwa untuk menambahkan kunci baru itu diinginkan untuk menjadi operasi yang meninggalkan jejak audit dan terlihat oleh semua orang. Namun, karena overhead yang terlibat, saya pikir orang kadang-kadang lalai untuk menghapus kunci lama ketika tidak lagi diperlukan dan kami tidak memiliki cara nyata untuk melacak itu kecuali untuk membersihkan ketika seorang karyawan meninggalkan perusahaan. Ini juga menciptakan beberapa gesekan tambahan ketika menaiki insinyur baru, karena mereka perlu menghasilkan kunci baru dan mendorongnya ke semua host sebelum mereka benar-benar produktif.
Namun manfaat terbesar adalah memiliki nama pengguna yang terpisah untuk setiap pengguna, yang membuatnya lebih mudah untuk melakukan kontrol akses lebih rinci ketika kita membutuhkannya dan memberikan setiap pengguna sebuah identitas yang muncul di log audit, yang dapat sangat berguna ketika mencoba melacak suatu masalah produksi kembali ke tindakan sysadmin.
Dalam pengaturan ini merepotkan untuk memiliki sistem otomatis yang mengambil tindakan terhadap host produksi, karena kunci SSH "terkenal" mereka dapat berfungsi sebagai jalur akses alternatif. Sejauh ini kami baru saja membuat akun pengguna untuk sistem otomatis ini hanya memiliki akses minimal yang mereka butuhkan untuk melakukan pekerjaan mereka dan menerima bahwa pengguna jahat (yang harus sudah menjadi insinyur dengan akses produksi) juga dapat melakukan tindakan yang sama secara semi- menggunakan kunci aplikasi secara anonim.