Eski bir okul kabuğu sunucusunda kullanıcı ayrımını sağlama


9

Birkaç kişi için eski bir okul kabuğu sunucusu çalıştırmak istiyorum, yani. kullanıcıların ssh erişimi alabilmeleri için yazılım (kendi veya sağlanan) çalıştırabilmeleri. Endişem kullanıcılar arasında uygun ayrım.

Ben birbirlerinin süreçlerini görüntülemek, (açıkça izin verilmedikçe) birbirlerinin dosyalarına erişmek istemiyorum, vb Her ayrıcalık yükseltme hata tarafından ısırılan almak veya sunucunun her küçük çekirdek güncellemesi ile yeniden başlatmak güzel olurdu. Bu güvenlik önlemleri ile ortak hizmetleri (web ve posta barındırma gibi) çalıştırma seçeneğini korumak mükemmel olurdu.

Grsec'i kullandığım güne kadar bu eski bir çekirdeğin üzerinde kalmayı ve kendiniz derleme zorluğu ile uğraşmayı gerektirir. Paylaşılan bir sunucuda kullanıcı ayrımını sağlamanın daha modern ve daha Ubuntu bir yolu var mı?

Belki de bu etki için AppArmor ile bir şeyler yapabilirsiniz? Ya da paylaşılan ortamlar için önceden yapılandırılmış bir çekirdek deposu olabilir mi? Veya kaplara dayalı bir çözüm? Bunlar son zamanlarda moda oldu.


Yanıtlar:


9

hidepid

procfsLinux'ta artık hidepidseçeneği destekliyor . Gönderen man 5 proc:

hidepid=n (since Linux 3.3)
      This   option   controls  who  can  access  the  information  in
      /proc/[pid]  directories.   The  argument,  n,  is  one  of  the
      following values:

      0   Everybody  may  access all /proc/[pid] directories.  This is
          the traditional behavior, and  the  default  if  this  mount
          option is not specified.

      1   Users  may  not  access  files and subdirectories inside any
          /proc/[pid]  directories  but  their  own  (the  /proc/[pid]
          directories  themselves  remain  visible).   Sensitive files
          such as /proc/[pid]/cmdline and /proc/[pid]/status  are  now
          protected  against other users.  This makes it impossible to
          learn whether any user is running  a  specific  program  (so
          long  as  the program doesn't otherwise reveal itself by its
          behavior).

      2   As for mode 1, but in addition the  /proc/[pid]  directories
          belonging  to other users become invisible.  This means that
          /proc/[pid] entries can no longer be used  to  discover  the
          PIDs  on  the  system.   This  doesn't  hide the fact that a
          process with a specific PID value exists (it can be  learned
          by  other  means,  for  example,  by "kill -0 $PID"), but it
          hides a process's UID and  GID,  which  could  otherwise  be
          learned  by  employing  stat(2)  on a /proc/[pid] directory.
          This greatly complicates an  attacker's  task  of  gathering
          information   about  running  processes  (e.g.,  discovering
          whether some daemon is  running  with  elevated  privileges,
          whether  another  user  is  running  some sensitive program,
          whether other users are running any program at all,  and  so
          on).

gid=gid (since Linux 3.3)
      Specifies  the  ID  of  a  group whose members are authorized to
      learn  process  information  otherwise  prohibited  by   hidepid
      (ie/e/,  users  in this group behave as though /proc was mounted
      with hidepid=0.  This group should be used instead of approaches
      such as putting nonroot users into the sudoers(5) file.

Bu nedenle, Linux> 3.3'teki diğer kullanıcıların işlemlerinin ayrıntılarını gizlemek için montaj /procyapmak hidepid=2yeterlidir. Ubuntu 12.04 varsayılan olarak 3.2 ile gelir, ancak daha yeni çekirdekler yükleyebilirsiniz. Ubuntu 14.04 ve üstü bu gereksinimi kolayca karşılar.

ACL

İlk adım olarak, rwxher giriş dizininden (ve gerekirse grup için) başkaları için izinleri kaldırın . Tabii ki, ev dizinleri içeren klasör (ler) kök dışında kimseye yazma izinleri olduğunu varsayıyorum.

Ardından, ACL'leri kullanarak web sunucusu ve posta sunucusu gibi hizmetlere uygun dizinlere erişim izni verin. Örneğin, web sunucusu işlemine kullanıcının ana sayfalarına erişim izni vermek için,www-data kullanıcı ve ~/public_htmlana sayfası tutulur nerede:

setfacl u:www-data:X ~user
setfacl d:u:www-data:rX ~user/public_html

Benzer şekilde, posta işlemleri ve posta kutusu dizinleri için ACL ekleyin.

ACL'ler varsayılan olarak ext4'te en azından Ubuntu 14.04 ve üstü sürümlerde etkinleştirilir.

/tmp ve umask

Başka bir sorun /tmp. Yı kurumask dosyalar kullanıcıların geçici dosyalar diğer kullanıcılara erişilebilir değildir böylece, değil grubu veya dünya okunabilir şekilde yerleştirin.


Bu üç ayarla, kullanıcılar diğer kullanıcıların dosyalarına erişemez veya işlemlerini inceleyemez.


2
Yerleştirilen ayrı dosyalara alternatif veya eklenti /tmppakettir libpam-tmpdir: her kullanıcı için kök sahipli, dünya tarafından okunamayan bir dizin /tmp/userve kullanıcı tarafından sahip olunan, dünya tarafından okunamayan, dünya tarafından izlenemeyen dizinler /tmp/user/$UIDoluşturur (ilk dosyalarında) oturum açın) ve ortam değişkenini TMP_DIRikincisini gösterecek şekilde ayarlar . Çoğu program güzel oynar ve $TMP_DIRayarlanmışsa geçici dosyalarını içine yerleştirir.
David Foerster
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.