Configuración de FTP en Amazon Cloud Server

Estoy intentando configurar FTP en Amazon Cloud Server, pero sin suerte. Busco en la red y no hay pasos concretos para hacerlo.

Encontré esos comandos para ejecutar:

$ yum install vsftpd $ ec2-authorize default -p 20-21 $ ec2-authorize default -p 1024-1048 $ vi /etc/vsftpd/vsftpd.conf #---Add following lines at the end of file--- pasv_enable=YES pasv_min_port=1024 pasv_max_port=1048 pasv_address= $ /etc/init.d/vsftpd restart 

Pero no sé dónde escribirlos.

Jaminto hizo un gran trabajo respondiendo la pregunta, pero recientemente realicé el proceso y quería ampliar la respuesta de Jaminto.

Supongo que ya tiene una instancia EC2 creada y le ha asociado una dirección IP elástica.

Paso # 1: Instalar vsftpd

SSH a su servidor EC2. Tipo:

 > sudo yum install vsftpd 

Esto debería instalar vsftpd.

Paso # 2: abre los puertos FTP en tu instancia de EC2

A continuación, deberá abrir los puertos FTP en su servidor EC2. Inicie sesión en la consola de administración de AWS EC2 y seleccione Grupos de seguridad en el árbol de navegación de la izquierda. Seleccione el grupo de seguridad asignado a su instancia EC2. Luego seleccione la pestaña Entrada, luego haga clic en Editar:

enter image description here

Agregue dos reglas TCP personalizadas con rangos de puertos 20-21 y 1024-1048. Para Source, puede seleccionar ‘Anywhere’. Si decide configurar el origen en su propia dirección IP, tenga en cuenta que su dirección IP podría cambiar si se asigna a través de DHCP.

enter image description here

Paso # 3: Actualice el archivo vsftpd.conf

Edite su archivo vsftpd conf escribiendo:

 > sudo vi /etc/vsftpd/vsftpd.conf 

Deshabilite FTP anónimo cambiando esta línea:

 anonymous_enable=YES 

a

 anonymous_enable=NO 

A continuación, agregue las siguientes líneas a la parte inferior del archivo vsftpd.conf:

 pasv_enable=YES pasv_min_port=1024 pasv_max_port=1048 pasv_address= 

Su archivo vsftpd.conf debería verse de la siguiente manera, excepto que asegúrese de reemplazar la dirección pasv con su dirección IP pública:

enter image description here

Para guardar los cambios, presione escape, luego escriba :wq , luego :wq enter.

Paso # 4: reiniciar vsftpd

Reinicie vsftpd escribiendo:

 > sudo /etc/init.d/vsftpd restart 

Debería ver un mensaje que se ve así:

enter image description here

Si esto no funciona, intente:

 > sudo /sbin/service vsftpd restart 

Paso # 5: Crea un usuario FTP

Si echas un vistazo a / etc / vsftpd / user_list, verás lo siguiente:

 # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody 

Esto básicamente dice: “No permita que estos usuarios accedan al FTP”. vsftpd permitirá el acceso FTP a cualquier usuario que no esté en esta lista.

Por lo tanto, para crear una nueva cuenta de FTP, es posible que deba crear un nuevo usuario en su servidor. (O bien, si ya tiene una cuenta de usuario que no figura en / etc / vsftpd / user_list, puede pasar al siguiente paso).

Crear un nuevo usuario en una instancia de EC2 es bastante simple. Por ejemplo, para crear el usuario ‘bret’, escriba:

 > sudo adduser bret > sudo passwd bret 

Esto es lo que se verá:

enter image description here

Paso # 6: restringir a los usuarios a sus directorios de inicio

En este punto, sus usuarios de FTP no están restringidos a sus directorios de inicio. Eso no es muy seguro, pero podemos solucionarlo con bastante facilidad.

Edite su archivo vsftpd conf nuevamente escribiendo:

 > sudo vi /etc/vsftpd/vsftpd.conf 

No comentar fuera de la línea:

 chroot_local_user=YES 

Debería verse así una vez que hayas terminado:

enter image description here

Reinicie el servidor vsftpd nuevamente así:

 > sudo /etc/init.d/vsftpd restart 

¡Todo listo!

Apéndice A: Sobrevivir a un reinicio

vsftpd no se inicia automáticamente cuando se inicia el servidor. Si eres como yo, eso significa que después de reiniciar tu instancia de EC2, sentirás un momento de terror cuando el FTP parezca estar roto, pero en realidad, simplemente no funciona. Aquí hay una forma práctica de arreglar eso:

 > sudo chkconfig --level 345 vsftpd on 

Alternativamente, si está usando redhat, otra forma de administrar sus servicios es mediante el uso de esta ingeniosa interfaz de usuario gráfica para controlar qué servicios se deben iniciar automáticamente:

 > sudo ntsysv 

