Configurar SFTP en Red Hat Enterprise Linux 5.5

Valoración del Usuario:  / 2
MaloBueno 

La idea de este artículo es crear un usuario que pueda acceder a un servidor a través del servicio SFTP pero que no se le permita acceder mediante SSH. Además, debe restringirse el acceso SFTP a un determinado directorio.



Antes de comenzar es recomendable instalar la última versión de OpenSSH.

El primer paso consiste en crear un usuario llamado "cliente" que no tenga asignada una shell:

# useradd -c "Usuario cliente SFTP" -M -s /bin/nologin cliente
# passwd cliente

Crear un directorio base para el servicio SFTP con los permisos adecuados para que el subsistema sftp funcione:

# mkdir /sftpd
# chown root:root /sftpd
# chmod 755 /sftpd

El usuario "cliente" no tiene permisos para crear nuevos archivos o cerpetas en el directorio base. Es necesario crear un directorio de trabajo para el usuario "cliente" dentro del directorio /sftpd:

# mkdir /sftpd/cliente

Setear los permisos adecuados para el directorio de trabajo del usuario "cliente":

# chown cliente:cliente /sftpd/cliente
# chmod 755 /sftpd/cliente

Verificar los permisos de ambos directorios:

# ll / | grep sftpd
drwxr-xr-x   3 root     root       4096 May  9 08:02 sftpd
# ll /sftpd
total 8
drwxrwx--- 2 cliente cliente 4096 May  9 08:05 cliente

Una vez que se han configurado correctamente los directorios de trabajo, permisos en el sistema de archivos y creado el usuario "cliente", es necesario configurar el servicio SFTP. Editar el archivo de configuración del demonio sshd (la ubicación cambia si se instala desde los repositorios):

vi /usr/local/etc/sshd_config

Para el caso de este servidor Red Hat Enterprise Linux 5.5 es necesario cambiar el subsistema sftp:

    #Subsystem      sftp    /usr/local/bin/sftp-server
    Subsystem       sftp    internal-sftp -f AUTH -l VERBOSE

Agregar las siguientes líneas para configurar el acceso SFTP para el grupo "cliente":

    # El grupo "cliente" puede conectarse por sftp pero no por ssh
    Match Group cliente
            ForceCommand internal-sftp
            PasswordAuthentication yes
            ChrootDirectory /sftpd
            AllowTcpForwarding no
            MaxSessions 10

La directiva ForceCommand impide el acceso por SSH mientras que la directiva ChrootDirectory restringe el acceso SFTP al directorio /sftpd y sus subdirectorios (ejecuta chroot luego de la conexión exitosa). Esta configuración solo aplica para usuarios pertenecientes al grupo "cliente" (de acuerdo a la directiva Match Group), el resto de los usuarios tienen acceso SSH y SFTP normalmente.

Si se desea restringir el acceso SSH a otros usuarios es posible agregarlos al grupo "cliente" o definir un nuevo grupo secundario, llamado por ejemplo "solosftp", al que pertenezcan todos. El artículo Mantenimiento de usuarios en GNU/Linux explica cómo modificar grupos en usuarios GNU/Linux.

Finalmente es necesario reiniciar el servicio opensshd:

service opensshd restart

Desde un cliente verificar la conexión:

$ sftp cliente@pepeserver37.pepe.org
Connecting to pepeserver37.pepe.org...
cliente@pepeserver37.pepe.org's password:
sftp>

Exito!

Ahora resta confirmar que no se le permita el acceso SSH:

$ ssh cliente@pepeserver37.pepe.org
cliente@pepeserver37.pepe.org's password:
This service allows sftp connections only.
Connection to pepeserver37.pepe.org closed.

Exito! (x2)



Suscribirse

    Registrate para recibir las novedades y artículos por correo electrónico.

Linuxito en G+