Instalación de un servidor SFTP

05/02/2010

La sigla SFTP puede significar tanto Secure File Transfer Protocol (Protocolo Seguro de Transferencia de Archivos) como SSH File Transfer Protocol, ya que representa a un servicio de transferencia de archivos (FTP) que utiliza un canal de comunicación seguro proveído por el protocolo Secure Shell (SSH).

En servidores basados en Unix, como GNU/Linux, se suele instalar el servicio SSH (sshd) para así poder acceder remotamente tanto al sistema de archivos como a una consola de comandos. Esto último debería estar reservado exclusivamente a aquellas cuentas de usuario a las que se les permita escalar privilegios hasta administrador (root).

Para instalar un servidor SSH en una distribución Debian de GNU/Linux:

apt-get install openssh-server

El archivo de configuración es /etc/ssh/sshd_config y se puede modificar con nuestro editor preferido.

Al final de la línea que empieza con AllowUsers hay que agregar a los usuarios que podrán acceder al servicio.

Se deben agregar las siguientes líneas al archivo de configuración:

Subsystem sftp internal-sftp
Match group sftp
ChrootDirectory /chroot/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Debemos crear un grupo llamado sftp (o como queramos) al que le asignaremos las cuentas de usuario que accederán exclusivamente al servicio SFTP y a las que queremos bloquear el acceso al servicio de consola remota de comandos:

addgroup sftp

adduser usuario sftp

La línea ChrootDirectory hace referencia a una carpeta base que crearemos en la raíz para alojar a las carpetas personales de los usuarios:

mkdir /chroot

La carpeta base puede llamarse como queramos, pero en el ejemplo se denomina chroot, haciendo referencia a la operación de cambio de raíz que permite “enjaular” a los usuarios, impidiéndoles acceder a carpetas ajenas a su carpeta personal.

Dentro de la carpeta base, debemos crear una subcarpeta por cada usuario del grupo sftp. Cada subcarpeta, a su vez, debe tener una estructura home/usuario, por ejemplo, para habilitar al usuario jperez hay que hacer lo siguiente:

adduser jperez sftp

mkdir -p /chroot/jperez/home/jperez

chown -R jperez.jperez /chroot/jperez/home/jperez

Esto es necesario porque la carpeta base (raíz) debe pertenecer a root. El acceso de escritura está permitido únicamente en la última carpeta de la trayectoria (jperez).

Para aplicar los cambios al servicio, debemos reiniciarlo:

/etc/init.d/ssh restart

Hecho ésto, ya podemos probar acceder a nuestro servidor SFTP:

sftp usuario@servidor

Donde usuario es el nombre de la cuenta de usuario (por ejemplo, jperez) y servidor es el nombre o dirección IP del equipo donde instalamos el servicio.

También podemos usar algún cliente SFTP gráfico como FileZilla y WinSCP (ambos libres y gratuitos). Incluso pueden servir el administrador de archivos o el navegador Web, usando como dirección la sintaxis:

sftp://usuario:clave@servidor

La experiencia con este último método varía de acuerdo al administrador de archivos y al navegador Web que utilicemos. En el caso de Unix con Gnome, podemos usar esta sintaxis en cualquier ventana Nautilus.

Tags:

7 Responses to Instalación de un servidor SFTP

  1. Tutor on 22/02/2010 at 07:33

    Gracias… ya logré montar el sftp, pero lo quiero para montar el acceso a n carpetas de mi servidor apache, para estar gestionandolo en principio 2 usuarios, o 3 a lo sumo.

    ¿Como podría declarar esas carpetas? ¿es de la misma manera o tendría algun problema de permisos?

    ¿Sería mejor montar un ftp “normal” para la gestión del servidor web?

    Uso debian 5 y ya corre el servidor web, con php y mysql, el ssh tambien funciona perfecto, pero tengo ahora mismo acceso a todo sin problema.

    Querría acotar por usuarios y carpetas, como si fuera a dar el servicio de hosting, sería un servidor compartido con otro colega. Por eso el separar para que no quepa la posibilidad de poder “dañar” al otro.

    Muchas gracias desde ya :)

  2. admin on 04/03/2010 at 09:41

    El FTP estándar es lo que se usa normalmente para administrar un sitio web, sin embargo se podría usar SFTP para aumentar la seguridad.

    En ese caso, podrías intentar reemplazar /chroot por /var/www o como se llame la carpeta raíz de tu sitio web.

    Espero que te sirva y compartas tu experiencia. Gracias por participar.

  3. Gerson Lopez on 04/03/2010 at 18:15

    Amigo como le creo el password al usuario yo soy nuevo en linux debian, ya que quiero

  4. Gerson Lopez on 04/03/2010 at 18:15

    Amigo como le creo el password al usuario yo soy nuevo en linux debian, ya que quiero que los usuarios no me ingresen con password en blanco

  5. Gerson Lopez on 04/03/2010 at 18:20

    Tambien me gustaria saber como puedo hacer para restringir a los usuarios para que solo puedan hacer put y send mas no get.

    gracias y saludos

  6. Jesús on 23/04/2010 at 16:06

    Se puede usar otro disco duro para enjaular a los usuarios, por ejemplo yo tengo dos discos duros instalados y me gustaria que accedieran al disco dos, este esta ubicado en /media/DOS, agradezco tu ayuda

  7. Narcis Garcia on 11/10/2010 at 17:56

    He visto tu guía sobre la parte servidor de SFTP, y he aprendido de un montón de tutoriales como este. He aquí mi compendio para configurar mejor clientes y servidores:

    http://wiki.lapipaplena.org/index.php/Como_montar_accesos_SFTP

    (con especial cuidado sobre usuarios y permisos)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Get Adobe Flash playerPlugin by wpburn.com wordpress themes