Como configurar o vsftpd no Debian

Como configurar o vsftpd no Debian

VSFTPD é o acrônimo de daemon FTP muito seguro: é um dos servidores FTP mais usados ​​no Linux e outros sistemas operacionais do tipo UNIX. É de código aberto e liberado sob a licença GPL, e suporta usuários virtuais e SSL para dados
criptografia. Neste tutorial, veremos como instalá -lo e configurá -lo no Linux.

Neste tutorial, você aprenderá:

  • Como instalar o VSFTPD no Debian 10
  • Como configurar o vsftpd
  • Como configurar o uso anônimo
  • Como configurar o login com usuários locais
  • Como configurar usuários virtuais
  • Como configurar o UFW para permitir o tráfego de entrada
Como configurar o vsftpd no Debian

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Debian 10 (Buster)
Programas vsftpd, openssl, libpam-pwdfile
Outro Permissões raiz para instalar e configurar o vsftpd
Convenções # - requer que os comandos linux -comidos sejam executados com privilégios de raiz diretamente como usuário root ou por uso de sudo comando
$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular

Instalação

O VSFTPD está disponível nos repositórios oficiais do Debian; portanto, para instalá -lo, podemos usar nosso gerenciador de pacotes favorito; É apenas uma questão de sincronizar os repositórios e instalar o pacote. Ambas as coisas podem ser realizadas por
executando os seguintes comandos:

$ sudo apt-get update && sudo apt-get install vsftpd 


Poucos segundos e o pacote será instalado em nosso sistema Debian. Os scripts de instalação incluídos no pacote também terão cuidado para iniciar o vsftpd Serviço automaticamente, mas devemos lembrar de reiniciar ou recarregar o serviço cada vez que alteramos o arquivo de configuração. Para poder usar o usuários virtuais Recurso fornecido pelo VSFTPD, também precisamos instalar outro pacote:

$ sudo apt-get install libpam-pwdfile 

Veremos seu uso na seção dedicada deste tutorial.

Depois que os pacotes necessários forem instalados, podemos prosseguir e configurar o vsftpd: veremos como fazê -lo na próxima seção deste tutorial.

Configuração vsftpd

O arquivo de configuração vsftpd é /etc/vsftpd.conf. Se o abrirmos, podemos ver as várias diretivas já contidas nele. Vamos ver quais são os mais relevantes para os casos mais comuns.

Ativar login anônimo

O acesso não autenticado ao servidor, como usuários anônimos, é desativado por padrão. Para ativá -lo, devemos usar o Anonymous_enable Diretiva, que no arquivo de configuração é colocada na linha 25. Tudo o que precisamos fazer é defini -lo SIM:
deve alterar a instrução para:

anonymous_enable = sim 

Outra diretiva que queremos mudar é a que nos permite definir um diretório no que o vsftpd tentará navegar após um acesso anônimo. A diretiva que nos permite controlar esta configuração é anon_root. Digamos que queremos que um usuário anônimo acesse o /srv/ftp Diretório por padrão, escreveríamos:

anon_root =/srv/ftp 

Todo o login anônimo é mapeado internamente para um usuário projetado, o que, por padrão, é ftp. Para mudar este mapeamento, temos que usar o ftp_username opção e defina -o para o nome do usuário que queremos mapear usuários anônimos para.

Por padrão, um usuário anônimo não poderá escrever nada no servidor, por razões óbvias de segurança. Se você deseja mudar esse comportamento (não recomendado), há poucas opções que precisam ser alteradas. Primeiro de tudo o general write_enable a diretiva deve ser definida como SIM. Esta diretiva é comentada on -line 31 do arquivo de configuração, então tudo o que você precisa fazer é remover o comentário.

# Uncomment isso para ativar qualquer forma de comando ftp write. write_enable = sim 


Depois que esta diretiva estiver ativada, tudo o que precisamos fazer é trabalhar em outras duas opções: anon_upload_enable e anon_mkdir_write_enable. Quando o primeiro está definido como SIM Um usuário anônimo será capaz de carregar arquivos, mas apenas se o usuário no qual ele for mapeado (como dissemos, FTP, por padrão) tiver permissões de gravação no diretório de destino. Para ativar esta opção, tudo o que precisamos fazer é remover o comentário da linha 40 do arquivo de configuração:

# Não. Isso apenas # tem um efeito se a escrita global acima for ativada. Além disso, você obviamente precisará criar um diretório gravável pelo usuário do FTP. anon_upload_enable = sim 

O anon_mkdir_write_enable Diretiva, em vez disso, quando definido como SIM Permite que os usuários anônimos criem novos diretórios no servidor, nas mesmas condições que vimos acima (o usuário subjacente no servidor deve ter permissões de gravação no diretório pai). A diretiva está localizada na linha 44 do arquivo de configuração:

# Uncomment isso se você deseja que o usuário anônimo FTP seja capaz de criar # novos diretórios. anon_mkdir_write_enable = sim 

