Bazı durumlarda şifresiz sunucuları sevdiğimi itiraf etmeliyim. Tipik bir sunucu, fiziksel erişimi olan herkese açıktır. Bu nedenle bazı durumlarda fiziksel olarak kilitlemek ve o zamandan beri herhangi bir fiziksel erişime güvenmek pratiktir .
Temel konseptler
Teorik olarak, böyle bir sunucuya fiziksel olarak ulaştığımda, sadece root
giriş olarak yazarak şifre olmadan yönetim görevlerini yerine getirebilmeliyim ve bir şifre istenmemeliyim. Aynı durum kullanıcı hesapları için de geçerli olabilir, ancak bunlara fiziksel olarak gerçekten erişilmez. Bu nedenle (zaman zaman) yerel erişim için sistem şifresi gerekmez.
Sunucuya yönetim veya kullanıcı hesabı için uzaktan erişirken, her zaman bir SSH özel anahtarı kullanmayı beklerim. Yeni oluşturulmuş bir hesap için bir SSH anahtarı ayarlamak çok kolaydır ve bu nedenle (düzenli) uzaktan erişim için sistem şifresi gerekmez.
# user=...
#
# useradd -m "$user"
# sudo -i -u "$user"
$ keyurl=...
$
$ mkdir -p .ssh
$ curl -o .ssh/authorized_keys "$keyurl"
Sonuç olarak, teoride, bu gibi kullanım durumları için herhangi bir sistem şifresi kullanmayacağız. Yani soru şu, sistemi ve kullanıcı hesaplarını tutarlı ve güvenli bir şekilde gerçekleştirmek için nasıl yapılandıracağız.
Yerel erişim ayrıntıları
Kök hesaba parola olmadan yerel olarak erişilmesini nasıl sağlayabiliriz? Sanırım kullanabilirsiniz sanmıyorum passwd -d
o kök erişimi çok keyfi yapacak ve bir unpriviliged kullanıcı verebileceğinden geçiş yanlış olan ücretsiz köküne. Giriş yapmamızı passwd -l
engellediği için kullanamayız .
Yerel erişimin yalnızca yerel klavyeyi kullanarak erişim ile ilgili olduğunu unutmayın. Bu nedenle, geçerli bir çözüm , herhangi bir kullanıcının geçiş yapmasına izin vermemelidir ( su
veya ister kullansın sudo
).
Uzaktan erişim ayrıntıları
Yakın zamana kadar yukarıdaki çözüm işe yarayacaktı, ancak şimdi SSH kilitli kullanıcı hesaplarını kontrol etmeye başladı. Muhtemelen passwd -d
aynı nedenlerle kullanamayız . Ne passwd -u
işe yarayacağından şikayet ettiği için kullanamayız passwd -d
.
Bu bölüm için kukla parola içeren bir geçici çözüm var.
user=...
echo -ne "$user:`pwgen 16`\n" | chpasswd
SSH'de kilitli hesap kontrolünü tamamen kapatmak da mümkün olabilir, ancak kilitli hesapların desteğini korumak ve sadece kilidini açabilmek daha güzel olurdu.
Son notlar
İlgilendiğim şey, root hesabına yerel olarak ve root dahil tüm hesaplara herhangi bir şifre olmadan uzaktan giriş yapmanıza izin veren bir çözümdür. Öte yandan, bir çözüm, özellikle uzak kullanıcıların kök hesaba veya diğer kullanıcıların hesabına erişmesine izin vermeyerek, açık bir şekilde açıklanan yollar dışında güvenliği etkilememelidir. Çözüm, güvenlik sorunlarına dolaylı yol açmayacak şekilde yeterince sağlam olmalıdır.
Kabul edilen ve verilen bir cevap, münferit araçların ayrıntılı konfigürasyonunu tanımlayabilir veya tanımlamayabilir, ancak belirtilen hedeflere ulaşmak için kilit noktaları içermelidir. Bu muhtemelen gibi araçlarla geleneksel kullanımı yoluyla çözülemez olduğunu Not passwd
, ssh
, su
, sudo
ve benzeri.
İlk cevapları okuduktan sonra daha fazla fikir
Sadece bir fikir - yerel kök erişimi, giriş işlemleri yerine kök kabukları başlatılarak elde edilebilir. Ancak yine de ortak anahtar kimlik doğrulamasını değil, yalnızca şifre kimlik doğrulamasını kilitlemek gerekir.