Création d'un utilisateur chrooté avec accès à une DB Oracle

Pour commencer, j’ai tout simplement suivi de la note KB Red Hat : https://access.redhat.com/solutions/116773. Voilà les étapes décrites pour créer le chroot simple :

Ajout utilisateur “testuser”

# useradd testuser
# passwd testuser

Le home sera la base du chroot :

# mkdir /home/jails
# cd /home/jails
# mkdir -p bin dev lib64 etc proc usr/lib64 tmp sys home/testuser
# ln -s lib64 lib
# cd usr
# ln -s lib64 lib
# cd ..

Montages des pseudo fs :

# mount -o rbind /dev dev
# mount -o rbind /sys sys
# mkdir -p dev/pts
# mknod dev/ptmx c 5 2
# mkdir proc

Modification de /etc/fstab pour le montage permanent des pseudo fs:

# cat /etc/fstab
proc            /home/testuser/proc        proc    defaults    0 0
devpts          /home/testuser/dev/pts     devpts  gid=5,mode=620  0 0
# mount -a

Import des binaires nécessaires :
cp /bin/bash /bin/cat /bin/ /bin/echo /bin/env /bin/grep /bin/hostname /bin/ls /bin/mkdir /bin/sh /bin/whoami bin

Et import de librairies liées associées :

for bin in bash  cat  clear  echo  env  grep  hostname  ls  mkdir  sh  whoami
do
	for file in $(${bin} | awk '{print $3}')
	do 
		cp -f $file lib64/
	done
done

Copie des fichiers de configurations systèmes indispensable :

# cp /etc/localtime etc/
# cp /etc/nsswitch.conf etc/
# cp /etc/resolv.conf etc/
# cat /etc/passwd | grep ^root >> etc/passwd
# cat /etc/passwd | grep ^testuser>> etc/passwd
# cat /etc/group | grep ^root >> etc/group
# cat /etc/group | grep ^testuser>> etc/group 
# cp -p /etc/DIR_COLORS etc/ 
# chmod a=x   bin/ 
# chmod a=x bin/* 
# chmod a=rx   etc/ 
# chmod -R u+rw etc/ 
# chmod -R go+r etc/
# chown -R testuser:testuser home/testuser

Configuration des users chrootés :

# cat /etc/security/chroot.conf 
testuser        /home/jails

Configuration de PAM pour l’auth system classique et ssh en ajoutant la ligne suivante aux fichiers /etc/pam.d/system-auth et /etc/pam.d/sshd :

session     required      pam_chroot.so onerr=fail debug

Ici nous avons un chroot classique, maintenant import du nécessaire pour se connecter à la base Oracle Ransup :

# mkdir /oraker01/app/oracle/product/10.2.0
# rsync --progress -avzp /oraker01/app/oracle/product/10.2.0/ oraker01/app/oracle/product/10.2.0/
# cp -r /oraker01/app/oracle/admin/ oraker01/app/oracle/

Copie de librairies manquante pour Oracle :

#  cp /lib64/libnss_dns.so.2 lib64
#  cp /lib64/libnss_files.so.2 lib64

Création d’un .bash_profile dans home de testuser avec les variables d’environnement nécessaires, à adapter selon votre installation évidemment :

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

export ORACLE_HOME=/oraker01/app/oracle/product/10.2.0
export PATH=$PATH:${ORACLE_HOME}/bin:.
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/network/lib:${ORACLE_HOME}/forms45/lib:/usr/lib/X11:/usr/dt/lib:/opt/freeware/lib
export LIBPATH=${ORACLE_HOME}/lib:
export TNS_ADMIN=${ORACLE_HOME}/network/admin
export ORACLE_SID=ORADB
export PS1="`hostname`{`whoami`}@${ORACLE_SID}$ "

Ensuite l’on peut se connecter en utilisant une connexion TCP :

$ sqlplus system/manager@ORADB_service_name