Linux'ta net bir metin olarak gösterilen kullanıcı şifrelerini nasıl yapabilirim?


28

Kullanıcıların şifrelerinin kaydedildiğini biliyoruz /etc/passwd, ancak şifrelenmiş bir şekilde, böylece kök bile göremiyor:

jane:x:501:501::/home/jane:/bin/bash
fred:x:502:502::/home/fred:/bin/bash

Yukarıda gösterildiği gibi :x:şifreyi gösterir.

Şifreyi /etc/passwdaçık metin olarak kaydetmenin ve kökün görebileceği şekilde (olası bir yapılandırma) var mı?


10
Hayır. Ve bu bir özellik. Kök hesabın, dosyalarına erişmek için bir kullanıcının şifresine ihtiyacı olmadığından bunun da gerçek bir nedeni yoktur. Hangi şartlar altında bunu istersiniz?
HalosGhost

1
Bunu merak ediyorum, neden sistemin yöneticisi (root) diğer kullanıcıların şifrelerini göremiyor?
user78050,

5
@ user78050, çünkü kök kullanıcının diğer kullanıcıların şifrelerini bilmek için bir nedeni yoktur ve bunu yapmalarına izin vermek büyük bir güvenlik riski teşkil eder.
David Z,

16
Çünkü işletmedeki en basit güvenlik ilkesini ihlal ediyor: "şifreleri asla düz metin olarak saklamayın". Güvenlik iyi yapıldığında, yalnızca kullanıcı şifresini bilmeli, başkasını değil. Artı, bunu yapmak için kesinlikle hiçbir sebep yok. Kök bir kullanıcının başka bir kullanıcının şifresini bilmesine yardımcı olacağı tek bir idari durum düşünemiyorum.
HalosGhost

3
MD5 "şifreleme yöntemini" kullanın, ardından gökkuşağı tablolarını kullanarak şifreleri kırın .
Cristian Ciupitu

Yanıtlar:


58

Diğer iki cevap size - doğru! - Bu bir Kötü Fikir ™ ​​olduğunu söyledi . Ama aynı zamanda , bir sürü programın değiştirilmesini gerektiren, size yapmanın zor olduğunu da söylediler .

