|
|||||||
| Wiki | Classificados | Galeria | Reviews | Jogos | Comunidades | RSS Feeds | FAQ | Termos de Uso | Sobre |
| Cadastre-se | Fotos | Blogs | Lista de Membros | Calendário | Pesquisar | Mensagens de Hoje | Marcar Fóruns Como Lidos |
FerramentasPublicidade |
From UnderLinux WikiPure-ftpd Tutorial
[editar] IntroduçãoO objetivo desse tutorial é implementar um servidor de ftp que consiga ser seguro e extremamente configurável, o Pure-ftpd é um servidor baseado no Troll-FTPd que consegue reunir essas duas características. Abaixo segue um texto retirado do manual do Pure-ftpd mostrando algumas de suas características. Pure-FTPd is a fast, production-quality, standard-conformant FTP server, based upon Troll-FTPd. Unlike other popular FTP servers, it's designed to be secure in default configuration, has no known buffer overflow, it is really trivial to set up and it is especially designed for modern kernels. It was successfully ported to Linux, FreeBSD, NetBSD, OpenBSD, MicroBSD, BSDi, Solaris, Darwin, Tru64, Irix and HPUX. Features include chroot()ed and/or virtual chroot()ed home directories, virtual domains, built-in 'ls', anti-warez system, bounded ports for passive downloads, FXP protocol, bandwidth throttling, ratios, LDAP / MySQL / PostgreSQL-based authentication, fortune files, Apache-like log files, fast standalone mode, text / HTML / XML real-time status report, virtual users, virtual quotas, privilege separation and more. [editar] InstalaçãoVocê pode adquirir o Pure-ftpd em [www.pure-ftpd.org], estou assumindo que você tenha baixado o arquivo no diretório "/usr/local/src". bash-2.05a# cd /usr/local/src/ bash-2.05a# tar -xvzf pure-ftpd-1.0.14.tar.gz bash-2.05a# cd pure-ftpd-1.0.14/ Recomendo você ler as opções de compilação com o comando "configure --help". bash-2.05a# ./configure --help Configurando o Pure-ftpd para usar o método padrão de armazenamento de senhas bash-2.05a# ./configure --with-everything --with-language=brazilian-portuguese bash-2.05a# make bash-2.05a# make install-strip [editar] ConfiguraçãoPrimeiro temos que certificar se o servidor esta funcionando corretamente, para isso vamos iniciar o Pure-ftpd sem nenhuma opção especial só para testes. bash-2.05a# /usr/local/sbin/pure-ftpd -B Essa opção -B força o servidor rodar em background com um daemon do sistema, agora vamos conectar ao nosso servidor para checar se esta tudo em ordem. bash-2.05a# ftp localhost Connected to localhost. 220---------- Bem-vindo a Pure-FTPd 1.0.14 ---------- 220-Você é o usuário número 1 de 50 permitidos 220-Hora local agora é 16:56 e a carga é 0.22. Porta do servidor: 21. 220 Você será desconectado após 15 minutos de inatividade. Name (localhost:root): anonymous 230 Usuário anônimo logado Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221-Adeus. Você enviou 0 e recebeu 0 kbytes. 221 Fim de sessão - tempo de CPU utilizado: 0.020 segundos. Parece que esta tudo ok, agora vamos dar um olhada nas opções de inicialização que o Pure-ftpd nos oferece. -4 --ipv4only -a --trustedgid -A --chrooteveryone -b --brokenclientscompatibility -B --daemonize -c --maxclientsnumber -C --maxclientsperip -d --verboselog -D --displaydotfiles -e --anonymousonly -E --noanonymous -f --syslogfacility -F --fortunesfile -g --pidfile -G --norename -h --help -H --dontresolve -i --anonymouscantupload -I --maxidletime -j --createhomedir -k --maxdiskusagepct -K --keepallfiles -l --login or : -L --limitrecursion -m --maxload -M --anonymouscancreatedirs -N --natmode -o --uploadscript -O --altlog : -p --passiveportrange -P --forcepassiveip -q --anonymousratio : -Q --userratio : -r --autorename -R --nochmod -s --antiwarez -S --bind -t --anonymousbandwidth -T --userbandwidth or []:[] -u --minuid -U --umask -V --trustedip -w --allowuserfxp -W --allowanonymousfxp -x --prohibitdotfileswrite -X --prohibitdotfilesread -y --peruserlimits : -z --allowdotfiles -Z --customerproof Para mais informações sobre cada opção verifique no arquivo README no diretório "/usr/local/src/pure-ftpd-1.0.14/" Vamos desligar o servidor para usar outras opções. bash-2.05a# killall pure-ftpd Agora vamos iniciar o servidor com o limite máximo de 100 usuários 2 usuários por ip e que faça um log de transferências no arquivo "/var/log/pureftpd.log" bash-2.05a# /usr/local/sbin/pure-ftpd -B -c 100 -C 2 -O clf:/var/log/pureftpd.log bash-2.05a# ftp localhost Connected to localhost. 220---------- Bem-vindo a Pure-FTPd 1.0.14 ---------- 220-Você é o usuário número 1 de 100 permitidos 220-Hora local agora é 17:26 e a carga é 0.12. Porta do servidor: 21. 220 Você será desconectado após 15 minutos de inatividade. Name (localhost:root): root 331 Usuário root OK. Senha requerida Password: 230-Usuário root tem acesso de grupo a: floppy wheel disk adm 230- sys daemon bin root 230 OK. Diretório atual é /root Remote system type is UNIX. Using binary mode to transfer files. ftp> get /etc/passwd passwd local: passwd remote: /etc/passwd 200 Comando PORT bem sucedido 150 Conectando com a porta 32786 226-Arquivo transferido com sucesso 226 0.000 segundos (medidos aqui), 6.86 Mbytes por segundo 986 bytes received in 0.000336 secs (2.9e+03 Kbytes/sec) ftp> quit 221-Adeus. Você enviou 0 e recebeu 1 kbytes. 221 Fim de sessão - tempo de CPU utilizado: 0.010 segundos. [editar] Checando o log de transferênciasbash-2.05a# cat /var/log/pureftpd.log localhost - root [24/Mar/2003:17:24:53 -0300] "GET /etc/passwd" 200 986 Note que o esquema é o mesmo dos logs do apache. [editar] Usuários virtuaisA melhor forma de aproveitar todos os recursos que o Pure-ftpd tem a oferecer é usando o esquema de usuário virtual, com esse esquema você separa as contas de ftp em um outro arquivo em vez do famoso /etc/passwd, e ainda pode setar opções como quotas, ratios e bandwidth para cada usuário cadastrado. Para usar esse esquema é necessário criar um grupo e usuário especifico para o servidor bash-2.05a# groupadd ftpgroup bash-2.05a# useradd -g ftpgroup -d /dev/null -s /etc ftpuser O processo de criação de usuários virtuais é feito pelo programa pure-pw, e tem a seguinte sintaxe para inclusão de um usuário novo. pure-pw useradd [-f ] -u [-g ] -D/-d [-c ] [-t ] [-T ] [-n ] [-N ] [-q ] [-Q ] [-r [/][,[/]]...] [-R [/][,[/]]...] [-i [/][,[/]]...] [-I [/][,[/]]...] [-y ] [-z -] [-m] Vamos adicionar um usuário virtual chamado teste para exemplificar as coisas bash-2.05a# pure-pw useradd teste -u ftpuser -d /home/ftpusers/teste Password: Enter it again: Se você iniciar o pure-ftpd com a opção "-j" não é preciso criar os diretórios manualmente, a medida que o usuário logar o diretório será automaticamente criado. Agora o usuário teste foi criado no arquivo "/etc/pureftpd.passwd", note que esse arquivo é semelhante ao "/etc/passwd". bash-2.05a# cat /etc/pureftpd.passwd teste:$1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1:1008:104::/home/ftpusers/teste/./:::::::::::: Para modificar uma conta ja criada usamos o mesmo comando "pure-pw" como mostrado. pure-pw usermod -f -u [-g ] -D/-d -[c ] [-t ] [-T ] [-n ] [-N ] [-q ] [-Q ] [-r /] [-R /] [-i /] [-I /] [-y ] [-z -] [-m] Vou modificar a quota do usuário teste para 5 mb. bash-2.05a# pure-pw usermod teste -N 5 Agora vendo o arquivo "/etc/pureftpd.passwd" novamente bash-2.05a# cat /etc/pureftpd.passwd teste:$1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1:1008:104::/home/ftpusers/teste/./:::::::5242880::::: Note que foi adicionado o valor 5242880 ao arquivo depois que foi modificada a quota do usuário. Caso eu queira tirar o limite de quota para o usuário teste basta eu modificar a quota e deixar o valor nulo (). bash-2.05a# pure-pw usermod teste -N '' bash-2.05a# cat /etc/pureftpd.passwd teste:$1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1:1008:104::/home/ftpusers/teste/./:::::::::::: Veja que voltou ao que era antes de setar a quota. Para deletar um usuário use a seguinte sintaxe. pure-pw userdel [-f ] [-m] Para mudar a senha use a seguinte sintaxe. pure-pw passwd [-f ] [-m] Para mostrar informações sobre um usuário use a seguinte sintaxe. pure-pw show [-f ] Vamos mostrar as informações do usuário teste. bash-2.05a# pure-pw show teste Login : teste Password : $1$K1XRWeB0$7uiAg6aV2BpHbUN0S47xF1 UID : 1008 (ftpuser) GID : 104 (ftpgroup) Directory : /home/ftpusers/teste/./ Full name : Download bandwidth : 0 Kb (unlimited) Upload bandwidth : 0 Kb (unlimited) Max files : 0 (unlimited) Max size : 0 Mb (unlimited) Ratio : 0:0 (unlimited:unlimited) Allowed local IPs : Denied local IPs : Allowed client IPs : Denied client IPs : Time restrictions : 0000-0000 (unlimited) Max sim sessions : 0 (unlimited) O Pure-ftpd não lê o arquivo "/etc/pureftpd.passwd" diretamente, ele cria uma pequena base de dados usando o arquivo "/etc/pureftpd.passwd", para criar a base de dados use o comando. bash-2.05a# pure-pw mkdb Agora um arquivo chamado "/etc/pureftpd.pdb" foi criado a partir do "/etc/pureftpd.passwd", o conteúdo desse novo arquivo é otimizado para uma leitura mais rápida que um arquivo de texto comum, sendo assim o Pure-ftpd usa o "/etc/pureftpd.pdb" para autenticação de usuários virtuais. Se você quiser que ao adicionar algum usuário novo ou modificar suas informações o arquivo "/etc/pureftpd.pdb" seja automaticamente atualizado, basta usar a opção -m no final do comando. bash-2.05a# pure-pw passwd teste -m Password: Enter it again: Neste caso, ao modificar a senha do usuário teste o arquivo "/etc/pureftpd.pdb" foi automaticamente atualizado com a nova senha, lembrando que não é necessário reiniciar o servidor para essas configurações surtirem efeito. Agora que ja temos um usuário pronto para testar, vamos desligar o servidor para adicionar o suporte a usuários virtuais. bash-2.05a# killall pure-ftpd bash-2.05a# /usr/local/sbin/pure-ftpd -B -c 100 -C 2 -O clf:/var/log/pureftpd.log -j -lpuredb:/etc/pureftpd.pdb [editar] Agora vamos ao testebash-2.05a# ftp localhost Connected to localhost. 220---------- Bem-vindo a Pure-FTPd 1.0.14 ---------- 220-Você é o usuário número 1 de 100 permitidos 220-Hora local agora é 18:20 e a carga é 0.17. Porta do servidor: 21. 220 Você será desconectado após 15 minutos de inatividade. Name (localhost:root): teste 331 Usuário teste OK. Senha requerida Password: 230-Usuário teste tem acesso de grupo a: 104 230 OK. Diretório atual é / Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" é a sua localização atual ftp> quit 221-Adeus. Você enviou 0 e recebeu 0 kbytes. 221 Fim de sessão - tempo de CPU utilizado: 0.010 segundos. Note que por padrão o usuário tem seu home como a raiz do servidor ftp, ou seja "/home/ftpusers/teste = /" no servidor ftp. Para converter usuários contidos no "/etc/passwd" para usuários virtuais do Pure-ftpd use o comando. bash-2.05a# pure-pwconvert >> /etc/pureftpd.passwd Com esse comando os usuários do arquivo "/etc/passwd" serão adicionados ao final do arquivo "/etc/pureftpd.passwd", ai depois e so rodar o "pure-pw mkdb" para atualizar tudo bash-2.05a# pure-pw mkdb [editar] ConclusãoEste foi apenas um tutorial básico sem muitas pretensões, meu objetivo aqui foi de apresentar o Pure-ftpd a comunidade em geral, realmente o software tem inúmeras opções de operação que eu deixei de fora (porque está tudo documentado nos arquivo README) inclusive a interação com banco de dados mysql e postgresql. Mais uma vez eu recomendo fortemente ler os arquivo README para um aprofundamento melhor no programa. Queria deixar apenas um pequeno lembrete que o diretório raiz dos usuários anonymous é o diretório do user ftp (/home/ftp). Um abraço a todos e até a próxima.
|