Kök olmayan bir kullanıcı hesabı altında bir arka plan programı çalıştırmak iyi bir uygulama mı?


13

Ağ zamanını değiştirmek, iki bilgisayarımı senkronize etmek için NTP kullanan bir uygulama geliştirdim. O kadar çalışır rootancak ikincisi Linux üzerinde saat ve tarihi (sanırım) değiştirmek için izin beri.

Şimdi bir kullanıcı olarak çalıştırmak istiyorum. Ama zamana erişmem gerekiyor.

  • Kök olmayan bir kullanıcı hesabı altında bir arka plan programı çalıştırmak iyi bir uygulama mı?
  • Başvurum gibi bir özellik verebilir miyim CAP_SYS_TIME?
  • Bir güvenlik açığı oluşturmuyor mu?
  • Daha iyi bir yol var mı?

Normalde NTP arka plan programının ntpkullanıcı hesabı olarak çalışması gerekir (en azından Linux sistemlerinde), bu nedenle bu değişikliği yapmanız gerekmez. Hangi NTP paketini kurdunuz?

6
Kök olmayan bir hesap altında bir daemon çalıştırmaya "root ayrıcalıklarını bırakma" denir ve bu daemondaki güvenlik açıklarının olası zararlarını sınırladığı için yaygın olarak bilinen iyi bir uygulamadır.

1
" Ayrıcalık ayırma " için wikipedia'ya bakın .
Kusalananda

Kaynaklardan NTP derledim. Bir NTP grubum yok
Anonymous12223

@xhaltar NTP grubu ve kullanıcısı oluşturabilirsiniz. Bir hizmetin nasıl başlatılacağını yapılandırmak için (kullanıcı, grup vb.) Hizmet başlatma komut dosyasını oluşturabilir / düzenleyebilir, bir systemd birimi oluşturabilir / yapılandırabilirsiniz.
Pl4nk

Yanıtlar:


15

Kök olmayan bir kullanıcı hesabı altında bir arka plan programı çalıştırmak iyi bir uygulama mı?

Evet ve bu yaygın. Örneğin, Apache root olarak başlar ve sonra yeni işlemi www-data (varsayılan olarak) olarak çatallar .
Daha önce de belirtildiği gibi, programınız saldırıya uğramışsa (ör: kod yerleştirme), saldırgan root erişimi elde etmez, ancak bu belirli kullanıcıya verdiğiniz ayrıcalıklarla sınırlı olur.

"CAP_SYS_TIME" gibi bir "Yetenek" vereyim mi?

Setuid kullanmaktan kaçınmanız ve izinleri bu çok özel kapasiteyle sınırlandırmanız iyi olur.

Bunun için "İyi Uygulama" olarak kabul edilecek başka bir yol kullanabilir miyim?

Güvenliği artırabilirsiniz, örneğin:

  • Hizmeti ayrıcalıksız kullanıcı olarak, kabuk olmadan çalıştırın.
  • Kullanıcıyı ana dizininde kilitlemek için chroot kullanın .

Not: Kök ve Linux'ta çalışıyorsanız Chroot hiçbir güvenlik sağlamaz. Kök kullanıcı, chroot içinde bir dizin oluşturabilir, chroot'un kök dizinini açabilir, yeni dizine chroot yapabilir, gerçek köke kadar yolunu değiştirebilir ve ardından gerçek root'a kök oluşturabilir. BSD, dizini fd'leri bir chroot içine almaktan vazgeçerek bunu düzeltir.
Kevin

@Kevin Kök iseniz, aynı zamanda kroot dışındaki işlemleri de uygulayabilirsiniz ve onu atlatmanın birçok yolu vardır. Sadece bir kök kökünü tutamaz.
Gilles 'SO- kötü olmayı bırak

//, emp.jar.st aslında güvenlik nedeniyle bir kullanıcı oluşturur. Çok iyi uygulama.
Nathan Basanese

USER isem, USER'i belirli bir dizine kilitleyebilir miyim? "/ Opt" gibi (örneğin)?
Anonymous12223

@xhaltar Çalıştırılan bir işlemi USERbir dizine kilitlemek için chroot(kök kullanıcı olarak çalıştırın) kullanın. Ancak, daha önce bir hapishane (dizin) oluşturmalı ve başlatmalısınız . Kısacası, işleminizin ihtiyaç duyduğu kütüphaneleri ve ikili dosyaları bu hapishaneye koyup aramalısınız chroot <path/to/jail> <command>. İhtiyacınız olan bazı örnekleri içeren iyi bir eğitim burada
Pl4nk

13
  • Bunun için "İyi Uygulama" olarak kabul edilecek başka bir yol kullanabilir miyim?

Aksi halde güçlü, reddedilemez nedenleriniz olmadıkça, sadece GNU / Linux dağıtımınızla birlikte gelen NTP paketini kullanmalısınız. Standart NTP arka plan programının olgunlaşması ve bir ağ veya GPS saatiyle senkronize olması için sisteminizin saatini yavaşlatma veya hızlandırma gibi karmaşık özelliklerle gelmesi yıllar aldı. Bu büyük olasılıkla bu nedenle saatlerin Eşitleniyor için özel oldu ise bu amaçla iyi araç etrafında.

ntpd(bu gönderiyi yazarken) son güncellemelere göre hala korunmaktadır . Daha fazla özelliğe ihtiyacınız varsa, geliştiricilerle doğrudan iletişime geçmenizi öneririm, bu konuda söylediklerine güvenin.


5

X işlevini yapabilmesi gereken bir programınız varsa (örneğin, saati manipüle edin) ve X işlevini ve başka bir şey yapma ayrıcalığını / gücünü verebilirsiniz , bu da ona tüm alfabeyi vermekten daha iyidir çorba. Bu en az ayrıcalık ilkesi olarak bilinir . Programınızda bir hata varsa - sıradan bir programlama hatası veya istismar edilebilir bir güvenlik açığı olduğunu düşünün. "Kök" olarak çalışıyorsa, herkesin dosyalarını kaldırabilir veya bir saldırgana gönderebilir. Programın yapabileceği tek şey saati (ve kilitli bir dizindeki dosyaları işlemek gibi ayrıcalıklı olmayan işlevleri) işlemekse, program haydutlaşırsa olabilecek en kötü şey budur.

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.