Jaminto fez um ótimo trabalho ao responder à pergunta, mas recentemente eu mesmo passei pelo processo e queria expandir a resposta de Jaminto.
Suponho que você já tenha uma instância do EC2 criada e tenha associado um endereço IP elástico a ela.
Etapa 1: instalar o vsftpd
SSH para o servidor EC2. Tipo:
> sudo yum install vsftpd
Isso deve instalar o vsftpd.
Etapa 2: abrir as portas FTP na sua instância do EC2
Em seguida, você precisará abrir as portas FTP no seu servidor EC2. Faça logon no Console de gerenciamento do AWS EC2 e selecione Grupos de segurança na árvore de navegação à esquerda. Selecione o grupo de segurança atribuído à sua instância do EC2. Em seguida, selecione a guia Entrada e clique em Editar:
Adicione duas regras TCP personalizadas com intervalos de portas 20-21 e 1024-1048. Para Origem, você pode selecionar 'Qualquer lugar'. Se você decidir definir Origem como seu próprio endereço IP, saiba que seu endereço IP poderá mudar se estiver sendo atribuído via DHCP.
Etapa 3: faça atualizações no arquivo vsftpd.conf
Edite seu arquivo conf vsftpd digitando:
> sudo vi /etc/vsftpd/vsftpd.conf
Desabilite o FTP anônimo alterando esta linha:
anonymous_enable=YES
para
anonymous_enable=NO
Em seguida, adicione as seguintes linhas na parte inferior do arquivo vsftpd.conf:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
Seu arquivo vsftpd.conf deve ter a seguinte aparência - exceto se substitui o endereço pasv_address pelo seu endereço IP público:
Para salvar as alterações, pressione Escape, digite :wq
e pressione Enter.
Etapa 4: reiniciar o vsftpd
Reinicie o vsftpd digitando:
> sudo /etc/init.d/vsftpd restart
Você deverá ver uma mensagem parecida com:
Se isso não funcionar, tente:
> sudo /sbin/service vsftpd restart
Etapa 5: criar um usuário de FTP
Se você der uma olhada em / etc / vsftpd / user_list, verá o seguinte:
# 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
Isso está basicamente dizendo: "Não permita que esses usuários acessem o FTP". O vsftpd permitirá o acesso de FTP a qualquer usuário que não esteja nesta lista.
Portanto, para criar uma nova conta FTP, você pode precisar criar um novo usuário no seu servidor. (Ou, se você já tiver uma conta de usuário que não esteja listada em / etc / vsftpd / user_list, poderá pular para a próxima etapa.)
Criar um novo usuário em uma instância do EC2 é bastante simples. Por exemplo, para criar o usuário 'bret', digite:
> sudo adduser bret
> sudo passwd bret
Aqui está como será:
Etapa 6: restringindo os usuários aos seus diretórios pessoais
Neste ponto, seus usuários de FTP não estão restritos aos seus diretórios pessoais. Isso não é muito seguro, mas podemos corrigi-lo facilmente.
Edite seu arquivo conf vsftpd novamente, digitando:
> sudo vi /etc/vsftpd/vsftpd.conf
Remova o comentário da linha:
chroot_local_user=YES
Deve ficar assim quando terminar:
Reinicie o servidor vsftpd novamente da seguinte maneira:
> sudo /etc/init.d/vsftpd restart
Tudo feito!
Apêndice A: Sobrevivendo a uma reinicialização
O vsftpd não inicia automaticamente quando o servidor é inicializado. Se você é como eu, isso significa que, depois de reiniciar sua instância do EC2, você sentirá um momento de terror quando o FTP parecer estar quebrado - mas, na realidade, ele simplesmente não está funcionando !. Aqui está uma maneira prática de corrigir isso:
> sudo chkconfig --level 345 vsftpd on
Como alternativa, se você estiver usando redhat, outra maneira de gerenciar seus serviços é usar essa interface gráfica do usuário para controlar quais serviços devem iniciar automaticamente:
> sudo ntsysv
Agora o vsftpd será iniciado automaticamente quando o servidor for inicializado.
Apêndice B: Alterando o diretório inicial do FTP de um usuário
* NOTA: Iman Sedighi postou uma solução mais elegante para restringir o acesso dos usuários a um diretório específico. Consulte a excelente solução postada como resposta *
Você pode criar um usuário e restringir o acesso ao FTP a uma pasta específica, como / var / www. Para fazer isso, você precisará alterar o diretório inicial padrão do usuário:
> sudo usermod -d /var/www/ username
Neste exemplo específico, é típico dar permissões de usuário ao grupo 'www', que geralmente é associado à pasta / var / www:
> sudo usermod -a -G www username