Provided by: jailkit_2.23-2_amd64 bug

NAME

       jailkit - utilities for jailing a user or process

DESCRIPTION

       Jailkit  is  a set of utilities that can limit user accounts to a specific directory tree and to specific
       commands. Setting up a jail is much easier using the jailkit utilities that doing so 'by hand'. A jail is
       a directory tree that you create within your file system; the user cannot see any  directories  or  files
       that  are  outside  the  jail  directory. The user is jailed in that directory and it subdirectories. The
       chroot(2) system call is used by jailkit to put the user inside the jail.

       If you want the user to be able to do just one thing, you can set up the jail so that the user is able to
       do exactly and only that one thing. For example, if you want the user to be able to run scp, you  install
       a  copy of scp in the jail along with just enough support to execute it (e.g., using a limited shell). As
       you can understand, the fewer executables you have in a jail (and the more their capabilities are limited
       such as using strict configurations), the more work a hacker needs to break out of it. It is important to
       note that a chroot jail can be easily escaped if the user is able to elevate to the root level,  so  it's
       very important to prevent the user from doing so.

       In  this  summary, the top-level directory of the jail is referred to as JAIL. You can configure the JAIL
       to be any suitable directory (e.g., your JAIL may be /usr/local/chrootjail  or  /home/chroot).  The  JAIL
       directory  should  obviously  be  chosen  so  as not collide or interfere with other standard directories
       (e.g., it's probably a bad idea to use /home/chroot as the JAIL and also create a user named 'chroot'). A
       reference to JAIL/etc means "the etc/ subdirectory in your top-level jail  directory".  From  the  jailed
       user's point of view, the top-level jail directory is "/".

SECURITY CONSIDERATIONS

       A badly configured jail is a security risk!

       If  a  jailed  user  or  a  jailed  process  can modify files in (for example) the JAIL/lib/ or JAIL/etc/
       directory (i.e., those within the jail directory), the user can bypass  security  checks  and  gain  root
       privileges.

       No  directory inside the jail except for the user's home directory or tmp should be writable by the user.
       Especially the root of the jail should not be writable by the user. Jailkit  utilities  can  be  used  to
       perform  some  basic checks to verify that a jail is secure and abort if a jail is not secure. Check your
       logfiles if things don't work as expected.

       The super user (root), or any process running with root privileges, can always break out of a jail. It is
       therefore important that the processes inside the jail do not have root privileges, nor have the means to
       receive those privileges. Avoid setuid (+s) executables inside the jail. If the jail  is  on  a  separate
       filesystem, the jail filesystem can mounted with the nosuid flag.

CONTENTS

       This  section  gives summary sketches of the various programs that comprise jailkit. For details on how a
       program operates and is configured, read the reference pages of each program.

       jk_init can be used to quickly create a jail with several files or directories needed for a specific task
       or profile. Creating the same jail over and over again is easily automated with jk_init. There  are  many
       tasks  in  /etc/jailkit/jk_init.ini predefined that work on Debian or Ubuntu systems. For other platforms
       you might need to update the predefined configuration. For example, you can use jk_init to quickly set up
       a limited shell, a jail to run apache, or a jail for just sftp and scp. It will copy  the  binaries,  the
       required  libraries  (and  related  symlinks)  as  well as other files such as /etc/passwd. These are all
       copied into the jail directory so that a jailed process can run them.

       jk_cp can be used to copy a file or device into a jail. Each file or  device  is  copied  with  the  same
       permissions with the exception that any setuid or setgid permissions are removed. If the file is a binary
       executable, the libraries required to execute it (as reported by ldd) are copied as well.

       jk_chrootsh is a shell that jails a user in a specific directory, called the JAIL. It does this using the
       chroot(2) (change root) system call. This makes the filesystem 'above' the JAIL directory inaccessible to
       the  user.  Because  the  user can no longer access directories such as /usr/bin that are accessible to a
       'non-jailed' user, the JAIL directory must recreate enough of a file system to allow the jailed  user  to
       execute  programs.  For example, the JAIL directory typically contains a lib/ directory to contain shared
       libraries, and it normally has a etc/ directory to contain a minimal set  of  files  such  as  etc/passwd
       (though  this  passwd file contains only a few key entries, not all those of the 'real' /etc/passwd). The
       jk_chrootsh program is normally installed as  the  user's  shell  (replacing  /bin/bash)  in  the  'real'
       /etc/passwd  file.  When  the  user logs in, jk_chrootsh is executed as the user's shell. The jk_chrootsh
       enacts the chroot into the JAIL directory. It then reads the passwd file found  within  the  JAIL  (i.e.,
       JAIL/etc/passwd  ),  obtains  the  program  to  be run as the user's shell (typically jk_lsh, the limited
       shell), and executes it within the jail. This combination limits the user's file  system  access  to  the
       JAIL  directory  (implemented  by  jk_chrootsh)  and limits which programs the user is allowed to execute
       (implemented by jk_lsh).

       jk_lsh is a limited  shell  that  allows  only  those  commands  to  be  executed  as  specified  in  its
       configuration  file.  /etc/jailkit/jk_lsh.ini.  It is typically started in one of two ways, by specifying
       it as the user's shell or by using the jk_chrootsh program. The first way is  implemented  by  specifying
       jk_lsh  as the shell in the user's entry in the 'real' /etc/passwd file. In this case, it executes in the
       normal file system and reads its configuration from /etc/jailkit/jk_lsh.ini.  In the second  way,  jk_lsh
       is  started  from  within jk_chrootsh by specifying it as the shell in the passwd file located inside the
       JAIL directory: JAIL/etc/passwd, in  which  case  it  reads  its  configuration  from  within  the  JAIL:
       JAIL/etc/jailkit/jk_lsh.ini.   The  latter  is  the  recommended approach for highest security.  Use this
       program if you want to deny regular shell access (e.g. logins) but you want to allow  execution  of  only
       one or a few commands such sftp, scp, rsync, or cvs.

       jk_uchroot is a utility to give regular users access to the chroot(2) (change root) system call in a safe
       way.  Which  users  are  allowed  in  which jails is controlled from /etc/jailkit/jk_uchroot.ini Use this
       utility for users that can run processes both inside a jail and outside a jail.

       jk_socketd is a daemon that allows logging safely to syslog from within a jail.  It  limits  the  logging
       rate based on parameters set in its configuration file: /etc/jailkit/jk_socketd.ini

       jk_chrootlaunch  is  a utility to start a daemon that cannot do a chroot(2) call itself in a jail. It can
       change the user and group id after jailing the process, and before executing the daemon.

       jk_jailuser is a tool to move an existing user account into a jail. This moves  the  user's  entire  home
       directory   (and   subdirectories)   into   the   appropriate   place   in   the  JAIL  directory  (e.g.,
       JAIL/home/someuser).

       jk_check is a jail integrity checker. It checks a jail for  some  of  the  potential  security  problems.
       (Obviously  it does not check all possible weaknesses.) It reports any setuid and setgid programs, checks
       for any modified programs, checks  for  world  writable  directories,  and  more.  It  is  configured  by
       /etc/jailkit/jk_check.ini

       jk_list lists all jailed processes on a system, showing the PID, UID, and the jail directory.

       jk_procmailwrapper  is  a  wrapper for procmail. For regular users, it runs procmail and allows access to
       their normal .procmailrc file. For jailed users, it runs procmail and allows access only  to  the  jailed
       .procmailrc (e.g., JAIL/home/someuser/.procmailrc). In the latter case, procmail must be available inside
       the jail.

       jk_update is a tool to update files inside a jail according to updates on the real system.

