Este artigo descreve como instalar e configurar um servidor FTP no Ubuntu 20.04 que você usa para compartilhar arquivos entre seus dispositivos.
FTP (File Transfer Protocol) é um protocolo de rede padrão usado para transferir arquivos de e para uma rede remota. Existem vários servidores FTP de código aberto disponíveis para Linux. Os mais conhecidos e amplamente usados são PureFTPd, ProFTPD e vsftpd . Estaremos instalando o vsftpd (Very Secure Ftp Daemon), um servidor FTP estável, seguro e rápido. Também mostraremos como configurar o servidor para restringir os usuários ao seu diretório inicial e criptografar toda a transmissão com SSL / TLS.
Embora o FTP seja um protocolo muito popular, para transferências de dados mais seguras e rápidas, você deve usar SCP ou SFTP .
Instalando o vsftpd no Ubuntu 20.04 #
O pacote vsftpd está disponível nos repositórios do Ubuntu. Para instalá-lo, execute os seguintes comandos:
atualização do apt sudo
sudo apt install vsftpd
O serviço ftp iniciará automaticamente assim que o processo de instalação for concluído. Para verificar isso, imprima o status do serviço:
sudo systemctl status vsftpd
A saída deve mostrar que o serviço vsftpd está ativo e em execução:
● vsftpd.serviço - servidor FTP vsftpd Carregado: carregado (/ lib / systemd / system / vsftpd.serviço; ativado; predefinição do fornecedor: habilitado) Ativo: ativo (em execução) desde Ter 2021-03-02 15:17:22 UTC; 3s atrás ..
Configurando vsftpd #
A configuração do servidor vsftpd é armazenada no / etc / vsftpd.conf
Arquivo.
A maioria das configurações do servidor estão bem documentadas dentro do arquivo. Para todas as opções disponíveis, visite a página de documentação do vsftpd.
Nas seções a seguir, examinaremos algumas configurações importantes necessárias para configurar uma instalação vsftpd segura.
Comece abrindo o arquivo de configuração vsftpd:
sudo nano / etc / vsftpd.conf
1. Acesso FTP #
Permitiremos acesso ao servidor FTP apenas para usuários locais. Procure pelo anonymous_enable
e local_enable
diretivas e verifique se sua configuração corresponde às linhas abaixo:
anonymous_enable = NO local_enable = YES
2. Ativando uploads #
Localize e descomente o write_enable
diretiva para permitir alterações no sistema de arquivos, como upload e remoção de arquivos:
write_enable = YES
3. Chroot jail #
Para evitar que usuários locais de FTP acessem arquivos fora de seus diretórios pessoais, descomente o lne começando com chroot_local_user
:
chroot_local_user = YES
Por padrão, por razões de segurança, quando o chroot está habilitado, o vsftpd se recusará a fazer upload de arquivos se o diretório em que os usuários estão bloqueados for gravável.
Use uma das soluções abaixo para permitir uploads quando o chroot estiver ativado:
Método 1. - A opção recomendada é manter o recurso chroot habilitado e configurar os diretórios FTP. Neste exemplo, vamos criar um
/ etc / vsftpd.confftp
diretório dentro da página inicial do usuário, que servirá como chroot e um graváveluploads
diretório para upload de arquivos:user_sub_token = $ USER local_root = / home / $ USER / ftp
Método 2. - Outra opção é habilitar o
/ etc / vsftpd.confallow_writeable_chroot
diretiva:allow_writeable_chroot = YES
Use esta opção apenas se você deve conceder acesso gravável ao seu usuário para seu diretório home.
4. Conexões de FTP passivas nº
Por padrão, vsftpd usa o modo ativo. Para usar o modo passivo, defina o intervalo mínimo e máximo de portas:
/ etc / vsftpd.confpasv_min_port = 30000 pasv_max_port = 31000
Você pode usar qualquer porta para conexões FTP passivas. Quando o modo passivo está ativado, o cliente FTP abre uma conexão com o servidor em uma porta aleatória no intervalo que você escolheu.
5. Limitando o número de login do usuário
Você pode configurar o vsftpd para permitir que apenas certos usuários façam login. Para fazer isso, adicione as seguintes linhas ao final do arquivo:
/ etc / vsftpd.confuserlist_enable = YES userlist_file = / etc / vsftpd.user_list userlist_deny = NÃO
Quando esta opção está ativada, você precisa especificar explicitamente quais usuários podem fazer login, adicionando os nomes de usuário ao / etc / vsftpd.Lista de usuários
arquivo (um usuário por linha).
6. Protegendo Transmissões com SSL / TLS #
Para criptografar as transmissões FTP com SSL / TLS, você precisará ter um certificado SSL e configurar o servidor FTP para usá-lo.
Você pode usar um certificado SSL existente assinado por uma autoridade de certificação confiável ou criar um certificado autoassinado.
Se você tiver um domínio ou subdomínio apontando para o endereço IP do servidor FTP, pode gerar rapidamente um certificado Let's Encrypt SSL gratuito.
Geraremos uma chave privada de 2.048 bits e um certificado SSL autoassinado que será válido por dez anos:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem
Tanto a chave privada quanto o certificado serão salvos no mesmo arquivo.
Assim que o certificado SSL for criado, abra o arquivo de configuração vsftpd:
sudo nano / etc / vsftpd.conf
Encontre o rsa_cert_file
e rsa_private_key_file
diretivas, altere seus valores para o pam
caminho do arquivo e definir o ssl_enable
diretiva para SIM
:
rsa_cert_file = / etc / ssl / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = SIM
Se não for especificado de outra forma, o servidor FTP usará apenas TLS para fazer conexões seguras.
Reinicie o serviço vsftpd #
Depois de terminar a edição, o arquivo de configuração vsftpd (excluindo comentários) deve ser semelhante a este:
/ etc / vsftpd.conflisten = NÃO listen_ipv6 = YES anonymous_enable = NÃO local_enable = YES write_enable = YES dirmessage_enable = YES use_localtime = YES xferlog_enable = YES connect_from_port_20 = SIM chroot_local_user = SIM secure_chroot_dir = vscroot_dir_seguro = vscpam_pam / run / run_dir = vscert / sspert / runlame_dir = vscert / rpam_vote / runlame_20 = SIM chroot_local_user = YES secure_chroot_dir = vscert / pamote / run / run_dir = vscert / sspert / runlame_dir = vspamft / runlame_vista / rservice_dir = vspamft / runlame_de_vista / sspert / runlame_vote_vssaft / runlame_dir = vspamft / runlame_vazia / sspert / rundir = vspamft / runlame_desvazio / vspert / pamft / runlive privado / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = SIM user_sub_token = $ USER local_root = / home / $ USER / ftp pasv_min_port = 30000 pasv_max_port = 31000 userlist_enable = SIM userlist_file = / etc / vsftpd.user_list userlist_deny = NÃO
Salve o arquivo e reinicie o serviço vsftpd para que as alterações tenham efeito:
sudo systemctl restart vsftpd
Abrindo o Firewall #
Se você estiver executando um firewall UFW, será necessário permitir o tráfego de FTP.
Para abrir a porta 21
(Porta de comando FTP), porta 20
(Porta de dados FTP) e 30000-31000
(Intervalo de portas passivas), execute os seguintes comandos:
sudo ufw allow 20: 21 / tcp
sudo ufw allow 30000: 31000 / tcp
Para evitar ser bloqueado, certifique-se de que a porta 22
está aberto:
sudo ufw allow OpenSSH
Recarregue as regras do UFW desativando e reativando o UFW:
sudo ufw desativar
sudo ufw enable
Para verificar as alterações, execute:
sudo ufw status
Status: ativo para ação de - ------ ---- 20: 21 / tcp PERMITIR em qualquer lugar 30000: 31000 / tcp PERMITIR em qualquer lugar OpenSSH PERMITIR em qualquer lugar 20: 21 / tcp (v6) PERMITIR em qualquer lugar (v6) 30000: 31000 / tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Criando usuário de FTP nº
Para testar o servidor FTP, vamos criar um novo usuário.
- Se o usuário ao qual você deseja conceder acesso ao FTP já existe, pule a primeira etapa.
- Se você definir
allow_writeable_chroot = YES
em seu arquivo de configuração, pule a terceira etapa.
Crie um novo usuário chamado
newftpuser
:sudo adduser newftpuser
Adicione o usuário à lista de usuários de FTP permitidos:
echo "newftpuser" | sudo tee -a / etc / vsftpd.Lista de usuários
Crie a árvore de diretórios do FTP e defina as permissões corretas:
sudo mkdir -p / home / newftpuser / ftp / upload
sudo chmod 550 / home / newftpuser / ftp
sudo chmod 750 / home / newftpuser / ftp / upload
sudo chown -R newftpuser: / home / newftpuser / ftp
Conforme discutido na seção anterior, o usuário será capaz de enviar seus arquivos para o
ftp / upload
diretório.
Neste ponto, seu servidor FTP está totalmente funcional. Você deve ser capaz de se conectar ao servidor usando qualquer cliente FTP que possa ser configurado para usar criptografia TLS, como FileZilla .
Desativando Acesso Shell #
Por padrão, ao criar um usuário, se não for especificado explicitamente, o usuário terá acesso SSH ao servidor. Para desabilitar o acesso ao shell, crie um novo shell que imprimirá uma mensagem informando ao usuário que sua conta está limitada apenas ao acesso FTP.
Execute os seguintes comandos para criar o / bin / ftponly
arquivo e torná-lo executável:
echo -e '#!/ bin / sh \ necho "Esta conta é limitada apenas para acesso FTP."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Anexe o novo shell à lista de shells válidos no / etc / shells
Arquivo:
echo "/ bin / ftponly" | sudo tee -a / etc / shells
Altere o shell do usuário para / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Você pode usar o mesmo comando para mudar o shell de todos os usuários que você deseja dar apenas acesso FTP.
Conclusão #
Mostramos como instalar e configurar um servidor FTP seguro e rápido em seu Ubuntu 20.04 sistema.
Se você tiver alguma dúvida ou feedback, fique à vontade para deixar um comentário.