====== Criação e Configuração do servidor www.pousada.uapi.edu.br ====== ===== Ambiente ===== Sistema Operacional: Debian lenny Serviços: mysql, apache, php, quota, proftpd, libcrypt-passwdmd5-perl ===== Configurar Quota ===== Inserção de **usrquota** na partição desejada no arquivo /etc/fstab : Ex: UUID=14dede4b-9f86-43a4-a338-56ee6728eae9 / ext4 errors=remount-ro,usrquota 0 1 ===== Configuração ProFTPD ===== root@server:~#cd /etc/proftpd/ root@server:~#nano proftpd.conf Para delimitar o acesso a home: DefaultRoot ~ Não requerer que os usuários tenham um shell valido: RequireValidShell off root@server:~#/etc/init.d/proftpd restart ===== Acesso seguro FTPS (TLS/SSL) ===== Na configuração do ProFTPD, o suporte TLS precisa ser ativado. A mesma é feita em duas fases: primeiro deve-se configurar o módulo TLS no arquivo de configuração /etc/proftpd/tls.conf e em seguida incluir esta configuração no arquivo de configuração principal /etc/proftpd/proftpd.conf. A configuração do módulo TLS é feita no ficheiro /etc/proftpd/tls.conf: # [...] TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 # [...] # Server SSL certificate. # [...] # [...] TLSRSACertificateFile /etc/ssl/certs/server.crt TLSRSACertificateKeyFile /etc/ssl/private/server.key.insecure # [...] # Are clients required to use FTP over TLS when talking to this server? # TLSRequired on # [...] Os certificados usados em TLSRSACertificateFile e TLSRSACertificateKeyFile já devem estar gerados ([[Certificadossl|saiba mais]]). A opção TLSRequired on obriga a que os clientes ftp usem o protocolo TLS, caso contrário não aceitará ligações. Se esta opção for desligada (TLSRequired off), o servidor aceitará ligações seguras e não seguras. Em seguida esta configuração deverá ser incluída no arquivo de configuração principal /etc/proftpd/proftpd.conf: # [...] # # This is used for FTPS connections # Include /etc/proftpd/tls.conf # [...] root@server:~# /etc/init.d/proftpd restart root@server:~# reboot ===== Biblioteca libcrypt-passwdmd5-perl ===== Deve ser usada uma biblioteca de encriptação para ser utilizada no comando "useradd", parâmetro de senha, no script de criação de usuários mostrado mais a frente. # apt-get install libcrypt-passwdmd5-perl Crie um arquivo, senha.pl, com as informações abaixo na pasta /usr/bin : #nano /etc/bin/senha.pl #!/usr/bin/perl use Crypt::PasswdMD5; # Criptografa a senha do usuário @itoa64=split(//,"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); srand(); $salt=""; for($i=0;$i<8;$i++){ $salt .= "$itoa64[rand(64)]"; } $password=$ARGV[0]; $md5_crypted_passwd = unix_md5_crypt($password,$salt); print("$md5_crypted_passwd"); Adicione poder de execução #chmod +x /usr/bin/senha.pl ===== Criando Usuários ===== Dois arquivos de texto com informações dos clientes devem ser criados na pasta /var/www, um contendo a listagem de matricula e cpf (separados por vírgula) (uma linha, um aluno) dos alunos que terão contas criadas (usuarios.txt) e outro contendo apenas as matrículas (usuariosquota.txt), excluindo o primeiro da lista usuarios.txt. Ex: usuarios.txt 07L02114,87697785315 07L02122,00386012300 07L02360,01440126348 Ex:usuariosquota.txt 07L02122 07L02360 ===== Gerando Scripts ===== Deve-se criar o script, cria_usu.sh, que cria todas as contas dos usuários na máquina, suas homes e também os bancos de dados associado as contas respectivas, tendo como arquivo de entrada usuarios.txt. Script cria_usu.sh: #!/bin/sh while read linha do login=`echo $linha | cut -d, -f1` senha=`echo $linha | cut -d, -f2` echo "Lendo usuario login:$login senha:$senha" #cria home do usuario mkdir /var/www/$login echo "Home:/var/www/$login criada." #cria usuario useradd -d /var/www/$login -s /bin/false -p $(senha.pl $senha) $login echo "Usuario login:$login senha:$senha criado." chown $login:$login /var/www/$login chmod 777 /var/www/$login #cria banco do usuario mysql -uroot -psenhadorootbanco -e "create database $login;" #cria usuario do banco mysql -uroot -psenhadorootbanco -e "GRANT ALL PRIVILEGES ON $login.* TO '$login'@'%' IDENTIFIED BY '$senha'" echo "Banco $login criado. Acesso por usuario:$login e senha:$senha." echo "--------" done < usuarios.txt Após criado o arquivo, deve-se dar permissão de execução: #chmod +x /var/www/cria_usu.sh Em seguida, executa-se o script: #./var/www/cria_usu.sh Após todos os usuários terem sido criados, deve-se criar o script que definirá a quota de cada um. Mas antes, deve-se configurar um usuário manualmente para servir de base para o script. Então para o primeiro usuário da lista usuarios.txt: #edquota -u usuário -> colocar tamanho de quota nos primeiros soft hard em kbytes mesmo valor Ex: Quota de 40000kb Filesystem blocks soft hard inodes soft hard /dev/disk/by-uuid/8fc82034-37bd-407f-b291-cb86acc3afab 16 40000 40000 4 0 0 O script para definir as quotas para todos os usuários, quota.sh, baseado no arquivo de entrada usuarioquota.txt, deve ser criado em /var/www e conter o seguinte: Script quota.sh: #!/bin/bash usuarios=usuariosquota.txt linhas=`cat "$usuarios"` for linha in $linhas; do edquota -p 07L02114 $linha done Após criado o arquivo, deve-se dar permissão de execução: #chmod +x /var/www/quota.sh Em seguida, executa-se o script: #./var/www/quota.sh Neste ponto todos os usuários estão cadastrados com acesso apenas a sua home, sem shell, com acesso ftps e a um banco de dados. FIM ===== Fontes ===== http://www.vivaolinux.com.br/etc/proftpd.conf-robertors http://www.devin.com.br/shell_script/ http://thobias.org/doc/shell_bd.html http://ubuntuforum-br.org/index.php?topic=69956.0 http://www.hardware.com.br/comunidade/useradd-senha/238143/ http://apostilas.fok.com.br/manual-do-php/function.crypt.php http://dev.mysql.com/doc/refman/4.1/pt/grant.html http://www.brunorusso.eti.br/dicas/mysql/comando-para-criar-usuario-no-mysql http://www.hospedia.com.br/artigos/7/mysql/1/mysql_basico_-_o_comando_create_table_-_criando_tabelas.html http://social.msdn.microsoft.com/Forums/pt-BR/vsvbasicpt/thread/1d4f029c-c9a9-4596-b645-26fd9e53d356/ http://servidordebian.wikidot.com/squeeze:internet-ftp-proftpd-tls-ssl http://servidordebian.wikidot.com/squeeze:intranet-ssl-cert-self-signed