Visite também: BR-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]

Tutoriais/Ftpd/Home-Limiter

De UnderLinux Wiki

Limitando um usuário ao seu próprio diretório no FTP

Introdução

Este artigo mostra como utilizar mao de um recurso muito poderoso que é o de "travar" o usuario de FTP somente ao contexto dele no sistema de arquivos do servidor. Dessa maneira os usuarios nao poderão fazer acesso a áreas do sistema, que nao sejam reservadas a ele.

Configuraçao

Crie o usuário ftp com o comando #adduser (sugiro que este seja usado somente para ftp).

Crie a senha do usuário com o comando #passwd .

Insira a entrada /etc/ftponly em /etc/shells. Essa entrada será utilizada para validar um suposto shell. Esse suposto shell é, por default, visto pelo wu-ftpd como uma espécie de ordem de ativação de comandos ftp para o usuário logado. Como o shell /etc/ftponly não existe, o usuário não conseguirá efetuar logon por telnet, terminal etc. Isso já é uma boa medida de segurança. :-)

Edite o arquivo /etc/passwd e edite a linha referente ao usuário. Troque o shell de /bin/bash (geralmente esse é o default) para /etc/ftponly. Depois coloque a sentença /./ (barra-ponto-barra) no ponto que será considerado a raiz do usuário ftp. Exemplo: digamos que você tenha criado o usuário eriberto e não queira que ele saia do seu próprio diretório. A linha original, que era assim:

eriberto:x:501:501::/home/eriberto:/bin/bash

Fica agora assim:

eriberto:x:501:501::/home/eriberto/./:/etc/ftponly

Se você quisesse manter o eriberto dentro de /home, a linha ficaria assim:

eriberto:x:501:501::/home/./eriberto:/etc/ftponly

Edite o arquivo /etc/ftpaccess e insira como últimas linhas:

path-filter guest /etc/pathmsg ^[-A-Za-z0-9_.]*$ ^. ^-

guestuser eriberto

A linha path-filter definiu que os arquivos a serem transportados (ftp) podem conter no seu nome qualquer letra maiúscula ou minúscula, todos os algarismos de 0 a 9, além dos caracteres . (ponto),_ (underscore ou underline) e - (traço). Também diz que o nome dos arquivos não podem começar com . (ponto) ou - (traço). Se houver algum nome de arquivo irregular, a mensagem contida em /etc/pathmsg será enviada ao usuário.

Ainda no arquivo ftpaccess, verifique se a primeira linha (class) contém a entrada guest. Exemplo:

class all real,guest,anonymous *

Esse guest refere-se aos usuários que irão logar ftp.

Determine também quais ações o guest pode realizar. Isso é feito nas linhas compress, tar, chmod, delete, overwrite e rename. Por exemplo:

delete yes guest,anonymous

A linha acima permite que os usuários tipo guest e anonymous possam deletar arquivos por ftp. A expressão all refere-se a guest e anonymous ao mesmo tempo.

Crie o arquivo /etc/pathmsg com um conteúdo similar a:

Só é permitido o upload de arquivo cujo nome contenha qualquer letra de A a Z, maiúscula ou minúscula,
algarismos de 0 a 9, além dos caracteres . - _
Os nomes dos arquivos não podem iniciar com . ou -

Verifique as permissões de /home/eriberto com os comandos:

#cd /home
#ls -l | grep eriberto

O usuário eriberto deverá ser o dono do diretório /home/eriberto. Se for o caso, ajuste isso com o comando:

#chown eriberto.eriberto /home/eriberto

Dê permissão 700 para o diretório caso somente o usuário deva ter acesso ao mesmo. Para torná-lo público (é o caso de sites que são administrados por ftp), utilize permissão 755. Exemplo:

#chmod 755 /home/eriberto

O wu-ftp é capaz de realizar ações como deletar arquivos ou renomeá-los. Mas você deve fornecer o comando ls e as libraries necessárias. Para tanto, crie os diretórios etc e lib dentro de /home/eriberto e setar as devidas permissões:

#cd /home/eriberto
#mkdir bin lib
#chmod 111 bin lib

Agora copie o comando ls para /home/eriberto/bin e as libraries necessárias para /home/eriberto/lib. Para descobrir onde está o comando ls e a suas libraries, execute os seguintes comandos:

which ls
ldd /bin/ls

Copie os arquivos:

#cp /bin/ls /home/eriberto/bin
#cp /lib/libtermcap.so.2 /home/eriberto/lib
#cp /lib/libc.so.6 /home/eriberto/lib
#cp /lib/ld-linux.so.2 /home/eriberto/lib

Pronto ! Se você fez tudo certo, logue por ftp. Deverá aparecer a mensagem "Access restrictions apply". Digitando o comando pwd, ele deverá mostrar que o diretório atual é o raiz ( / ).

Se você quiser ativar o recurso de descompactação de arquivos pelo servidor, a exemplo do mostrado no ultimo passo ., faça o mesmo com os comandos tar, gunzip e unzip.

Autor

João Eriberto Mota Filho