Yazılımı sunucuda çalıştırmak için ne zaman yeni bir kullanıcı hesabı oluşturmalıyım?


14

Genel olarak, bir sunucuda internete dönük bir yazılım parçası çalıştırmak için ne zaman yeni bir kullanıcı hesabı oluşturulmalıdır?

Örneğin, paylaşılan bir Debian sunucusu kullandığımı varsayalım (örneğin Dreamhost aracılığıyla) ve bazı web sitelerini WordPress kullanarak, bazıları Redmine kullanarak, bazıları Ruby on Rails kullanarak, belki de Django kullanan ve Mercurial'a hizmet etmek istiyorum depolar da.

Dreamhost sunucularında ve benzer birçok kurulum sunucusunda, bunların hepsi tek bir kullanıcı hesabı altında yapılabilir , ancak bu yaklaşımın bazı dezavantajlarını görebilirim:

  • Daha uzun bir .bashrc
  • Bu hesabın güvenliği ihlal edilirse, altında çalışan tüm siteler de tehlikeye girer.

Öte yandan, özellikle bir kısmı yüklü yazılım açısından aynı gerekliliklere sahipse, çok sayıda kullanıcı hesabına sahip olmak takip etmek için bir acı haline gelebilir. Örneğin, WordPress çalıştıran her web sitesi için bir hesabınızın olması aşırı olabilir.

En iyi uygulama nedir? Kullanıcı hesabı başına barındırılan sitelerin (veya barındırılan depoların, vb.) Sayısını kişinin paranoya düzeyiyle orantılı olarak azaltmak mı?

Lütfen bu konuda fikirlerinizi gönderin, onlar için nedenlerinizi belirtin.

Ayrıca, özel bir sunucuda veya VPS'de uygulanan yaklaşımın paylaşılan bir sunucuda alınan yaklaşımdan farklı olması gerektiğini düşünmek için herhangi bir nedeniniz varsa, lütfen bunların ne olduğunu ve yine onların nedenlerini belirtin.

Yanıtlar:


11

Genelde "Ağdaki dinleme soketini açan her şey için bir kullanıcı" hayranıyım - Biri Apache, biri Posta, biri DNS, vb.

