|
[18/07]
:. Wii passa do Xbox 360 e Playstation 3 nos EUA [18/07] :. SwitchProxy: troque de servidor proxy facilmente no Firefox [18/07] :. KOffice 2.0 apresenta seu alpha 9 [18/07] :. Malware infecta arquivos em redes P2P disfarçado de codec [18/07] :. Digital Wall, enorme touchscreen da Panasonic [18/07] :. Google compra empresa russa de anúncios online [17/07] :. Testes de desempenho: kernel 2.6.26 versus 2.6.25 [17/07] :. Balada gera energia a partir da dança das pessoas na pista [17/07] :. Resumo do dia [17/07] :. Tutorial: instalação do OpenVZ no Fedora 9 [17/07] :. O primeiro passo para um mundo maior [17/07] :. BIC além de canetas, agora também faz celular [17/07] :. Ericsson e operadora testam 3G com upload a 5,8 Mbps [17/07] :. Asus Eee PC 1000H finalmente entra no mercado [16/07] :. Japoneses desenvolvem memória flash de longa durabilidade :. Mais noticias » |
O servidor de FTP mais usado no Linux é o Proftpd, disponível em quase todas as distribuições. O funcionamento do FTP é bem mais simples que o do Samba ou SSH, por isso ele é usado como uma forma simples de disponibilizar arquivos na internet ou mesmo dentro da rede local, sem muita segurança. A principal limitação do protocolo FTP é que todas as informações são transmitidas de forma não encriptada, como texto puro, incluindo os logins e senhas. Ou seja, alguém capaz de sniffar a conexão, usando um programa como o Ethereal, veria tudo que está sendo transmitido. Para aplicações onde é necessário ter segurança na transmissão dos arquivos, é recomendável usar o SFTP, o módulo do SSH que permite transferir arquivos de forma encriptada. Apesar disso, se você quiser apenas criar um repositório com alguns arquivos para download ou manter um servidor público como o Ibiblio.org, então o FTP é mais interessante, por ser mais simples de usar. O servidor aceita conexões remotas usando os logins dos usuários cadastrados na máquina. Lembre-se de que, para adicionar novos usuários, você pode usar o comando adduser ou algum utilitário de administração incluído na distribuição, como o system-config-users, o users-admin ou o kuser. Não é difícil instalar o Proftpd, basta procurar pelo pacote "proftpd" na distribuição usada, como em:
# apt-get install proftpd
# yum install proftpd ou: # urpmi proftpd
No Debian, durante a instalação do pacote do Proftpd, geralmente são feitas algumas perguntas. A primeira é se você deseja deixar o servidor FTP ativo em modo standalone ou em modo inetd. O standalone é mais seguro e mais rápido, enquanto o inetd faz com que ele fique ativo apenas quando acessado, economizando cerca de 400 KB de memória RAM (que fazem pouca diferença hoje em dia). O modo standalone é a opção recomendada. Você terá também a opção de ativar o acesso anônimo, que permite acessos anônimos (somente leitura) na pasta "/home/ftp", onde você pode disponibilizar alguns arquivos para acesso público. Nesse caso, os usuários fazem login no servidor usando a conta "anonymous" e um endereço de e-mail como senha. Caso prefira desativar o acesso anônimo, apenas usuários com login válido na máquina poderão acessar o FTP. Depois de concluída a instalação, o servidor fica ativo por default, é inicializado automaticamente durante o boot e pode ser controlado manualmente através do serviço "proftpd", como em "/etc/init.d/proftpd start".
Você pode acessar outras máquinas da rede com servidores FTP ativos usando o GFTP, o Konqueror ou o próprio navegador. O FTP pode ser usado também como opção para transferência de arquivos na rede local. Uma das vantagens do FTP é que existem clientes para todas as plataformas, você pode baixar o Filezilla, um servidor e cliente de FTP for Windows, no http://filezilla.sourceforge.net/.
A configuração manual do servidor FTP é feita através do arquivo "/etc/proftpd/proftpd.conf". Um arquivo configurado no CentOS pode ser usado no Mandriva (por exemplo), ou vice-versa; afinal, independentemente de estar usando o Debian, Fedora ou o Mandriva, o proftpd será sempre o mesmo. Sempre que fizer alterações no arquivo, reinicie o servidor para que elas entrem em vigor. Para isso, use o comando "/etc/init.d/proftpd restart". No caso do Debian Etch e do Ubuntu 6.10 em diante, o servidor é configurado para utilizar endereços IPV6 por padrão, o que faz com que ele exiba uma mensagem de erro e aborte a inicialização caso você não tenha configurado a rede IPV6. Para solucionar o problema, abra o arquivo "/etc/proftpd.conf" e substitua a linha:
UseIPv6 on
por:
UseIPv6 off
Uma das primeiras opções do arquivo é a opção Port, que permite alterar a porta usada pelo FTP. O padrão é usar a porta 21, mas muitos serviços de banda larga bloqueiam as portas 21 e 80 para que os usuários não rodem servidores. Nesse caso, você pode mudar para a porta 2121 por exemplo:
# Port 21 is the standard FTP port.
Port 2121
Em seguida, vem a opção MaxClients, que limita o número de conexões simultâneas ao servidor FTP. Esta opção trabalha em conjunto com a limitação de banda (veja a seguir). Você pode limitar os downloads de cada usuário a um máximo de 10 KB/s e limitar o servidor a 3 usuários simultâneos, por exemplo. Assim, o FTP consumirá um máximo de 30 KB/s do link do servidor.
MaxClients 30
Se você quiser limitar o acesso dos usuários, prendendo-os em seus respectivos diretórios home, adicione a linha "DefaultRoot ~" no final do arquivo. Lembre-se de que no Linux o "~" é um curinga, que é automaticamente substituído pela pasta home do usuário que está logado:
DefaultRoot ~
Para ativar a limitação de banda, adicione a linha "TransferRate RETR 8:10", onde o "8" pode ser substituído pela taxa desejada, em KB/s, por usuário:
TransferRate RETR 8:10
A princípio, apenas os usuários que tiverem logins válidos no servidor poderão acessar o FTP. Caso você queira abrir um FTP público, adicione estas linhas no arquivo de configuração. Elas ficam comentadas no arquivo original:
<Anonymous ~ftp>
User ftp Group nogroup UserAlias anonymous ftp DirFakeUser on ftp DirFakeGroup on ftp RequireValidShell off MaxClients 20 DisplayLogin welcome.msg DisplayFirstChdir .message <Directory *> <Limit WRITE> DenyAll </Limit> </Directory>
<Limit STOR>
AllowAll </Limit> </Directory> </Anonymous>
A opção "DisplayLogin welcome.msg" indica a mensagem de boas-vindas que é mostrada quando os usuários fazem login no FTP. Por padrão, é exibido o conteúdo do arquivo "/home/ftp/welcome.msg". Os usuários anônimos têm acesso apenas aos arquivos dentro da pasta "/home/ftp", que é visto pelo cliente FTP como o diretório raiz do servidor. Graças a isso, eles não têm como ver, muito menos alterar outros arquivos do sistema. A seção "Directory incoming" mais abaixo cria uma pasta de upload (por padrão a "/home/ftp/incoming"), onde os anônimos poderão dar upload de arquivos. A idéia é que você veja periodicamente o conteúdo da pasta e mova o que for útil para a pasta "/home/ftp" para que o arquivo fique disponível para download. Por padrão, os anônimos não podem ver o conteúdo da pasta incoming, podem apenas dar upload. Se necessário, crie a pasta incoming usando os comandos:
# mkdir /home/ftp/incoming
# chown nobody:nogroup /home/ftp/incoming
Uma medida comum ao ativar o upload dos usuários anônimos é usar uma partição separada para o FTP, para evitar que algum engraçadinho fique dando upload durante a madrugada até lotar o HD do servidor. Nesse caso, você precisa apenas adicionar uma linha no arquivo "/etc/fstab" para que a partição desejada seja montada durante o boot. Esta linha de exemplo montaria a partição /dev/hda3, formatada em ReiserFS na pasta /home/ftp:
Criando usuários e ajustando as permissões de acesso: Imagine agora que você quer uma configuração um pouco mais complexa, com vários usuários, cada um tendo acesso a apenas uma pasta específica. Esta configuração pode ser usada em conjunto com os virtual hosts do Apache (permitindo que os responsáveis possam atualizar os arquivos do site), ou em situações em que seu servidor hospeda arquivos de diversos usuários ou projetos diferentes. O responsável pelo projeto1 pode dar upload para a pasta "/home/ftp/projeto1" (por exemplo), mas não deve ter acesso a outras pastas nem a outros arquivos do sistema. Os usuários anônimos terão acesso às pastas de todos os projetos, mas, naturalmente, apenas para leitura. A forma mais simples de fazer isso é criar os usuários que terão acesso ao FTP, colocando a pasta a que terão acesso como seu diretório home e bloqueando o uso do shell, para que eles não possam acessar o servidor remotamente através de outros meios (via ssh, por exemplo). Vamos começar adicionando no arquivo a opção que prende os usuários nos seus diretórios home. Abra o arquivo "/etc/proftpd.conf" e adicione (no final do arquivo) a linha:
Você vai precisar adicionar também a seção para liberar o acesso anônimo ao ftp, que vimos acima. Como queremos apenas que os mantenedores dos projetos possam dar upload de arquivos, remova a seção "<Directory incoming>". A seção vai ficar:
<Anonymous ~ftp>
User ftp Group nogroup UserAlias anonymous ftp DirFakeUser on ftp DirFakeGroup on ftp RequireValidShell off MaxClients 20 DisplayLogin welcome.msg DisplayFirstChdir .message <Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>
De volta à configuração, vamos começar criando subpastas para cada projeto:
# mkdir /home/ftp/projeto1
# mkdir /home/ftp/projeto2 # mkdir /home/ftp/projeto3 etc...
Para adicionar os usuários, use o comando "adduser", como se estivesse criando uma conta normal:
# adduser projeto1
Acrescentando usuário projeto1...
Acrescentando novo grupo projeto1 (1005). Acrescentando novo usuário projeto1 (1005) com grupo projeto1. Criando diretório pessoal /home/projeto1. Copiando arquivos de /etc/skel
Enter new UNIX password:
Retype new UNIX password: passwd: password updated successfully Veja que por padrão ele cria a pasta "/home/projeto1", que passa a ser o diretório home do usuário criado. Entretanto, neste caso queremos que o home seja a pasta "/home/ftp/projeto1", onde ele dará upload dos arquivos. Para alterar isso, abra o arquivo "/etc/passwd", onde ficam guardadas as informações dos usuários. Na última linha do arquivo você verá:
projeto1:x:1005:1005:,,,:/home/projeto1:/bin/bash
Vamos alterar o "/home/projeto1" para "/home/ftp/projeto1" (para trocar o home) e o "/bin/bash" para "/bin/false", de forma a impedir que usuário tenha acesso ao shell do servidor e possa executar comandos (fazendo o que não deve no servidor). Se você preferir que, além do acesso via ftp, os usuários tenham acesso via ssh, então mantenha o "/bin/bash". Depois das alterações, a linha ficará:
projeto1:x:1005:1005:,,,:/home/ftp/projeto1:/bin/false
Você pode aproveitar para remover a pasta /home/projeto1, já que não precisaremos mais dela:
# rm -rf /home/projeto1/
Na verdade, esse processo serve para que você entenda melhor o procedimento de criação destes usuários "falsos" no Linux. Estas alterações podem ser especificadas ao criar o usuário. Não é preciso sair editando todos os arquivos manualmente. O comando para criar o usuário "projeto1", usando a pasta "/home/ftp/projeto1" como home e o "/bin/false" como shell, seria:
# adduser --home /home/ftp/projeto1 --shell /bin/false --no-create-home projeto1
Não esqueça de acertar as permissões da pasta /home/ftp/projeto1:
# chown -R projeto1:projeto1 /home/ftp/projeto1/
Depois de concluir a configuração, falta só reiniciar o servidor FTP para que as configurações entrem em vigor:
# /etc/init.d/proftpd restart
Em distribuições derivadas do Debian, você vai precisar adicionar a linha "/bin/false" no final do arquivo /etc/shells para que ele possa ser usado:
# echo "/bin/false" >> /etc/shells
Feito isso, você já conseguirá se logar no servidor usando o login criado. O usuário não enxerga nada fora da pasta "/home/ftp/projeto1" e todos os arquivos que ele der upload vão para lá. A senha de acesso ao FTP é a mesma definida na hora de criar o usuário. O proftpd simplesmente aproveita o sistema de autenticação do sistema. Se você precisar alterar a senha do usuário, use o comando "passwd projeto1". Para usar o Proftpd em conjunto com os virtual hosts do Apache, a configuração é a mesma, com exceção de que você não precisaria habilitar o acesso anônimo, já que o FTP seria usado apenas pelos webmasters dos sites hospedados. Nesse caso, ao criar os usuários, use a pasta com os arquivos do site como home, como em:
# adduser --home /var/www/joao --shell /bin/false --no-create-home joao
A opção "--no-create-home" evita que o sistema copie os arquivos do diretório "/etc/skel" (como os arquivos .bashrc, .bash_history e outros) para dentro da pasta de arquivos, "sujando" o diretório. Ao terminar, não se esqueça de alterar as permissões da pasta, de forma que o usuário tenha permissão de escrita:
# chown -R joao:joao /var/www/joao
FTP + TLS: É possível adicionar uma camada de segurança ao protocolo FTP ativando a encriptação via TLS. Nem todos os clientes de FTP suportam encriptação, de forma que a mudança criará dificuldades aos usuários menos técnicos, mas, por outro lado, elimina o grande risco do FTP, evitando que as senhas possam ser capturadas durante as conexões. Presumindo que você já tenha instalado o pacote do Proftpd e feito a configuração básica, o próximo passo é instalar o pacote "openssl". Ele é usado por diversos outros serviços, por isso é provável que já esteja instalado:
# apt-get install openssl
Em seguida, crie um diretório dentro da pasta "/etc/proftpd" para armazenar os certificados, como em:
# mkdir /etc/proftpd/cert
O próximo passo é gerar os certificados usando o comando "openssl", como em:
# openssl req -new -x509 -days 3650 -nodes -out \
/etc/proftpd/cert/proftpd.cert.pem -keyout /etc/proftpd/cert/proftpd.key.pem A opção "-days" especifica o tempo de validade do certificado. Nesse caso, estou gerando um certificado válido por 10 anos para evitar que os clientes passem a receber erros relacionados ao certificado caso ele expire antes que tenha tempo de atualizá-lo. Entretanto, do ponto de vista da segurança, o ideal é gerar certificados válidos por apenas um ano ou dois e substituí-los mais regularmente. Depois de responder às perguntas feitas durante a geração do certificado (país, estado, cidade, nome da empresa, etc.), serão gerados os arquivos "proftpd.cert.pem" e "proftpd.key.pem" dentro da pasta "/etc/proftpd/cert", que correspondem ao certificado. O próximo passo é alterar a configuração do Proftpd de forma que ele ative o uso da encriptação. Abra o arquivo "/etc/proftpd/proftpd.conf" e procure pelas linhas:
<IfModule mod_tls.c>
TLSEngine off </IfModule>
<IfModule mod_tls.c>
TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSOptions NoCertRequest TLSRSACertificateFile /etc/proftpd/cert/proftpd.cert.pem TLSRSACertificateKeyFile /etc/proftpd/cert/proftpd.key.pem TLSVerifyClient off TLSRequired on </IfModule>
Depois de salvar a configuração, reinicie o serviço:
# /etc/init.d/proftpd restart
Ao conectar a partir do cliente, você verá entradas similares a essas no arquivo "/var/log/proftpd/tls.log" (no servidor), sinal de que a encriptação está sendo usada:
Jun 30 12:54:46 mod_tls/2.1.1[2326]: TLSv1/SSLv3 connection accepted, using cipher DHE-RSA-AES256-SHA (256 bits)
Jun 30 12:54:47 mod_tls/2.1.1[2326]: Protection set to Private Jun 30 12:54:47 mod_tls/2.1.1[2326]: starting TLS negotiation on data connection Jun 30 12:54:47 mod_tls/2.1.1[2326]: TLSv1/SSLv3 data connection accepted, using cipher DHE-RSA-AES256-SHA (256 bits) Jun 30 12:54:47 mod_tls/2.1.1[2325]: starting TLS negotiation on data connection O grande problema é que o FTP over SSL não é suportado por todos os clientes de FTP, o que dificulta seu uso. Em geral, é mais fácil conseguir que os usuários migrem para o SFTP (consulte os tutoriais anteriores sobre o SSH), que é suportado por um número maior de clientes de FTP do que conseguir fazer uma migração completa para o TLS. » Gostou do texto? Veja nossos livros impressos
|