lunes, 6 de septiembre de 2010

Jaula chroot via sftp en CentOS

Hola a todos!!

Hace unos dias necesite crear unos accesos via ftp seguro al ftp de la compañia para la cual trabajo. El requerimiento era tambien enjaular al usuario dentro de ese mismo contexto sftp (actualmente trabajamos con vsftp que SI ofrece chroot, pero solo para ftp).
El problema basico es que la version de OpenSSH que tiene CentOS instalada por defecto es un poco vieja y hay parametros que no funcionan.
Encontre un repo donde hay RPMs de OpenSSH actualizados para 32 y 64 bits.

Para instalar el nuevo OpenSSH:
wget http://fs12.vsb.cz/hrb33/el5/hrb-ssh/stable/i386/openssh-5.1p1-3.el5.hrb.i386.rpm
wget http://fs12.vsb.cz/hrb33/el5/hrb-ssh/stable/i386/openssh-clients-5.1p1-3.el5.hrb.i386.rpm
wget http://fs12.vsb.cz/hrb33/el5/hrb-ssh/stable/i386/openssh-server-5.1p1-3.el5.hrb.i386.rpm
En este caso tuve que instalar de 32 bits, para 64 bits http://fs12.vsb.cz/hrb33/el5/hrb-ssh/stable/x86_64/

una vez tomados los paquetes, desinstalar los rpm actuales

yum remove -y openssh-server openssh
instalo version nueva que habia bajado con wget

rpm -ivh openssh-5.1p1-3.el5.hrb.i386.rpm
rpm -ivh openssh-clients-5.1p1-3.el5.hrb.i386.rpm
rpm -ivh openssh-server-5.1p1-3.el5.hrb.i386.rpm
ahora creo un usuario para sftp con un grupo especial llamado ftponly

groupadd ftponly
useradd ftpuser -g ftponly
lo ultimo que falta es editar el archivo de configuracion de OpenSSH

vim /etc/ssh/sshd_config

comentar la linea
#Subsystem sftp /usr/libexec/openssh/sftp-server

y reemplazar por...

Subsystem sftp internal-sftp


y agregar...
Match User ftpuser
ChrootDirectory /directoriosftp
AllowTCPForwarding no
X11Forwarding no


y.. reinicio el servicio
service sshd restart

tambien se podria usar Match Group en el caso de ser varios usuarios en la misma jaula chroot.
nota: con ssh NO se enjaluara el usuario, esto es solo valido para sftp