Creando un espacio para FTP seguro con OpenSSH
Manuales bash, debian, ftp, openssh, sftp, terminalSSH es una herramienta poderosa, y no solo sirve como terminal remota, hace un montón de cosas mas.
Una buena utilidad es usarlo com FTP seguro (SFTP), sin tener que hacerle mayor cosa el servicio ya funciona como SFTP, pero deja verle las tripas al equipo que lo brinda.
Para poder evitar eso puede realizarse un par de configuraciones para tratar de enjaular a los usuarios de ese servicio y evitar posibles daños voluntarios e involuntarios.
Primero es bueno crear un grupo para los usuarios que estarán así, y es recomendado crear un grupo de sistema para no afectar nuevos usuarios del sistema.
addgroup --gid 701 guinellos
Luego se crea un espacio en algún lugar para que los usuarios de ese grupo puedan ocupar, puede ser cualquier lugar, si es en un servidor podría ser en /srv/ pero si no se tienen particiones definidas y no se quiere ser tan estrícto puede ser cualquier directorio
mkdir /home/guinellos
Para usar solo el caso de sftp se recomienda que sea con un usuario adicional, que no tenga ni permisos de usar bash y al que se le dira donde esta su espacio para subir archivos.
Se crea el usuario con un id específico (701), como perteneciente al grupo creado previamente (guinellos), sin capacidad de ingresar al sistea mediante login (/sbin/nologin) y con un home específico (/home/guinellos/majoncho).
useradd -u 701 -g guinellos -s /sbin/nologin -m -d /home/guinellos/majoncho majoncho
Y se le pone contraseña, de preferencia una que sea segura
passwd majoncho
Tambien se puede vaciar para que el usuario encuentre solamente el espacio.
rm -f /home/guinellos/majoncho/.*
Para que ssh acepte conexiones solamente sftp se debe editar el archivo /etc/ssh/sshd_config, en las últimas lineas se encuetra una que aparece así:
Subsystem sftp /usr/lib/openssh/sftp-server
Se debe modificar para que que quede así:
Subsystem sftp internal-sftp
Y agregar al final del mismo archivo lo siguiente:
Match Group guinellos
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/guinellos
ForceCommand internal-sftp -d %u
Una vez se guarda el archivo con las modificaciones, bastará con reiniciar el servicio de ssh
systemctl restart ssh
Luego podra usarse sftp desde otro equipo para comprobar que funciona.
sftp majoncho@ip.o.nombre.remoto
Si todo sale bien podrȧ acceder solamente por protocolo sftp con esa cuenta, disfrúten subiendole cosas 🙂