EXAMPLE

       Suppose  you  wish to create an account 'test' that is permitted to execute only sftp and scp. Assume you
       also want it contained in a jail called /home/sftproot, in which it has a home directory  /home/test  (as
       seen by processes run by user 'test'; the actual directory will be JAIL/home/test).

       # Initialise the jail
       mkdir /home/sftproot
       chown root:root /home/sftproot
       chmod 0755 /home/sftproot
       jk_init -j /home/sftproot jk_lsh
       jk_init -j /home/sftproot sftp
       jk_init -j /home/sftproot scp
       # Move the account into the jail
       jk_jailuser -j /home/sftproot -s /usr/bin/jk_lsh -m test
       # Edit the jk_lsh configfile in the jail; see man jk_lsh.
       # You can use every editor you want; I choose 'joe'
       joe /home/sftproot/etc/jailkit/jk_lsh.ini
       # Restart jk_socketd so that log messages are transferred
       killall jk_socketd
       jk_socketd
       # Test the account
       sftp test@localhost
       # Check the logs to see if everything is correct
       tail /var/log/daemon.log /var/log/auth.log
       # or if you use systemd
       journalctl --since=-1h

FILES

       The  jailkit  configuration  files are located in /etc/jailkit/ Note that in some cases the configuration
       files must be replicated into the JAIL/etc/jailkit directory and edited appropriately. A jk program  that
       is  run  within  the  jail  directory  is able to read its configuration from only the jailed etc/jailkit
       directory.

SEE ALSO

       jk_check(8) jk_chrootlaunch(8) jk_chrootsh(8) jk_cp(8)  jk_init(8)  jk_jailuser(8)  jk_list(8)  jk_lsh(8)
       jk_procmailwrapper(8) jk_socketd(8) jk_uchroot(8) jk_update(8) chroot(2)

COPYRIGHT

       Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 Olivier Sessink

       Copying  and distribution of this file, with or without modification, are permitted in any medium without
       royalty provided the copyright notice and this notice are preserved.

JAILKIT                                            07-02-2010                                         jailkit(7)