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 | ||