Bazı uygulamalar için neden bir grup ve kullanıcı oluşturulması önerilir?


12

Çoğu zaman, bir programı kaynaktan yüklerken yeni bir kullanıcı ve yeni bir grup oluşturmanız ve yeni /usr/local/<myapp>oluşturulan kullanıcı ve grup sahipliğini vermeniz önerilir .

  • Neden böyle bir uygulama iyi bir uygulama olarak kabul edilir?

  • Neyi geliştirir?

Örnek: MySQL veritabanı sunucusu için mysql kullanıcısı / mysql grubu.

Yanıtlar:


11

Uygulama, uygulama başına bir kullanıcı ve grup oluşturmak değil, hizmet başınadır. Yani, yerel bir kullanıcı tarafından yürütülen programların root dışında bir kullanıcı olarak kurulması gerekmez. It adlı cinleri , programlar arka planda çalışan ve bu özel kullanıcı olarak çalışmalıdır ağ veya diğer iletişim yollarla gelen istekleri, yürütün.

Daemon özel bir kullanıcı olarak çalışır, böylece hatalı davranırsa (muhtemelen bir saldırgan tarafından tetiklenen bir hata nedeniyle) yapabileceği hasar sınırlıdır: yalnızca daemon'un veri dosyaları etkilenir (saldırgan yerel bir kök delik bulmayı başaramadıkça) olabilir). Örneğin, veritabanı arka plan programı mysqldözel bir kullanıcı ve grup olarak çalışır mysql:mysqlve veritabanının ( /var/lib/mysql/*) veri dosyaları aittir mysql:mysql.

Daemon çalıştırılabilir dosyasının ve kullanılan ancak daemon tarafından değiştirilmemesi gereken diğer statik veri ve yapılandırma dosyalarının özel kullanıcıya ait olmaması gerektiğini unutmayın; root:rootçoğu program ve yapılandırma dosyası gibi sahip olmaları gerekir . mysqldSüreç hiçbir iş yazılmasına vardır /usr/sbin/mysqldya /etc/mysql/my.cnfbu dosyalar aittir olmamalıdır yüzden, mysqlveya kullanıcı tarafından yazılabilir olması mysqlkullanıcı veya mysqlgrubun. Bazı dosyaların yalnızca arka plan programı ve yönetici tarafından okunması gerekiyorsa, bunların kullanıcı köküne ve ayrılmış gruba ait olması ve 0640 ( rw-r-----) moduna sahip olması gerekir .

Sahip olunamayan özel bir yürütülebilir dosya kategorisi, root:rootbir kullanıcı tarafından çağrılan ancak ekstra ayrıcalıklarla çalışması gereken programlardır. Bu yürütülebilir dosyalar root olarak (en azından kısmen) çalıştırılmaları gerekirse setuid root olmalıdır ; çalıştırılabilir dosya 4755 ( rwsr-xr-x) moduna sahip olmalıdır . Programın root olarak değil ekstra ayrıcalıklarla ihtiyacı varsa, programın setgid olarak ayarlanması gerekir, böylece ekstra ayrıcalıklar bir kullanıcı üzerinden değil bir gruptan gelir. Yürütülebilir dosya 2755 ( rwxr-sr-x) moduna sahiptir . Nedenleri iki yönlüdür:

  • Yürütülebilir dosyanın kendisini değiştirmesine izin verilmemelidir, böylece bir kullanıcı bir güvenlik açığından yararlanmayı başarırsa, program tarafından kullanılan veri dosyalarını değiştirebilir, ancak programı çalıştıran diğer kullanıcılara saldırmak için yürütülebilir dosyaya bir truva atı enjekte edemez. .
  • Yürütülebilir dosyanın veri dosyası gruba aittir. Bir setuid programının, özel veri dosyalarına (bunun nedeni) erişmek için gerçek kullanıcı (programı çağıran kullanıcı) ve etkili kullanıcı (programın çalıştığı kullanıcı) ile etkileşime girmesi arasında geçiş yapması gerekir. ekstra ayrıcalıklara sahip olmak). Bir setgid programı ayrıca, yalnızca grup tarafından erişilebilen kullanıcı başına verileri ayırabilir (örneğin, kullanıcının sahip olduğu dosyaları yalnızca kök ve programın grubu tarafından erişilebilen bir dizinde depolayarak).

3

Genel olarak uygulamalar değil, bunun için cinler. Bunun nedeni, arka plan programının kök yerine ayrıcalıksız bir kullanıcı olarak çalışabilmesidir, böylece bir güvenlik açığı varsa ve tehlikeye girerse, yapılabilecek hasar yalnızca kullanıcının erişebildiği alanlara dahil edilir.


1

