SempreUPdate
Notícias sobre Ubuntu, Debian, Fedora, Linux, Android, Tecnologia, LibreOffice e muito mais!

Como instalar e configurar o servidor de FTP no Ubuntu

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.

 

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-get 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.
No Systemd:
# systemctl start vsftpd
# systemctl enable vsftpd

 

No SysVInit:

# service vsftpd start
# chkconfig --level 35 vsftpd on
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.

No Systemd:

# systemctl restart vsftpd

No SysVInit:

# service vsftpd restart

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 "Gabriel Pires, Colaborador" -s /bin/bash gabriel
$ sudo passwd gabriel
Então, temos que listar explicitamente o usuário gabriel no arquivo /etc/vsftpd.userlist com o comando echo e o comando tee como abaixo:
$ echo "gabriel" | 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:gabriel) : 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:gabriel) : gabriel
 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 (gabriel, 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/gabriel/ftp
$ sudo chown nobody:nogroup /home/gabriel/ftp
$ sudo chmod a-w /home/gabriel/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/gabriel/ftp/files
 $ sudo chown -R gabriel:gabriel /home/gabriel/ftp/files
 $ sudo chmod -R 0770 /home/gabriel/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.

 

No Systemd:

# systemctl restart vsftpd

 

No SysVInit:

# service vsftpd restart
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:gabriel) : gabriel
 Password:
 230 Login successful.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> ls

Agora servidor instalado, configurado e pronto.

Fonte Fonte
Comentários