enter image description here

Ahora vsftpd se iniciará automáticamente cuando su servidor se inicie.

Apéndice B: Cambiar el directorio de inicio de FTP de un usuario

* NOTA: Iman Sedighi ha publicado una solución más elegante para restringir el acceso de los usuarios a un directorio específico. Por favor, consulte su excelente solución publicada como respuesta *

Es posible que desee crear un usuario y restringir su acceso FTP a una carpeta específica, como / var / www. Para hacer esto, necesitarás cambiar el directorio de inicio predeterminado del usuario:

 > sudo usermod -d /var/www/ username 

En este ejemplo específico, es típico dar permisos de usuario al grupo ‘www’, que a menudo se asocia con la carpeta / var / www:

 > sudo usermod -a -G www username 

Para habilitar ftp pasivo en un servidor EC2, debe configurar los puertos que su servidor ftp debe usar para las conexiones entrantes, luego abra una lista de puertos disponibles para las conexiones de datos del cliente ftp.

No estoy familiarizado con Linux, pero los comandos que publica son los pasos para instalar el servidor ftp, configurar las reglas de firewall ec2 (a través de la API de AWS), luego configurar el servidor ftp para usar los puertos que permitió en el firewall ec2 .

Entonces este paso instala el cliente ftp (VSFTP)

> yum install vsftpd

Estos pasos configuran el cliente ftp

 > vi /etc/vsftpd/vsftpd.conf -- Add following lines at the end of file -- pasv_enable=YES pasv_min_port=1024 pasv_max_port=1048 pasv_address= > /etc/init.d/vsftpd restart 

pero los otros dos pasos son más fáciles de realizar a través de la consola de Amazon bajo los grupos de seguridad EC2. Allí debe configurar el grupo de seguridad que está asignado a su servidor para permitir las conexiones en los puertos 20,21 y 1024-1048.

Gracias @ clone45 por la buena solución. Pero tenía solo un problema importante con el Apéndice b de su solución. Inmediatamente después de cambiar el directorio de inicio a var / www / html, no pude conectarme al servidor a través de ssh y sftp porque siempre muestra los siguientes errores

 permission denied (public key) 

o en FileZilla recibí este error:

 No supported authentication methods available (server: public key) 

Pero podía acceder al servidor a través de una conexión FTP normal.

Si se encuentra con el mismo error, simplemente deshaga el apéndice b de la solución @ clone45 configurando el directorio de inicio predeterminado para el usuario:

 sudo usermod -d /home/username/ username 

Pero cuando configura el directorio de inicio predeterminado del usuario, el usuario tiene acceso a muchas otras carpetas fuera de / var / www / http. Entonces, para asegurar su servidor, siga estos pasos:

1- Make sftponly group Haz un grupo para todos los usuarios que quieras restringir su acceso a ftp y sftp solo para acceder a var / www / html. para hacer el grupo:

 sudo groupadd sftponly 

2- Encerrar al chroot Para restringir el acceso de este grupo al servidor a través de sftp, debe bloquear el chroot para que los usuarios del grupo no puedan acceder a ninguna carpeta que no sea html dentro de su directorio de inicio. para hacer esto, abra /etc/ssh/sshd.config en el vim con sudo. Al final del archivo, comenta esta línea:

 Subsystem sftp /usr/libexec/openssh/sftp-server 

Y luego agregue esta línea debajo de eso:

 Subsystem sftp internal-sftp 

Así que reemplazamos el subsistema con internal-sftp. A continuación, agregue las siguientes líneas debajo de él:

  Match Group sftponly ChrootDirectory /var/www ForceCommand internal-sftp AllowTcpForwarding no 

Después de agregar esta línea, guardé mis cambios y luego reinicié el servicio ssh de la siguiente manera:

 sudo service sshd restart 

3- Agregar el usuario al grupo sftponly Cualquier usuario que desee restringir su acceso debe ser un miembro del grupo sftponly. Por lo tanto, nos unimos a sftponly por: sudo usermod -G sftponly nombre de usuario

4- Restringir el acceso del usuario a solo var / www / html Para restringir el acceso del usuario a la carpeta simplemente var / www / html, necesitamos crear un directorio en el directorio de inicio (con el nombre de ‘html’) de ese usuario y luego montar / var / www to / home / username / html de la siguiente manera:

 sudo mkdir /home/username/html sudo mount --bind /var/www /home/username/html 

5- Establecer el acceso de escritura Si el usuario necesita acceso de escritura a / var / www / html, debe encarcelar al usuario en / var / www, que debe tener la raíz: propiedad de la raíz y permisos de 755. Luego debe dar / var / www / html propiedad de root: sftponly y permisos de 775 agregando las siguientes líneas:

 sudo chmod 755 /var/www sudo chown root:root /var/www sudo chmod 775 /var/www/html sudo chown root:www /var/www/html 

