Configuración

Instalación del servicio SFTP

$ sudo apt-get install proftpd -y

Configuración:

Editar el archivo /etc/proftpd/proftpd.conf

sudo cp /etc/proftpd/proftpd.conf{,.bak}
sudo nano /etc/proftpd/proftpd.conf

Antes de editar es recomendable realizar un respaldo del archivo.

  • UseIPv6 on (Si no se usará, es recomendable desactivarlo)

Modificar la linea UseIPv6 y cambiar on a off Comentar la linea Include /etc/proftpd/conf.d/ Descomentar la linea RequireValidShell off

Quedando de la siguiente manera :

...
UseIPv6 off
RequireValidShell               off
# Include /etc/proftpd/conf.d/
...

La ultima modificacion es para desabilitar la carga del módulo del SFTP.

Crear y editar el siguiente archivo /etc/proftpd/conf.d/sftp.conf

sudo nano /etc/proftpd/conf.d/sftp.conf

Agregar el siguiente contenido:

#LoadModule mod_sftp.c
<IfModule mod_sftp.c>
SFTPEngine on
Port 22
SFTPLog /var/log/proftpd/sftp.log
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPAuthorizedUserKeys file:~/.sftp/authorized_keys
SFTPCompression delayed
</IfModule>

Creacion de usuarios y permisos

sudo adduser usftp1
sudo chmod 700 /home/usftp1

Cambiando el permiso a 700, solo el usuario al que le pertenece dicho directorio puede accesar y modificar su contenido.

Reiniciar los servicio ssh y proftpd

sudo /etc/init.d/proftpd restart
Ó
sudo service proftpd restart

Opcional

Enjaular usuarios

Limitar a los usuarios solamente a su directorio home

CREAR UN GRUPO QUE CONTIENE LA TOTALIDAD DE USUARIOS DEL SERVIDOR SFTP

groupadd sftpserver

CREAR LOS USUARIOS Y agregarlos al GRUPO DE NUESTRO SERVIDOR SFTP

useradd -g sftpserver -s /bin/false -d /home/sftpserver/usuario1 usuario1
useradd -g sftpserver -s /bin/false -d /home/sftpserver/usuario2 usuario2

useradd: Comando principal empleado para la creación de un usuario. -g sftpserver: Para indicar que el usuario pertenezca al grupo sftpserver. -s /bin/false: Para definir que el usuario del servidor SFTP que estamos creando, no tenga acceso a la terminal o interprete de comandos. Este aspecto es importante por temas de seguridad, ya que si un usuario del servidor tuviera acceso al interprete de comandos, podría ejecutar comandos que podrían comprometer la seguridad de nuestro servidor. -d /home/sftpserver/usuario1: Indica la ruta home por defecto del usuario que estamos creando para el servidor SFTP. usuario1: Es el nombre del usuario que queremos crear.

CREAR UNA CONTRASEÑA PARA CADA USUARIO

passwd usuario1
passwd usuario2

ASIGNAR UN USUARIO Y UN GRUPO A LAS CARPETAS DEL SERVIDOR SFTP

Las carpetas /home/sftpserver/usuario1/archivos y /home/sftpserver/usuario1/compartir, queremos que pertenezcan al usuario1 y al grupo sftpserver. Para ello ejecutamos los siguientes comandos en la terminal:

chown usuario1:sftpserver /home/sftpserver/usuario1/archivos
chown usuario1:sftpserver /home/sftpserver/usuario1/compartido
chown usuario2:sftpserver /home/sftpserver/usuario2/archivos
chown usuario2:sftpserver /home/sftpserver/usuario2/compartido

chown: Es el comando usado para modificar los permisos de archivos y carpetas. usuario1:sftpserver: usuario1 es el nombre usuario al que queremos que pertenezca la carpeta usuario1. Sfptserver es el grupo al que queremos que pertenezca la carpeta usuario1 /home/sfptserver/usuario1/archivos: Es la ruta de la carpeta la cual se desea modificar el grupo y el usuario.

