Introdução

FTP, sigla para File Transfer Protocol, é um protocolo de rede que já foi amplamente utilizado para a transferência de arquivos entre um cliente e um servidor. Desde então foi substituído por formas mais rápidas, mais seguras e mais convenientes de entregar arquivos. Muitos usuários casuais da Internet esperam baixar diretamente de seu navegador web com https, e usuários de linha de comando são mais propensos a usar protocolos seguros, como o scp ou sFTP.,

FTP ainda é usado para suportar aplicações antigas e fluxos de trabalho com necessidades muito específicas. Se você tiver uma escolha do protocolo a usar, considere explorar as opções mais modernas. Quando você precisa de FTP, no entanto, vsftpd é uma excelente escolha. Otimizado para segurança, desempenho e estabilidade, o vsftpd oferece uma forte proteção contra muitos problemas de segurança encontrados em outros servidores FTP e é o padrão para muitas distribuições Linux.,

neste tutorial, vamos mostrar-lhe como configurar o vsftpd para permitir que um utilizador envie ficheiros para o seu directório pessoal usando FTP com credenciais de autenticação seguras por SSL/TLS.

pré-Requisitos

Para seguir este tutorial você vai precisar de:

  • Ubuntu 16.04 servidor com um utilizador que não o root com sudo privilégios: Você pode aprender mais sobre como configurar um usuário com esses privilégios em nosso Servidor Inicial de Instalação do Ubuntu 16.04 guia.

Uma vez que você tenha um servidor Ubuntu no lugar, você está pronto para começar.,

Passo 1 — Instalando o vsftpd

vamos começar atualizando nossa lista de pacotes e instalar o vsftpd daemon:

  • sudo apt-get update
  • sudo apt-get install vsftpd

Quando a instalação estiver concluída, nós vamos copiar o arquivo de configuração para que possamos começar com um espaço em branco de configuração, salvar o original como backup.

  • sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

com uma cópia de segurança da configuração no local, estamos prontos para configurar a firewall.

Passo 2-abrir a Firewall

verificaremos o estado da firewall para ver se está activa., Se assim for, vamos garantir que o tráfego FTP é permitido para que você não vai encontrar as regras de firewall bloqueando você quando chegar a hora de testar.

  • sudo ufw status

neste caso, apenas o SSH é permitido através de:

Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)

Você pode ter outras regras em vigor ou não de regras de firewall em tudo. Uma vez que apenas o tráfego ssh é permitido neste caso, vamos precisar adicionar regras para o tráfego FTP.,

vamos precisar para abrir as portas 20 e 21 para FTP, porta 990 para mais tarde, quando nós habilitar o TLS, e as portas 40000-50000 para o intervalo de passivo portas pretendemos definido no arquivo de configuração:

  • sudo ufw allow 20/tcp
  • sudo ufw allow 21/tcp
  • sudo ufw allow 990/tcp
  • sudo ufw allow 40000:50000/tcp
  • sudo ufw status

Agora, as nossas regras de firewall parece:

Com vsftpd instalado e as portas necessárias abertas, estamos prontos para avançar para a próxima etapa.

Passo 3-Preparar o diretório do Usuário

para este tutorial, vamos criar um usuário, mas você já pode ter um usuário que precisa de acesso FTP., Teremos o cuidado de preservar o acesso de um usuário existente aos seus dados nas instruções que se seguem. Mesmo assim, recomendamos que você comece com um novo usuário até que você tenha configurado e testado sua configuração.

Primeiro, vamos adicionar um utilizador de teste:

  • sudo adduser sammy

atribuir uma senha quando solicitado e sinta-se livre para carregar em “ENTER” através das outras instruções.

FTP é geralmente mais seguro quando os usuários estão restritos a um diretório específico.vsftpd realiza isto com chroot prisões., Quando chroot está habilitado para usuários locais, eles estão restritos ao seu diretório pessoal por padrão. No entanto, por causa da forma que vsftpd assegura o diretório, ele não pode ser escrito pelo Usuário. Isto é bom para um novo usuário que só deve se conectar através de FTP, mas um usuário existente pode precisar de escrever para a sua pasta pessoal se eles também shell access.,

neste exemplo, em vez de remover privilégios de escrita no directório principal, estamos irá criar uma ftp directório para servir como o chroot e um gravável files diretório para armazenar os arquivos reais.,33″>

Output
total 84 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 .4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..

em seguida, vamos criar o diretório onde os arquivos podem ser carregados e atribuir a propriedade para o usuário:

  • sudo mkdir /home/sammy/ftp/files
  • sudo chown sammy:sammy /home/sammy/ftp/files

Uma seleção de permissões no files diretório deve retornar o seguinte:

  • sudo ls -la /home/sammy/ftp

Finalmente, vamos adicionar um test.txt o ficheiro a utilizar quando estamos a testar mais tarde:

  • echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt

Agora que já garantiu o ftp diretório e permitido o acesso do usuário para o files diretório, vamos voltar nossa atenção para configuração.,

Passo 4-Configurar o acesso FTP

