Como instalar e configurar o servidor de FTP no Ubuntu

FTP

servidor de FTP

Neste tutorial, vamos mostrar como instalar, configurar e proteger um servidor FTP (VSFTPD em completo “Very Secure FTP Daemon“) no Ubuntu para ter uma poderosa segurança contra vulnerabilidades no FTP.

Quer uma internet rápida para ver filmes e jogar online sem travamentos e com o preço bem baixo? Acesse o NET Telefone e fale com um especialista NET para conhecer os pacotes disponíveis para você!

O FTP é um protocolo de rede padrão relativamente antigo e mais usado usado para fazer o upload ou download de arquivos entre dois computadores em uma rede. No entanto, o FTP por ser naturalmente inseguro, pois ele transmite dados juntamente com credenciais de usuário (nome de usuário e senha) sem criptografia. 

Se você planeja usar FTP, considere a possibilidade de configurar a conexão com SSL/TLS. Caso contrário, é sempre melhor usar FTP seguro, como SFTP.

Etapa 1: Instalando o Servidor VsFTP no Ubuntu

1. Primeiro, precisamos atualizar a lista de fontes do pacotes do sistema e, em seguida, instalar o pacote binário VSFTPD da seguinte maneira:

$ sudo apt update

$ sudo apt-get install vsftpd

2. Uma vez concluída a instalação, o serviço estará desativado inicialmente. Portanto, precisamos iniciá-lo manualmente pelo tempo médio e também ativá-lo para iniciar automaticamente a partir do próximo boot do sistema.

systemctl start vsftpd
systemctl enable vsftpd

3. Em seguida, se você tiver o firewall UFW ativado (não ativado por padrão) no servidor, você deve abrir as portas 21 e 20 onde os daemons de FTP estão ouvindo, para permitir o acesso a serviços FTP de máquinas remotas e, em seguida, adicionar As novas regras de firewall da seguinte forma:

$ sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw status

Etapa 2: Configurando e protegendo o servidor VsFTP no Ubuntu

4. Vamos agora executar algumas configurações para configurar e proteger nosso servidor FTP, primeiro vamos criar um backup do arquivo de configuração original /etc/vsftpd/vsftpd.conf assim:

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

Em seguida, vamos abrir o arquivo de configuração vsftpd.

$ sudo vi /etc/vsftpd.conf

Ou

$ sudo nano /etc/vsftpd.conf

Adicione / modifique as seguintes opções com estes valores:

anonymous_enable=NO # disable anonymous login
local_enable=YES # permit local logins
write_enable=YES # enable FTP commands which change the filesystem
local_umask=022 # value of umask for file creation for local users
xferlog_enable=YES # a log file will be maintained detailing uploads and downloads
dirmessage_enable=YES # enable showing of messages when users first enter a new directory
listen=NO # prevent vsftpd from running in standalone mode
connect_from_port_20=YES # use port 20 (ftp-data) on the server machine for PORT style
connectionsxferlog_std_format=YES # keep standard log file format
userlist_enable=YES # enable vsftpd to load a list of usernames
listen_ipv6=YES # vsftpd will listen on an IPv6 socket instead of an IPv4
onepam_service_name=vsftpd # name of the PAM service vsftpd will use
tcp_wrappers=YES # turn on tcp wrappers

5. Agora, configure VSFTPD para permitir/negar o acesso FTP aos usuários com base no arquivo de lista de usuários /etc/vsftpd.userlist.

Observe que, por padrão, os usuários listados em userlist_file=/etc/vsftpd.userlist têm acesso de login negado userlist_deny=YES altere para userlist_enable=YES.

Mas, a opção userlist_deny=NO torce o significado da configuração padrão, de modo que somente usuários cujo nome de usuário esteja explicitamente listado em userlist_file=/etc/vsftpd.userlist terão permissão para fazer login no servidor FTP.

userlist_enable=YES # vsftpd will load a list of usernames, from the filename given by userlist_file userlist_file=/etc/vsftpd.userlist # stores usernames. userlist_deny=NO

Quando os usuários efetuam login no servidor FTP, eles são colocados em um cárcere chrootado (diretório de processo corrente), este é o diretório raiz local que atuará como seu diretório home para a sessão FTP somente.

Em seguida, examinaremos dois possíveis cenários de como configurar o diretório chrooted jail (local root), conforme explicado abaixo.

6. Neste ponto, vamos adicionar/modificar/descomentar essas duas opções a seguir para restringir os usuários FTP para seus diretórios Home.

chroot_local_user=YES

allow_writeable_chroot=YES

