Android

Como configurar o servidor ftp com vsftpd no centos 7

Cómo Configurar un Servidor FTP en CentOS 7 | 2020

Cómo Configurar un Servidor FTP en CentOS 7 | 2020

Índice:

Anonim

FTP (File Transfer Protocol) é um protocolo de rede cliente-servidor padrão que permite aos usuários transferir arquivos de e para uma rede remota.

Existem vários servidores FTP de código aberto disponíveis para Linux. Os mais populares e amplamente utilizados são PureFTPd, ProFTPD e vsftpd.

Neste tutorial, instalaremos o vsftpd (Very Secure Ftp Daemon) no CentOS 7. É um servidor FTP estável, seguro e rápido. Também mostraremos como configurar o vsftpd para restringir os usuários ao diretório inicial e criptografar toda a transmissão com SSL / TLS.

Para transferências de dados mais seguras e mais rápidas, use SCP ou SFTP.

Pré-requisitos

Antes de continuar com este tutorial, verifique se você está conectado como um usuário com privilégios sudo.

Instalando o vsftpd no CentOS 7

O pacote vsftpd está disponível nos repositórios padrão do CentOS. Para instalá-lo, emita o seguinte comando:

sudo yum install vsftpd

Depois que o pacote estiver instalado, inicie o daemon vsftpd e permita que ele inicie automaticamente no momento da inicialização:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

Você pode verificar se o serviço vsftpd está em execução imprimindo seu status:

sudo systemctl status vsftpd

A saída será semelhante a abaixo, mostrando que o serviço vsftpd está ativo e em execução:

● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Configurando vsftpd

A configuração do serviço vsftpd envolve a edição do arquivo de configuração /etc/vsftpd/vsftpd.conf . A maioria das configurações está bem documentada dentro do arquivo de configuração. Para todas as opções disponíveis, visite a página oficial do vsftpd.

Nas seções a seguir, abordaremos algumas configurações importantes necessárias para configurar uma instalação segura do vsftpd.

Comece abrindo o arquivo de configuração vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. Acesso FTP

Permitiremos o acesso ao servidor FTP apenas aos usuários locais, localizamos as diretivas anonymous_enable e local_enable e verificamos sua configuração correspondente às linhas abaixo:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

2. Habilitando uploads

Remova o comentário da configuração write_enable para permitir alterações no sistema de arquivos, como upload e exclusão de arquivos.

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Cadeia de Chroot

Impedir que os usuários do FTP acessem arquivos fora de seus diretórios pessoais, descomentando a diretiva chroot .

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

Por padrão, quando o chroot está ativado, o vsftpd se recusará a enviar arquivos se o diretório em que os usuários estiverem bloqueados for gravável. Isso é para evitar uma vulnerabilidade de segurança.

Use um dos métodos abaixo para permitir uploads quando o chroot está ativado.

  • Método 1. - O método recomendado para permitir o upload é manter o chroot ativado e configurar os diretórios FTP. Neste tutorial, criaremos um diretório ftp dentro da página inicial do usuário, que servirá como o chroot e um diretório de uploads graváveis ​​para upload de arquivos.

    /etc/vsftpd/vsftpd.conf

    user_sub_token=$USER local_root=/home/$USER/ftp

    Método 2. - Outra opção é adicionar a seguinte diretiva no arquivo de configuração vsftpd. Use esta opção se precisar conceder acesso gravável ao seu usuário no diretório inicial.

    /etc/vsftpd/vsftpd.conf

    allow_writeable_chroot=YES

4. Conexões FTP passivas

O vsftpd pode usar qualquer porta para conexões FTP passivas. Especificaremos o intervalo mínimo e máximo de portas e, posteriormente, abriremos o intervalo em nosso firewall.

Adicione as seguintes linhas ao arquivo de configuração:

/etc/vsftpd/vsftpd.conf

pasv_min_port=30000 pasv_max_port=31000

5. Limitando o login do usuário

Para permitir que apenas alguns usuários façam login no servidor FTP, adicione as seguintes linhas após a linha userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

userlist_file=/etc/vsftpd/user_list userlist_deny=NO

Quando essa opção está ativada, você precisa especificar explicitamente quais usuários podem efetuar login adicionando os nomes de usuário ao arquivo /etc/vsftpd/user_list (um usuário por linha).

6. Protegendo transmissões com SSL / TLS

Para criptografar as transmissões FTP com SSL / TLS, você precisa 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.

Neste tutorial, geraremos um certificado SSL autoassinado usando o comando openssl .

O comando a seguir criará uma chave privada de 2048 bits e um certificado autoassinado válido por 10 anos. A chave privada e o certificado serão salvos no mesmo arquivo:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Após a criação do certificado SSL, abra o arquivo de configuração vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

Localize as rsa_cert_file e rsa_private_key_file , altere seus valores para o caminho do arquivo pam e defina a diretiva ssl_enable como YES :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Caso contrário, o servidor FTP usará apenas TLS para fazer conexões seguras.

Reinicie o serviço vsftpd

Depois de concluir a edição, o arquivo de configuração vsftpd (excluindo comentários) deve ser algo como isto:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Salve o arquivo e reinicie o serviço vsftpd para que as alterações entrem em vigor:

sudo systemctl restart vsftpd

Abrindo o Firewall

Para abrir a porta 21 (porta de comando FTP), porta 20 (porta de dados FTP) e 30000-31000 (intervalo de portas passivas), emita os seguintes comandos:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Recarregue as regras do firewall digitando:

firewall-cmd --reload

Criando um usuário FTP

Para testar nosso servidor FTP, criaremos um novo usuário.

  • Se você já possui um usuário que deseja conceder acesso ao FTP, pule a 1ª etapa. Se você definir allow_writeable_chroot=YES no seu arquivo de configuração, pule a 3ª etapa.
  1. Crie um novo usuário chamado newftpuser :

    sudo adduser newftpuser

    Em seguida, você precisará definir a senha do usuário:

    sudo passwd newftpuser

    Adicione o usuário à lista de usuários de FTP permitidos:

    echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list

    Crie a árvore de diretórios 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 poderá fazer upload de seus arquivos no diretório ftp/upload .

Nesse ponto, seu servidor FTP está totalmente funcional e você poderá se conectar ao servidor com qualquer cliente FTP que possa ser configurado para usar a criptografia TLS, como o FileZilla.

Desativando o acesso ao shell

Por padrão, ao criar um usuário, se não for especificado explicitamente, o usuário terá acesso SSH ao servidor.

Para desativar o acesso ao shell, criaremos um novo shell que simplesmente imprimirá uma mensagem informando ao usuário que sua conta está limitada apenas ao acesso ao FTP.

Execute os seguintes comandos para criar o shell /bin/ftponly e torná-lo executável:

echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Anexe o novo shell à lista de shells válidos no arquivo /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells

Mude o shell do usuário para /bin/ftponly :

sudo usermod newftpuser -s /bin/ftponly

Use o mesmo comando para alterar o shell para outros usuários que você deseja dar apenas acesso FTP.

Conclusão

Neste tutorial, você aprendeu como instalar e configurar um servidor FTP rápido e seguro no seu sistema CentOS 7.

ftp centos