estamos a planear permitir que um único utilizador com uma conta shell local se ligue com FTP. As duas opções de chaves para isto já estão definidas em vsftpd.conf. Comece por abrir o ficheiro de configuração para verificar se as configurações na sua configuração correspondem às seguintes:

  • sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf

em seguida, vamos precisar mudar alguns valores no arquivo. A fim de permitir que o usuário faça upload de arquivos, vamos descomente write_enable configuração de modo que temos:

/etc/vsftpd.,conf
. . .write_enable=YES. . .

também descomentaremos o chroot para impedir que o utilizador ligado ao FTP acesse quaisquer ficheiros ou comandos fora da árvore de directórios.

/ etc / vsftpd.conf
. . .chroot_local_user=YES. . .

vamos adicionar um user_sub_token para inserir o nome de usuário em nossos local_root directory caminho para a nossa configuração vai trabalhar para este utilizador e de quaisquer futuros usuários que podem ser adicionados.

/ etc / vsftpd.,conf
user_sub_token=$USERlocal_root=/home/$USER/ftp

vamos limitar a gama de portos que podem ser usados para FTP passivo para garantir conexões suficientes estão disponíveis:

/etc / vsftpd.conf
pasv_min_port=40000pasv_max_port=50000

nota: Nós pré-abrimos as portas que definimos aqui para o intervalo de portas passivo. Se você alterar os valores, certifique-se de atualizar suas configurações de firewall.

Uma vez que estamos apenas planejando permitir o acesso FTP em uma base caso a caso, vamos configurar a configuração para que o acesso seja dado a um usuário apenas quando eles são explicitamente adicionados a uma lista, em vez de por padrão:

/etc/vsftpd.,conf
userlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO

userlist_deny comuta a lógica. Quando ele é definido para “sim”, os usuários na lista são negados o acesso FTP. Quando é definido como “não”, apenas os usuários na lista são permitidos o acesso. Quando você terminar de fazer a mudança, salve e saia do arquivo.

finalmente, vamos criar e adicionar o nosso utilizador ao ficheiro., Nós vamos usar o -a sinalizador para acrescentar ao arquivo:

  • echo "sammy" | sudo tee -a /etc/vsftpd.userlist

verifique se ele foi adicionado como você espera:

cat /etc/vsftpd.userlist
Output
sammy

Reinicie o daemon para carregar as alterações de configuração:

  • sudo systemctl restart vsftpd

Agora estamos prontos para testar.

Passo 5-testar o acesso FTP

configurámos o servidor para permitir que apenas o utilizador sammy se ligue através de FTP. Vamos certificar-nos que é esse o caso.

usuários anônimos não devem se conectar: nós desativamos o acesso anônimo., Aqui vamos testar isso tentando conectar anonimamente. Se nós temos feito isso corretamente, os usuários anônimos deve ser negada a permissão de:

  • ftp -p 203.0.113.0

Fechar a conexão:

  • bye

outros Usuários que sammy deve-se não conseguir ligar: ao lado, vamos tentar conectar-se como o nosso sudo usuário. Eles também devem ter acesso negado, e isso deve acontecer antes que eles possam inserir sua senha.,e escrever arquivos: Aqui, nós vamos certifique-se de que o nosso usuário designado canconnect:

  • ftp -p 203.0.113.0

vamos mudar para o files diretório e, em seguida, use o get comando para transferir o arquivo de teste que criamos anteriormente, para a nossa máquina local:

  • cd files
  • get test.txt

vamos virar a direita de volta e tenta carregar o arquivo com um novo nome para teste permissões de gravação:

  • put test.txt upload.txt

Fechar a conexão:

  • bye

Agora que nós já testamos a nossa configuração, nós vamos tomar medidas para proteger ainda mais o nosso servidor.,

Passo 6-garantir as transacções

Uma vez que o FTP não encripta quaisquer dados em trânsito, incluindo as credenciais do utilizador, vamos permitir que o TTL/SSL forneça essa encriptação. O primeiro passo é criar os certificados SSL para usar com vsftpd.

usaremosopenssl para criar um novo certificado e usar a bandeira-days para torná-lo válido por um ano. No mesmo comando, vamos adicionar uma chave privada RSA de 2048 bits., Em seguida, definindo tanto o id

e-outopções para o mesmo valor, a chave privada e o certificado serão localizados no mesmo arquivo.

faremos isto com o seguinte comando:

  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

ser-lhe-á solicitado que forneça informações de endereço para o seu certificado., Substitua suas próprias informações para as perguntas abaixo:

Para informações mais detalhadas sobre o certificado de sinalizadores, consulte o OpenSSL Essentials: Trabalhar com Certificados SSL, Chaves Privadas e representantes de suporte ao cliente

Depois de criar o certificado, abra o vsftpd arquivo de configuração novamente:

  • sudo nano /etc/vsftpd.conf

em Direção à parte inferior do arquivo, você deve duas linhas que começam com rsa_. Comentá-los para que pareçam:

/etc/vsftpd.,conf
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Abaixo-los, adicione as seguintes linhas que apontam para o certificado e a chave privada que acabamos de criar:

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem

Depois disso, forçaremos o uso de SSL, o que impedirá que clientes que não conseguem lidar com TLS se conectem. Isto é necessário para garantir que todo o tráfego é criptografado, mas pode forçar o seu usuário FTP a mudar de clientes. Mudar ssl_enable para YES:

/etc/vsftpd.,conf
ssl_enable=YES

Depois disso, adicione as seguintes linhas para negar explicitamente conexões anônimas sobre SSL e para exigir SSL tanto para transferência de dados como para logins:

/etc / vsftpd.conf
allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES

Após isso, vamos configurar o servidor para usar TLS, o preferido sucessor do SSL, adicionando as seguintes linhas:

/etc/vsftpd.conf
ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO

finalmente, vamos adicionar mais duas opções. Primeiro, não vamos exigir a reutilização SSL porque ele pode quebrar muitos Clientes FTP., Vamos precisar de suites de cifra” alta”, que atualmente significa comprimentos de chave iguais ou superiores a 128 bits:

/etc/vsftpd.conf
require_ssl_reuse=NOssl_ciphers=HIGH

quando terminar, grave e feche o ficheiro.

Agora, precisamos reiniciar o servidor para que as alterações façam efeito:

  • sudo systemctl restart vsftpd

neste ponto, não seremos mais capazes de nos conectar com um cliente de linha de comando inseguro. Se tentássemos, veríamos algo como:

A seguir, vamos verificar que podemos nos conectar usando um cliente que suporta TLS.,

Step 7 — testando TLS com FileZilla

Os Clientes FTP mais modernos podem ser configurados para usar a encriptação TLS. Vamos demonstrar como se conectar usando o FileZilla por causa de seu suporte de plataforma cruzada. Consulte a documentação para outros clientes.

Quando abrir pela primeira vez o FileZilla, encontre o ícone do Gestor de páginas logo abaixo do ficheiro word, o ícone mais à esquerda na linha superior. Carregue nele:

uma nova janela irá abrir., Clique no botão” novo Site”no canto inferior direito:


Em” Meus Sites “irá aparecer um novo ícone com as palavras” novo site”. Você pode nomeá-lo agora ou retornar mais tarde e usar o botão mudar o nome.

Você deve preencher o campo “Host” com o nome ou endereço IP. No menu” encriptação”, seleccione”exigir FTP explícito sobre TLS”.

para “tipo de Logon”, seleccione”pedir a senha”. Preencha o utilizador FTP que criou no campo “utilizador”:


Clique em” ligar ” no fundo da interface., Ser-lhe-á pedida a senha do utilizador:


Carregue em “OK” para se ligar. Deverá agora estar ligado ao seu servidor com a encriptação TLS/SSL.


Quando você aceitou o certificado, faça duplo-click nafiles pasta e arraste o envio.txt para a esquerda para confirmar que você é capaz de baixar arquivos.

Quando você fez isso, clique com o botão direito na cópia local, renomeando-a para upload-tls.txt ‘ e arraste-o de volta para o servidor para confirmar que pode enviar ficheiros.,


agora confirmou que pode transferir com segurança e sucesso os ficheiros com SSL/TLS activados.

Passo 8 — desativar o acesso à linha de comandos (opcional)

Se não puder usar o TLS por causa dos requisitos do cliente, poderá ganhar alguma segurança ao desactivar a capacidade do utilizador de FTP de fazer login de qualquer outra forma. Uma maneira relativamente direta de impedi-lo é criando uma shell personalizada. Isto não irá fornecer qualquer encriptação, mas irá limitar o acesso de uma conta comprometida a arquivos acessíveis por FTP.,

Primeiro, abra um arquivo chamado ftponly no diretório bin:

  • sudo nano /bin/ftponly

vamos adicionar uma mensagem dizendo ao usuário o porquê de eles não é possível fazer.,/p>

#!/bin/shecho "This account is limited to FTP access only."

Alterar as permissões para tornar o arquivo executável:

  • sudo chmod a+x /bin/ftponly

Abra a lista de válido conchas:

  • sudo nano /etc/shells

Na parte inferior, adicione:

/etc/shells
. . ./bin/ftponly

Atualizar o shell do usuário com o seguinte comando:

  • sudo usermod sammy -s /bin/ftponly

Agora, tente fazer logon como sammy:

Você deve ver algo como:

Output
This account is limited to FTP access only.Connection to 203.0.113.0 closed.

Isso confirma que o usuário não pode mais ssh para o servidor e está limitada ao acesso FTP apenas.,

conclusão

neste tutorial cobrimos a configuração de FTP para usuários com uma conta local. Se você precisar usar uma fonte de autenticação externa, você pode querer olhar para o suporte do vsftpd para usuários virtuais. Isto oferece um conjunto rico de opções através do uso do PAM, os módulos de autenticação Pluggable, e é uma boa escolha se você gerenciar usuários em outro sistema, como LDAP ou Kerberos.

Articles

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *