From owner-freebsd-security Mon Sep 27 11:36:12 1999 Delivered-To: freebsd-security@freebsd.org Received: from critter.freebsd.dk (critter.freebsd.dk [212.242.40.131]) by hub.freebsd.org (Postfix) with ESMTP id 6B3AA14A07 for ; Mon, 27 Sep 1999 11:36:06 -0700 (PDT) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.9.3/8.9.2) with ESMTP id UAA21905; Mon, 27 Sep 1999 20:35:54 +0200 (CEST) (envelope-from phk@critter.freebsd.dk) To: tomb Cc: freebsd-security@FreeBSD.ORG Subject: Re: What's this jail thing? In-reply-to: Your message of "Mon, 27 Sep 1999 11:09:10 PDT." <37EFB2C6.6240D4D3@cgf.net> Date: Mon, 27 Sep 1999 20:35:54 +0200 Message-ID: <21903.938457354@critter.freebsd.dk> From: Poul-Henning Kamp Sender: owner-freebsd-security@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org In message <37EFB2C6.6240D4D3@cgf.net>, tomb writes: >Would someone be kind enought to point me toward an explanation of what >the jail concept is, it sounds like it could be an interesting security >feature. JAIL(2) FreeBSD System Calls Manual JAIL(2) NAME jail - Imprison current process and future decendants. SYNOPSIS #include #include int jail(struct jail *jail) DESCRIPTION The jail system call sets up a jail and locks the current process in it. The argument is a pointer to a structure describing the prison: struct jail { char *path; char *hostname; u_int32_t ip_number; }; The ``path'' pointer should be set to the directory which is to be the root of the prison. The ``hostname'' pointer can be set the hostname of the prison. This can be changed from the inside of the prison. The ``ip_number'' can be set to the IP number assigned to the prison. PRISON ? Once a process has been put in a prison, it and its decendants cannot es- cape the prison. It is not possible to add a process to a preexisting prison. Inside the prison, the concept of "superuser" is very diluted, in general it can be assumed that nothing can be mangled from inside a prison, that doesn't exist inside that prison (ie: the directory tree below ``path''. All IP activity will be forced to happen to/from the IP number specified, which should be an alias on one of the systems interfaces. It is possible to identify a process as jailed by examining ``/proc//status'': it will show a field near the end of the line, either as a single hyphen for a process at large, or the hostname cur- rently set for the prison for jailed processes. ERRORS Jail() calls chroot(2) internally, so the it can fail for all the same reasons. Please consult the chroot(2) manual page for details. SEE ALSO chroot(2) chdir(2) HISTORY The jail() function call appeared in FreeBSD 4.0. The jail feature was written by Poul-Henning Kamp for R&D Associates ``http://www.rndassociates.com/'' who contributed it to FreeBSD. FreeBSD 4.0 April 28, 1999 1 -- Poul-Henning Kamp FreeBSD coreteam member phk@FreeBSD.ORG "Real hackers run -current on their laptop." FreeBSD -- It will take a long time before progress goes too far! To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-security" in the body of the message