Requetty'yi devre dışı bırakmak uygun mu?


39

Capistrano kullanarak bir dağıtım betiği kurmaya çalışıyorum. Adım adım betiğimcap deploy:setup sunucuma bağlanıyor ve dizin oluşturan komutları çalıştırmaya çalışıyor. Sonra bir hata görüyorum:msudo: sorry, you must have a tty to run sudo

Sunucum üzerinde requestetty'yi devre dışı bırakmak için önerilen bir çözüm var. https://unix.stackexchange.com/a/49078/26271

Yapmanın güvenli olup olmadığını merak ediyorum.

Yanıtlar:


40

requirettyBir sunucuda sahip olmanın çok sınırlı bir güvenlik avantajı vardır . Kök olmayan bazı kodlardan yararlanılırsa (örneğin bir PHP betiği), requirettyseçenek, yararlanma kodunun, ayrıcalıklarını çalıştırarak doğrudan yükseltemeyeceği anlamına gelir sudo.

Saldırganın kök kazanması için başka bir yol olabilir ve elbette saldırgan sitenizi engellemeye devam edebilir ancak saldırganın kök kazanmasına izin vermemek, farklı kullanıcılar olarak çalışan diğer hizmetlerin normal şekilde çalışmaya devam edeceği ve saldırganın kazanacağı anlamına gelir ' Sistem kayıtlarını silemez. sudoKurallarınızın hiçbiri bir dizin oluşturmak gibi tehlikeli bir şey yapmazsa , bu bir endişe değil.

Dahası - ve daha da önemlisi - requirettybir tty oluşturmak için, örneğin beklediğiniz gibi bir imtiyaz gerekmez . Siz de kapanabilir Yani requiretty: kendi başına, bir güvenlik avantajı sağlamaz. Kullanıcılar tarafından yürütüldüğünde hafif bir denetlenebilirlik avantajı sağlar (kayıtlar, kimin kimi çağırdığı sudove nereden geldikleri hakkında daha iyi bir fikir vermesi nedeniyle ), ancak bir arka plan işinden yürütüldüğünde değil.


1
Kullanıcı çalıştırabilirse expect(veya screenmesela) requirettygüvenlik açısından yararsız mı demek istiyorsun ? (Bu cümle içinde "lanet" derken ne demek istediğinizi anlamadım)
Georges Dupéron

@ GeorgesDupéron Evet, işte bu. Herkes bir tty oluşturabildiğinden, requirettyseçenek kimsenin sudo kullanmasını engellemez.
Gilles 'SO- kötülük olmayı'

3
requirettyBir kullanıcının ssh ile bir şifre gerektiren bir sudo komutu yürütüyorsa, şifresini net metin ile sızdırmasını önleyebilir. Kullanıcıyı ssh-t'yi çağırmaya zorlamak için var.
Chris Betti,

1
@ Chris Betti - ssh -t ... 'ı uygulamak için neden bu iyi bir şey?
Rop

O zamanki düşünceme göre, bu durumda, bir şifre isteyen bir uzak sudo komutu yürütüyorsanız, uzak makinenin askpass programını kaldırarak şifreyi konsolda açık metin ile doldurmaktan daha iyidir. Bunu yaparken, şifrenizin ekrana yazıldığı durumu muhtemelen önlemek dışında, gelişmiş güvenlik sağlıyorsa, hiçbir fikrim yok. Bir değişim programının bir ya da sözde-tty olmadan başlatılmayacağını düşündüğüme inanıyorum.
Chris Betti
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.