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