Jail: Unterschied zwischen den Versionen

Aus UUGRN
K (Jail2)
K (link-vorlage verwenden)
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 7: Zeile 7:
Bis auf ein paar Einschränkungen ist ein Jail genauso funktional wie das native Hostsystem.
Bis auf ein paar Einschränkungen ist ein Jail genauso funktional wie das native Hostsystem.
Im Detail funktionieren nicht:
Im Detail funktionieren nicht:
* [[IPv6]]
* [[Mount]]en und unmounten von Dateisystemen,
* [[Mount]]en und unmounten von Dateisystemen,
* Abhängig von der Policy, Dienste die ''Raw Sockets'' benötigen: [[Ping]], [[Traceroute]], ...
* Abhängig von der Policy, Dienste die ''Raw Sockets'' benötigen: [[Ping]], [[Traceroute]], ...
Zeile 13: Zeile 12:
* Das Anlegen von Paketfilter-Regeln
* Das Anlegen von Paketfilter-Regeln


Hier ist die Entwicklung aber nicht zum Stehen gekommen. Einer Überarbeitung des Jail-Konzepts wird in [[Jail2|FreeBSD Jail2]] einfließen.
Diese Einschränkungen sind derzeit aktuell. An einigen Stellen wird bereits aktiv gearbeitet, andere Einschränkungen sind zu mindest schon auf der ToDo-Liste der Entwickler gelandet. Man darf also gespannt bleiben.
Einen Überblick über das Projekt bietet die [http://docs.freevps.com/doku.php?id=freebsd:index FreeVPS Projektseite].


=== Sysctl MIB Entries ===
Manche Einschränkungen können global, manche auch Jail-individuell gelockert werden. Dieser Punkt ist stetigen Änderungen unterworfen, es empfiehlt sich daher, den aktuellen Stand von {{man|freebsd|8|jail}} unter '''Sysctl MIB Entries''' zu studieren.
(Quelle: FreeBSD man pages [http://www.freebsd.org/cgi/man.cgi?query=jail&apropos=0&sektion=8&manpath=FreeBSD+6.1-RELEASE&format=ascii  jail(8)])
<pre>
Certain aspects of the jail containments environment may be modified from
the host environment using sysctl(8) MIB variables.  Currently, these
variables affect all jails on the system, although in the future this
functionality may be finer grained.


security.jail.allow_raw_sockets:
== Entwicklung ==
  This MIB entry determines whether or not prison root is allowed to
; CVS:
  create raw sockets. Setting this MIB to 1 allows utilities like
* [http://www.freebsd.org/cgi/cvsweb.cgi/src/etc/rc.d/jail src/etc/rc.d/jail] Startscript
  ping(8) and traceroute(8) to operate inside the prison. If this MIB
* [http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/jail/ src/usr.sbin/jail/] jail(8)
  is set, the source IP addresses are enforced to comply with the IP
* [http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/jls/ src/usr.sbin/jls/] jls(8)
  address bound to the jail, regardless of whether or not the
* [http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/jexec/ src/usr.sbin/jexec/] jexec(8)
  IP_HDRINCL flag has been set on the socket. Since raw sockets can
* [http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/kern_jail.c src/sys/kern/kern_jail.c]
  be used to configure and interact with various network subsystems,
  extra caution should be used where privileged access to jails is
  given out to untrusted parties. As such, by default this option is
  disabled.


security.jail.enforce_statfs:
; Jail Resource Limits:
  This MIB entry determines which information processes in a jail are
: CPU- und Speicherverbrauch in den einzelnen Jails limitieren bzw. ''gerecht'' aufteilen.  
  able to get about mount-points. It affects the behaviour of the
: Soll verhindern, dass ein Jail alle verfügbaren Ressourcen binden kann.
  following syscalls: statfs(2), fstatfs(2), getfsstat(2) and
:* [http://code.google.com/soc/freebsd/appinfo.html?csaid=B7593C2466CC95B7 Google Summer of Code]
  fhstatfs(2) (as well as similar compatibility syscalls). When set
:* http://wikitest.freebsd.org/JailResourceLimits
  to 0, all mount-points are available without any restrictions. When
  set to 1, only mount-points below the jail's chroot directory are
  visible. In addition to that, the path to the jail's chroot direc-
  tory is removed from the front of their pathnames. When set to 2
  (default), above syscalls can operate only on a mount-point where
  the jail's chroot directory is located.


security.jail.set_hostname_allowed:
;Jail2:
  This MIB entry determines whether or not processes within a jail are
: Einer Überarbeitung des Jail-Konzepts wird in [[Jail2|FreeBSD Jail2]] einfließen.  
  allowed to change their hostname via hostname(1) or sethostname(3).
: Einen Überblick über das Projekt bietet die [http://docs.freevps.com/doku.php?id=freebsd:index FreeVPS Projektseite].
  In the current jail implementation, the ability to set the hostname
  from within the jail can impact management tools relying on the
  accuracy of jail information in /proc.  As such, this should be dis-
  abled in environments where privileged access to jails is given out
  to untrusted parties.
 
security.jail.socket_unixiproute_only:
  The jail functionality binds an IPv4 address to each jail, and lim-
  its access to other network addresses in the IPv4 space that may be
  available in the host environment.  However, jail is not currently
  able to limit access to other network protocol stacks that have not
  had jail functionality added to them. As such, by default, pro-
  cesses within jails may only access protocols in the following
  domains: PF_LOCAL, PF_INET, and PF_ROUTE, permitting them access to
  UNIX domain sockets, IPv4 addresses, and routing sockets.  To enable
  access to other domains, this MIB variable may be set to 0.
 
security.jail.sysvipc_allowed:
  This MIB entry determines whether or not processes within a jail
  have access to System V IPC primitives. In the current jail imple-
  mentation, System V primitives share a single namespace across the
  host and jail environments, meaning that processes within a jail
  would be able to communicate with (and potentially interfere with)
  processes outside of the jail, and in other jails. As such, this
  functionality is disabled by default, but can be enabled by setting
  this MIB entry to 1.
 
security.jail.chflags_allowed:
  This MIB entry determines how a privileged user inside a jail will
  be treated by chflags(2). If zero, such users are treated as
  unprivileged, and are unable to set or clear system file flags; if
  non-zero, such users are treated as privileged, and may manipulate
  system file flags subject to the usual constraints on
  kern.securelevel.
 
There are currently two MIB related variables that have per-jail set-
tings.  Changes to these variables by a jailed process do not effect the
host environment, only the jail environment.  The variables are
kern.securelevel and kern.hostname.
</pre>


==Siehe auch==
==Siehe auch==
* [[Top-Jailkonzept]] zur Umsetzung bei der [[UUGRN]].
* [http://wiki.freebsd.org/Jails wiki.freebsd.org/Jails]
* [http://www.freebsd.org/cgi/man.cgi?query=jail&sektion=0&manpath=FreeBSD+7.0-RELEASE&apropos=1&format=html Jail relevante Manpages in 7.0]
* [[top.uugrn.org/Jailkonzept]] zur Umsetzung bei der {{UUGRN}}.
* [[Real Virtuality#Jails|Paper zu FreeBSD Jails auf Real Virtuality]]:  
* [[Real Virtuality#Jails|Paper zu FreeBSD Jails auf Real Virtuality]]:  
:* [http://rabe.uugrn.org/FreeBSD/Jails/Real_Virtuality_2006_Vortrag_Jails.odp Vortragsfolien zu FreeBSD Jails] als ODP (OASIS OpenDocument Präsentation / [[OpenOffice]])
:* [http://rabe.uugrn.org/FreeBSD/Jails/Real_Virtuality_2006_Vortrag_Jails.odp Vortragsfolien zu FreeBSD Jails] als ODP (OASIS OpenDocument Präsentation / [[OpenOffice]])
:* [http://rabe.uugrn.org/FreeBSD/Jails/Real_Virtuality_2006_Vortrag_Jails.pdf Vortragsfolien zu FreeBSD Jails] als PDF
:* [http://rabe.uugrn.org/FreeBSD/Jails/Real_Virtuality_2006_Vortrag_Jails.pdf Vortragsfolien zu FreeBSD Jails] als PDF
* [http://www.heise.de/ix/artikel/2002/03/138/ BSD-Jails als Werkzeug zur Systemabsicherung] iX 3/2002


[[Kategorie:Server]]
[[Kategorie:FreeBSD]]
[[Kategorie:FreeBSD]]
[[Kategorie:Virtualisierung]]
[[Kategorie:Virtualisierung]]
[[Kategorie:Jail| ]]

Aktuelle Version vom 27. April 2013, 13:32 Uhr

Jails sind eine einfache Lösung zur Virtualisierung von Computersystemen im FreeBSD Betriebssystem. Im Gegensatz zu den meisten gängigen Virtualisierungslösungen wird eine virtuelle Maschine nur sehr rudimentär implementiert. So findet keine tatsächliche Emulation eines vollständigen eigenen Systems samt entsprechender virtueller Hardware statt. Vielmehr läuft ein Jail auf der selben Kernel-Instanz wie das Hostsystem und wird darunter nach einem chroot in ein eigenes Unterverzeichnis in einer eigenen Prozessgruppe gestartet. Der Kernel kapselt dabei die Prozesstabellen ab, so dass ein Jail stets nur seine eigenen Prozesse sehen kann. Ausschließlich das Hostsystem hat Zugriff auf die vollständige Prozesstabelle.

Genaugenommen handelt es sich bei einem Jail mehr oder weniger um ein aufgebohrtes chroot. Dadurch muss der Kernel zwingend ein gleichartiges Betriebssystem im Jail starten.

Einschränkungen[Bearbeiten]

Bis auf ein paar Einschränkungen ist ein Jail genauso funktional wie das native Hostsystem. Im Detail funktionieren nicht:

  • Mounten und unmounten von Dateisystemen,
  • Abhängig von der Policy, Dienste die Raw Sockets benötigen: Ping, Traceroute, ...
  • Shared Memory
  • Das Anlegen von Paketfilter-Regeln

Diese Einschränkungen sind derzeit aktuell. An einigen Stellen wird bereits aktiv gearbeitet, andere Einschränkungen sind zu mindest schon auf der ToDo-Liste der Entwickler gelandet. Man darf also gespannt bleiben.

Manche Einschränkungen können global, manche auch Jail-individuell gelockert werden. Dieser Punkt ist stetigen Änderungen unterworfen, es empfiehlt sich daher, den aktuellen Stand von jail(8) unter Sysctl MIB Entries zu studieren.

Entwicklung[Bearbeiten]

CVS
Jail Resource Limits
CPU- und Speicherverbrauch in den einzelnen Jails limitieren bzw. gerecht aufteilen.
Soll verhindern, dass ein Jail alle verfügbaren Ressourcen binden kann.
Jail2
Einer Überarbeitung des Jail-Konzepts wird in FreeBSD Jail2 einfließen.
Einen Überblick über das Projekt bietet die FreeVPS Projektseite.

Siehe auch[Bearbeiten]