Ssh ile şifresi olan bir kullanıcı oluşturulamıyor [kapalı]


13

Şunun gibi ssh (root izni ile) ile şifre ile bir kullanıcı oluşturmaya çalıştım:

ssh root@123.45.6.7 useradd -p $(openssl passwd -1 1234) newuser

Bunu yaparak, başarıyla bir hesap oluşturabilirim newuser, ancak beklenen şifre ile giriş yapamadım (ki 1234)

Çift tırnak eklersem hiç fark etmez:

ssh root@123.45.6.7 "useradd -p $(openssl passwd -1 1234) newuser"

Ve sonra karma şifre üretip yerel olarak bir değişken olarak kaydedip edemeyeceğimi merak ediyordum, ama hala şanssız.

password=$(openssl passwd -1 1234)
ssh root@123.45.6.7 "useradd -p $password newuser"

Özlediğim bir şey var mı? Şimdiden teşekkürler!


Diğer kullanıcılar komut satırı bağımsız değişkenlerini görebildikleri için komut satırına parola geçirmek kötü bir fikirdir. Heemayl'in bunun cevabına bakın. Bunun ötesinde, bu bir XY Sorunu gibi geliyor . Aslında ne elde etmeye çalışıyorsunuz? Hesap şifresinin kimsenin bilmediği (veya bilmesi gereken) anlamı nedir? Buradaki nokta, şifre ile girişleri kabul etmeyen bir hesap oluşturmaksa, şifre tabanlı giriş yapmayı Ubuntu'nun varsayılan politikası olarak devre dışı bırakacak bir şifre belirlemeyin.
David Foerster

Yanıtlar:


22

Bu klasik bir alıntı sorunudur.

Sorun: Komut yerine koyma ( $()) ve değişken genişletme ( ) $tarafından döndürülen karma paroladaki s openssldeğişken değişkeni olarak değerlendiriliyor), uzak kabukta değil, yerel ortamda gerçekleştiriliyor.

Çözüm: Komut ikamesini ve yerel ortamda değişken genişlemeyi önlemek için yerel kabukta useraddkullanılan komutun etrafında tek tırnak kullanın ssh, genişlemelerin uzak oturum açma, etkileşimli olmayan kabuk üzerinde gerçekleşmesine izin verin:

ssh root@123.45.6.7 'useradd -p "$(openssl passwd -1 1234)" newuser'

Alıntılara dikkat edin.

Güvenlik sorunları:

  • SSH rootgirişi devre dışı bırakılmalıdır, etkinleştirmeniz gerekiyorsa yalnızca anahtar tabanlı kimlik doğrulamasına izin verilmelidir

  • MD5 zaten kırılmıştır ve bir tuz olmadan basit Rainbow masa saldırısına maruz kalırsınız (hatta kaba zorlama / sözlük saldırısına bile gerek yoktur); openssl passwdyine de rastgele bir tuz üretir. Her neyse, gerçekten tuzlu su ile SHA-2 kullanmayı düşünmelisiniz

  • Komutlara bağımsız değişken olarak iletilen parolalar (uzak) sistemdeki diğer işlemler tarafından görülebilir; bu, nasıl procfsbağlandığınıza (bakın hidepid) ve komutun kendisini yeniden yazıp yazmadığına bağlıdır (muhtemelen bu durumda değildir)


1
Bir cazibe gibi çalışır ve ek bilgi için teşekkür ederiz!
amigcamel

1
md5crypt şifre karma bir tuz var ...
ilkkachu

@ilkkachu MD5 güvenli bir karma değildir. İlgileniyorsanız, Bilgi Güvenliği konusunda bir arama yapın . Gerçekten bileşik bir algoritma veya şifreleme kitaplığı kullanmalısınız, ancak SHA-2 MD5'ten önemli ölçüde daha iyidir.
wizzwizz4

1
@ wizzwizz4 evet, bu iyi biliniyor, bu cevaptaki bilgilerin yanlış olduğu gerçeğini değiştirmiyor. :)
Ocaklar

2
@ wizzwizz4, Linux tarafından desteklenen ve tanımlayıcı ile işaretlenen parola karması ( md5crypt ) , düz MD5 karma algoritmasıyla aynı değildir ve parola karmaları düz SHA-256 ve SHA-512 ile aynı değildir. . MD5 tabanlı yöntem, en büyük sorun olan sabit sayıda yinelemeye sahiptir. crypt(3)$1$$5$$6$
ilkkachu

7

@Heemayl'ın belirttiği gibi, MD5 şifre karma algoritması eskidir ve mevcut sistemlerde özelleştirilebilir bir çalışma faktörüne sahip daha yeni SHA-2 tabanlı şifre karmaları vardır. Ancak OpenSSL komut satırı aracı bunları desteklemiyor gibi görünüyor.

chpasswdYarar Ancak, sistem ayarlarına göre bir kullanıcının şifresini değiştirmek için izin verecektir.

Bu, yeni kullanıcıyı oluşturmanıza ve uzak uçtaki parolalarını değiştirmenize izin vermelidir.

echo "newuser:newpass" | ssh root@123.45.6.7 'useradd newuser; chpasswd' 

chpasswdkullanıcı adını ve şifreyi komut satırından değil stdin'den alır. Bu aslında bir avantajdır, çünkü komut satırı bağımsız değişkenleri sistemdeki diğer tüm işlemler için görünür olduğundan openssl passwd, uzaktan kumandada çalıştırılırsa , parola sistemdeki tüm işlemler için geçici olarak görünür olacaktır.

Sistem crypt(3)işlevi tarafından bilinen parola karmaları oluşturmak için hazır bir komut satırı yardımcı programı olup olmadığından emin değilim . Perl yerleşik cryptfonksiyona sahiptir , ancak yine de uygun bir tuzun üretilmesi gerekir.

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.