sFTP en AWS EC2 en 5 minutos
En algún momento te puedes encontrar con la necesidad de levantar un sFTP para que alguien te envíe ficheros. Yo lo he necesitado hace poco y lo he solucionado rápidamente con una instancia de AWS EC2. Te dejo paso a paso lo que tienes que hacer por si lo necesitas.
Parto de la base de que tienes una cuenta en AWS y de que sabes levantar una instancia de ubuntu, si no es así hazmelo saber en los comentarios y preparo un tutorial de toda esta parte.
Puesto que no necesito gran rendimiento, he escogido una instancia de tipo t2.nano (CPU a 2.5Ghz, 512MB de RAM y 12GB de SSD) con un coste aproximado de 6$ al mes (suponiendo que esté encendida 24×7).
Los pasos son sencillos, sólo tienes que hacer lo siguiente:
1) Crear usuario y estructura de carpetas:
# Creo el usuario adduser --shell=/bin/false user_name # Creo la carpeta que será su raiz (para hacer chroot sobre ella) mkdir /home/user_name/ftp_folder
Puesto que en /home/user_name estarán ficheros de configuración y demás, creamos un nivel más (ftp_folder) sobre el que luego enjaularemos al usuario con chroot.
2) Asignar los permisos:
# Asignamos propietario chown -R root:user_name /home/user_name # Asignamos permisos chmod -R 750 /home/user_name
El dueño debe ser siempre root (o el sftp no arrancará), el grupo es el que tenga el usuario al que damos permiso.
3) Generamos las claves de acceso:
# Generamos las claves pública y privada ssh-keygen -t rsa -f user_name # Guardamos la clave pública mkdir /etc/ssh/authorized_keys cat user_name.pub > /etc/ssh/authorized_keys/user_name # Generamos la clave de host por si no existe ssh-keygen -A
Para que el acceso sea mediante certificado, generamos los pares de claves que el servicio ssh leerá. Tiene que estar fuera de la home del user o no podremos acceder.
4) Configuramos el acceso sftp:
# Editamos el fichero de configuración del servicio ssh vi /etc/ssh/sshd_config # Buscamos y comentamos la siguiente línea: Subsystem sftp /usr/lib/openssh/sftp-server # Configuramos el tipo de acceso de cada usuario Subsystem sftp internal-sftp Match User user_name AuthorizedKeysFile /etc/ssh/authorized_keys/%u ChrootDirectory /home/%u/ftp_folder ForceCommand internal-sftp X11Forwarding no AllowTCPForwarding no
Y sólo nos falta reiniciar el servicio ssh para que cargue los datos de configuración que hemos seteado:
service ssh restart
Y poco más, ya tenemos el sFTP funcionando y listo para que el user_name se conecte. No debes olvidar configurar correctamente el grupo de seguridad (firewall) para indicar quién puede o no conectarse a esta máquina.
Sencillo, no? Quien no tiene un sFTP es porque no quiere :D.
Saludos!!
- Una introducción a los contenedores: ECS y EKS en AWS - 26 diciembre, 2024
- HIPAA: Protegiendo la Privacidad y Seguridad de la información médica con AWS - 13 noviembre, 2024
- GuardDuty: Un viaje a través del tiempo en AWS Security - 21 noviembre, 2023