SSH için ortak anahtar kimlik doğrulaması ayarladıktan sonra kullanıcıların şifrelerini silmeli miyim?


19

SSH için genel anahtarları kullanmak en iyisidir. Benim Yani sshd_configsahiptir PasswordAuthentication no.

Bazı kullanıcılar hiçbir zaman oturum açmaz, örneğin kabuklu bir sftp kullanıcısı /usr/sbin/nologin. Veya bir sistem hesabı.

Böylece böyle bir kullanıcıyı şifre olmadan oluşturabilirim adduser gary --shell /usr/sbin/nologin --disabled-password.

Bu iyi / kötü bir fikir mi? Düşünmediğim sonuçlar var mı?


3
Bunlar gerçek kullanıcıların hesapları olmadığı veya sudoerişim için şifrelerine ihtiyaç duymadıkları sürece (ya hiç sudo izinlerine sahip olmamaları ya da sudo izinlerine sahip olmaları nedeniyle NOPASSWD), seçtiğiniz yanıt uygun olmalıdır. Bu soruna sudo endişesini eklemek için bir düzenleme gönderdim, ancak bu arada burada size çağıracağımı düşündüm.
Doktor J

Yanıtlar:


35

Sunucuya kök erişiminiz varsa ve kullanıcılarınız için ssh anahtarlarını kaybedebilirlerse yeniden oluşturabilirseniz

VE

bir kullanıcının (kişi olarak) birden fazla kullanıcı hesabına sahip olmayacağından ve bir SSH oturumundaki kullanıcılar arasında geçiş yapması gerektiğinden eminsiniz ( gerekirse, birden fazla SSH oturumu da açabilir )

VE

onlar olacak asla sunucuya erişimi (VM için klavye + monitör aracılığıyla veya uzaktan konsol aracılığıyla) "fiziksel" ihtiyaç

VE

hiçbir kullanıcının şifre geçişli sudoerişimi yoktur (başka bir deyişle sudo erişimi yoktur veya sudo erişimi yoktur NOPASSWD)

Bence iyi olacaksın.

