En muchas ocasiones debemos transferir múltiple información entre dispositivos y la forma más común de hacerla, la cual lleva más de 20 años, es usando el protocolo FTP (File Transfer Protocol – Protocolo de Transferencia de Archivos) y FTP que permite la transferencia entre equipos conectados a TCP tomando la base cliente/servidor.
Con FTP usamos el puerto 20 y 21. Ahora contamos con un nuevo protocolo predefinido llamado SFTP en cual encontramos habilitado en todos los servidores que soportan SSH.
SFTP (SSH File Transfer Protocol – Protocolo de Transferencia de Archivos SSH) es diferente al tipo FTP aunque soporta todos los clientes FTP que encontramos en la actualidad. Aunque SFTP ha sido implementado para añadir una capa de seguridad presenta una vulnerabilidad a nivel de acceso ya que, al ser un estándar, concede acceso total a los usuarios del sistema para la transferencia de archivos y uso de la Shell.
Solvetic hoy enseñará como configurar CentOS 7 para evitar que un determinado usuario tenga acceso SSH con la libertad de manipular el sistema a través del protocolo0 SFTP.
1. Creación del usuario
En primer lugar crearemos el usuario que tendrá acceso restringido por SSH, en este caso lo llamaremos acceso, ejecutamos lo siguiente:
sudo adduser accesoA continuación asignamos una contraseña al nuevo usuario ejecutando lo siguiente:
sudo passwd acceso
2. Creación del directorio para la transferencia de archivos
Una vez creado nuestro usuario el siguiente paso consiste en crear el directorio a donde actuara SFTP impidiendo el acceso y este debe ser configurado con ciertos parámetros.
Crearemos un directorio llamado /var/sftp/uploads en el cual la parte /var/sftp el usuario root será su propietario y ningún otro usuario tendrá los permisos activos y en el subdirectorio /var/sftp/uploads el propietario será el nuevo usuario acceso. Creamos el directorio usando la siguiente línea:
sudo mkdir -p /var/sftp/uploadsA continuación establecemos al usuario root como propietario en el directorio indicado:
sudo chown root:root /var/sftpOtorgamos los permisos de escritura al usuario root y de lectura a los demás usuarios en la ruta indicada:
sudo chmod 755 /var/sftp
Ahora modificamos el propietario de uploads para que sea el usuario acceso, ejecutamos lo siguiente:
sudo chown acceso:acceso /var/sftp/uploads
3. Restricción de acceso a un directorio
En este paso veremos cómo restringir el acceso por terminal al usuario acceso pero si será posible la transferencia de archivos. Para esto debemos editar el servidor SSH con el editor preferido, vim o nano, en la siguiente ruta:
sudo nano /etc/ssh/sshd_configVeremos lo siguiente:
En la parte final del archivo adicionamos lo siguiente:
Match User acceso ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Guardamos los cambios usando la combinación de teclas Ctrl + O y salimos del editor usando las teclas Ctrl +X. La sintaxis usada implica lo siguiente:
Una vez guardemos el archivo ejecutaremos el siguiente comando para aplicar los cambios en SSH:
sudo systemctl restart sshd
4. Verificación de la conexión SSH
Con esto configurado será hora de validar el acceso a través de SSH y comprobar que solo será posible la transferencia de archivos. Para esto vamos a la conexión a través de SSH la cual en este caso será.
ssh acceso@192.168.0.14Una vez ingresemos las credenciales de acceso veremos el siguiente mensaje:
Con esto hemos comprobado que la conexión será cerrada a través de SSH. Ahora intentaremos la conexión usando el protocolo sftp:
sftp acceso@192.168.0.14Al ingresar la contraseña veremos que la conexión es exitosa y estaremos en capacidad de transferir archivos:
Allí podemos usar el comando ls para listar los directorios disponibles y veremos la carpeta uploads que hemos creado:
Allí podremos mover información pero si intentamos volver a un directorio encima usando cd .. no obtendremos error pero vemos que no podrá ser listado ningún directorio:
Así de sencillo podemos restringir accesos gracias a sftp.