sábado, 31 de mayo de 2014

Cómo montar un FTP en Amazon AWS EC2


Hace poco comencé a trabajar con Python y uno de los proyectos que tenia entre manos era la creación de un script que subiese ficheros a un FTP. De paso, como quería comenzar a “jugar” con Amazon AWS, aproveché para matar los pájaros de un tiro.

Creación de una instancia EC2 gratuita de Amazon WS


1.     Navegaremos a la pagina de AWS de Amazon: https://aws.amazon.com

2.     Crearemos una cuenta de usuario

3.     Una vez creada la cuenta, iremos al menú Services > Compute & Networking > EC2



4.     A continuación, en el menú lateral encontraremos AWS Marketplace con un enlace que nos abrirá un asistente para crear instancias gratuitas (EC2 Launch Wizard).



5.     A continuación seleccionaremos el sistema operativo que queremos para la imagen. Por defecto escoge Amazon Linux 64-bit, que es el que nosotros usaremos en este tutorial.



6.     Y rellenaremos el formulario con todos los valores por defecto hasta que solo tengamos la opción de Review and Launch.

7.     Se nos abrirá un pop-up para generar un par clave-valor. Este par es el archivo con la clave encriptada que usaremos para conectar. Indicaremos los valores y descargaremos el archivo pem a un lugar que nos venga bien.



8.     Tras esto, podremos pulsar el botón Launch Intances.



9.     Con esto ya tendremos la instancia creada.



10.   Ahora, prepararemos el archivo *.pem para que nos permita conectarnos a ella. Y para esto necesitamos cambiar los privilegios del archivo con el comando chmod.

chmod 400 cerobytes.pem.txt

11.  A continuación, nos conectamos por SSH haciendo uso de la ip que nos han proporcionado al crear la instancia EC2 (en el menú INTANCES > Instances podrás consultarla).

Ejecutamos por tanto el siguiente comando:

ssh -i cerobytes.pem.txt ec2-user@54.186.95.20

Una vez conectado tendremos un mensaje como este:



Instalación del FTP en la instancia AWS EC2

1.     Para instalar el FTP simplemente ejecutaremos el comando para instalar el FTP:

sudo yum install vsftpd


2.     Seguidamente, configuraremos el FTP, empezando por indicar cuales serán los puertos a usar. Navegaremos en el menú lateral a la opción NETWORK & SECURITY > Security Groups

3.     Seleccionaremos nuestro grupo de seguridad, que por norma se llamará launch-wizard-#.



4.     Iremos a la pestaña Inbound y veremos que por defecto solo tenemos activo SSH.




5.     Pulsaremos sobre EDIT y añadiremos las dos siguiente reglas:

·      Primera regla:
o   Type: Custom TCP Rule
o   Protocol: TCP
o   Port Range: 20 – 21
o   Source: Anywere 0.0.0.0/0

·      Segunda regla:
o   Type: Custom TCP Rule
o   Protocol: TCP
o   Port Range: 1024 – 1048
o   Source: Anywere 0.0.0.0/0



6.     Por consola, editamos el archivo de configuración vsftpd.conf

/etc/vsftpd/vsftpd.conf

7.     En dicho archivo buscaremos la propiedad anonymous_enable y nos aseguraremos que está a NO.

anonymous_enable=NO

8.     Por seguridad, restringiremos el acceso de los usuarios solo a su directorio HOME en la maquina, por lo que descomentaremos la linea:

chroot_local_user=YES

9.     Y finalmente añadiremos estas líneas al final del archivo:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<IP de tu instancia>

10.   Finalmente, reiniciamos el FTP con el comando

sudo /etc/init.d/vsftpd restart

11.   Ahora añadiremos un usuario al FTP con los comandos:

sudo adduser <username>
sudo passwd <username>

12.   Finalmente, es recomendable chequear que tenemos marcado nuestro servicio vsftpd en la lista de servicios que se iniciarán tras un arranque. Para ello ejecutamos el comando:

sudo ntsysv

Esto nos mostrará por pantalla algo así:



Y listo, ya podemos probar nuestro FTP.