ct

    Criando um servidor FTP seguro com o MySecureShell

    Dicas do Guia do Hardware

    O MySecureShell é baseado no uso do SFTP, mas usa um chroot para prender o usuário dentro de seu diretório home, ou outra pasta definida por você. Ele permite que os usuários acessem arquivos de forma segura, ao mesmo tempo em que ficam isolados dentro da pasta home (ou outra pasta definida por você), sem terem como visualizar o conteúdo de outras pastas do sistema, nem muito menos conseguirem obter acesso via shell.Carlos E. Morimoto
    08/10/2007


    O protocolo FTP possui um problema fundamental, que é o fato de transmitir as senhas (e todos os arquivos transferidos) de forma desencriptada. Isso abre margem para roubo de senhas e outros problemas de segurança.

    A resposta para o problema é o SFTP, um componente do SSH, que permite transferir os arquivos de forma segura. Uma das limitações do SFTP é que, ao criar uma conta de usuário, ele tem acesso não apenas aos arquivos que deve modificar, mas acesso via shell ao servidor, que pode ser usado para rodar comandos diversos e até mesmo explorar brechas de segurança locais (onde um usuário restrito do sistema pode obter privilégios adicionais).

    A alguns meses postei uma dica sobre o rssh, que é uma resposta para esses casos. Ele permite que o usuário tenha acesso ao servidor apenas via sftp ou scp, sem ter como executar comandos adicionais: http://www.guiadohardware.net/dicas/usando-rssh.html

    Outra opção de software para dar acesso aos arquivos em determinadas pastas do servidor, de forma segura, sem permitir que eles loguem diretamente no sistema é o MySecureShell. Ele também é baseado no uso do SFTP, mas usa um chroot para prender o usuário dentro de seu diretório home.

    Ele tem exatamente a mesma função do rssh, mas oferece como principal vantagem o fato de realmente isolar o usuário dentro de sua pasta home (ou outra pasta definida por você), sem ter como visualizar o conteúdo de outras pastas do sistema, ao contrário do rssh, que na configuração padrão permite que o usuário visualize o conteúdo de outras pastas, de acordo com suas permissões de acesso.

    O MySecureShell é também um pouco mais fácil de configurar. A principal desvantagem é que ele é ainda um software novo, que ainda não passou por um período tão grande de amadurecimento e correção de bugs. Ele ainda não está disponível nos repositórios de muitas distribuições, por isso você vai precisar baixá-lo manualmente na maioria dos casos. Os arquivos estão disponíveis no:
    http://sourceforge.net/projects/mysecureshell/

    Na página estão disponíveis pacotes .deb, .rpm e também o pacote com o código fonte. Ele tem como dependências os pacotes libssl, ssh e openssh-server, que precisam ser instalados primeiro, usando o gerenciador de pacotes, como em:

    # apt-get install libssl0.9.7 ssh openssh-server

    (o nome do pacote libssl pode variar de acordo com a versão, como "libssl0.9.7" ou "libssl0.9.8"; verifique qual está disponível)

    A partir daí você pode instalar o pacote do MySecureShell da forma normal, como em:

    # dpkg -i mysecureshell_0.95_i386.deb

    Assim como no caso do rssh, é necessário que você use o especifique o binário do MySecureShell (/bin/MySecureShell) como shell de cada usuário que vai utilizá-lo, o que pode ser feito editando manualmente o arquivo "/etc/passwd", ou usando o comando "usermod -s /bin/MySecureShell usuário", como em:

    # usermod -s /bin/MySecureShell manuel

    A partir daí o usuário pode se logar usando o comando "sftp" ou um cliente gráfico com suporte a sftp, como o gFTP (disponível na maioria das distribuições Linux), o Filezilla (no Windows, http://filezilla.sourceforge.net/) e o WinSP (http://winscp.sourceforge.net/).

    Nos três, procure pela opção que indica o protocolo usado e troque de "FTP" para "SSH2". Indique também a porta usada pelo servidor, que no SFTP é 22 e não 21. No caso do gFTP as opções estão disponíveis diretamente na barra principal:

    index_html_5a9012fa

    No Filezilla você precisa usar o Site Manager para criar a conexão. Só assim você tem acesso à opção de usar o SFTP:

    index_html_m71c75333

    Assim como ao usar o rssh, o usuário consegue se conectar normalmente, visualizar e transferir arquivos, mas ao tentar acessar qualquer diretório fora de seu diretório home, recebe um erro de permissão negada:

    index_html_35823e66

    Para criar um novo usuário, já utilizando o MySecureShell por padrão, você usaria o comando "adduser --shell /bin/MySecureShell", como em

    # adduser --shell /bin/MySecureShell joao

    Para criar uma pasta vazia e usá-la como diretório home do usuário, você usaria:

    # mkdir /var/www/joao
    # chown -R joao.joao /var/www/joao
    # adduser --home /var/www/joao --shell /bin/MySecureShell --no-create-home joao

    O MySecureShell oferece também um bom volume de configurações, que lembram bastante as de um servidor de FTP tradicional. Elas vão no arquivo "/etc/ssh/sftp_config" que, ao contrário do que o nome sugere, é um arquivo específico para o MySecureShell, utilizado apenas por ele. Este é outro ponto em que ele se destaca em relação ao rssh, que oferece poucas opções de configuração.

    Excluindo as linhas comentadas, o arquivo contém:

    <Default>
    GlobalDownload 50k #total speed download for all clients
    GlobalUpload 0 #total download for all clients (0 for unlimited)
    Download 5k #limit speed download for each connection
    Upload 0 #unlimit speed upload for each connection
    StayAtHome true #limit client to his home
    VirtualChroot true #fake a chroot to the home account
    LimitConnection 10 #max connection for the server sftp
    LimitConnectionByUser 1 #max connection for the account
    LimitConnectionByIP 2 #max connection by ip for the account
    Home /home/$USER #overrite home of the user
    IdleTimeOut 300 #(in second) deconnect client is idle too long time
    ResolveIP true #resolve ip to dns
    HideNoAccess true #Hide file/directory which user has no access
    DefaultRights 0640 0750 #Set default rights for new file and directory
    ShowLinksAsLinks false #show links as their destinations
    Charset "ISO-8859-15" #set charset of computer
    </Default>

    Você pode ver que, por padrão, o arquivo inclui as linhas " Download 5k" e "GlobalDownload 50k". Elas fazem com que a taxa de download fique em apenas 5 KB/s e todos os usuários somados não possam ultrapassar 50 KB/s, o que é inadequado na maioria das situações. Edite as opções ajustando os valores ou simplesmente use o valor "0" para desativar os limites.

    As opções "LimitConnection", "LimitConnectionByUser" e "LimitConnectionByIP" indicam, respectivamente, o número máximo de conexões aceitas pelo servidor, o número de conexões com cada login e o número de conexões a partir do mesmo endereço IP. Elas podem ser usadas em situações onde o servidor tem um link estreito, e consequentemente não pode acomodar muitos usuários simultâneos, ou caso você deseje impedir que o usuário possa abrir várias conexões usando o mesmo login, ou a partir do mesmo endereço IP.

    A opção "Home /home/$USER" indica a pasta onde o usuário ficará "preso". Por padrão, ele tem acesso à sua pasta home (o "/home/$USER" é uma variável de sistema que é convertida automaticamente no diretório home do usuário logado).

    As opções dentro da seção "Default" se aplicam a todos os usuários, mas é possível criar seções particulares, especificando limites para cada usuário em particular. Nesse caso, adicione uma nova seção no final do arquivo, contendo o login do usuário e as opções desejadas, como em:

    <User joao>
    Home /var/www/joao
    Download 20k
    Upload 10k
    </User>

    Nesse exemplo o usuário joao fica limitado a uma taxa de download de 20 KB/s e upload de 10 KB/s e tem acesso à pasta "/var/www/joao".

    Sempre que fizer alterações no arquivo, é necessário reiniciar o MySecureShell para que elas entrem em vigor:

    # /etc/init.d/mysecureshell restart

    Você pode verificar quais usuários estão logados e detalhes sobre as transferências que estão sendo realizadas usando o comando "sftp-who", como em "sftp-who joao". Ele retorna um bom volume de informações. Caso precise desconectar um usuário, pode usar o comando "sftp-kill", como em "sftp-kill joao".

     





    Blog:

    Add to Google

    » Gostou do texto?
    Veja nossos livros impressos:

    Smartphones | Linux | Hardware
    Redes | Servidores


    ... ou encontre o que procura usando a busca:

cb
ct
Atualizações



[19/03] Montando um DVD de vídeo na unha, via terminal (atualizado)
[18/03] Core i7: Gulftown e a era dos 6 núcleos
[17/03] Artigo: Primeiras impressões do Haiku (alfa)
[16/03] Criando um sistema de recuperação usando o SystemRescueCD
[15/03] Processadores AMD, parte 2: Phenom II e o Athlon II
[14/03] AMD 890GX
[13/03] Dica: kMyFirewall, um firewall gráfico para o KDE
[12/03] Processadores AMD, parte 1: o Phenom
[11/03] Artigo: Uma olhada no PC-BSD 8.0
[10/03] Artigo: Investigando os modelos do Eee PC
[09/03] Artigo: nVidia Optimus
[05/03] Artigo: Comparativo de desktops: Zenwalk, Salix OS e GoblinX
[03/03] Artigo: Meego: a fusão entre Maemo e Moblin
[02/03] Artigo: Uma breve análise do Linux Mint 8 'Helena'
[01/03] Processadores: Chipsets e placas para o Core 2 Duo, Quad e Celeron
[26/02] Tutorial: Criando um loop de vídeo com o Kino e o Audacity
Destaques



» Hardware o Guia Definitivo, disponível para leitura online
» Como um HD funciona: Head Switch Time
» Redes: TCP/IP, endereçamento e portas
» O básico para o Debian Lenny no desktop
» Configurando um servidor de rede local com o Ubuntu, fácil
» Uma breve análise do Linux Mint 8 'Helena'
» Programação Orientada a Objetos: uma introdução
» Smartphones: TCPMP e CorePlayer
» PCI Express: compatibilidade, linhas de dados e o PCIe 2.0
» Dual-SIM: Usando dois chips no mesmo aparelho
» Smartphones e telas: Tamanho e touchscreen
Receba as atualizações diariamente por e-mail:
Assine o RSS Veja todas as atualizações... Add to Google
cb
Livros de Carlos E. Morimoto Contato HOME