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!!
- GuardDuty: Un viaje a través del tiempo en AWS Security - 21 noviembre, 2023
- Webinar – Seguridad para familias - 11 enero, 2021
- SecurityInside Live: CISO Day 2020 - 17 septiembre, 2020
Just want to say your article is as surprising. The clarity on your post is just spectacular
and i can think you’re an expert on this subject.
Fine with your permission let me to clutch your RSS feed to keep up to date
with approaching post. Thank you 1,000,000 and please keep up the gratifying work.
Wow, marvelous blog layout! How long have you ever been running a blog for?
you make blogging glance easy. The overall glance of your website is
excellent, let alone the content material! You can see similar here dobry sklep