6- Bloquear el acceso al shell Si desea restringir el acceso para no tener acceso al shell para hacerlo más seguro, simplemente cambie el shell predeterminado a bin / false de la siguiente manera:

 sudo usermod -s /bin/false username 

Artículo genial … funcionó como una brisa en Amazon Linux AMI.

Dos comandos más útiles:

Para cambiar la carpeta de carga FTP predeterminada

Paso 1:

 edit /etc/vsftpd/vsftpd.conf 

Paso 2: crea una nueva entrada en la parte inferior de la página:

 local_root=/var/www/html 

Para aplicar la lectura, escritura y eliminación de permisos a los archivos en la carpeta para que pueda administrar utilizando un dispositivo FTP

 find /var/www/html -type d -exec chmod 777 {} \; 

En caso de que tengas ufw habilitada, recuerda agregar ftp:

 > sudo ufw allow ftp 

Me llevó 2 días darme cuenta de que habilité ufw.

No estará bien hasta que agregue su usuario al grupo www con los siguientes comandos:

 sudo usermod -a -G www  

Esto resuelve el problema del permiso.

Establezca la ruta predeterminada agregando esto:

 local_root=/var/www/html 

No olvide actualizar su firewall de iptables si tiene uno para permitir los rangos 20-21 y 1024-1048.

Haz esto desde / etc / sysconfig / iptables

Agregando líneas como esta:

-A INPUT -m estado –state NUEVO -m tcp -p tcp –dport 20:21 -j ACCEPT

-A INPUT -m estado –state NUEVO -m tcp -p tcp –dport 1024: 1048 -j ACEPTO

Y reinicie iptables con el comando:

sudo service iptables restart

He simplificado los pasos de clone45:

Abra los puertos como mencionó

 sudo su sudo yum install vsftpd echo -n "Public IP of your instance: " && read publicip echo -e "anonymous_enable=NO\npasv_enable=YES\npasv_min_port=1024\npasv_max_port=1048\npasv_address=$publicip\nchroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf sudo /etc/init.d/vsftpd restart 

Este es un gran artículo. Tenga en cuenta que probablemente necesite agregar el usuario que creó al grupo de usuarios “FTP”:

> gpasswd -a ftp

Seguí la respuesta de clone45 hasta el final. ¡Un gran artículo! Como necesitaba el acceso FTP para instalar complementos en uno de mis sitios de wordpress, cambié el directorio de inicio a / var / www / mysitename. Luego continué agregando mi usuario ftp al grupo apache (o www) de esta manera:

 sudo usermod -a -G apache myftpuser 

Después de esto, aún vi este error en la página de instalación del complemento de WP: “No se puede ubicar el directorio de contenido de WordPress (wp-content)”. Se buscó y se encontró esta solución en una sesión de preguntas y respuestas de wp.org: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content y se agregó lo siguiente hasta el final de wp- config.php:

 if(is_admin()) { add_filter('filesystem_method', create_function('$a', 'return "direct";' )); define( 'FS_CHMOD_DIR', 0751 ); } 

Después de esto, mi plugin WP se instaló con éxito.

quizás vale la pena mencionar además de la respuesta de clone45 :

Reparar permisos de escritura para usuarios de FTP chrootados en vsftpd

La versión vsftpd que viene con Ubuntu 12.04 Precise no permite a los usuarios locales chrooted escribir de forma predeterminada. Por defecto, tendrá esto en /etc/vsftpd.conf :

 chroot_local_user=YES write_enable=YES 

Para permitir que los usuarios locales escriban, debe agregar el siguiente parámetro:

 allow_writeable_chroot=YES 

Nota: Los problemas con los permisos de escritura pueden aparecer como los siguientes errores de FileZilla :

 Error: GnuTLS error -15: An unexpected TLS packet was received. Error: Could not connect to server 

Referencias
Reparar permisos de escritura para usuarios de FTP chrootados en vsftpd
VSFTPd dejó de funcionar después de la actualización

FileZila es una buena herramienta de FTP para configurar con Amazon Cloud.

  1. Descargue el cliente de FileZila desde https://filezilla-project.org/
  2. Haga clic en Archivo -> Administrador del sitio ->
  3. Nuevo sitio
  4. Proporcione la dirección IP del nombre de host de su ubicación en la nube de Amazon (Puerto, si corresponde)
  5. Protocolo – SFTP (puede cambiar según sus requisitos)
  6. Tipo de inicio de sesión – Normal (para que el sistema no pida la contraseña cada vez)
  7. Proporcione el nombre de usuario y la contraseña.
  8. Conectar.

Solo debe hacer estos pasos 1 vez, luego cargará contenido a la misma dirección IP y al mismo sitio.

En caso de que obtenga la contraseña 530 incorrecta

Se necesita 1 paso más

en archivo / etc / shells

Agregue la siguiente línea

/ bin / falso