Como instalar, configurar e proteger o servidor FTP no CentOS 7 - [Guia abrangente]

Como instalar, configurar e proteger o servidor FTP no CentOS 7 - [Guia abrangente]

Ftp (Protocolo de transferência de arquivos) é uma ferramenta padrão tradicional e amplamente usada para transferir arquivos entre um servidor e clientes em uma rede, especialmente quando nenhuma autenticação é necessária (permite que os usuários anônimos se conectem a um servidor). Devemos entender que o FTP não é seguro por padrão, porque transmite credenciais e dados do usuário sem criptografia.

Neste guia, descreveremos as etapas para instalar, configurar e proteger um servidor FTP (Vsftpd apoia "Daemon FTP muito seguro") em CENTOS/RHEL 7 e Fedora distribuições.

Observe que todos os comandos deste guia serão executados como raiz, Caso você não esteja operando o servidor com o raiz conta, use o comando sudo para obter privilégios de raiz.

Etapa 1: Instalando o servidor FTP

1. Instalação vsftpd O servidor é direto, basta executar o seguinte comando no terminal.

# yum install vsftpd 

2. Após a conclusão da instalação, o serviço será desativado a princípio, por isso precisamos iniciá -lo manualmente por enquanto e permitir que ele inicie automaticamente a partir da próxima inicialização do sistema:

# SystemCtl START VSFTPD # SystemCtl Ativar vsftpd 

3. Em seguida, para permitir o acesso aos serviços FTP de sistemas externos, temos que abrir a porta 21, Onde os daemons FTP estão ouvindo da seguinte maneira:

# firewall-cmd-zone = public --permanent --add-port = 21/tcp # firewall-cmd --zone = public --permanent --add-service = ftp # firewall-cmd--reload 

Etapa 2: Configurando o servidor FTP

4. Agora vamos passar para executar algumas configurações para configurar e proteger nosso servidor FTP, vamos começar fazendo um backup do arquivo de configuração original /etc/vsftpd/vsftpd.conf:

# cp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf.orig 

Em seguida, abra o arquivo de configuração acima e defina as seguintes opções com esses valores correspondentes:

anonymous_enable = não # desative o login anônimo local_enable = sim # permitir logins locais write_enable = sim # Ativar comandos FTP que alteram o sistema de arquivos local_umask = 022 # valor de umkask para criação de arquivos para usuários locais Dirmessage_enable = sim # HOLEF Um novo diretório xferlog_enable = sim # Um arquivo de log será mantido detalhando uploads e downloads connect_from_port_20 = sim # use a porta 20 (ftp-dados) na máquina do servidor para conexões de estilo por porta xferlog_std_format = sim # mantenha o formato de arquivo de log padrão = não # # Evite que o vsftpd seja executado no modo independente ouve_ipv6 = yes # vsftpd ouvirá em um soquete IPv6 em vez de um IPv4 ONE PAM_SERVICE_NAME = VSFTPD # Nome do serviço PAM VSFTPD usará Userlist_enable = Sim # ENLAPPD para carregar a lista de usernames # Ligue as embalagens do TCP 

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

Por padrão, os usuários listados em userlist_file =/etc/vsftpd.Lista de usuários são negados o acesso de login com userlist_deny opção definida como SIM, se userlist_enable = sim.

No entanto, userlist_deny = não altera a configuração, o que significa que apenas os usuários listaram explicitamente em userlist_file =/etc/vsftpd.Lista de usuários terá permissão para fazer login.

userlist_enable = sim # vsftpd carregará uma lista de nomes de usuário, no nome do arquivo dado pelo userlist_file userlist_file =/etc/vsftpd.Userlist # armazena nomes de usuário. userlist_deny = não 

Isso não é tudo, quando os usuários fazem login no servidor FTP, eles são colocados em uma prisão de chroot, este é o diretório raiz local que atuará como seu diretório residencial apenas para a sessão FTP.

Em seguida, examinaremos dois cenários possíveis de como Chroot Usuários de FTP para diretórios domésticos (raiz local) para usuários de FTP, conforme explicado abaixo.

6. Agora adicione essas duas opções a seguir para restringir os usuários de FTP aos seus diretórios domésticos.

CHROOT_LOCAL_USER = SIM ALIMS_WRITEABE_CHROOT = SIM 

CHROOT_LOCAL_USER = SIM significa que os usuários locais serão colocados em uma prisão de chroot, seu diretório residencial após o login por configurações padrão.

E também por padrão, o VSFTPD não permite que o diretório da prisão chroot seja gravável por razões de segurança, no entanto, podemos usar a opção allow_writEable_chroot = sim Para substituir esta configuração.

Salve o arquivo e feche-o.

Protegendo o servidor FTP com o Selinux

7. Agora, vamos definir o Selinux Boolean abaixo para permitir que o FTP leia arquivos no diretório inicial de um usuário. Observe que isso foi feito inicialmente usando o comando:

# setsebool -p ftp_home_dir 

