Configurando o FTP no Amazon Cloud Server [fechado]

257

Estou tentando configurar o FTP no Amazon Cloud Server, mas sem sorte. Eu pesquiso na net e não há etapas concretas para fazê-lo.

Eu encontrei esses comandos para executar:

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

Mas não sei onde escrevê-las.

SharkTheDark
fonte
10
Esta pergunta deve ser migrada para serverfault.com.
Jérôme Verstrynge

Respostas:

570

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:

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui



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:

insira a descrição da imagem aqui

Para salvar as alterações, pressione Escape, digite :wqe pressione Enter.



Etapa 4: reiniciar o vsftpd

Reinicie o vsftpd digitando:

> sudo /etc/init.d/vsftpd restart

Você deverá ver uma mensagem parecida com:

insira a descrição da imagem aqui


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á:

insira a descrição da imagem aqui



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:

insira a descrição da imagem aqui

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

insira a descrição da imagem aqui

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
clone45
fonte
3
Em step 3após a adição de linhas no arquivo, como posso salvá-lo?
Sumit Bijvani
2
ok tudo pronto, agora como posso conectar ao ftp?
Sumit Bijvani
7
Oi Sumit. Vi é um editor complicado e arrogante. Para salvar seu trabalho, digite escape e, em seguida, ": wq" (sem as aspas) e pressione enter. Quanto ao FTP, é difícil responder porque será baseado no seu cliente FTP. Se eu tiver tempo, tentarei anexar algumas instruções à minha resposta para configurar alguns clientes FTP populares. Pessoalmente, eu uso o Aptana Studio. No Aptana, você cria um site SFTP e fornece ao Aptana o arquivo de autenticação de chave pública que você obteve ao criar sua instância do EC2. Se você estiver usando o filezilla, tente usar o pageant.exe. Felicidades!
Clone45 01/03
6
Isto e excelente. Muito claro. Muito obrigado.
AC Patrice
11
Na verdade, talvez ele pudesse me dar crédito. Ele reposicionou minha resposta em 13 de janeiro.
clone45
27

Para habilitar o ftp passivo em um servidor EC2, você precisa configurar as portas que o servidor ftp deve usar para conexões de entrada e abrir uma lista de portas disponíveis para as conexões de dados do cliente ftp.

Não conheço o linux, mas os comandos que você postou são as etapas para instalar o servidor ftp, configurar as regras do firewall ec2 (por meio da API da AWS) e configurar o servidor ftp para usar as portas permitidas no firewall ec2 .

Portanto, esta etapa instala o cliente ftp (VSFTP)

> yum install vsftpd

Estas etapas configuram o 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=<Public IP of your instance> 
> /etc/init.d/vsftpd restart

mas as outras duas etapas são mais fáceis de executar por meio do console amazon em grupos de segurança do EC2. Lá, você precisa configurar o grupo de segurança designado ao seu servidor para permitir conexões nas portas 20,21 e 1024-1048

jaminto
fonte
Eu sei o que esses meios linhas, mas eu não sei onde a digitá-los ... Esse é o problema ...
SharkTheDark
1
na linha de comando no servidor em que você está instalando o servidor ftp?
jaminto
2
Conecte-se ao seu servidor via SSH: blog.taggesell.de/index.php?/archives/…
jaminto
Caso você ainda receba um erro (500 OOPS: vsftpd: recusando-se a executar com raiz gravável dentro de chroot ()), isso corrigiu o problema para mim: benscobie.com/…
kaore
Estou chocado que o FTP anônimo esteja ativado por padrão!
jeffkee
16

Obrigado @ clone45 pela boa solução. Mas eu tinha apenas um problema importante no apêndice b de sua solução. Imediatamente depois de alterar o diretório inicial para var / www / html, não consegui me conectar ao servidor por meio de ssh e sftp, pois sempre mostra os seguintes erros

permission denied (public key)

ou no FileZilla, recebi este erro:

No supported authentication methods available (server: public key)

Mas eu poderia acessar o servidor através da conexão FTP normal.