A opção chroot_local_user=YES significa que os usuários locais serão colocados em um chroot jail, seu diretório base por padrão após o login.

E devemos também entender que VSFTPD não permite que o diretório chroot jail seja gravável, por padrão, por motivos de segurança, no entanto, podemos usar a opção allow_writeable_chroot = YES para desabilitar esta configuração.

Salve o arquivo e feche-o. Em seguida, temos de reiniciar VSFTPD serviços para as alterações acima para ter efeito.

systemctl restart vsftpd

Etapa 3: Testando o Servidor VsFTP no Ubuntu

7. Agora vamos testar o servidor FTP criando um usuário FTP com comando useradd da seguinte maneira:
$ sudo useradd -m -c “SempreUpdate, Site” -s /bin/bash sempreupdate
$ sudo passwd sempreupdate
Então, temos que listar explicitamente o usuário sempreupdate no arquivo /etc/vsftpd.userlist com o comando echo e o comando tee como abaixo:
echo “sempreupdate” | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Agora é hora de testar nossas configurações acima estão funcionando conforme necessário. Começaremos testando logins anônimos. Podemos ver claramente a partir da saída abaixo que logons anônimos não são permitidos no servidor FTP:

# ftp 192.168.10.1 Connected to 192.168.10.1 (192.168.10.1). 220 Welcome to SempreUpdate FTP service. Name (192.168.10.1:sempreupdate) : anonymous 530 Permission denied. Login failed. ftp> bye 221 Goodbye.
9. Em seguida, vamos testar se um usuário não listado no arquivo /etc/vsftpd.userlist receberá permissão para login, o que não é verdade da saída a seguir:
# ftp 192.168.10.1 Connected to 192.168.10.1 (192.168.10.1). 220 Welcome to SempreUpdate FTP service. 530 Permission denied. Name (192.168.10.1:root) : user Login failed. ftp> bye 221 Goodbye.
10. Agora vamos realizar um teste final para determinar se um usuário listado no arquivo /etc/vsftpd.userlist, é realmente colocado em seu diretório pessoal após o login. E isso é verdade a partir da saída abaixo:
# ftp 192.168.10.1
Connected to 192.168.10.1 (192.168.10.1).
220 Welcome to SempreUpdate FTP service.
331 Please specify the password.
Name (192.168.10.1:sempreupdate) : sempreupdate
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Devemos notar que essas implicações de segurança não são específicas para VSFTPD, eles também podem afetar todos os outros daemons FTP que oferecem para colocar os usuários locais em cadeias chroot.Por esse motivo, na seção abaixo, explicaremos um método mais seguro de definir um diretório raiz local não-gravável diferente para um usuário.

Etapa 4: Configurar FTP Diretórios de Usuários no Ubuntu

11. Agora, abra o arquivo de configuração VSFTPD mais uma vez.

$ sudo vi /etc/vsftpd.conf

OU

$ sudo nano /etc/vsftpd.conf

E comente a opção não segura usando o caractere # como mostrado abaixo:

#allow_writeable_chroot=YES
Em seguida, crie o diretório raiz local alternativo para o usuário (sempreupdate, o seu possivelmente não é o mesmo) e defina as permissões necessárias desativando permissões de gravação para todos os outros usuários para este diretório:
$ sudo mkdir /home/sempreupdate/ftp
$ sudo chown nobody:nogroup /home/sempreupdate/ftp
$ sudo chmod a-w /home/sempreupdate/ftp
12. Em seguida, crie um diretório sob a raiz local com as permissões apropriadas onde o usuário irá armazenar seus arquivos:

sudo mkdir /home/sempreupdate/ftp/files

sudo chown -R sempreupdate:sempreupdate /home/sempreupdate/ftp/files

sudo chmod -R 0770 /home/sempreupdate/ftp/files/

Depois, adicione / modifique as opções abaixo no arquivo de configuração VSFTPD com seus valores correspondentes:
user_sub_token=$USER # inserts the username in the local root directory local_root=/home/$USER/ftp # defines any users local root directory
Salve o arquivo e feche-o. E reinicie os serviços VSFTPD com as configurações recentes.
systemctl restart vsftpd

13. Agora, vamos executar uma verificação final e certificar-se de que o diretório raiz local do usuário é o diretório FTP que criamos em seu diretório pessoal.

# ftp 192.168.10.1 Connected to 192.168.10.1 (192.168.10.1). 220 Welcome to SempreUpdate FTP service.331 Please specify the password. Name (192.168.10.1:sempreupdate) : sempreupdate Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls

Agora servidor instalado, configurado e pronto.

Acesse a versão completa
Sair da versão mobile