Permitir acceso a un sistema Linux mediante scp/sftp denegando acceso mediante ssh
19/12/2012 -
En sistemas Linux es habitual disponer de usuarios que permiten el acceso y el intercambio de ficheros mediante FTP.
La norma habitual es que estos usuarios FTP no nos interesa que puedan abrir una shell en el sistema, y por tanto acceder via SSH.
Es para ello que al crear usuarios FTP habitualmente se crean con la shell /sbin/nologin:
testftp:x:501:48::/var/ftp/testftp:/sbin/nologin
El tema se complica cuando es necesario que el intercambio de ficheros sea de forma segura mediante scp/sftp, ya que no se permite que un usuario con la shell /sbin/nologin conecte via scp/scp.
Es por ello que existe el paquete rssh. Para ello procedemos a descargarlo e instalarlo en nuestro O.S., un Oracle Enterprise Linux Server release 5.6:
wget http://pkgs.repoforge.org/rssh/rssh-2.3.3-1.el5.rf.x86_64.rpm Saving to: 'rssh-2.3.3-1.el5.rf.x86_64.rpm' 100%[================================================>] 61,019 281K/s in 0.2s
Y procedemos a instalar el paquete:
[root@server1~]# rpm -iv rssh-2.3.3-1.el5.rf.x86_64.rpm
Una vez instalado procedemos a configurar la nueva shell editando el fichero /etc/rssh.conf, en nuestro caso solamente habilitamos los accesos via sftp y scp:
[root@server1~]# cat /etc/rssh.conf # This is the default rssh config file # set the log facility. "LOG_USER" and "user" are equivalent. logfacility = LOG_USER # Leave these all commented out to make the default action for rssh to lock # users out completely... allowscp allowsftp #allowcvs #allowrdist #allowrsync ...
Finalmente se modifica el usuario:
usermod -s /usr/bin/rssh testftp
A partir de este momento el usuario testftp solamente podrá acceder al sistema mediante sftp y scp, impidiendo el acceso via ssh, ftp, etc.