Seguí varios tutoriales tratando de configurar un usuario sftp que únicamente tuviera acceso al folder del directorio web asignado y en el proceso obtuve muchos errores. Finalmente lo logré y a continuación escribo los pasos que seguí.
Las versiones son:
- SO Linux Fedora Core 11
- OpenSSH 5.2
Y los pasos son:
- Creamos un grupo para los usuarios que queremos restringir:
[root@server ~]# groupadd chrooted
- Creamos un usuario que pertenezca al grupo chrooted.
[root@server ~]# useradd -d /home/username -g chrooted username
Nota: aunque no es necesario especificar la opción -d ya que por defecto el comando useradd creará un sud-directorio bajo el directorio /home. Sin embargo si queremos que el usuario tenga acceso por ejemplo a /var/www/html/sitioweb/, tendremos que especificarlo en la opción.
- Por defecto una vez se crea el usuario el dueño del directorio hogar es el usuario, se debe cambiar para que sea root así:
[root@server ~]# chown root.root /home/username
Dentro de éste se creará un subdirectorio al que tendrá acceso exclusivo el usuario,
[root@server ~]# mkdir /home/username/public_html/
Finalmente ajustamos los permisos del directorio así:
[root@server ~]# chmod -R 0755 /home/username
Nota: Los pasos anteriores son los más importantes ya que seguirlos me evito el error: fatal: bad ownership or modes for chroot directory component «/home/username/» que aparecia en el log (/var/log/secure).
- Continuamos con asignarle una clave al usuario recién creado:
[root@server ~]# passwd username
- Configuramos el servicio ssdh editando el archivo sshd_config:
[root@server ~]# nano /etc/ssh/sshd_config
Buscamos esta línea:
Subsystem sftp /usr/libexec/openssh/sftp-server
Y ponemos el signo # para comentariarla, luego agregamos la siguiente línea:
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp
Entonces al final del archivo agregamos las siguientes líneas:
Match Group chrooted ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
- Y finalizamos la configuración reiniciando el servicio sshd:
[root@server ~]# service sshd restart
- Finalmente para probar ejecutamos el comando sftp y verificamos que unicamente tenemos acceso al directorio /home/username:
[root@server ~]# sftp username@localhost Connecting to localhost... The authenticity of host 'localhost (127.0.0.1)' can't be established. RSA key fingerprint is 9b:f0:fa:df:ff:2b:bd:13:78:5d:b7:0d:f3:9a:b3:3a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (RSA) to the list of known hosts. username@localhost's password: sftp> pwd Remote working directory: / sftp>
Y voila, tenemos chroot más sftp-only.
Me has aliviado un dolor de cabeza.
Gracias!
Muy buen tutorial!!!
Una consulta, luego de seguir los pasos logro establecer la conexion pero al instante se me cierra. En el log de eventos aparece:
Changed root directory to «/home/user»
pam_unix(sshd_session) session closed for user user
Alguien podria ayudarme con este problema?
Gracias!!
Me ha sido de gran ayuda!! Mil gracias