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 / download de arquivos entre dois computadores em uma rede. No entanto, o FTP por ser naturalmente inseguro, ele transmite dados juntamente com credenciais de usuário (nome de usuário e senha) sem criptografia.

Aviso: 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 pacote 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:

[————- On SystemD ————-
# systemctl start vsftpd
# systemctl enable vsftpd
————- On 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
OR
$ 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]

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

[————- On SystemD ————-
# systemctl restart vsftpd
————- On 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]

Aviso: Definir a opção allow_writeable_chroot=YES pode ser tão perigoso, tem possíveis implicações de segurança, especialmente se os usuários tiverem permissão de upload, ou mais, shell. Use-a somente se você souber exatamente o que você está fazendo.

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:

[————- On SystemD ————-
# systemctl restart vsftpd
————- On 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.

você pode gostar também Mais do autor

Comentários