Mais uma vez, já que a variável já está definida como SIM, Para que seja relevante, tudo o que precisamos fazer é remover o comentário dele.

Para permitir que usuários anônimos também realizem outros tipos de operações de gravação, como por exemplo renomear ou excluir Um diretório, devemos usar outra diretiva que não esteja presente no arquivo de configuração, anon_other_write_enable e defina -o para SIM Se o acima é o comportamento desejado:

anon_other_write_enable = sim 

Logins autenticados

Para permitir que os usuários do sistema local acessem o servidor FTP com a senha do sistema, o local_enable a diretiva deve ser definida como SIM: Este é o padrão no sistema Debian. A diretiva pode ser encontrada on -line 28 do daemon
arquivo de configuração:

# Uncomment isso para permitir que os usuários locais efetuem login. local_enable = sim 

Por padrão, quando um usuário local autentica com sucesso, ele terá seu próprio diretório doméstico como raiz. É possível, no entanto, especificar um ponto de partida alternativo usando o LOCAL_ROOT diretivo. Esta diretiva não está presente no arquivo de configuração, por isso devemos adicioná -lo se quisermos usar. Para definir o /srv/ftp Diretório como raiz local, por exemplo, escrevemos:

local_root =/srv/ftp 

CHROOT Usuários locais

Como medida de segurança, é possível chroot Cada usuário autenticado em seu próprio diretório doméstico. Para realizar esta tarefa, devemos usar o CHROOT_LOCAL_USER Diretiva:

CHROOT_LOCAL_USER = SIM 

Quando esse recurso está ativado, é possível especificar uma lista de exclusões (uma lista de usuários que não devem ser acionados) usando as seguintes diretivas:

chroot_list_enable = sim chroot_list_file =/etc/vsftpd.chroot_list 


A primeira diretiva é necessária para ativar o recurso, o outro para especificar a localização do arquivo que contém o lista de exclusão. O arquivo deve ser criado se ainda não existir, caso contrário, o login falhará.

Como medida de segurança, quando um usuário é realizado, não deve ser capaz de escrever no diretório de nível superior do chroot. Se for o caso, nas versões mais recentes do VSFTPD, um usuário não poderá fazer o login, e o servidor responderá com a seguinte mensagem:

500 OOPS: VSFTPD: Recusando -se a correr com a raiz gravável dentro do chroot () 

Este problema pode ser resolvido de basicamente duas maneiras. Este primeiro é obviamente consiste em Corrigindo as permissões, negando o usuário, escreva acesso ao diretório de nível superior do chroot e deixando-o escrever apenas em subdiretos.
A segunda maneira de resolver o problema, se você não se importa com as possíveis implicações de segurança, é ignorar esta restrição, Usando a seguinte diretiva:

allow_writEable_chroot = sim 

Falando sobre permissões, é importante ter em mente que o UMASK padrão para o usuário local está definido como 077. Se essa configuração for considerada muito restritiva, é possível alterá -lo usando o LOCAL_UMASK diretivo. Esta diretiva é comentada na linha 35 do arquivo de configuração:

# UMASK padrão para usuários locais é 077. Você pode mudar isso para 022, # se seus usuários esperam que (022 seja usado pela maioria dos outros FTPDs) # local_umask = 022 

Faça login com usuários virtuais

Um bom recurso oferecido pelo VSFTPD é a possibilidade de fazer login usando usuários virtuais. Um usuário virtual é um usuário que realmente não existe no sistema, mas apenas no contexto do aplicativo SFTPD. Para ativar esse recurso, temos que usar a seguinte diretiva:

hetter_enable = sim 

Quando o recurso está ativo, todos os logins não anônimos (então mesmo usuários reais/locais) são mapeados para o usuário especificado com o Guest_Username Diretiva, que por padrão, como já vimos é ftp.

O próximo passo é criar um arquivo que contém os nomes de usuário e senhas de usuários virtuais. Para gerar uma senha de hash, podemos usar OpenSSL e emitir o seguinte comando:

$ OpenSSL Passwd -1 Senha: Verificando - Senha: $ 1 $ PFWH3JOU $ DQBINJW8BBTDQYS7EZTPR. 

O Passwd comando de OpenSSL é usado para gerar senhas de hash (md5). No exemplo acima, fomos solicitados que a senha fosse hash e sua confirmação. Finalmente, a senha de hash é gerada e exibida na tela.

O nome de usuário, juntamente com a senha, deve ser colocado em um arquivo, digamos que é /etc/virtual_users.PWD, No formato a seguir:

Nome de usuário: hashed_password 

Então, supondo que nosso usuário virtual seja chamado de "LinuxConfig", escrevíamos:

LinuxConfig: $ 1 $ PFWH3JOU $ DQBINJW8BBTDQYS7EZTPR. 

A operação deve ser repetida para cada usuário virtual que queremos configurar.

Agora temos que criar o Pam Serviço que será usado pelo VSFTPD para autenticar usuários virtuais. Vamos citar o arquivo vsftpd_virtual e coloque -o no /etc/pam.d diretório. Seu conteúdo será o seguinte:

#%PAM-1.0 Auth Necessou Pam_pwdfile.então pwdfile/etc/vsftpd/virtual_users.conta PWD necessária Pam_permit.então 

Como você pode ver, especificamos o caminho do arquivo que contém o nome de usuário e as senhas dos usuários virtuais na primeira linha. Tudo o que precisamos fazer agora é instruir o vsftpd a usar este "serviço" PAM. Podemos fazer isso com o pam_service_name Diretiva:

pam_service_name = vsftpd_virtual 

Neste ponto, podemos salvar o arquivo de configuração, reiniciar o daemon e verificar se podemos fazer login com o usuário virtual que acabamos de criar.

Ativando o suporte SSL para criptografia de dados

Por padrão, o suporte SSL está desativado no VSFTPD, portanto os dados transferidos não serão criptografados. Para ativar o suporte SSL, devemos usar as seguintes diretivas, localizadas em linhas 149 para 151 do arquivo de configuração:

# Esta opção especifica a localização do certificado RSA a ser usado para conexões criptografadas SSL #. rsa_cert_file =/etc/ssl/certs/ssl-cert-snakeoil.PEM rsa_private_key_file =/etc/ssl/private/ssl-cert-snakeoil.chave ssl_enable = sim 


A primeira diretiva, rsa_cert_file é usado para indicar o caminho do certificado RSA a ser usado para conexões criptografadas SSL. O segundo, rsa_private_key, Em vez disso, é usado para especificar a localização da chave privada da RSA. finalmente, o ssl_enable A diretiva é usada para permitir o uso da criptografia SSL.

O exemplo usa o /etc/ssl/certs/ssl-cert-snakeoil.PEM e /etc/ssl/private/ssl-cert-snakeoil.chave arquivos, mas você quase certamente quer usar um dedicado.

Especificando o intervalo de portas para o modo passivo

O modo passivo FTP é o padrão em uma nova instalação do VSFTPD, mas se quisermos habilitá -lo explicitamente, podemos usar a seguinte diretiva:

# Defina como não, se você quiser desaprovar o método PASV de obter uma conexão de dados # (modo passivo). Padrão: sim pasv_enable = sim 

Quando o servidor opera em modo passivo, Ele envia ao cliente um endereço IP e uma porta para os quais deve escuta para a conexão. Essas portas são, por padrão. A gama de portas a serem usadas pode ser especificada com o pasv_min_port e pasv_max_port Diretivas, por exemplo:

# A porta mínima para alocar conexões de dados no estilo PASV. Pode ser usado para # especificar um alcance de porta estreita para ajudar o firewalling. pasv_min_port = 10090 # A porta máxima para alocar conexões de dados do estilo PASV. Pode ser usado para # especificar um alcance de porta estreita para ajudar o firewalling. Padrão: 0 (use qualquer porta) pasv_max_port = 10100 

Com a seguinte configuração, o servidor usará uma variedade de portas que vão de 10090 para 10100.

Configuração do firewall

Para o nosso servidor vsftpd funcionar corretamente, devemos permitir o tráfego através das portas necessárias, algumas devemos configurar as regras apropriadas para o nosso firewall. Neste tutorial, assumirei o uso do ufw Gerente de firewall (firewall não complicado).

A primeira porta que queremos permitir o tráfego é a porta 21, que é a porta padrão usada pelo protocolo FTP:

$ sudo ufw permitir em 21/tcp 


Como segunda coisa, devemos permitir o tráfego recebido através do intervalo de portas especificado que configuramos na seção anterior. Para especificar uma variedade de portas, podemos executar:

$ sudo ufw permitir em 10090: 10100/tcp 

Conclusões

Neste artigo, vimos como instalar e configurar o vsftpd no Debian 10 Buster. Vimos como configurar o uso anônimo e o uso dos usuários locais e como podemos tirar proveito do usuários virtuais Recurso fornecido pelo serviço. Como o FTP não fornece criptografia de dados, vimos como ativar o suporte SSL e, finalmente, como configurar o firewall para permitir o tráfego de entrada nas portas necessárias. Para uma lista completa das diretivas possíveis que podem ser usadas no arquivo de configuração do vsftpd, dê uma olhada no vsftpd.conf MANPAGE (VSFTPD.Conf (5)). Quero saber como funcionar programaticamente com um servidor FTP? Dê uma olhada no nosso artigo sobre como conectar -se a um servidor FTP usando o Python.

Tutoriais do Linux relacionados:

  • Configurar servidor FTP no Linux
  • Coisas para instalar no Ubuntu 20.04
  • Como configurar o servidor e o cliente FTP/SFTP no Almalinux
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Lista de clientes FTP e instalação no Ubuntu 22.04 Linux…
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como se conectar a um servidor FTP usando o Python
  • Ubuntu 20.04 truques e coisas que você pode não saber
  • Lista de clientes FTP e instalação no Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress com instalação nginx