Bu doğru değil. Bu çok kolay. Sadece bir veya iki yapılandırma dosyasını değiştirmeniz yeterli. Bunu belirtmenin önemli olduğunu düşünüyorum, çünkü kontrol etmediğiniz sistemlere giriş yaparken farkında olmalısınız. Bunlar aslında bir düz metin parolası koymaz /etc/passwdveya /etc/shadowfarklı bir dosyaya girer. Not Bunları test etmedim, çünkü şifremi düz metin olarak yazmamayı tercih ediyorum.

  1. Düzenle /etc/pam.d/common-password(şifrede yakalamak için değiştirildi) veya /etc/pam.d/common-auth(giriş yaparken yakalamak için) ve ekle… pam_exec expose_authtok log=/root/passwords /bin/cat

  2. İkisini de düzenleyin ve pam_unix'den pam_userdb'ye geçin crypt=none. Alternatif olarak, değiştirildiklerinde şifreleri kaydetmek için yalnızca ortak şifreye koyabilirsiniz (pam_unix'i de bırakarak).

  3. shadowGölge dosyasını devre dışı bırakmak için (ve herhangi bir güçlü karma seçeneklerinin yanı sıra) seçeneğini pam_unix'den kaldırabilir ve geleneksel şifreli şifrelere geri dönebilirsiniz. Düz metin değil, Ripper John sizin için bunu çözecektir.

Daha fazla bilgi için, PAM Sistem Yönetici Kılavuzuna bakın .

Ayrıca PAM'ın kaynak kodunu düzenleyebilir veya kendi modülünüzü yazabilirsiniz. Sadece PAM (veya modülünüzü) derlemeniz gerekiyor, başka bir şey yok.


1
Sanırım düz metin şifreleri yazıldı /root/passwords.
Faheem Mitha

Btw. Ne kadar kolay olduğunu ve tehlikeye atılmış bir sistemden korkuyorsa nereye bakmam gerektiğini bilmek çok güzel.
erik

8
@ ererik Kabul edilen cevap olarak en çok yararlı bulduğu cevabı seçmek istenin ayrıcalığıdır. Muhtemelen OP'nin "yapma!" Yı bulması iyi bir şey. En yararlı… Ayrıca, açık olmak gerekirse, bu, tehlikeye atılmış veya kötü niyetli olarak yönetilen bir sistemde şifreleri çalmanın tek yolu değil. Böylece, güvende olduğunuzu belirlemek için PAM yapılandırmasına bakamazsınız.
derobert

3
Bu, dağıtımın PAM kullandığını varsayarsak, hiçbiri de yapmıyor.
Vality

1
@ msw Yanıtlamıştım çünkü anlaşılır bir şekilde bir Linux kutusunu açık metin şifreleriyle çalıştırmanın yaygın olduğu inancı zordur (Bobby, kredisine göre cevabını düzeltti; Anthon hala kulağa zor geliyor). Parolanın yeniden kullanılmasını teşvik ettiği için bu tehlikeli bir inançtır. Sadece bir cevap yazsaydım, "aslında, kolay, bir ya da iki dosyayı düzenlersin, ama sana söylemeyeceğim", o zaman kimse buna inanmazdı. Neden beni (o zamanlar) çok daha yüksek oylarla, daha ayrıntılı cevaplarla dinlediniz? Nokta yapmak, nasıl yapılacağını söylemeyi gerektirir. (Yine de, örnekleri kopyalayıp yapıştırmıyorlar. Düşüncenin hala kullanması gerekiyor.)
derobert

34

Ah canım, tamam, en baştan başlayalım ...

Kullanıcıların şifrelerinin / etc / passwd dizinine kaydedildiğini biliyoruz, ancak şifreli bir şekilde

Hayır, onlar saklanan içinde /etc/passwdve bu oldukça uzun bir zaman önceydi. Bugün şifreler çoğu zaman sözde bir gölge dosyada saklanır /etc/shadow.

fakat şifrelenmiş bir şekilde, kök bile göremiyor:

Bazen birbirlerinin yerine kullanıldığını biliyorum, ancak karma şifreleme değil . Şifreleme, tanımı gereği geri dönüşümlüdür, yani şifrelenmiş şeyi tekrar açık metin biçimine dönüştürebilirsiniz. Karma olacak şekilde tasarlanmıştır değildir (kaba kuvvet hariç) herhangi bir şekilde tersine çevrilebilir. Karma bir şeyin orijinal açık metin biçiminin kurtarılabilir olması beklenmemektedir.

Gölge dosyasındaki şifreler karma olarak saklanır.

yukarıda gösterildiği gibi: x: şifreyi gösterir

xBu durumda yalnızca eski şifre alanı için bir yer tutucudur. xŞifre gölge dosyasında bulunabilir anlamına gelir.

Şifreyi / etc / passwd içine açık metin olarak kaydetmenin ve kökün görebileceği şekilde (olası bir yapılandırma) var mı?

Evet, bu gerçekten mümkün, ancak bazı nedenlerden dolayı iyi bir fikir değil. Derobert'in cevabı bunu yapmanın oldukça basit bir yolunu açıklar .

Ama neden iyi bir fikir değil? Eh, basit ama çok önemli bir nedenden dolayı: güvenlik. Bu soruları okumanızı öneriyorum:

Ancak özetlemek gerekirse, aşağıdakileri kabul edin: Bir şirkette bir sunucu var, tüm kullanıcı hesapları şifreleri ile güvence altına alınmış ve bu kullanıcı hesaplarındaki veriler aynı şifre ile şifrelenmiştir. Dışarıdan gelen bir kraker sunucuya erişim kazanıyor, ancak yine de kullanıcı hesaplarında şifreli olduğundan önemli verilere erişemiyorlar.

Şimdi şifrelerin düz metin olarak saklanacağını varsayalım. Kraker aniden her şeye erişebilir , çünkü şifreler okunabilir. Fakat eğer onlar saklı değerler olarak saklanırlarsa, kaba kuvvet saldırısı yapmak için çok fazla kaynağı olan insanlar dışındaki kimselere yararsızdırlar.


2
OP’nin şifreleme ve karma şifreleme konusundaki savunmasında, glibc’deki crypt man sayfası şunları söylüyor: “Eğer tuz, karakterlerle başlayan bir karakter dizesiyse, "$id$"bunu sonlandıran bir karakter dizisi ise "$": $id$salt$encrypted DES makinesini kullanmak yerine, kullanılan şifreleme yöntemini idtanımlar ve bu dizinin geri kalanının nasıl yorumlanacağını belirler ».
Cristian Ciupitu

1
İlginç, ama asıl soruyu cevaplamıyor, derobert'in cevabı gibi.
erik

6
@erik Bazen bir sorunun doğru cevabı, "teknik olarak mümkün olsa bile" “yapma” dır. Bu o zamanlardan biri.
Gilles 'SO- kötülük olmayı'

1
Bu satırı değiştirmeyi öneriyorum: "Hayır, birçok uygulamayı ve çalışma şeklini değiştirmekten başka bir yol yok." Bu, kolay olmadığı izlenimini bırakır (ya da en azından işlevsel olarak eşdeğer bir şey yapmak kolaydır).
derobert

2
@Bobby Bu mükemmel bir cevap, ancak mükemmel bir cevap değil. Mükemmel bir cevap yapmak için derobert'in cevabında gösterildiği gibi, “kolay mümkün olmayan” kısmını değiştirmelisiniz.
Michael Dorst,

10

Her şeyden önce şifreli şifreleri değildir /etc/passwd, ancak bunlar içindedir /etc/shadow. Bunun nedenlerinden /etc/passwdbiri halka açıktır (başka bir kullanıcının GECOS alan bilgilerini bulabilirsiniz) ve özellikle daha eski şifreleme şemaları ile şifrelenmiş parolaya karşı kaba kuvvet saldırılarına izin verebilir.

Parolaları yalnızca düz metin olarak saklamak gerekli değildir ve /etc/shadowgeçerli parolaları kontrol etmek için parola programı ve kitaplıklarda bilgilerin okunması gerekir . Ve sonra, tüm programların, düz metin şifresi depolamasını anlamayan bir şeye statik olarak bağlanmak yerine, bu bilgilere erişmek için paylaşılan kütüphaneleri kullanmasını ümit etmeniz gerekir.

Bu bir kurulumun yapılandırılmasında bir seçenek olacaksa, her zaman onu uygun olmayan şekilde açacak aptal insanlar olacaktır. Ve hala CRT ekranlarında çalışıyorlar ve bunu, binaların dışından kolayca toplanabilecek şekilde, bilgilere bakarken yayınlıyorlar.

Bunun yanı sıra, insanlar aynı veya benzer şifreyi birden fazla sistemde kullanma eğilimindedir, bu nedenle herhangi bir şifrenin insan tarafından okunabilir olması iyi bir fikir değildir. Bazı sysadmin kendi sistemlerini başka sistemlerde tekrar deneyebildiğinden kullanıcının bir hesabı olduğunu biliyor.

Daha ilginç şeyler olmalı, çalışmalarını sisteminizden inceleyebilirsiniz.


3
/etc/shadowşifreli şifreleri saklamaz, şifre karma değerlerini saklar. Evet, işlev çağrılır cryptve man sayfası “şifreli” der, ancak bir balığa bisiklet diyorsanız, bu tekerlekleri vermez. /etc/shadowHerhangi bir programı (en azından Linux ve Solaris'te) yeniden derlemeden mağaza şifrelerini farklı bir biçimde yapmanın mümkün olacağını unutmayın : kimlik doğrulama yöntemleri her zaman dinamik olarak bağlanır. Şifrelerin düz metin olarak saklanması korkunç bir fikir olabilir, ancak biraz çalışarak mümkündür .
Gilles 'SO- kötülük yapmayı bırak'

Gilles OP'lerin terminolojisini yeniden kullandım, ancak hash'ın daha uygun bir terim olduğu konusunda haklısın.
Anthon

3

Temel sebep (bunun kötü bir fikir olmasının nedeni), hiçbir kullanıcının (root, admin veya diğer) bir başkasının kullanıcı şifresine erişememesidir.

Sadece parola bir kimlik doğrulama aracı olduğu için. Başka bir kullanıcının şifresini bilirsem, kimlik bilgilerini (kullanıcı adı + şifre) bilirim, bu yüzden o kullanıcı olarak giriş yapabilirim (kendisinin kimliğini).

Bu kullanıcı olarak giriş yaptığımda yaptığım herhangi bir işlem, diğer kullanıcı için sorumlu tutulacak. Ve kimlik doğrulamanın çalışması gerektiği gibi değil.

Çok sayıda önemli dosyayı silmek, sabit diskleri silmek, yedekleri silmek, nükleer güç planlarını kapatmak vb. Gibi işlemler feci olabilir.

Ya da sadece yasadışı. Benim (yöneticimin) tüm şifrelere erişebileceği bir banka kurumu hayal edin. Kasiyerin şifresini kullanarak, başkanın banka hesabından pencere temizleyicisinin banka hesabına bir milyon dolarlık bir geçiş emri verebilirim. Ardından işlemi onaylamak için kasiyerin şifresini kullanın. Ardından, pencere temizleyicisinin hesabını kendi off-shore banka hesabımla onayla.

Sonra Bahamalar'da uzun süre tatile çıkıyorum ...


Bu görüşe göre, şifrelerin şifrelenmesi ve ayrı gölge dosyalarının kullanılması bu kuralı uygulamak için bir araç olarak görülebilir (hiçbir kullanıcı başka birini taklit edemez).

Ve @ Miral'ın yorumladığı gibi * , sukimliğe bürünmeye izin verirken (ve yukarıdaki argümanı atma biçimlerinin) izin vermesinin de kullanımının bir kaydını tutmasıdır (sadece yöneticileri diğerlerinin kimliğine bürünebilecek kuralları değiştirir. günlük tutulur ").

* Banka örneği muhtemelen en iyisi değildi. Güvenliğin çok önemli olduğu herhangi bir ortamda, genellikle tek bir şifreden daha fazla doğrulama ve yetkilendirme gerekir.


Bu argümanın bir kusuru, kök kullanıcının, parolalarını bilmek zorunda kalmadan herhangi bir kullanıcıyı sistemde taklit edebilmesidir. Kadar kolay su otheruser.
Miral,

@Miral haklısın, bunu düşünmedim. Ve kullanımı sugünlüğe kaydedilmiş olmasına rağmen , su, bir kullanıcı başka bir kimliğe bürünürken gerçekte ne yapıldığının kaydını tutmaz. Kötü niyetli bir kök, eylemleri gelecekteki araştırmacılardan gizlemek için günlükleri her zaman değiştirebilir.
ypercubeᵀᴹ
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.