Finalmente queremos que las carpetas /home/sftpserver, /home/sftpserver/usuario1 y /home/sftpserver/usuario2 pertenezcan al usario root y al grupo root. Por lo tanto ejecutaremos los siguientes comandos en la terminal:

chown root:root /home/sftpserver
chown root:root /home/sftpserver/usuario1
chown root:root /home/sftpserver/usuario2

ASIGNAR PERMISOS A LAS CARPETAS DEL SERVIDOR SFTP

En apartados anteriores hemos creado las carpetas de nuestro servidor SFTP. A estas carpetas tenemos que asignarles los permisos que más nos convengan. En mi caso quiero que las carpetas usuario1/archivos y usuario2/archivos solo sean accesibles/modificables por sus propietarios, El resto de usuarios no dispondrán de ningún permiso sobre estas carpetas.

chmod 700 /home/sftpserver/usuario1/archivos
chmod 700 /home/sftpserver/usuario2/archivos

También que cualquier usuario pueda acceder y visualizar el contenido de las carpetas usuario1/compartir, y que únicamente los propietarios de la carpetas usuario1/compartir y usuario2/compartir puedan modificar su contenido. Para conseguir este propósito ejecutaré los siguientes comandos en la terminal:

chmod 755 /home/sftpserver/usuario1/compartido
chmod 755 /home/sftpserver/usuario2/compartido

Opcional: SI se desea que cualquiera puede tener el control de la carpeta compartido, para eliminar, editar, crear, aplicar todos los permisos

chmod 777 /home/sftpserver/usuario1/compartido
chmod 777 /home/sftpserver/usuario2/compartido

Asignando los permisos 755 a estas carpetas, cualquier usuario podrá entrar en la carpeta usuario1/compartir y usuario2/compartir y visualizar los archivos que hay dentro de esta ubicación, pero solo el propietario podrá crear, eliminar y modificar archivos.

chmod 755 /home/sftpserver/usuario1
chmod 755 /home/sftpserver/usuario2
chmod 755 /home/sftpserver

Configuración en ssh

Realizar un respaldo del archivo a editar antes.

$ sudo cp /etc/ssh/sshd_config{,.bak}
$ sudo nano /etc/ssh/sshd_config

Buscar las siguientes lineas y comentarlo agregándole # Quedando de la siguiente manera:

# Subsystem sftp /usr/lib/openssh/sftp-server
# UsePAM yes

Para enjaular a lo usuarios del grupo sftp

Subsystem sftp internal-sftp
Match group sftpserver
ChrootDirectory /home/sftpserver
ForceCommand internal-sftp

Para dirigir al usuario a su home sin acceder al de otros usuarios, editar la siguiente linea

ChrootDirectory /home/sftpserver/%u

Reiniciar el servicio ssh:

service ssh restart
Ó
sudo /etc/init.d/ssh [stop,start,restart]

Opcional:

Ejemplo: Para enjaular por usuario

Subsystem sftp internal-sftp
Match user usuario1
ChrootDirectory /home/sftpserver/usuario1
ForceCommand internal-sftp

Resolviendo errores:

Si algún usuario fue bloqueado usando la configuración

DenyUsers usuariobloqueado
DenyGroups grupobloqueado

Al aplicar esta configuración de sftp, todos los usuarios denegados o permitidos en la configuración ssh pueden acceder por ssh, excepto los que están en el grupo de sftpserver (el grupo creado en la configuración sftp), la configuración de ssh queda invalidada, la solución para seguir bloqueando al usuario por ssh es aplicar la siguiente configuración al final del siguiente archivo /etc/ssh/sshd_config

Abrir el archivo :

sudo nano /etc/ssh/sshd_config

Y bloquear de la siguiente manera, agregar la siguiente linea al final del archivo, asegurándose remplazar al usuario a bloquear

Match User USUARIObloquear,otroUsuarioABloquear
MaxSessions 0

Dejando el acceso a todos los demás excepto a los definidos en el Match User y los que pertenezcan al grupo sftpserver

results matching ""

    No results matching ""