İyi bir uygulama olarak görülmesinin nedeni, sistemin diğer kullanıcılarının belirli bir uygulama için veri ve yapılandırma dosyalarını geçersiz kılmalarını önlemektir.

Örnek olarak mysql/ mysqlmysql veritabanı dosyaları için depolama alanının sahibi olmak, uygulama API'sini kullanmayanların veritabanlarını bozmasını önler. Ayrıca, kullanıcının mysqlgenellikle gerçek bir kabuğu yoktur, böylece kimse bu kullanıcı olarak giriş yapamaz.


Kritik bir noktayı kaçırdınız; bu, uygulamanın önemli olan kullanıcı ve grubun çalıştığı şeydir ve yürütülebilir ve diğer statik dosyaların kök sahibi olması gerekir.
Gilles 'SO- kötü olmayı bırak'

@Gilles Köklere ait olabilirler ve dağıtımlarla yüklenen çoğu uygulama vardır, ancak olmaları gerekmez ve olmaları da gerekmez. Nitekim Ubuntu'ya /usr/bin/ataittirdaemon/daemon
Karlson

1
atbir daemon değil. Özel dosyalar aracılığıyla daemon ile daemoniletişim kurabilmesi için setuid atd.
Gilles 'SO- kötü olmayı bırak'

1

Yüklü yeni bir arka plan programı için yeni bir grup / kullanıcı oluşturmak güvenliği artırır. Sunucu işlemi böyle bir kullanıcı altında çalıştırıldığında, o kullanıcının erişim haklarıyla sınırlıdır. Buna karşılık: Kök olarak çalıştırıldığında her şeyi yapabilir.

Bu fark, daemon'unuzun yanlış yapılandırılması ve / veya güvenlikle ilgili bir hata içermesi durumunda önemlidir.

Sorunuzun ikinci kısmı ile, yani /usr/localsahiplikle ilgili kısmı ile ne demek istediğinizden emin değilim . Genel olarak, Xbir daemon'un güvenlik nedenleriyle çalıştığı kullanıcının aynı zamanda ikili dosyalarla birlikte dizinin sahibi olması da mantıklı değildir (çünkü bu durumda bir istismar durumunda onları değiştirebilir). Ancak, arka plan programının üzerinde çalıştığı veri dosyalarını içeren dizine erişilebilir olmalıdır X- bunu yapılandırmanın en kolay yolu Xveri dizinlerinin / dosyalarının sahibini oluşturmaktır.

Kendi özel kullanıcısı altında bir daemon çalıştırmak sadece bir güvenlik tekniğidir, diğerleri bir çeşit 'kromlama' veya zorunlu erişim kontrolü (MAC) sistemi (ör. SELinux) kullanır.


1

Bu bir güvenlik konusudur. Bir daemon uygulamasına giren birinin yapabileceği hasarı sınırlar. Kullanıcı uygulaması genellikle standart bir kullanıcı kimliğine aittir root.

Web sunucunuz, posta sunucunuz ve veritabanınız aynı kullanıcıyla çalışıyorsa, güvenliğini aşmanızı kolaylaştırır. Bunlardan herhangi birinin sistem erişimine izin veren bir hata veya yanlış yapılandırması varsa, bu erişim her üç uygulamaya da erişmek için kullanılabilir.

Hepsinin de önerildiği gibi ayrı hesapları varsa, yalnızca güvenliği ihlal edilmiş uygulamaya erişilebilir. Diğerinin genel yapılandırma ayrıntıları okunabilirken, değişikliklerin yapılması olası değildir.

Birçok armağan, kullanıcıların dosya yüklemesine ve indirmesine izin verir ve aksi takdirde diğer artalanlar için yapılandırmalarda yapmasını istemeyeceğiniz şeyleri yapar. Her uygulamanın kendi kullanıcı kimliği ve grubu varsa, cinleri güven altına almak daha kolaydır.

Arka plan programına özgü bir gruba sahip olmak, dosyalara ve dizinlere güvenli bir şekilde arka plan programına güvenli erişim izni vermeyi kolaylaştırır. Dosya veya dizin farklı bir kullanıcıya aitse, ancak daemons grubuna aitse, genellikle salt okunur olarak erişilebilir olacaktır. Erişim izinleri find gibi araçlarla kolayca doğrulanabilir ve düzeltilebilir.


Kritik bir noktayı kaçırdınız; bu, uygulamanın önemli olan kullanıcı ve grubun çalıştığı şeydir ve yürütülebilir ve diğer statik dosyaların kök sahibi olması gerekir.
Gilles 'SO- kötü olmayı bırak'

@Gilles: Not edildi ve buna göre düzenlendi.
BillThor
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.