This shows you the differences between two versions of the page.
— |
pousada [2011/10/14 05:39] (current) cledjan criada |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 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: | ||
+ | # [...] | ||
+ | |||
+ | <IfModule mod_tls.c> | ||
+ | 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 | ||