Bu şekilde yapılandırılmış birçok sunucumuz var (yalnızca bazı hesapların VM'ye vmware uzak konsolu üzerinden erişmesi gerekiyor, diğerleri sadece pubkey yetkilendirmeli SSH üzerinden bağlanıyor).


9
"Kullanıcıların sisteme özel SSH anahtarı olmayan uzak sistemlerden asla erişmeleri gerekmeyeceğini biliyorsunuz" da ekleyeceğim . Ve "Aklınıza gelmediği bir durumla karşılaşan kullanıcılarla ilgilenmeye hazırsınız."
Andrew Henle

7
İlk koşul IMO gerekli değildir. Kullanıcılarınız anahtarlarını kendileri oluşturmalıdır. Genel anahtarlarını size verdikçe yetkilendirirsiniz. Bir anahtarı kaybederse, başka bir anahtar üretecekler ve sunucudaki eskisinin yerini alacaksınız.
Christophe Drevet-Droguet

1
@AndrewHenle Bu iyi bir nokta, ancak sshd varsa PasswordAuthentication nofarklı bir sorundur (kullanıcı yine de giriş yapamaz).
Lonix

1
"Asla" çok uzun bir süre. Yönetici, gerektiğinde kolayca şifre kimlik doğrulaması ekleyebilir.
hyde

2
Soru, açık bir şekilde, belirli hizmetler veya yalnızca sftp kullanıcıları tarafından kullanılan sistem hesapları gibi, kesinlikle giriş yapmayan (ve muhtemelen girmemesi gereken) hesaplarla ilgilidir. Soru aynı zamanda kullanıcıların giriş kabuğu olmadığını belirtir. Bu tür kullanıcılar için giriş şifresini açıkça devre dışı bırakmanın tavsiye edilir olduğunu düşünüyorum.
Christian Gawron

27

Başlangıçta passwd --delete <username> güvensiz olan bu soru : bununla birlikte, şifrelenmiş şifre alanı /etc/shadowtamamen boş olacaktır.

username::...

sshdParola kimlik doğrulamasını reddetmek üzere yapılandırdıysanız, bu SSH için güvenlidir ... Ancak sisteminizdeki başka bir hizmet parola kimlik doğrulaması kullanıyorsa ve boş parolaları reddetmek üzere yapılandırılmamışsa, bu parola olmadan erişime izin verir! Bunu istemiyorsun.


adduser --disabled-passwd/etc/shadowşifrelenmiş parola alanının yalnızca bir yıldız işareti olduğu bir giriş üretecektir;

username:*:...

Bu "asla başarılı bir şekilde girilemeyen şifreli bir paroladır", yani bu, hesabın geçerli olduğu ve teknik olarak oturum açmaya izin verdiği anlamına gelir, ancak parola ile kimlik doğrulamasının başarılı olmasını imkansız hale getirir . Dolayısıyla, sunucunuzda başka bir şifre kimlik doğrulaması tabanlı hizmetiniz varsa, bu kullanıcı bunlardan engellenir.

Bu sistemde sistem parolası dosyalarını kullanan herhangi bir hizmet için yalnızca standart hesap parolası dışında bir şey kullanan kimlik doğrulama yöntemleri (örn. SSH anahtarları) çalışır. Yalnızca SSH anahtarlarıyla oturum açabilen bir kullanıcıya ihtiyacınız olduğunda, istediğiniz şey budur.

Mevcut bir hesabı bu duruma ayarlamanız gerekirse, bu komutu kullanabilirsiniz:

echo 'username:*' | chpasswd -e

Şifrelenmiş parola alanı için üçüncü bir özel değer vardır: adduser --disabled-loginalan yalnızca tek bir ünlem işareti içerir.

username:!:...

Yıldız işareti gibi, bu da parola kimlik doğrulamasının başarılı olmasını imkansız hale getirir, ancak ek bir anlamı da vardır: parolayı bazı yönetim araçları için "kilitli" olarak işaretler. passwd -lmevcut şifre karmasının önüne bir ünlem işareti ekleyerek aynı etkiye sahiptir, bu da yine şifre kimlik doğrulamasının kullanımını imkansız hale getirir.

Ama burada dikkatsizlik için bir tuzak: 2008 passwdyılında, eski shadowpaketten gelen komutun sürümü, passwd -l"hesabı kilitleme" den sadece "şifreyi kilitleme" ye yeniden tanımlamak için değiştirildi . Belirtilen neden "diğer passwd sürümüyle uyumluluk için" dir.

(Benim gibi) bunu uzun zaman önce öğrendiysen, bu kötü bir sürpriz olabilir. adduser(8)Görünüşe göre henüz bu ayrımın farkında olmayan konulara da yardımcı olmuyor.

Devre dışı bırakır parçası hesabını kimlik doğrulama tüm yöntemleri için aslında hesap için 1 bir son kullanma tarihi değerini girer: usermod --expiredate 1 <username>. 2008 yılından önce, passwd -lbu , şifreyi bir ünlem işaretiyle öneklemenin yanı sıra,shadow bunu yapmak için kullanılan kaynak kitinden kaynaklanır - ancak artık bunu yapmaz.

Debian paket değişikliği günlüğü şunları söylüyor:

  • debian / patches / 494_passwd_lock-no_account_lock: passwd -l'nin (# 389183'te değiştirilen) önceki davranışını geri yükle: kullanıcının hesabını değil, yalnızca kullanıcının parolasını kilitleyin. Ayrıca farklılıkları açıkça belgeleyin. Bu, passwd'nin önceki sürümleriyle ve diğer uygulamalarla ortak bir davranışı geri yükler. Kapatır: # 492307

İçin hata geçmişleri Debian hata 492.307 ve hata 389183 Bunun arkasındaki düşünce anlamaya yardımcı olabilir.


Uyarı için teşekkürler ... Soruyu düzenleyeceğim, böylece kimse bu hatayı yapmaz!
Lonix

Uyarınız, kullandığım durum için de geçerli mi? Bu adduser --disabled-passwdnedenle, başka bir hizmet şifre kimlik doğrulamasına izin veriyorsa, kullanıcı şifre olmadan giriş yapabilir mi?
Lonix

1
Hayır, adduser --disabled-passwordözellikle şifre kimlik doğrulamasının bu hesapta başarılı olmasını imkansız hale getirir.
telcoM

Parolayı silmek çok masum göründüğünden, ancak çok tehlikeli göründüğünden, bununla ilgili paragrafı kullanma hakkındaki paragrafla değiştirmenizi öneririm, bu *yüzden insanların okuduğu ilk şey budur.
Kaptan Adam

1
Vay be, bu gerçekleşmeyi bekleyen kötü bir sürpriz ... ve her zamanki gibi, bunun için suçlanacak bir uyumluluk sorunu var. 2008 yılında passwdkaynak kodunda göründü. Bir zamanlar öğrendiğiniz ve daha sonra da güvendiğiniz bir şey artık böyle olmadığında sevmiyor musunuz?
telcoM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.