Se você encontrou o mesmo erro, basta desfazer o apêndice b da solução @ clone45, defina o diretório inicial padrão do usuário:

sudo usermod -d /home/username/ username

Mas quando você define o diretório inicial padrão do usuário, o usuário tem acesso a muitas outras pastas fora de / var / www / http. Portanto, para proteger seu servidor, siga estas etapas:

1- Criar grupo sftponly Crie um grupo para todos os usuários que você deseja restringir o acesso apenas a ftp e sftp para var / www / html. para fazer o grupo:

sudo groupadd sftponly

2- Prenda o chroot Para restringir o acesso desse grupo ao servidor via sftp, você deve prender o chroot para não permitir que os usuários do grupo acessem qualquer pasta, exceto a pasta html, dentro do diretório inicial. para fazer isso, abra o /etc/ssh/sshd.config no vim com o sudo. No final do arquivo, por favor, comente esta linha:

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

E adicione esta linha abaixo disso:

Subsystem sftp internal-sftp

Então substituímos o subsistema pelo sftp interno. Em seguida, adicione as seguintes linhas abaixo:

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

Após adicionar esta linha, salvei minhas alterações e reiniciei o serviço ssh:

sudo service sshd restart

3- Adicione o usuário ao grupo sftponly Qualquer usuário que você queira restringir seu acesso deve ser membro do grupo sftponly. Portanto, associamos a sftponly por: sudo usermod -G sftponly nome de usuário

4- Restrinja o acesso do usuário a apenas var / www / html Para restringir o acesso do usuário a apenas a pasta var / www / html, precisamos criar um diretório no diretório inicial (com o nome de 'html') desse usuário e montar / var / www para / home / nome de usuário / html da seguinte maneira:

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

5- Defina o acesso de gravação Se o usuário precisar de acesso de gravação para / var / www / html, você deverá prender o usuário em / var / www, que deve ter root: propriedade e permissões de root de 755. Você precisará fornecer / var / www / html propriedade de root: sftponly e permissões de 775 adicionando as seguintes linhas:

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 o acesso ao shell Se você deseja restringir o acesso ao não acessar o shell para torná-lo mais seguro, basta alterar o shell padrão para bin / false, como a seguir:

sudo usermod -s /bin/false username
Iman Sedighi
fonte
no seu sudo mount --bind /var/www /home/username/htmlme disseram que não há pasta www. Presumo que isso seja feito a partir da raiz (onde está a pasta / home)?
elliotrock
1
sudo chown root:www /var/www/htmlstates chown: grupo inválido: 'root: www'
elliotrock
2
A parte 6 deve ser melhor sudo usermod -s /sbin/nologin usernamedevido às restrições de shell padrão do módulo pam do vsftpd (e parece funcionar melhor no meu caso). E a parte 4 mountprecisa ser feita em todas as reinicializações, por isso é uma boa ideia colocá-la no rc.local.
precisa
11

Ótimo artigo ... funcionou como uma brisa no Amazon Linux AMI.

Mais dois comandos úteis:

Para alterar a pasta de upload FTP padrão

Passo 1:

edit /etc/vsftpd/vsftpd.conf

Etapa 2: crie uma nova entrada na parte inferior da página:

local_root=/var/www/html

Para aplicar permissão de leitura, gravação e exclusão nos arquivos da pasta, para que você possa gerenciar usando um dispositivo FTP

find /var/www/html -type d -exec chmod 777 {} \;
Ravi Shanker
fonte
11
que chmods todos os arquivos e pastas para 777, o que não é seguro para um site
sergiogx
ESTÁ BEM. Então, que mudança você sugere sobre isso?
Ravi Shankar
3
Você deve atribuir as permissões necessárias, não basta abrir todas as permissões para tudo ou você está pedindo problemas. Por exemplo, o uso de chmod -R ug + rw / var / www / html concederá permissões de leitura e gravação para usuário e grupo a todos os arquivos sem conceder permissões de execução desnecessárias e permissões para outros. Em seguida, configure usuários e grupos de acordo para que você não precise modificar outros. Ou seja, se o usuário do ftp puder ler e gravar todos os arquivos e o servidor da web puder ler, você está definido. Coloque os dois usuários no mesmo grupo e adicione rw ao usuário er ao grupo.
AaronM
Você deve aplicar o 775 ao / var / www / html. o restante das subpastas e arquivos pode obter permissões de acordo com a necessidade. 777 é muito inseguro.
Iman Sedighi
6

