Se você quiser configurar um servidor ftp seguro, eficiente e rápido, então você pode considerar instalar o vsftpd. É, provavelmente, o servidor FTP mais seguro e rápido para sistemas UNIX-like.
Por se pequeno para fins de velocidade e segurança, muitas configurações de FTP mais complicados são realizáveis com vsftpd. Por exemplo, é possível lidar com:
- Configurações de IP virtuais
- Os usuários virtuais
- Operação independente ou inetd
- Configuração poderosa por usuário
- largura de banda
- Per-source-IP configuração
- Per-source-IP limites
- IPv6
- O suporte à criptografia SSL através da integração
Utilizando o passo a passo a seguir como guia para a sua configuração, você evita de se deparar com error como:
- Error: The data connection could not be established: EHOSTUNREACH – No route to host
- Error: Connection timed out
- Error: Failed to retrieve directory listing
Instalando vsFTPd
sudo apt-get update sudo apt-get install vsftpd
Configurando o vsFTPd
O servidor vai ser executado com privilégios mínimos de o usuário “nobody” e registro completo será ativado. Finalmente, vamos limitar clientes para os tempos de espera de ligação específicas e limitar os comandos que aceitará de todos os clientes FTP.
sudo vim /etc/vsftpd.conf
####################################################### ### vsftpd.conf BEGIN ####################################################### # manpage: http://vsftpd.beasts.org/vsftpd_conf.html # # Run in daemon mode background=YES listen=YES #listen_address=111.111.111.111 #pasv_address=127.0.0.1 # # The new highly restrictive seccomp filter sandbox # If you see "OOPS: priv_sock_get_cmd" then disable seccomp seccomp_sandbox=NO # # User to run daemon as #nopriv_user=_vsftpd #ftp_username=_ftp # # Ftp ports connect\_from\_port\_20=NO ftp\_data\_port=20 listen_port=21 pasv_enable=Yes pasv\_min\_port=7000 pasv\_max\_port=7014 pasv\_addr\_resolve=NO pasv_address=191.237.128.149 pasv_promiscuous=NO port_enable=NO port_promiscuous=NO # # SSL (force options for a SSL only server) #ssl_enable=YES #ssl_tlsv1=YES #ssl_sslv2=NO #ssl_sslv3=NO #rsa_cert_file=/etc/ssl/private/vsftpd.pem #allow_anon_ssl=YES #force_anon_data_ssl=YES #force_anon_logins_ssl=YES #force_local_data_ssl=YES #force_local_logins_ssl=YES # # Timeouts connect_timeout=0 data\_connection\_timeout=0 idle\_session\_timeout=0 # # Information messages #setproctitle_enable=YES #banner_file=/etc/banner dirmessage_enable=YES ftpd_banner=Teste ftp server # # Access limits and controls async\_abor\_enable=NO #cmds_allowed=ABOR,APPE,CWD,DELE,HELP,LIST,MDTM,MKD,NLST,PASS,PASV,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,STOR,TYPE,USER #cmds_allowed=ABOR,CWD,DELE,LIST,MDTM,MKD,NLST,PASS,PASV,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST delay\_successful\_login=1 delete\_failed\_uploads=yes guest_enable=NO write_enable=YES max_clients=100 max\_login\_fails=1 max\_per\_ip=0 pam\_service\_name=vsftpd allow\_writeable\_chroot=YES tcp_wrappers=NO hide_file={.*,*.mp3} deny_file={*.mp3} # # Preferences ascii\_upload\_enable=NO ascii\_download\_enable=NO hide_ids=YES ls\_recurse\_enable=NO use_localtime=NO # # Allow anonymous FTP? #anonymous_enable=YES #anon_max_rate=0 #anon_mkdir_write_enable=NO #anon_root=/disk01/ftp/ #anon_world_readable_only=YES #anon_umask=0022 #anon_upload_enable=NO #anon_other_write_enable=NO #no_anon_password=NO # # Allow local user access? local_enable=YES local\_max\_rate=0 local_umask=0022 chroot\_local\_user=YES check_shell=NO chmod_enable=NO secure\_chroot\_dir=/var/run/vsftpd/empty #userlist_enable=YES userlist_deny=NO #userlist_file=/etc/vsftpd_users # # Logging dual\_log\_enable=NO log\_ftp\_protocol=NO vsftpd\_log\_file=/var/log/vsftpd.log xferlog_enable=YES xferlog\_std\_format=NO xferlog_file=/var/log/xferlog # # Passive # ####################################################### ### vsftpd.conf END #######################################################
Ativando o modo Passivo
Para isso nós reservar um intervalo de portas para usar em conexões FTP passivas. No exemplo abaixo, nós iremos utilizar o intervalo da porta 7000 até 7014. Normalmente é comum ser utilizado um range de portas bem maior, porém no quando você utiliza azure, existe uma limitação de 150 endpoints, por isso, vamos utilizar um range menor. Para ativar o modo passivo, será preciso editar o arquivo de configuração vsftpd.conf novamente:
sudo vi /etc/vsftpd.conf
Adicionando as linhas abaixo:
pasv_enable=YES pasv\_min\_port=7000 pasv\_max\_port=7014 port_enable=YES
Configurando o Firewall
Você vai precisar para ativar dois módulos do kernel para o iptables. Estes irão ligar o NAT (Network Address Translation) para FTP e rastreamento de conexão FTP. Como iptables / Netfilter é parte do kernel, precisamos usar modprobe para adicioná-los para a sessão atual, afinal você não vai querer reiniciar um servidor só por isso, e também fazer alterações em /etc/modules para que, caso seja necessário reiniciar o seu servidor mais tarde, os módulos sejam carregados durante a inicialização do mesmo.
Primeiro, nós deveremos utilizar o modprobe
para usar esses dois módulos agora:
sudo modprobe ip_nat_ftp sudo modprobe ip_conntrack_ftp
Em seguida, vamos modificar o arquivo de configuração /etc/modules assim os módulos deverão ser carregados na próxima reinicialização:
sudo vim /etc/modules
Adicione as linhas:
ip\_nat\_ftp ip\_conntrack\_ftp
sudo iptables -A INPUT -p tcp --destination-port 7000:7014 -j ACCEPT
Adicionando usuários com acesso a pastas específicas
Pode ser necessário criar usuários com acesso a pastas específicas do seu servidor de FTP, para isso crie o usuário e atribua o home do mesmo para a pasta desejada.
Como meu servidor web está rodando nessa pasta estou adicionando o usuário para o grupo www-data
useradd -m usuarioEspecifico -s /usr/sbin/nologin -d /home/ftp/www/pasta/especifica/ -g www-data
Garantindo permissão de escrita
Para garantir que o grupo possa escrever na pasta
sudo chmod go+rwx /home/ftp/www/pasta/especifica/
Liberando as portas
Amazon EC2
Isto pode ser feito através do AWS Management Console (painel de controle web EC2 da Amazon), ou no seu próprio console:
ec2-authorize default -p 20-21
ec2-authorize default -p 7000-7014
Azure
É necessário adicionar as seguintes portas abertas no
EndPoint:
TCP 20-21
TCP 7000-7014
Reinicie o serviço vsftpd
Finalmente, você deve ter tudo que você precisa para se conectar via FTP no seu servidor:
sudo service vsftpd restart
Recent Comments