No entanto, o ftp_home_dir A diretiva foi desativada por padrão, conforme explicado neste relatório de bug: https: // bugzilla.chapéu vermelho.com/show_bug.CGI?id = 1097775.

Agora vamos usar Semanage comando para definir a regra Selinux para permitir que o FTP leia/grava o diretório inicial do usuário.

# semanage boolean -m ftpd_full_access --on 

Neste ponto, temos que reiniciar o VSFTPD para efetuar todas as mudanças que fizemos tão acima:

# SystemCtl Reiniciar vsftpd 

Etapa 4: Testando o servidor FTP

8. Agora vamos testar o servidor FTP criando um usuário FTP com comando useradd.

# useradd -m -c “ravi saive, CEO” -s /bin /bash ravi # passwd ravi 

Depois, temos que adicionar o usuário Ravi para o arquivo /etc/vsftpd.Lista de usuários Usando o comando Echo da seguinte maneira:

# eco "ravi" | tee -a /etc /vsftpd.Userlist # Cat /etc /vsftpd.Lista de usuários 

9. Agora é hora de testar se nossas configurações acima estão funcionando corretamente. Vamos começar testando logins anônimos, podemos ver na captura de tela abaixo que os logins anônimos não são permitidos:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bem -vindo ao Tecmint.serviço ftp. Nome (192.168.56.10: raiz): permissão anônima 530 negado. falha no login. ftp> 
Teste o login anônimo de FTP

10. Vamos também testar se um usuário não listado no arquivo /etc/vsftpd.Lista de usuários receberá permissão para fazer o login, o que não é o caso, como na captura de tela abaixo:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bem -vindo ao Tecmint.serviço ftp. Nome (192.168.56.10: raiz): Aaronkilik 530 Permissão negada. falha no login. ftp> 
O login do usuário do FTP falhou

11. Agora faça uma verificação final se um usuário listado no arquivo /etc/vsftpd.Lista de usuários, é realmente colocado em seu diretório inicial após o login:

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bem -vindo ao Tecmint.serviço ftp. Nome (192.168.56.10: raiz): Ravi 331, especifique a senha. Senha: 230 Login bem -sucedido. O tipo de sistema remoto é Unix. Usando o modo binário para transferir arquivos. ftp> ls 

FTP User Login bem -sucedido [Aviso: Usando allow_writEable_chroot = sim tem certas implicações de segurança, especialmente se os usuários tiverem permissão de upload ou acesso de shell.

Ative apenas esta opção se você souber exatamente o que está fazendo. É importante observar que essas implicações de segurança são específicas de arenot vsftpd, elas se aplicam a todos.

Portanto, examinaremos uma maneira mais segura de definir um diretório raiz local não criativo diferente na próxima seção.

Etapa 5: Configurar diferentes diretórios da casa do usuário FTP

12. Abra o arquivo de configuração do VSFTPD novamente e comece comentando a opção não segura abaixo:

#allow_writEable_chroot = sim 

Em seguida, crie o diretório raiz local alternativo para o usuário (Ravi, O seu provavelmente é diferente) e remova as permissões de gravação a todos os usuários para este diretório:

# mkdir/home/ravi/ftp # chown ninguém: ninguém/home/ravi/ftp # chmod a-w/home/ravi/ftp 

13. Em seguida, crie um diretório sob a raiz local, onde o usuário armazenará seus arquivos:

# mkdir/home/ravi/ftp/arquivos # chown ravi: ravi/home/ravi/ftp/arquivos # chmod 0700/home/ravi/ftp/arquivos/ 

Em seguida, adicione/modifique as seguintes opções no arquivo de configuração vsftpd com estes valores:

user_sub_token = $ user # insere o nome de usuário no diretório raiz local local_root =/home/$ user/ftp # define qualquer usuário do diretório raiz local dos usuários 

Salve o arquivo e feche-o. Mais uma vez, vamos reiniciar o serviço com as novas configurações:

# SystemCtl Reiniciar vsftpd 

14. Agora faça um teste final novamente e veja que o diretório raiz local dos usuários é o diretório FTP que criamos em seu diretório doméstico.

# ftp 192.168.56.10 Conectado a 192.168.56.10 (192.168.56.10). 220 Bem -vindo ao Tecmint.serviço ftp. Nome (192.168.56.10: raiz): Ravi 331, especifique a senha. Senha: 230 Login bem -sucedido. O tipo de sistema remoto é Unix. Usando o modo binário para transferir arquivos. ftp> ls 
FTP User Directory Login bem -sucedido

É isso! Neste artigo, descrevemos como instalar, configurar e proteger um servidor FTP no CentOS 7, use a seção de comentários abaixo para escrever de volta para nós sobre este guia/compartilhe qualquer informação útil sobre este tópico.

Leia sugerida: Instale o servidor Proftpd no RHEL/CENTOS 7

No próximo artigo, também mostraremos como proteger um servidor FTP usando conexões SSL/TLS no CentOS 7, até então, permaneça conectado ao Tecmint.