Caso você tenha o ufw ativado, lembre-se de adicionar ftp:

> sudo ufw allow ftp

Levei 2 dias para perceber que eu habilitei o ufw.

chbong
fonte
ou iptables, ou ... sim, eu sempre esqueço também!
JSH
6

Não estará ok até você adicionar seu usuário ao grupo www pelos seguintes comandos:

sudo usermod -a -G www <USER>

Isso resolve o problema de permissão.

Defina o caminho padrão adicionando isto:

local_root=/var/www/html
user1802434
fonte
4

Não se esqueça de atualizar o firewall do iptables se você tiver um para permitir os intervalos 20-21 e 1024-1048.

Faça isso em / etc / sysconfig / iptables

Adicionando linhas como esta:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACEITAR

-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024: 1048 -j ACEITAR

E reinicie o iptables com o comando:

serviço sudo iptables restart

Kevin Meek
fonte
4

Simplifiquei as etapas do clone45:

Abra as portas como ele mencionou

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
Willem Bressers
fonte
2

Eu segui a resposta do clone45 até o fim. Um ótimo artigo! Como eu precisava do acesso ao FTP para instalar plug-ins em um dos meus sites wordpress, alterei o diretório inicial para / var / www / mysitename. Então continuei adicionando meu usuário ftp ao grupo apache (ou www) assim:

sudo usermod -a -G apache myftpuser

Depois disso, ainda vi esse erro na página de instalação do plug-in do WP: "Não foi possível localizar o diretório de conteúdo do WordPress (wp-content)". Pesquisou e encontrou esta solução em uma sessão de perguntas e respostas do wp.org: https://wordpress.org/support/topic/unable-to-locate-wordpress-content-directory-wp-content e adicionou o seguinte ao final do wp- config.php:

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

Depois disso, meu plugin WP foi instalado com sucesso.

CodeBrew
fonte
0

talvez valha a pena mencionar, além da resposta do clone45 :

Corrigindo permissões de gravação para usuários FTP com chroot no vsftpd

A versão vsftpd que acompanha o Ubuntu 12.04 Precise não permite que usuários locais com chroot escrevam por padrão. Por padrão, você terá isso em /etc/vsftpd.conf :

chroot_local_user=YES
write_enable=YES

Para permitir que os usuários locais escrevam, você precisa adicionar o seguinte parâmetro:

allow_writeable_chroot=YES

Nota: Problemas com permissões de gravação podem aparecer como os seguintes erros do FileZilla :

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

Referências:
Corrigindo permissões de gravação para usuários FTP com chroot no vsftpd
VSFTPd parou de funcionar após a atualização

Hartmut
fonte
0

Caso você esteja recebendo uma senha incorreta do 530

Mais 1 passo necessário

no arquivo / etc / shells

Adicione a seguinte linha

/ bin / false

Varun Bhatia
fonte
-2

O FileZila é uma boa ferramenta de FTP para configurar com o Amazon Cloud.

  1. Faça o download do cliente FileZila em https://filezilla-project.org/
  2. Clique em Arquivo -> Site Manager ->
  3. Novo site
  4. Forneça o endereço IP do nome do host da sua localização na nuvem amazon (porta se houver)
  5. Protocolo - SFTP (pode mudar com base nos seus requisitos)
  6. Tipo de login - Normal (portanto, o sistema não solicitará a senha toda vez)
  7. Forneça nome de usuário e senha.
  8. Conectar.

Você precisa executar essas etapas apenas uma vez, depois ele fará o upload do conteúdo para o mesmo endereço IP e o mesmo site.

Pratima
fonte