!Hola Amigos! Hoy les traigo una alternativa al uso de un Servidor FTP para la transferencia segura de archivos.
Veremos:

Necesaria Intro

Frecuentemente necesitamos que nos copien archivos desde equipos remotos en nuestra máquina. Muchos me han preguntado al respecto. Que si ¿instalo un FTP?, que ¿cómo instalo un SAMBA?. Bueno, vayamos de lo sencillo a lo complejo. De entrada ¿para qué complicarnos si tenemos el OpenSSH-Server instalado?. Y si no lo tenemos, con el sencillo comando:

aptitude install openssh-server

¡ya lo tenemos!, y entonces seremos capaces de transferir archivos de forma segura vía el protocolo SFTP (Secure File Transfer Protocol), el cual utiliza el SSH (Secure Shell) para la encriptación.

Por defecto, los usuarios con el permiso de iniciar una sesión remota vía ssh usuario@miequipo, serán capaces de ver la casi totalidad de los archivos almacenados en nuestro sistema, lo cual puede que no sea de nuestro agrado, o que por motivos de seguridad no lo debemos permitir.

Este artículo nos ayudará a configurar el OpenSSH-Server para que los usuarios que queramos, queden restringidos a su directorio personal /home/usuario. Aclaramos que con éste método, los usuarios declarados no podrán iniciar una sesión remota mediante una consola ssh o mediante el PuTTy. Sólo serán capaces de transferir archivos hacia o desde su directorio personal.

El método aquí descrito es válido para las versiones de Debian 5 (Lenny) o superiores, y para las versiones de Ubuntu 9.04 o superiores. La versión del paquete SSH del Hardy o Ubuntu 8.04 está muy atrasada y no soporta la configuración que describiremos a continuación.

¿Cómo configuramos el Openssh-server?

Como el usuario root editamos el archivo /etc/ssh/sshd_config con cualquier editor de texto simple. Nosotros recomendamos el uso del nano en modo consola.

nano /etc/ssh/sshd_config

Buscamos que la siguiente línea se encuentre presente:

Subsystem sftp 

En Lenny y en Squeeze existen:

Subsystem sftp /usr/lib/openssh/sftp-server

En caso de que no exista, adicionamos al final del archivo:

Subsystem sftp internal-sftp

Seguimos con la edición del archivo sshd_config y le agregamos al final:

Match group grupo-sftp
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

Guardamos los cambios y reiniciamos el servicio:

/etc/init.d/ssh restart

¿Cómo creamos los usuarios?

Primero creamos el “group” que declaramos en el sshd_config. Ojo con el nombre que escogimos anteriormente no vaya a ser que ya exista y sea un grupo propio del Sistema. Sino deseamos restringir a usuarios existentes en nuestro sistema, debemos crear nuevos usuarios para que puedan transferir archivos. Para que la jaula funcione, tenemos que hacerlos además, miembros del grupo en cuestión.

addgroup grupo-sftp
adduser usuario1
adduser usuario2
[----]
usermod -G grupo-sftp usuario1
usermod -G grupo-sftp usuario2

Para comprobar la creación del grupo y de los usuarios, podemos hacer:

less /etc/password
less /etc/group
ls -l /home

Y deben aparecer los usuarios usuario1 y usuario2, así como los grupos grupo-sftp y los correspondientes a los usuarios creados. También, al listar el directorio /home, aparecerán los directorios personales de cada usuario creado.

¿Cómo modificamos los directorios personales para que funcione la jaula de forma efectiva?

Debemos aumentar la seguridad de las carpetas personales de cada usuario creado de forma que no puedan crear carpetas adicionales debajo de su directorio personal, y con permisos de escritura donde deseamos (no donde ellos quieran):

chown root:root /home/usuario1 /home/usuario2
chmod 755 /home/usuario1 /home/usuario2

cd /home/usuario1
mkdir documentos html_publico
chown usuario1:usuario1 *

cd /home/usuario2
mkdir documentos html_publico
chown usuario2:usuario2 *

Los usuarios pertenecientes al grupo grupo-sftp, en lo adelante serán capaces de iniciar sesión con sus nombres y contraseñas vía SFTP solamente, y podrán transferir archivos desde y hacia los directorios ubicados por debajo de su carpeta personal y que fueron creados por nosotros, pero no serán capaces de ver el resto de nuestro sistema de archivos.

Para la transferencia de archivos y carpetas, podemos utilizar el Nautilus, Konqueror, WinSCP, FileZilla, y otros que soporten el protocolo SFTP. En el caso del Konqueror, debemos usar fish://usuario@equiporemoto.

¡Esperamos que este artículo sirva de utilidad práctica!.
¡Hasta la próxima aventura, amigos!