CentOS - Configuratie van SSH met chroot
SSH configuratie
nano /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp

Voor alle gebruikers in een groep

Match Group developers
  ChrootDirectory %h
  # ChrootDirectory /home/%u
  # ForceCommand internal-sftp
  AllowTcpForwarding no

Of voor een specifieke gebruiker

Match User david
   ChrootDirectory %h
   # ChrootDirectory /home/%u
   # ForceCommand internal-sftp

Let op: De volgende instelling moet uit staan anders wordt de verbinding verbroken na het inloggen via SSH

# ForceCommand internal-sftp

SSH deamon opnieuw starten

service sshd restart

Een groep aanmaken en gebruikers toevoegen

Een groep aanmaken

groupadd developers

Gebruiker toevoegen aan een groep

usermod -G developers <username>

Overzicht van leden in een groep

grep developers /etc/group

Devices toevoegen
mknod -m 666 /home/<username>/dev/null c 1 3
chmod 666 /home/<username>/dev/null
mknod -m 666 /home/<username>/dev/zero c 1 3
chmod 666 /home/<username>/dev/zero
mkdir /home/<username>/dev/pts
mount --bind /dev/pts /home/<username>/dev/pts
mknod -m 666 /home/<username>/dev/tty c 5 0

Kopieren van binaries en bijbehorende libraries
cd /home/<username>
nano create_chroot_env.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

APPS="/bin/bash /bin/cat /bin/cp /bin/false /bin/grep /bin/ln /bin/ls /bin/mkdir /bin/more /bin/mv /bin/ping /bin/pwd /bin/rm /bin/rmdir /bin/sh /bin/touch /bin/true /bin/vi /usr/bin/du /usr/bin/groups /usr/bin/head /usr/bin/id /usr/bin/less /usr/bin/scp /usr/bin/tail /usr/bin/svn /usr/bin/svnadmin /usr/bin/svndumpfilter /usr/bin/svnlook /usr/bin/svnserve /usr/bin/svnsync /usr/bin/svnversion"

for prog in $APPS;  do
        mkdir -p ./`dirname $prog` > /dev/null 2>&1
        cp $prog ./$prog
        # obtain a list of related libraries
        ldd $prog > /dev/null
        if [ "$?" = 0 ] ; then
                LIBS=`ldd $prog | awk '{ print $3 }'`
                for l in $LIBS; do
                        mkdir -p ./`dirname $l` > /dev/null 2>&1
                        cp $l ./$l  > /dev/null 2>&1
                done
        fi
done
chmod 755 create_chroot_env.sh
./create_chroot_env.sh

Instellingen voor het ping commando
chmod u+s /home/<username>/bin/ping
setcap cap_net_raw+ep /home/<username>/bin/ping

Kopieeren van configuratie bestanden
mkdir /home/<username>/etc/
cp /etc/hosts /home/<username>/etc/
cp /etc/resolv.conf /home/<username>/etc/

Kopieeren van overige libraries
cp /lib64/ld-linux-x86-64.so.2 /home/<username>/lib64/
cp /lib64/libnss_dns.so.2 /home/<username>/lib64/

Foutmeldingen

Write failed: Broken pipe

tail -f /var/log/secure

fatal: bad ownership or modes for chroot directory "/home/david"

chown root /home/<username>

error: /dev/pts/1: No such file or directory

mkdir /home/<username>/dev/pts
mount --bind /dev/pts /home/<username>/dev/pts

error: open /dev/tty failed - could not set controlling tty: No such file or directory

mknod -m 666 /home/<username>/dev/tty c 5 0

/bin/sh: No such file or directory

cp /bin/sh /home/<username>/bin
cp /lib64/ld-linux.so.2 /home/<username>/lib64

unknown host domain.tld

cp /lib64/libnss_dns.so.2 /home/<username>/lib64/

icmp open socket: Operation not permitted

chmod u+s /home/<username>/bin/ping
setcap cap_net_raw+ep /home/<username>/bin/ping

Zie ook: CentOS - Installatie van vsftpd met chroot | CentOS - De home directory van een gebruiker wijzigen | CentOS - Een gebruiker toevoegen