Menu:
  :. HomePage
  :. Linux
  :. Solaris
  :. Windows
  :. Programování
  :. Java + Tomcat
  :. HW obecně
  :. VoIP - Asterisk
  :. Cisco - Mikrotik - Síť
  :. O mě
  :. Fotogalerie

 Testovací:
  :. ASP projekt
  :. JSP projekt



 Doporučuji:

Savvy - profesionální webhosting, webdesign a serverhosting
Internetový obchod Stromeček.cz - hardware, software a mobily za super ceny
AirCon Miroslav
Galerie fotek
Notebooky
Webdesign Praha

www.eprdel.cz
www.root.cz
Lumimont

NAVRCHOLU.cz
A



Vaše IP:
3.131.13.37

OpenSSH - chroot na CentOS5

OpenSSH - chroot na CentOS5



Navod je pro modelovy priklad, kdy system pro klienty mam na chrootnutem adresai /home/chroot, uzivatele pokud jsou prihalseni pres SSH nebo SFTP, takze jejich "/" je tedy "/home/chroot"

Prvnik krokem je si pripravit balik ssh


# yum install gcc
# yum install openssl-devel
# yum install pam-devel
# yum install rpm-build


 Stahnout OpenSSH portable vcetne GPG :


# wget http://ftp.bit.nl/mirror/openssh/portable/openssh-5.3p1.tar.gz
# wget http://ftp.bit.nl/mirror/openssh/portable/openssh-5.3p1.tar.gz.asc
# wget -O- http://ftp.bit.nl/mirror/openssh/portable/DJM-GPG-KEY.asc | gpg --import
# gpg
openssh-5.3p1.tar.gz.asc
gpg: Podpis vytvořen So 26. září 2009, 08:31:43 CEST pomocí klíče DSA s ID uživatele 86FF9C48
gpg: Dobrý podpis od "Damien Miller (Personal Key) <djm@mindrot.org>"
gpg: VAROVÁNÍ: Tento klíč není certifikován důvěryhodným podpisem!
gpg:          Nic nenaznačuje tomu, že tento podpis patří vlastníkovi klíče.
Primární fingerprint klíče: 3981 992A 1523 ABA0 79DB  FC66 CE8E CB03 8
6FF 9C48



 Nyni je potreba si vytvorit RPM balicek a nainstalovat OpenSSH:



# tar zxvf openssh-5.2p1.tar.gz
# cp openssh-5.3p1/contrib/redhat/openssh.spec /usr/src/redhat/SPECS/
# cp openssh-5.3p1.tar.gz /usr/src/redhat/SOURCES/
# cd /usr/src/redhat/SPECS
# perl -i.bak -pe 's/^(%define no_(gnome|x11)_askpass)\s+0$/$1 1/' openssh.spec
# rpmbuild -bb openssh.spec
# cd /usr/src/redhat/RPMS/`uname -i`
# ls -l
celkem 988
-rw-r--r-- 1 root root 432700 úno 18 15:41 openssh-clients-5.3p1-1.i386.rpm
-rw-r--r-- 1 root root 270343 úno 18 15:41 openssh-server-5.3p1-1.i386.rpm
-rw-r--r-- 1 root root 277113 úno 18 15:41 openssh-5.3p1-1.i386.rpm
# rpm -Uvh openssh*rpm
Preparing... ########################################### [100%]
1:openssh ########################################### [ 33%]
2:openssh-clients ########################################### [ 67%]
3:openssh-server ########################################### [100%]
# /etc/init.d/sshd restart



Doporuciji si pak vypnout aktualizace openssj v konfiguraci yum.conf, kde je potreba zadat
exlude=openssh*

Ted uz je SSH s podporou Chroot prirpavena.... A uz ji zbyva jen nakonfigurovat.....

Priprava  souborove struktury pro Chroot SSH



mkdir /home/chroot/
chmod 755
/home/chroot/
chown root:root
/home/chroot/
mkdir /home/chroot/home/
cd /home/chroot
mkdir etc
mkdir bin
mkdir lib
mkdir usr
mkdir usr/bin
mkdir dev
mknod dev/null c 1 3
mknod dev/zero c 1 5



Jednoduchym skriptem si pripravime nakopirovani vsech potrebych souboru a knihoven.


APPS="/bin/bash /bin/ls /bin/mkdir /bin/mv /bin/pwd /bin/rm /usr/bin/id /usr/bin/ssh /bin/ping /usr/bin/dircolors"
for prog in $APPS; do
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
done
fi
done



Dale nam zbyva nakopirovani potrebych knihoven pro praci ze zakladnimi prikazy a samozdrejme bashem.




cp /lib/libnss_compat.so.2 /lib/libnsl.so.1 /lib/libnss_files.so.2 ./lib/
cp /lib/libtermcap.so.2 /lib/libtermcap.so.2.0.8 ./lib/
cp /lib/libc.so.6 ./lib/
cp /lib/ld-linux.so.2 /lib/ld-2.5.so ./lib/
echo '#!/bin/bash' > usr/bin/groups
echo "id -Gn" >> usr/bin/groups
touch etc/passwd
grep /etc/passwd -e "^root" > etc/passwd



Jelikos delame chroot system jen pro skupinu users, je potreba ji dodat do chrootnoteho systemu



grep /etc/group -e "^root" -e "^users" > etc/group



Aby nam pro skupinu usersfungoval chrootnoty system, je potreba mirne urpavit sshd_config, pridanim techto dvou radku.



Match group users
# chroot members into this directory
# %u gets substituted with the user name:
# ChrootDirectory /home/%u
ChrootDirectory /home/chroot



A ted je jen potreba nezapomenout reboot ssh serveru


 

/etc/init.d/sshd restart



Zakladani noveho uzivatele


 

A ted uz se muzeme udelat naseho prvniho chootnoteho uzivatele.

useradd -s /bin/bash -m -d /home/chroot/./home/testuser -c "testuser" -g users testuser
passwd testuser



A uz nam zbyva jen posledni krok zkopirovat uzivatele do chroot systemu.

grep /etc/passwd -e "^testuser" >> /home/chroot/etc/passwd
grep /etc/group -e "^othergroup" >> /home/chroot/etc/group



Mozne problemy


Pokud budete uzivateli davat nejake jine programy do jeho chrootnoteho systemu, tak je potreba zkopirovat vsechny knihovny, ktere dany program pouziva. K tomu lze vyuzit jednoduchy nastroj.

ldd /bin/tar
        linux-gate.so.1 =>  (0x00110000)
        libacl.so.1 => /lib/libacl.so.1 (0x00d51000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00d30000)
        librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x00d5f000)
        libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x00b54000)
        libattr.so.1 => /lib/libattr.so.1 (0x00d4a000)
        libdl.so.2 => /lib/libdl.so.2 (0x00c9f000)
        libsepol.so.1 => /lib/libsepol.so.1 (0x00cce000)
        /lib/ld-linux.so.2 (0x00b36000)
        libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00d16000)




Zdroje ze kterym jsem cerpal:

  • http://binblog.info/2009/02/27/packaging-openssh-on-centos/

  • http://www.howtoforge.com/chrooted_ssh_howto_debian_p2


 
« Zpět na seznam