Bu (en son duyduğum gibi) hala En İyi Mevcut Uygulama ve bunun ardındaki neden sade ve basit paranoya: Birisi bir güvenlik açığı bulursa ve yama yapma şansım olmadan önce bu hizmetler Büyük Kötü İnternet'e maruz kalır. en azından yazılımları tek bir kullanıcı hesabıyla sınırlandırıyorum, yalnızca sorumlu olduğu tek hizmeti çalıştırmak için gerekli ayrıcalıklarla.
Genel olarak konuşursak, bu yalıtım düzeyinin sistemi korumak için yeterli olduğunu düşünüyorum, ancak her uygulama bir güvenlik açığı adasıdır (örneğin, birisi Apache'nin savunmasız bir WordPress eklentisi yüklerse , Apache'nin erişebildiği her şey (yani tüm web siteleri) etkili bir şekilde savunmasızdır uzlaşma durumunda.

Böylece bu argümanın genişletilmiş bir sürümü Paylaşılan Hosting istemcilerinin web sitelerini kendi Apache yapılandırması ve kullanıcısı ile korumalı hale getirmek için yapılabilir (her site için tam bir web yığını yüklemeniz gerekmez, sadece farklı bir kullanıcı belirten ayrı bir apache yapılandırması yapmanız gerekir. ) dezavantajı, her sitenin bir sürü Apache işlemi yürütmesi, dolayısıyla RAM kullanımınızın önemli ölçüde artması ve herhangi bir Apache örneğinin / kullanıcısının güvenliğinin ihlal edilmesi durumunda dünya tarafından okunabilen şeyler hala savunmasızdır.

Daha fazla güvenlik için her Apache'yi bir chroot (veya BSD sistemlerinde hapse girerseniz) koymak için argüman daha da genişletilebilir, ancak artık her disk / hapishane için gereken tüm yazılıma ihtiyaç duyacağı için ek disk alanından bahsediyorsunuz. içerdiği siteyi çalıştırın (ve yamalar çıktığında sunucudaki tek bir ana kopya yerine her site için bu yazılımı güncelleme ihtiyacı) ve ayrıca ayrı kullanıcılar / apache örnekleriniz olduğu gibi RAM gereksinimini çalıştırın.
Bu, kullanıcıların kroketten kurtulmasına izin veren bir OS / Çekirdek hatası hariç her şeyi hafifletir (bu, her siteyi ayrı bir fiziksel sunucuda çalıştırmak için argüman haline gelir - daha sonra siteleri farklı vlans / alt ağlara ayırma argümanı haline gelir).


Tüm risklerde olduğu gibi, onu ortadan kaldıramazsınız: onu sadece bir uzlaşmanın potansiyel zararına / maliyetine, bir uzlaşma olasılığına ve her bir azaltma seviyesinin maliyetine dayanarak kabul edilebilir bir seviyeye kadar azaltabilirsiniz.
Param için, kritik olmayan, E-Ticaret tarafından paylaşılan bir barındırma ortamı için "Apache için bir kullanıcı, biri DNS için, biri posta için, vb." güvenlik ağı yeterlidir. Bu seviyenin ötesinde bir güvenlik ihtiyacı varsa, kullanıcılarınız kendi donanımlarını ciddiye almalıdır.


1
Ayrıca Apache için (mod_su sanırım?) Bir modül var, Apache'nin gelen isteğe bağlı olarak çalıştırdığı kullanıcıyı dinamik olarak değiştirmesine izin veriyor; paylaşılan bir barındırma ortamında, erişilen siteye sahip olan kullanıcı olarak değiştirilecek şekilde ayarladınız. Bu, en yaygın ihlal türlerinin (kod yerleştirme vb.) Bölümlere ayrılmasını sağlar, böylece yalnızca kötü WordPress eklentisini yükleyen tek kullanıcı bundan etkilenir. Ayrıca, Apache sürecinin tamamen ihlal edilmesine ve ayrıcalık yükselme saldırılarına karşı biraz koruma sağlar, ancak kuşkusuz bu gerçek amacı değildir.
Kromey

@Kromey, mod_su hakkında fazla bilgi bulamadım. Eğer ortalama Do mod_suexec ?
sampablokuper

1
@sampablokuper Yup, bu yanlış bilgi için özür dilerim.
Kromey

1
@Kromey büyük sorun mod_suexec"CGI olmayan istekleri hala Kullanıcı yönergesinde belirtilen kullanıcı ile işlemler" dir - bu yüzden PHP bir modül ise hala "ana" apache kullanıcısı olarak çalışıyor. Yaptığınız her şey CGI olsa harika bir çözüm.
voretaq7

@voretaq Ah, bu sınırlamanın farkında değildim. Yine de, bazı ortamlarda yararlı olabilir, ancak bu gerçekten düşündüğümden daha az uygulanabilir hale getiriyor.
Kromey

6

Genellikle yaptığım harici oturum açma hizmetleri için oturum açma izni olmayan bir kullanıcı (örneğin "kimse") ve oturum açma ve su veya sudo izin verilen bir hesabı var. Doğal olarak kullanıcı adlarınızın farklı olduğundan ve kolay tahmin edilemediğinden emin olun.

Her müşterinin giriş yaptığı bir paylaşılan barındırma ortamı çalıştırmıyorsanız, gerektiği gibi hizmet başına bir kullanıcı görmüyorum. Kendinizi gerçekçi bir şekilde saldırı için çok çekici bir hedef olarak görürseniz, olabildiğince izole edebilirsiniz. Ancak, çok tartışmalı bir şey yapmazsanız veya finansal veriler barındırmazsanız, gerçekten bir hedef için o kadar çekici olmazsınız.


+1 ayırma düzeyinin eldeki duruma uygun olması gerekir - ve genellikle "çok tartışmalı" veya "finansal verilere"
ulaştığınızda
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.