Public_keys dosyası yerine bir veritabanından ortak anahtarlar getirilebilir mi?
Ortak anahtar her değiştiğinde veya eklendiğinde, birden fazla kullanıcı için git depoları gibi şeylere ssh erişimini yönetmek için böyle bir kurulum kullanmak isterim.
Public_keys dosyası yerine bir veritabanından ortak anahtarlar getirilebilir mi?
Ortak anahtar her değiştiğinde veya eklendiğinde, birden fazla kullanıcı için git depoları gibi şeylere ssh erişimini yönetmek için böyle bir kurulum kullanmak isterim.
Yanıtlar:
Bu soruyu kendim cevaplamaya çalışırken buldum. Bazı arama ve denemelerden sonra, bunun için birkaç seçenek buldum. Matt Simmons bunu kapsadığı için anahtarları alternatif olarak dağıtma konusunu atlayacağım. Yani Ayrıca, ne zaman zamanlar vardır biliyorum değil yeterince iyi. Örneğin, GitHub iseniz ve tek bir kullanıcıya karşı milyonlarca ortak anahtar depolamanız gerekiyorsa, SSH yetkili_anahtarları dosyalarını sürekli olarak güncellemek ve potansiyel olarak düzinelerce ila yüzlerce kenar kutusu arasında senkronize etmek mümkün değildir veya arzu edilmez.
Yani,
Her şeyden önce, RedHat (ve varyantları) OpenSSH için AuthorizedKeysCommandve AuthorizedKeysCommandRunAsseçeneklerini ekleyen desteklenen bir yamaya sahiptir . Yama, opensh 6.2'de yukarı doğru birleştirildi. Man sayfasından alıntı yapmak için :
AuthorizedKeysCommand
Kullanıcının ortak anahtarlarını aramak için kullanılacak bir programı belirtir. Program ilk argümanı ile yetkilendirilen kullanıcının adı ile çağrılır ve standart çıktı AuthorizedKeys satırlarında üretmelidir (bkz. Sshd'de AUTHORIZED_KEYS (8)). Varsayılan olarak (veya boş dizeye ayarlandığında) AuthorizedKeysCommand çalıştırması yoktur. AuthorizedKeysCommand kullanıcıyı başarıyla yetkilendirmezse, yetkilendirme AuthorizedKeysFile dosyasına düşer. Bu seçeneğin yalnızca PubkeyAuthentication açıkken etkili olduğunu unutmayın.
AuthorizedKeysCommandRunAs
AuthorizedKeysCommand hesabının altında çalıştığı kullanıcıyı belirtir. Boş dize (varsayılan değer), yetkilendirilen kullanıcının kullanıldığı anlamına gelir.
Bu gece yaptığım deneylerde, kutunun dışında, varsayılan SELinux politikaları nedeniyle bunun işe yaramadığını buldum. SELinux zorlamasını kapatarak bu sorunu çözebilirsiniz setenforce 0. SELinux'u çevirmek muhtemelen kötü bir fikir olduğundan, bunun yerine doğru politikayı oluşturabilirsiniz. Benim durumumda, bu ayarlanmış ve sonra seçeneği ile giriş yapmaya çalışmak kadar basitti . Bu temel olarak denetim günlüklerini inceler ve önlenen şeyleri bulur ve bunlar için istisnalar oluşturur. Orada beyaz listeye eklenebilecek başka şeyler varsa, muhtemelen yeni politikaları doğru şekilde aldığınızdan emin olmak için daha fazla bilgi edinmelisiniz .AuthorizedKeysCommand/etc/ssh/sshd_configaudit2allow -a -M local && semodule -i local.ppaudit2allow
Benzer işlevsellik eklemek için başka çeşitli (muhtemelen daha az test edilmiş ve güvenilir) yamalar vardır. Örneğin, openssh-script-auth var . Ayrıca RedHat'ın kullandığı yamayı doğrudan bulabilir ve uygulayabilirsiniz. Googling hızlı bir müddet ortaya çıkarır https://launchpadlibrarian.net/89063205/openssh-5.3p1-authorized-keys-command.patch ve https://launchpadlibrarian.net/105938151/openssh-authorized-keys-command.patch olan RH sürümlerine dayanmaktadır ancak OpenSSH'nin daha yeni sürümleri için güncellenmiştir.
Doğrudan bazı mağazalardan (örneğin GitHub ve CodeBaseHQ ve diğerleri gibi) anahtar aramaları gerçekleştirmek için OpenSSH'yi yamalayın. GitHub, bu yamayı benim açımdan en iyi şekilde açmadı, ancak geçmişte MySQL ve PostgreSQL anahtar araması için sürümlerle karşılaştığımı biliyorum. Onları şimdi bulmaya çalıştım ama çok şansım olmadı.
Bazı FUSE tabanlı seçenekler de vardır. Örneğin , konumu LPKFuse dosya sisteminde biriyle değiştirerek LDAP'den ortak anahtarlar sunmanıza izin veren AuthorizedKeysFileLPKFuse vardır. LPKFuse FS, içeriği bir dizin sunucusundaki alanlarla desteklenen sanal dosyalar oluşturur.
Sonuçta, seçenek # 1'in resmi olarak RedHat tarafından desteklendiği için en iyi seçenek olduğunu düşünüyorum. Ayrıca, bu komut dosyasında istediğiniz herhangi bir mantığı (bir veritabanıyla konuşmak da dahil) istediğiniz herhangi bir dilde koymanızı sağlar.
OpenSSH benim bildiğim kadarıyla bu yeteneğe sahip değil. En iyi seçeneğiniz, bir komut dosyasının dosyayı otomatik olarak gece (veya gerektiği sıklıkta) yeniden oluşturması olabilir.
Ayrıca, şu soruyu görmek isteyebilirsiniz: SSH ortak anahtarlarını dağıtmak için bir sistem