Mudanças entre as edições de "Projeto Integrador - 2011.1 - Fenrir"
(→DNS) |
|||
(17 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 19: | Linha 19: | ||
==3º Dia 15/06/2011 == | ==3º Dia 15/06/2011 == | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
*Status das Atividades | *Status das Atividades | ||
Linha 191: | Linha 186: | ||
=== Postfix === | === Postfix === | ||
+ | |||
+ | Os arquivos de configuração ficam no /etc/postfix | ||
+ | As configurações do servidor de email ficm no /etc/postfix/main.cf | ||
+ | |||
+ | #ARQUIVOS MODIFICADOS PARA DOMINIO DA EQUIPE FENRIR | ||
+ | #--------------------------------------------------------------------- | ||
+ | #Segundo a documentação essa opção é necessario para o funcionamento do emails alias (emails de subdominios) | ||
+ | best_mx_transport = local | ||
+ | # Maquina onde estáhospedado meu servidor de e-mails | ||
+ | myhostname = mail.fenrir.sj.edu.br | ||
+ | # Nome do meu Domínio | ||
+ | mydomain = fenrir.sj.ifsc.edu.br | ||
+ | # Nome do Domínio de origem (quando enviamos e-mails) | ||
+ | myorigin = fenrir.sj.ifsc.edu.br | ||
+ | # Opção que ativa os dominios virtuais | ||
+ | # Todos os Subdominio devem ser acrescentados no arquivo mydomains | ||
+ | # O comando hash éigual o include. porem no manual do postfix se manda utilizar o hash ao inves do include | ||
+ | virtual_alias_domains = hash:/etc/postfix/mydomains | ||
+ | # Lista de dominios que nosso email pode receber ou seja: | ||
+ | # $mydomain = fenrir.sj.ifsc.edu.br então qualquer e-mail enviado para esse dominio nosso servidor de e-mails reconhecera que na verdade é pra ele esse e-maa | ||
+ | il | ||
+ | mydestination = $myhostname, $mydomain, $virtual_alias_domains | ||
+ | |||
+ | mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 | ||
+ | # Opção que define por qual interface de rede ele vai receber e-mails | ||
+ | # No nosso caso ativamos todas, ou seja se ele receber e-mail pela eth0 ou eth1 eth2 tanto faz pra ele não faz difereça | ||
+ | inet_interfaces = all | ||
+ | |||
+ | mynetworks_style = subnet | ||
+ | #Opção que define o que fazer com o e-mail com destino para um subdominio declarado no mydomains | ||
+ | #No nosso caso mandamos redirecionar para usuarios Linux | ||
+ | alias_maps = hash:/etc/postfix/virtual | ||
+ | #Cria uma pasta para cada usuario e salva cada e-mail em arquivo texto separado | ||
+ | home_mailbox = Maildir/ | ||
+ | # | ||
+ | # TODOS AS OUTRAS opções OPTAMOS POR DEIXAR DEFAULT | ||
+ | #------------------------------------------------------ | ||
+ | relayhost = | ||
+ | mailbox_size_limit = 0 | ||
+ | recipient_delimiter = + | ||
+ | |||
+ | |||
+ | arquivo /etc/postfix/mydomains | ||
+ | |||
+ | Todos os subdomínios são inseridos no arquivo /etc/postfix/mydomains, para inclui-los no servidor de email foi feito um arquivo virtual_alias_domains=hash:/etc/postfix/mydomains | ||
+ | |||
+ | fenrir.sj.ifsc.edu.br OK | ||
+ | azaghal.fenrir.sj.ifsc.edu.br OK | ||
+ | marco.fenrir.sj.ifsc.edu.br OK | ||
+ | sextafeira.fenrir.sj.ifsc.edu.br OK | ||
+ | novoteste.fenrir.sj.ifsc.edu.br OK | ||
+ | laksdalkdakljd.fenrir.sj.ifsc.edu.br OK | ||
+ | |||
+ | arquivo /etc/postfix/virtual | ||
+ | |||
+ | Neste arquivo coloco os usuários com os seus subdomínios | ||
+ | |||
+ | fenrir@fenrir.sj.ifsc.edu.br fenrir | ||
+ | azaghal@azaghal.fenrir.sj.ifsc.edu.br azaghal | ||
+ | marco@marco.fenrir.sj.ifsc.edu.br marco | ||
+ | sexta@sextafeira.fenrir.sj.ifsc.edu.br sexta | ||
+ | novoteste@novoteste.fenrir.sj.ifsc.edu.br novoteste | ||
+ | boromir@laksdalkdakljd.fenrir.sj.ifsc.edu.br boromir | ||
+ | |||
=== RoundClub === | === RoundClub === | ||
+ | '''Seguimos o tutorial encontrado na página do professor Odilson http://www.sj.ifsc.edu.br/~odilson/Gerencia/Roteiro%20do%20RoundCube.pdf''' | ||
+ | |||
+ | <nowiki>Roteiro para instalar o RoundCube | ||
+ | 1. Logar como root: sudo -i | ||
+ | 2. Ir para o diretório www: cd /var/www | ||
+ | 3. Baixar o pacote: wget | ||
+ | http://ufpr.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.4.2/roundcube | ||
+ | mail-0.4.2.tar.gz | ||
+ | 4. Desempacotar: tar -zxvf roundcubemail-0.4.2.tar.gz | ||
+ | 5. Renomear para webmail: mv roundcubemail-0.4.2 webmail | ||
+ | 6. Instalar o Dovecot: apt-get install -y dovecot-imapd dovecot-pop3d | ||
+ | 7. Configurar o Dovecot: vi /etc/dovecot/dovecot.conf e ajustar os seguintes | ||
+ | parâmetros (procure no arquivo pela exata localização). | ||
+ | ◦ protocols = pop3 pop3s imap imaps | ||
+ | ◦ pop3_uidl_format = %08Xu%08Xv | ||
+ | ◦ mail_location = maildir:~/Maildir | ||
+ | 8. Reconfigurar a conta do aluno com os comandos (isto deve ser feito a todos os usuários do | ||
+ | sistema): | ||
+ | ◦ maildirmake.dovecot /home/aluno/Maildir | ||
+ | ◦ maildirmake.dovecot /home/aluno/Maildir/.Drafts | ||
+ | ◦ maildirmake.dovecot /home/aluno/Maildir/.Sent | ||
+ | ◦ maildirmake.dovecot /home/aluno/Maildir/.Trash | ||
+ | ◦ maildirmake.dovecot /home/aluno/Maildir/.Templates | ||
+ | ◦ chown -R aluno /home/aluno/Maildir/ | ||
+ | ◦ chmod -R go-rwx /home/aluno/Maildir | ||
+ | 9. Reconfigurar o Postfix: vi /etc/postfix/main.cf acrescentando a diretiva: | ||
+ | ◦ home_mailbox = Maildir/ | ||
+ | 10. Reiniciar os serviços: service dovecot restart service postfix restart | ||
+ | 11. Instalar os pacotes: apt-get install -y php5 sqlite php5-sqlite php-net-smtp php-mailmime | ||
+ | php-mdb2 | ||
+ | 12. Dentro de /var/www/webmail mudar as permissões: chmod 777 temp/ logs/ | ||
+ | 13. Dentro de /var/www/webmail/SQL popular a base de dados: sqlite -init | ||
+ | /var/www/webmail/SQL/sqlite.initial.sql sqlite.db para sair do sqlite digite só e | ||
+ | somente só: .exit | ||
+ | 14. Mude as permissões: chmod o+rw sqlite.db e chmod 755 | ||
+ | /var/www/webmail e chmod 777 /var/www/webmail/SQL/ | ||
+ | 15. Reinicie o Apache2 (service apache2 restart). Sabendo que o Apache2 está rodando e a | ||
+ | página default está em /var/www, acesso com o Firefox a página: | ||
+ | http://192.168.2 . X /webmail/installer/ | ||
+ | 16. Clique em Start Installation. Verifique se há alguma pendência NÃO opcional (essencial), | ||
+ | se houver resolva! | ||
+ | 17. Clique em Next. No quadro Database setup ajuste somente SQLite database type e | ||
+ | /var/www/webmail/SQL/sqlite.db DataBase Name, os demais campos deixe em branco e | ||
+ | clique em Next. | ||
+ | 18. Copie ou baixe os arquivos com os nomes indicados para /var/www/webmail/config/. | ||
+ | Clique em CONTINUE. | ||
+ | 19. Acesse a página http://192.168.2 . X /webmail/ e forneça o login e senha do alune e como | ||
+ | servidor coloque mail.redesX.edu.br. | ||
+ | 20. Faça testes enviando mensagens aos colegas.</nowiki> | ||
+ | |||
=== Apache === | === Apache === | ||
'''Arquivo default do apache salvo em /etc/apache2/sites-available e em /etc/apache2/sites-enabled''' | '''Arquivo default do apache salvo em /etc/apache2/sites-available e em /etc/apache2/sites-enabled''' | ||
Linha 338: | Linha 447: | ||
== Programação para Redes de Computadores == | == Programação para Redes de Computadores == | ||
− | == Instalação de Equipamento de Redes | + | |
+ | '''Todas as páginas têm, como medida de segurança, uma seção(session), para impedir o acesso não autorizado às páginas, que têm caráter administrativo. Segue a configuração de sessão padrão:''' | ||
+ | |||
+ | <nowiki><? | ||
+ | session_start();//inicia a sessão | ||
+ | if (isset($_SESSION['aut'])){ //testa se a seção é válida com um laço if - Se não for, vai para a index.php, se for, continua para o resto da página. | ||
+ | header ("location: admin.php"); | ||
+ | }else{ | ||
+ | |||
+ | //resto da página | ||
+ | } | ||
+ | ?></nowiki> | ||
+ | |||
+ | |||
+ | '''Página index:''' | ||
+ | [[Arquivo:Index_fenrir.png|500px]] | ||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (isset($_SESSION['aut'])){ | ||
+ | header ("location: admin.php"); | ||
+ | }else{ | ||
+ | ?> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta http-equiv="Content-Type" | ||
+ | content="text/html; charset=utf-8"> | ||
+ | <title>AdministraÃÃo de usuÃrios - Fenrir</title> | ||
+ | <style type="text/css"> | ||
+ | <!-- | ||
+ | html, body, form, fieldset { | ||
+ | margin: 0px; | ||
+ | padding: 0; | ||
+ | } | ||
+ | body { | ||
+ | background: #FFF; | ||
+ | color: #000; | ||
+ | font-family: "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; | ||
+ | line-height: 140%; | ||
+ | font-size:12px; | ||
+ | color:#fff; | ||
+ | } | ||
+ | #login { | ||
+ | position:absolute; | ||
+ | width:460px; | ||
+ | height:210px; | ||
+ | z-index:1; | ||
+ | left: 50%; | ||
+ | top: 50%; | ||
+ | margin-left:-230px; | ||
+ | margin-top:-105px; | ||
+ | background:url(logo.jpg) center no-repeat #fff; | ||
+ | } | ||
+ | .inputbox { | ||
+ | color: #666; | ||
+ | font-size: 11px; | ||
+ | margin: 2px 0 0 5px; | ||
+ | padding: 2px; | ||
+ | height:15px; | ||
+ | width:166px; | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | '''A seguir a página de autenticação de usuario''' | ||
+ | <nowiki> <? | ||
+ | session_start(); | ||
+ | $usuario = $_POST['user']; | ||
+ | $senha = $_POST['pass']; | ||
+ | |||
+ | if (( $usuario == "aluno" ) && ( $senha == "1234" )){ | ||
+ | |||
+ | $_SESSION['aut'] = "aluno"; | ||
+ | header("location: admin.php"); | ||
+ | }else{ | ||
+ | header("location: index.php"); | ||
+ | } | ||
+ | ?></nowiki> | ||
+ | |||
+ | '''A seguir, a página admin.php, que funciona como uma página principal, mostrando uma tabela com os clientes cadastrados no sistema, além de dar a opção de incluir, deletar ou alterar os dados dos cadastrados.''' | ||
+ | [[Arquivo:admin_fenrir.png|700px]] | ||
+ | |||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (!isset ( $_SESSION['aut'])){ | ||
+ | header ("location: index.php"); | ||
+ | }else{ | ||
+ | |||
+ | ?> | ||
+ | |||
+ | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
+ | <head> | ||
+ | |||
+ | <title>Servidor Fenrir</title> | ||
+ | <meta name="generator" content="Amaya, see http://www.w3.org/Amaya/" /> | ||
+ | </head> | ||
+ | <style> | ||
+ | tr.linha, div.linha { | ||
+ | background-color:#75AC68; | ||
+ | } | ||
+ | </style> | ||
+ | <body> | ||
+ | <body background="metal.jpg"> | ||
+ | |||
+ | <? | ||
+ | //conectando no servidor | ||
+ | |||
+ | |||
+ | $conexao = mysql_connect("localhost","fenrir","20bmw11"); | ||
+ | |||
+ | //selecao da base de dados | ||
+ | $base_ok = mysql_select_db("fenrir",$conexao); | ||
+ | |||
+ | //obtendo os registro da tabela contatos | ||
+ | $consulta = "SELECT * from admin"; | ||
+ | $resultado = mysql_query($consulta,$conexao); | ||
+ | ?> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <p><a href="sair.php">Sair</a></p> | ||
+ | |||
+ | <table border="0" bgcolor=FFFFFF style="width: 100%" cellpascing="1" cellpadding="0"> | ||
+ | <caption></caption> | ||
+ | <col /> | ||
+ | <col /> | ||
+ | <col /> | ||
+ | <col /> | ||
+ | <col /> | ||
+ | <col /> | ||
+ | <tbody> | ||
+ | <tr> | ||
+ | <td height="23" background="fundo.jpg" > Usuario </td> | ||
+ | <td height="23" background="fundo.jpg"> Senha</td> | ||
+ | <td height="23" background="fundo.jpg" align="center">Dominio </td> | ||
+ | <td height="23" background="fundo.jpg" align="center">E-mail</td> | ||
+ | <td height="23" background="fundo.jpg" align="center">Nome</td> | ||
+ | <td height="23" background="fundo.jpg" align="center">Acao</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> </td> | ||
+ | <td> </td> | ||
+ | <td> </td> | ||
+ | <td> </td> | ||
+ | <td> </td> | ||
+ | <td> </td> | ||
+ | </tr> | ||
+ | <? | ||
+ | $i=0; | ||
+ | while($linha = mysql_fetch_array($resultado)){ | ||
+ | $i++; | ||
+ | if ($i%2==0) $classe = " class='linha'"; else $classe = ""; | ||
+ | ?> | ||
+ | <tr <?=$classe?>> | ||
+ | |||
+ | <td><a href="alterar.php?user=<? echo $linha['usuario'];?>&cliente=<? echo $linha['cliente'];?>&dmn=<? echo $linha['dominio'];?>&codigo=<? echo $linha['id'];?>&pass=<? echo $linha['senha']; ?>"> <? echo $linha['usuario'];?> </a></td> | ||
+ | <td> <? echo $linha['senha']; ?> </td> | ||
+ | <td> <? echo $linha['dominio']; ?></td> | ||
+ | <td> <? echo $linha['usuario']; ?>@<? echo $linha['dominio']; ?>.fenrir.sj.ifsc.edu.br </td> | ||
+ | <td> <? echo $linha['cliente']; ?> </td> | ||
+ | <td><a href="excluir.php?usuario=<? echo $linha['usuario'];?>&codigo=<? echo $linha['id']; ?>&dominio=<? echo $linha['dominio'];?>&cliente=<? echo $linha['cliente']; ?>">Excluir </a></td> | ||
+ | <? | ||
+ | } | ||
+ | //abaixo está o código para a imagem de incluir | ||
+ | //<img border="0" src="atualizar.jpg" width="30" height="30"></a><? echo $linha['usuario']; | ||
+ | ?> | ||
+ | <tr> | ||
+ | <td height="23" background="fundo.jpg" > </td> | ||
+ | <td height="23" background="fundo.jpg"> </td> | ||
+ | <td height="23" background="fundo.jpg" align="center"> </td> | ||
+ | <td height="23" background="fundo.jpg" align="center"></td> | ||
+ | <td height="23" background="fundo.jpg" align="center"> . </td> | ||
+ | </tr> | ||
+ | |||
+ | |||
+ | </tr> | ||
+ | </tbody> | ||
+ | </table> | ||
+ | |||
+ | <p></p> | ||
+ | |||
+ | <p></p> | ||
+ | |||
+ | <p></p> | ||
+ | |||
+ | <p></p> | ||
+ | |||
+ | <p><a href="incluir.php"><img border="0" src="cadastro.gif" width="30" height="30" </a>Adicionar Novo Dominio | ||
+ | </body> | ||
+ | </html> | ||
+ | <? | ||
+ | //liberando a consulta | ||
+ | mysql_free_result($resultado); | ||
+ | |||
+ | //fechando a conexao | ||
+ | mysql_close($conexao); | ||
+ | } | ||
+ | ?></nowiki> | ||
+ | |||
+ | '''Se você clicar em "Sair", a seguinte página é invocada, encerrando a seção, e redirecionando você para "index.php": | ||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | session_destroy(); | ||
+ | header("location: index.php"); | ||
+ | ?></nowiki> | ||
+ | |||
+ | '''Ao clicar em "adicionar um usuário", a pagina é redirecionada para incluir.php, que seve para colocar os dados do novo cliente:''' | ||
+ | [[Arquivo:incluir_fenrir.png|600px]] | ||
+ | |||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (!isset($_SESSION['aut'])){ | ||
+ | header("location: index.php"); | ||
+ | }else{ | ||
+ | ?> | ||
+ | |||
+ | <html> | ||
+ | <head> | ||
+ | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | ||
+ | |||
+ | <title>Incluir clientes no Servidor Fenrir</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <body background="metal.jpg"> | ||
+ | <form name="formTeste" action="conectar.php" method="get"> | ||
+ | |||
+ | <center> | ||
+ | <p>Usuario: <br> | ||
+ | <input type="text" name="usr"> | ||
+ | <p>Senha: <br> | ||
+ | <input type="text" name="pass"> | ||
+ | <p>Dominio: <br> | ||
+ | <input type="text" name="dm"> | ||
+ | <p>Cliente: <br> | ||
+ | <input type="text" name="nm"> | ||
+ | <input type="submit" name="b_enviar" value="Enviar"> | ||
+ | <p><a href="admin.php">Lista de Clientes</a> | ||
+ | </form> | ||
+ | </center> | ||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | |||
+ | <? | ||
+ | } | ||
+ | ?></nowiki> | ||
+ | |||
+ | '''Os dados anteriores são enviados pelo método "get", para a página seguinte, conectar.php:''' | ||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (!isset ($_SESSION['aut'])){ | ||
+ | header("location: index.php"); | ||
+ | }else{ | ||
+ | $usuario = trim($_GET['usr']); | ||
+ | $cliente = trim($_GET['nm']); | ||
+ | $senha= trim($_GET['pass']); | ||
+ | $dominio = trim($_GET['dm']); | ||
+ | |||
+ | if ((empty($usuario)) || (empty($cliente)) || (empty($dominio)) || (empty($senha))) { | ||
+ | |||
+ | header("location: erro.php"); | ||
+ | |||
+ | }else{ | ||
+ | //passando um "filtro" nas variaves | ||
+ | $usuario = strtolower($usuario); | ||
+ | //troca possiveis letras maiusculas por minusculas | ||
+ | $dominio = strtolower($dominio); | ||
+ | $senha = strtolower($senha); | ||
+ | |||
+ | //retira possiveis espaços | ||
+ | $usuario = str_replace(" ","",$usuario); | ||
+ | $senha = str_replace(" ","",$senha); | ||
+ | $dominio = str_replace(" ","",$dominio); | ||
+ | // | ||
+ | // | ||
+ | $conexao = mysql_connect("localhost","fenrir","20bmw11"); | ||
+ | $base_ok = mysql_select_db("fenrir",$conexao); | ||
+ | |||
+ | |||
+ | |||
+ | //----------------------------------- | ||
+ | //verifica se já existe um dominio de mesmo nome | ||
+ | //----------------------------- | ||
+ | |||
+ | $consulta = "SELECT * from admin"; | ||
+ | $resultado = mysql_query($consulta,$conexao); | ||
+ | while($linha = mysql_fetch_array($resultado)){ | ||
+ | if ((! $linha['dominio'] == $dominio) || (! $linha['usuario'] == $usuario)) { | ||
+ | |||
+ | |||
+ | //--------------------------------- | ||
+ | //--------------------------------- | ||
+ | |||
+ | $inserir = "INSERT INTO admin (usuario,senha,dominio,cliente) VALUES ('$usuario','$senha','$dominio','$cliente')"; | ||
+ | //mandando os dados | ||
+ | mysql_query($inserir,$conexao); | ||
+ | //echo mysql_error($conexao) | ||
+ | //------------------------------------------- | ||
+ | //INSERINDO NA TABELA DO RADIUS--------- | ||
+ | //---------------------------------- | ||
+ | |||
+ | |||
+ | |||
+ | $con_rad = mysql_connect("localhost","freerad","bmwls2011"); | ||
+ | $base_ok = mysql_select_db("radius",$con_rad); | ||
+ | |||
+ | $inserir_radius = "INSERT INTO radcheck (username,attribute,op,value) VALUES ('$usuario','password','==','$senha')"; | ||
+ | |||
+ | mysql_query($inserir_radius,$con_rad); | ||
+ | |||
+ | |||
+ | mysql_close($con_rad); | ||
+ | mysql_close($conexao); | ||
+ | |||
+ | exec("sudo /var/scripts/add_user.sh $usuario $senha",$adduser); | ||
+ | exec("sudo /var/scripts/add_apache.sh $dominio",$apache); | ||
+ | exec("sudo /var/scripts/add_dns.sh $dominio",$dns); | ||
+ | |||
+ | exec("sudo /var/scripts/add_postfix.sh $dominio $usuario",$postfix); | ||
+ | header("location: admin.php"); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | header("location: admin.php"); | ||
+ | |||
+ | ?> | ||
+ | </nowiki> | ||
+ | |||
+ | '''Ao clicar em excluir um usuário, a página vai para exluir.php:''' | ||
+ | [[Arquivo:excluir_fenrir.png|400px]] | ||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (!isset ($_SESSION['aut'])){ | ||
+ | header("location: index.php"); | ||
+ | }else{ | ||
+ | |||
+ | |||
+ | $usuario = $_GET['usuario']; | ||
+ | $codigo = $_GET['codigo']; | ||
+ | $dominio = $_GET['dominio']; | ||
+ | $cliente = $_GET['cliente']; | ||
+ | ?> | ||
+ | <html> | ||
+ | <head> | ||
+ | |||
+ | <title>Excluir Cliente</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <body background="metal.jpg"> | ||
+ | Você realmente deseja exclur o cliente <?echo $cliente; ?> ?<br /> | ||
+ | |||
+ | <a href="excluir_logica.php?codigo=<? echo $_GET['codigo']; ?>&dominio=<? echo $_GET['dominio']; ?>&usuario=<? echo $_GET['usuario'];?>">Sim</a> | ||
+ | <a href="admin.php">Não</a><br /> | ||
+ | </body> | ||
+ | </html> | ||
+ | <? | ||
+ | } | ||
+ | ?></nowiki> | ||
+ | |||
+ | '''Ao clicar em alterar, a seguinte página aparece''': | ||
+ | [[Arquivo:alterar_fenrir.png|400px]] | ||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (!isset ($_SESSION['aut'])){ | ||
+ | header("location: index.php"); | ||
+ | }else{ | ||
+ | |||
+ | $usuario = $_GET['user']; | ||
+ | $cliente = $_GET['cliente']; | ||
+ | $dmn = $_GET['dmn']; | ||
+ | $senha = $_GET['pass']; | ||
+ | $codigo = $_GET['codigo']; | ||
+ | ?> | ||
+ | <html> | ||
+ | <head> | ||
+ | <meta http-equiv="content-type" content="text/html; charset=utf-8" /> | ||
+ | |||
+ | <title>Alteracoes</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <body background="metal.jpg"> | ||
+ | |||
+ | <form name="formoutroteste" action="alterando.php?codigo=<? echo $codigo ; ?>&senha=<? echo $senha ; ?>&cliente=<? echo $cliente ; ?>&dmn=<? echo $dmn ; ?>" method="post"> | ||
+ | <p>Usuario <br> | ||
+ | <input type="text" name="a" value="<? echo $usuario ?>"> | ||
+ | <p>Senha <br> | ||
+ | <input type="text" name="e" value="<? echo $senha ?>"> | ||
+ | <p>Cliente <br> | ||
+ | <input type="text" name="b"value="<? echo $cliente ?>"> | ||
+ | <p>Dominio <br> | ||
+ | <input type="text" name="c" value="<? echo $dmn ?>"> | ||
+ | |||
+ | <input type="submit" name="a_enviar" value="Alterar"> | ||
+ | </form> | ||
+ | </body> | ||
+ | </html> | ||
+ | <? | ||
+ | } | ||
+ | ?></nowiki> | ||
+ | |||
+ | '''Ao alterar algum campo(com exceção do usuário, que não pode ser alterado), o administrador é redirecionado para a página "alterando.php", onde as alterações são feitas:''' | ||
+ | <nowiki><? | ||
+ | session_start(); | ||
+ | if (!isset ($_SESSION['aut'])){ | ||
+ | header("location: index.php"); | ||
+ | }else{ | ||
+ | |||
+ | #------------------------------------------------------------------- | ||
+ | #NOVOS VALORES | ||
+ | $usuario = $_POST['a']; | ||
+ | $cliente = $_POST['b']; | ||
+ | $dominio = $_POST['c']; | ||
+ | $senha = $_POST['e']; | ||
+ | #CODIGO PARA LOCALIZAR NO MYSQL | ||
+ | $codigo = $_GET['codigo']; | ||
+ | #VALORES QUE ESTAO NA TABELA (PODEMOS DIZER "ANTIGOS") | ||
+ | $pass = $_GET['senha']; | ||
+ | $domain = $_GET['dmn']; | ||
+ | $client = $_GET['cliente']; | ||
+ | #---------------- | ||
+ | #-------------------------- | ||
+ | #------------------------------------------ | ||
+ | #testando se o dominio nao foi escolhido | ||
+ | //conectando no servidor | ||
+ | $conexao = mysql_connect("localhost","fenrir","20bmw11"); | ||
+ | |||
+ | //selecao da base de dadosi | ||
+ | $base_ok = mysql_select_db("fenrir",$conexao); | ||
+ | |||
+ | #------------------------------------------------------- | ||
+ | $consulta = "SELECT * from admin"; | ||
+ | $resultado = mysql_query($consulta,$conexao); | ||
+ | while($linha = mysql_fetch_array($resultado)){ | ||
+ | if ((! $linha['dominio'] == $dominio) || (! $linha['usuario'] == $usuario)) { | ||
+ | |||
+ | #------------------------------------------------ | ||
+ | |||
+ | |||
+ | //Aqui são feitos uma série de testes, se os dados forem diferentes | ||
+ | |||
+ | if (($senha != $pass)){ //se a senha for diferente, roda o script para alterá-la | ||
+ | |||
+ | exec("sudo /var/scripts/alt_senha.sh $usuario $senha",$senhaalterada); | ||
+ | } | ||
+ | |||
+ | //if (($cliente != $client)){ //testa se houve mudança no nome do cliente | ||
+ | // exec("sudo /var/scripts/alt_cliente $client",$clientealterado); | ||
+ | //} | ||
+ | |||
+ | |||
+ | if (($dominio != $domain)){ //testa se houve mudança no domínio, a mudança mais significativa | ||
+ | exec("sudo /var/scripts/alt_dns.sh $domain $dominio",$dominioalterado); | ||
+ | exec("sudo /var/scripts/alt_apache.sh $domain $dominio",$apachealterado); | ||
+ | exec("sudo /var/scripts/alt_postfix.sh $domain $usuario $dominio",$postfixalterado); | ||
+ | |||
+ | } | ||
+ | |||
+ | //Atualiazando o usuario | ||
+ | |||
+ | |||
+ | $atualizar="UPDATE admin SET senha='$senha', dominio='$dominio', cliente='$cliente' WHERE id=$codigo"; | ||
+ | mysql_query($atualizar,$conexao); | ||
+ | |||
+ | //conectando no servidor radius | ||
+ | $con_rad = mysql_connect("localhost","freerad","bmwls2011"); | ||
+ | //selecao da base de dadosi | ||
+ | $base_ok = mysql_select_db("radius",$con_rad); | ||
+ | $alt_radius = "UPDATE radcheck SET value='$senha' WHERE username='$usuario'"; | ||
+ | mysql_query($alt_radius,$con_rad); | ||
+ | |||
+ | //echo mysql_error(); | ||
+ | mysql_close($conexao); | ||
+ | mysql_close($con_rad); | ||
+ | header("location: admin.php"); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | header("location: admin.php"); | ||
+ | ?></nowiki> | ||
+ | |||
+ | == Instalação de Equipamento de Redes == | ||
+ | |||
+ | Na parte de instalação de equipamentos de rede foram feitas as configurações dos equipamentos necessários para que houvesse a comunicação entre os laboratórios de Redes 1 (onde ficarão os servidores das equipes) e Meios de Transmissão ( onde será disposta uma área de trabalho), e ainda para que cada equipe pudesse disponibilizar para seus clientes, acesso a internet via DSL. Os equipamentos necessários para essa ligação foram: | ||
+ | |||
+ | -Roteadores | ||
+ | |||
+ | -Modens SHDSL | ||
+ | |||
+ | -Switch | ||
+ | |||
+ | -DSLAM | ||
+ | |||
+ | -Modens DSL | ||
+ | |||
+ | Além disso foi necessário a configuração de um Concentrador de Acesso, e um servidor Radius. | ||
+ | |||
+ | A primeira ligação e configurações que tiveram de ser feita foram dos modens SHDSL e roteadores. | ||
+ | Os modens foram configurados a nível 'físico', modificando a pinagem da placa do mesmo, segunda a necessidade requerida. Já para os roteadores foi utilizado um software de gerenciamento utilizado via terminal, para estabelecer as rotas e ip's, o minicom, que requer algumas configurações pelo seu menu. | ||
+ | Para entrar com o minicom, fazer no terminial | ||
+ | |||
+ | minicom -s | ||
+ | |||
+ | Para configurar o minicom, selecione a opção : "Configuração da porta serial" | ||
+ | |||
+ | ┌─────────────[configuração]──────────────┐ | ||
+ | │ Nomes de arquivos e rotas | ||
+ | │ Protocolos de transferência de arquivos | ||
+ | │ Configuração da porta serial | ||
+ | │ Modem e discagem | ||
+ | │ Tela e teclado | ||
+ | │ Salvar configuração como dfl | ||
+ | │ Salvar configuração como | ||
+ | │ Sair | ||
+ | │ Sair do Minicom | ||
+ | └────────────────────────────────────────┘ | ||
+ | |||
+ | Em seguida aparecerá: | ||
+ | |||
+ | ┌──────────────────────────────────────────────────────────┐ | ||
+ | │ A – Dispositivo Serial : /dev/tty1 | ||
+ | │ B – Localização do Arquivo de Travamento : /var/lock | ||
+ | │ C – Programa de Entrada : | ||
+ | │ D – Programa de Saída : | ||
+ | │ E – Bps/Paridade/Bits : 38400 8N1 | ||
+ | │ F – Controle de Fluxo por Hardware : Sim | ||
+ | │ G – Controle de Fluxo por Software : Não | ||
+ | │ | ||
+ | │ Alterar qual configuração? | ||
+ | └──────────────────────────────────────────────────────────┘ | ||
+ | |||
+ | Altere as seguintes opções: | ||
+ | |||
+ | Dispositivo Serial : /dev/ttSy0 | ||
+ | Bps/Paridade/Bits : 9600 8N1 | ||
+ | Controle de Fluxo por Hardware : Não | ||
+ | |||
+ | Após, volte ao menu principal, e salve a configuração como 'Salvar configuração com dfl', e saia do minicom com 'sair'. | ||
+ | Agora já é possível acessar o roteador desejado, no caso o roteador cisco 2500, localizado no Lab. Meios, logando com o usuário e senha vindos de 'fábrica'. Após se logar dar os seguintes comandos: | ||
+ | |||
+ | enable; | ||
+ | |||
+ | configure terminal; | ||
+ | |||
+ | Para configurar a interface serial: | ||
+ | |||
+ | interface serial 0; | ||
+ | ip address 10.0.0.2/30; | ||
+ | encapsulation ppp; | ||
+ | exit; | ||
+ | |||
+ | Para configurar a interface ethernet: | ||
+ | interface fastethernet 0; | ||
+ | ip address 192.168.0.1/24; | ||
+ | exit; | ||
+ | exit; | ||
+ | |||
+ | Para salvar as configurações: | ||
+ | |||
+ | wr; | ||
+ | |||
+ | |||
+ | A mesma configuração foi feita no roteador do Lab. Redes 1, mudando apenas os endereços. | ||
+ | As rotas também tiveram de ser configuradas, no caso, o do Lab. Meios teve rota para o roteador do Lab. Redes. | ||
+ | |||
+ | Após feita as configurações nos roteadores e modens, os mesmos já estavam se comunicando entre si. Era necessário configurar o restante dos euipamentoS. | ||
+ | O DSLAM foi basicamente configurado pelo professor Sobral, assim como o Concentrador de Acesso (AC), que servirá para receber as solicitações de um 'cliente' e se autenticar no servidor Radius de cada equipe. O modem DSL foi configurado via software do mesmo, ele foi acessado através navegador pelo seu endereço: 10.1.1.1 | ||
+ | A página inicial será: | ||
+ | |||
+ | [[Arquivo:Captura_de_tela-ADSL_2%2B_Router_-_Mozilla_Firefox.png|800px]] | ||
+ | |||
+ | Ir para advanced setup, Wan, | ||
+ | |||
+ | [[Arquivo:Captura_de_tela-ADSL_2%2B_Router_-_Mozilla_Firefox-1.png|800px]] | ||
+ | |||
+ | |||
+ | Configurar: Modo PPOE, Encapulamento SNAP/LLC: | ||
+ | |||
+ | [[Arquivo:Captura_de_tela-ADSL_2%2B_Router_-_Mozilla_Firefox-2.png|800px]] | ||
+ | |||
+ | E Nat: | ||
+ | |||
+ | [[Arquivo:Captura_de_tela-ADSL_2%2B_Router_-_Mozilla_Firefox-4.png|800px]] | ||
+ | |||
+ | E pronto. | ||
+ | |||
+ | O servidor Radius que teve de ser configurado por cada equipe, em seu servidores, funciona como autenticador, no caso para o acesso via modem DSL. Ele deve funcionar com um banco de dados onde estarão cadastrados os clientes, e lá será sua base para a autenticação. | ||
+ | Para instalá-lo: | ||
+ | apt-get install freeradius-mysql | ||
+ | |||
+ | Seus arquivos de configuração ficam no diretório /etc/freeradius | ||
+ | Nossa equipe seguiu um tutorial da internet para auxiliar na configuração do Radius com o banco de dados. Site: http://www.howtoforge.com/authentication-authorization-and-accounting-with-freeradius-and-mysql-backend-and-webbased-management-with-daloradius | ||
+ | |||
+ | Obs.: Em muitas configurações não foi possível redigi-las, já que foi feita pela o professor, por isso não forma citadas. | ||
+ | |||
+ | Após as demais configurações feitas a rede ficou da seguinte forma: | ||
+ | |||
+ | |||
''Diagrama da rede:'' | ''Diagrama da rede:'' | ||
+ | |||
[[Arquivo:Diagrama_da_rede1.jpg]] | [[Arquivo:Diagrama_da_rede1.jpg]] | ||
+ | |||
== Cabeamento Estruturado == | == Cabeamento Estruturado == | ||
+ | |||
+ | A parte de infra-estrutura da rede, foi desenvolvida no Lab. Meios, e contou basicamente com: | ||
+ | |||
+ | -Um rack principal (dividido pelas equipes); | ||
+ | -Um rack secundário (dividido pelas equipes); | ||
+ | -Uma área de trabalho por equipe. | ||
+ | |||
+ | A disposição da rede física pode ser melhor compreendida pelo diagrama: | ||
+ | |||
''Diagrama de rede e esquema de ligações nos Racks:'' | ''Diagrama de rede e esquema de ligações nos Racks:'' | ||
− | [[Arquivo:Diagrama_Cabe.jpg]] | + | [[Arquivo:Diagrama_Cabe.jpg|800px]] |
− | [[Arquivo:Legendaa.jpg]] | + | [[Arquivo:Legendaa.jpg|500px]] |
Edição atual tal como às 22h58min de 27 de outubro de 2011
Equipe Fenrir
- Beatriz da Silveira
- Luana Beatriz da Silva
- Marco Aurelio
- Sergio Araujo Stahelin
- William Jamir Silva
1º Dia - 13/06/2011
- Atividades
- Sistema Operacional:Ubuntu-Server
- Definido Sistema de Arquivo:
- Nome da Máquina: fenrir
- Nome do Domínio: fenrir.sj.ifsc.edu.br
2º Dia 14/06/2011
- Recebemos do Professor Saul as orientações necessarias para realizar a instalação do Cabeamento Estruturado
3º Dia 15/06/2011
- Status das Atividades
- DNS
- Concluido a instalação Básica.
- Planejando a implentação de sub-dominios
- Postfix
- Concluido a instalação Básica.
- Planejando a implentação de sub-dominios nos endereços de e-mails
- Apache
- Concluido a instalação Básica.
- Planejando a implentação de sub-dominios nas paginas web
- DNS
Documentação
Gerência de Redes
DNS
arquivo /etc/bind/named.conf
/ This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; include "/etc/bind/minastirith.fenrir.zone"; include "/etc/bind/luana.fenrir.zone"; include "/etc/bind/azaghal.fenrir.zone"; include "/etc/bind/marco.fenrir.zone"; include "/etc/bind/sextafeira.fenrir.zone"; include "/etc/bind/novoteste.fenrir.zone"; include "/etc/bind/hello.fenrir.zone";
arquivo /etc/bind/named.conf.local
// // Do any local configuration here //
// Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "fenrir.sj.ifsc.edu.br" { type master; file "/etc/bind/fenrir.zone"; };
zone "37.135.200.in-addr.arpa" { type master; file"/etc/bind/37.135.200.in-addr.arpa"; };
arquivo /etc/bind/fenrir.zone
Neste arquivo estão as configurações do Fenrir
$TTL 60 @ IN SOA ns1.fenrir.sj.ifsc.edu.br. root ( 2011061600 ;serial 60 ;refresh 60 ;TTL 60 ; 60 ; ) IN NS ns1.fenrir.sj.ifsc.edu.br. IN MX 0 mail.fenrir.sj.ifsc.edu.br. IN A 200.135.37.99 batman IN NS batman.fenrir.sj.ifsc.edu.br. sheldon IN NS sheldon.fenrir.sj.ifsc.edu.br.
$ORIGIN fenrir.sj.ifsc.edu.br. A 200.135.37.99 ns1 A 200.135.37.99 www A 200.135.37.99 mail A 200.135.37.99 sheldon A 200.135.37.99 batman A 200.135.37.99
arquivo 37.135.200.in-addr.arpa
Neste arquivo se encontra as configurações do dns reverso para o dominio fenrir
$TTL 86400 @ IN SOA ns1.fenrir.sj.ifsc.edu.br. root ( 2011061600 60 60 60 60 )
IN NS ns1.fenrir.sj.ifsc.edu.br. IN MX 0 ns1.fenrir.sj.ifsc.edu.br. 99 PTR fenrir.sj.ifsc.edu.br.
Abaxo estão os scrips, ja comentados, para adicinar remover e alterar o subdominos no dns.
#!/bin/bash #adicinar subdominio #subdominio conf=$1 if [ ! "$#" -lt 1 ]; then #Adiciona no named.conf o subdonio echo "include \"/etc/bind/$conf.fenrir.zone\";" >> /etc/bind/named.conf #Editam dois arquivos modelo de configuracao do dsn substituindo a string "modelo" pelo subdominio sed s/modelo/$conf/g /etc/bind/scripsmodelo/modelo.fenrir.config > /etc/bind/$conf.fenrir.config sed s/modelo/$conf/g /etc/bind/scripsmodelo/modelo.fenrir.zone > /etc/bind/$conf.fenrir.zone #reinicia o servidor service bind9 restart fi
#!/bin/bash #remover subdominio #dominio conf=$1 if [ ! "$#" -lt "1" ] then #retira do named.conf a linha onde o dominio esta localizado. Isso por si só"desativa" o dominio sed -i /$conf.fenrir/Id /etc/bind/named.conf #para nao acumular lixo no /etc/bind os outros arquivos de configuracao sao remoridos rm /etc/bind/$conf.fenrir.config rm /etc/bind/$conf.fenrir.zone service bind9 restart fi
#!/bin/bash #alterar dominio #dominio conf=$1 #novo dominio conf2=$2 if [ ! "$#" -lt 1 ]; then #troca o antido dominio pelo novo no named.conf sed -i s/$conf.fenrir/$conf2.fenrir/g /etc/bind/named.conf #troca o dominio antigo pelo novo nos arquivos de configuracao sed -i s/$conf/$conf2/g /etc/bind/$conf.fenrir.config sed -i s/$conf/$conf2/g /etc/bind/$conf.fenrir.zone #altera o nome dos arquivos de configuracao mv /etc/bind/$conf.fenrir.zone /etc/bind/$conf2.fenrir.zone mv /etc/bind/$conf.fenrir.config /etc/bind/$conf2.fenrir.config service bind9 restart fi
Postfix
Os arquivos de configuração ficam no /etc/postfix As configurações do servidor de email ficm no /etc/postfix/main.cf
#ARQUIVOS MODIFICADOS PARA DOMINIO DA EQUIPE FENRIR #--------------------------------------------------------------------- #Segundo a documentação essa opção é necessario para o funcionamento do emails alias (emails de subdominios) best_mx_transport = local # Maquina onde estáhospedado meu servidor de e-mails myhostname = mail.fenrir.sj.edu.br # Nome do meu Domínio mydomain = fenrir.sj.ifsc.edu.br # Nome do Domínio de origem (quando enviamos e-mails) myorigin = fenrir.sj.ifsc.edu.br # Opção que ativa os dominios virtuais # Todos os Subdominio devem ser acrescentados no arquivo mydomains # O comando hash éigual o include. porem no manual do postfix se manda utilizar o hash ao inves do include virtual_alias_domains = hash:/etc/postfix/mydomains # Lista de dominios que nosso email pode receber ou seja: # $mydomain = fenrir.sj.ifsc.edu.br então qualquer e-mail enviado para esse dominio nosso servidor de e-mails reconhecera que na verdade é pra ele esse e-maa il mydestination = $myhostname, $mydomain, $virtual_alias_domains
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 # Opção que define por qual interface de rede ele vai receber e-mails # No nosso caso ativamos todas, ou seja se ele receber e-mail pela eth0 ou eth1 eth2 tanto faz pra ele não faz difereça inet_interfaces = all mynetworks_style = subnet #Opção que define o que fazer com o e-mail com destino para um subdominio declarado no mydomains #No nosso caso mandamos redirecionar para usuarios Linux alias_maps = hash:/etc/postfix/virtual #Cria uma pasta para cada usuario e salva cada e-mail em arquivo texto separado home_mailbox = Maildir/ # # TODOS AS OUTRAS opções OPTAMOS POR DEIXAR DEFAULT #------------------------------------------------------ relayhost = mailbox_size_limit = 0 recipient_delimiter = +
arquivo /etc/postfix/mydomains
Todos os subdomínios são inseridos no arquivo /etc/postfix/mydomains, para inclui-los no servidor de email foi feito um arquivo virtual_alias_domains=hash:/etc/postfix/mydomains
fenrir.sj.ifsc.edu.br OK azaghal.fenrir.sj.ifsc.edu.br OK marco.fenrir.sj.ifsc.edu.br OK sextafeira.fenrir.sj.ifsc.edu.br OK novoteste.fenrir.sj.ifsc.edu.br OK laksdalkdakljd.fenrir.sj.ifsc.edu.br OK
arquivo /etc/postfix/virtual
Neste arquivo coloco os usuários com os seus subdomínios
fenrir@fenrir.sj.ifsc.edu.br fenrir azaghal@azaghal.fenrir.sj.ifsc.edu.br azaghal marco@marco.fenrir.sj.ifsc.edu.br marco sexta@sextafeira.fenrir.sj.ifsc.edu.br sexta novoteste@novoteste.fenrir.sj.ifsc.edu.br novoteste boromir@laksdalkdakljd.fenrir.sj.ifsc.edu.br boromir
RoundClub
Seguimos o tutorial encontrado na página do professor Odilson http://www.sj.ifsc.edu.br/~odilson/Gerencia/Roteiro%20do%20RoundCube.pdf
Roteiro para instalar o RoundCube 1. Logar como root: sudo -i 2. Ir para o diretório www: cd /var/www 3. Baixar o pacote: wget http://ufpr.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.4.2/roundcube mail-0.4.2.tar.gz 4. Desempacotar: tar -zxvf roundcubemail-0.4.2.tar.gz 5. Renomear para webmail: mv roundcubemail-0.4.2 webmail 6. Instalar o Dovecot: apt-get install -y dovecot-imapd dovecot-pop3d 7. Configurar o Dovecot: vi /etc/dovecot/dovecot.conf e ajustar os seguintes parâmetros (procure no arquivo pela exata localização). ◦ protocols = pop3 pop3s imap imaps ◦ pop3_uidl_format = %08Xu%08Xv ◦ mail_location = maildir:~/Maildir 8. Reconfigurar a conta do aluno com os comandos (isto deve ser feito a todos os usuários do sistema): ◦ maildirmake.dovecot /home/aluno/Maildir ◦ maildirmake.dovecot /home/aluno/Maildir/.Drafts ◦ maildirmake.dovecot /home/aluno/Maildir/.Sent ◦ maildirmake.dovecot /home/aluno/Maildir/.Trash ◦ maildirmake.dovecot /home/aluno/Maildir/.Templates ◦ chown -R aluno /home/aluno/Maildir/ ◦ chmod -R go-rwx /home/aluno/Maildir 9. Reconfigurar o Postfix: vi /etc/postfix/main.cf acrescentando a diretiva: ◦ home_mailbox = Maildir/ 10. Reiniciar os serviços: service dovecot restart service postfix restart 11. Instalar os pacotes: apt-get install -y php5 sqlite php5-sqlite php-net-smtp php-mailmime php-mdb2 12. Dentro de /var/www/webmail mudar as permissões: chmod 777 temp/ logs/ 13. Dentro de /var/www/webmail/SQL popular a base de dados: sqlite -init /var/www/webmail/SQL/sqlite.initial.sql sqlite.db para sair do sqlite digite só e somente só: .exit 14. Mude as permissões: chmod o+rw sqlite.db e chmod 755 /var/www/webmail e chmod 777 /var/www/webmail/SQL/ 15. Reinicie o Apache2 (service apache2 restart). Sabendo que o Apache2 está rodando e a página default está em /var/www, acesso com o Firefox a página: http://192.168.2 . X /webmail/installer/ 16. Clique em Start Installation. Verifique se há alguma pendência NÃO opcional (essencial), se houver resolva! 17. Clique em Next. No quadro Database setup ajuste somente SQLite database type e /var/www/webmail/SQL/sqlite.db DataBase Name, os demais campos deixe em branco e clique em Next. 18. Copie ou baixe os arquivos com os nomes indicados para /var/www/webmail/config/. Clique em CONTINUE. 19. Acesse a página http://192.168.2 . X /webmail/ e forneça o login e senha do alune e como servidor coloque mail.redesX.edu.br. 20. Faça testes enviando mensagens aos colegas.
Apache
Arquivo default do apache salvo em /etc/apache2/sites-available e em /etc/apache2/sites-enabled
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
Ao criar uma página, o seguinte script é executado:
#!/bin/bash #Testa se os argumentos existem if [ ! "$#" -lt "1" ]; then #seta a variável "$dominio" com o valor do primeiro argumento dominio=$1 #cria o diretorio de cada subdominio mkdir /var/www/$dominio #copia uma página index padrão para o diretório criando cp /var/scripts/index.php /var/www/$dominio/ #cria um arquivo vazio, que posteriormente vai conter as informações do subdominio criado touch /etc/apache2/sites-available/$dominio #copia as informações de um arquivo de subdominio padrão, substituindo a palavra "dominiou" pela palavra contida na variável "$dominio" sed s/dominiou/$dominio/g /var/scripts/hosts > /etc/apache2/sites-available/$dominio #ativa o site criado a2ensite $dominio #recarrega o apache service apache2 reload fi #Fim do programa
Ao alterar uma página, o seguinte script é executado:
#!/bin/bash #Verirfica se existem ao menos dois argumentos if [ ! "$#" -lt "2" ]; then #dominio antigo old=$1 #dominio novo new=$2 #criando a pasta nova e movendo os arquivos antigos para ela mv /var/www/$old /var/www/$new #desativando o site antigo rm /etc/apache2/sites-enabled/$old rm /etc/apache2/sites-available/$old #criando um arquivo vazio, e em seguida envia o conteudo do arquivo padrao para o novo arquivo, contendo os dados do novo site touch /etc/apache2/sites-available/$new sed s/dominiou/$new/g /var/scripts/hosts > /etc/apache2/sites-available/$new #ativando o site a2ensite $new service apache2 reload fi #Fim do script
Os scripts acima utilizam o sed para agilizar a criação do arquivo de configuração, usando o arquivo seguinte, substituindo a palavra "dominiou" pelo nome desejado para o submdominio. E em seguinda o copia para sites-available, e o ativando com o comando a2ensite
<VirtualHost *:80> ServerName dominiou.fenrir.sj.ifsc.edu.br DocumentRoot /var/www/dominiou ServerAlias *dominiou.fenrir.sj.ifsc.edu.br ErrorLog /var/log/apache2/dominiou-error.log <Directory /var/www/dominiou> Options Indexes DirectoryIndex index.html index.php order allow,deny allow from all </Directory> </VirtualHost>
Ao excluir uma página, o seguinte script é executado:
#!/bin/bash #Verifica se exite ao menos um argumento valido if [ ! "$#" -lt "1" ]; then #Seta a variável "$dominio" com o domínio desejado dominio=$1 #remove a pasta do arquivo antigo rm -r /var/www/$dominio #remove os arquivos do site antigo rm /etc/apache2/sites-enabled/$dominio rm /etc/apache2/sites-available/$dominio #recarrega o apache service apache2 reload fi #fim do programa
Programação para Redes de Computadores
Todas as páginas têm, como medida de segurança, uma seção(session), para impedir o acesso não autorizado às páginas, que têm caráter administrativo. Segue a configuração de sessão padrão:
<? session_start();//inicia a sessão if (isset($_SESSION['aut'])){ //testa se a seção é válida com um laço if - Se não for, vai para a index.php, se for, continua para o resto da página. header ("location: admin.php"); }else{ //resto da página } ?>
<? session_start(); if (isset($_SESSION['aut'])){ header ("location: admin.php"); }else{ ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>AdministraÃÃo de usuÃrios - Fenrir</title> <style type="text/css"> <!-- html, body, form, fieldset { margin: 0px; padding: 0; } body { background: #FFF; color: #000; font-family: "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif; line-height: 140%; font-size:12px; color:#fff; } #login { position:absolute; width:460px; height:210px; z-index:1; left: 50%; top: 50%; margin-left:-230px; margin-top:-105px; background:url(logo.jpg) center no-repeat #fff; } .inputbox { color: #666; font-size: 11px; margin: 2px 0 0 5px; padding: 2px; height:15px; width:166px; }
A seguir a página de autenticação de usuario
<? session_start(); $usuario = $_POST['user']; $senha = $_POST['pass']; if (( $usuario == "aluno" ) && ( $senha == "1234" )){ $_SESSION['aut'] = "aluno"; header("location: admin.php"); }else{ header("location: index.php"); } ?>
A seguir, a página admin.php, que funciona como uma página principal, mostrando uma tabela com os clientes cadastrados no sistema, além de dar a opção de incluir, deletar ou alterar os dados dos cadastrados.
<? session_start(); if (!isset ( $_SESSION['aut'])){ header ("location: index.php"); }else{ ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Servidor Fenrir</title> <meta name="generator" content="Amaya, see http://www.w3.org/Amaya/" /> </head> <style> tr.linha, div.linha { background-color:#75AC68; } </style> <body> <body background="metal.jpg"> <? //conectando no servidor $conexao = mysql_connect("localhost","fenrir","20bmw11"); //selecao da base de dados $base_ok = mysql_select_db("fenrir",$conexao); //obtendo os registro da tabela contatos $consulta = "SELECT * from admin"; $resultado = mysql_query($consulta,$conexao); ?> <br> <br> <br> <br> <br> <br> <br> <br> <p><a href="sair.php">Sair</a></p> <table border="0" bgcolor=FFFFFF style="width: 100%" cellpascing="1" cellpadding="0"> <caption></caption> <col /> <col /> <col /> <col /> <col /> <col /> <tbody> <tr> <td height="23" background="fundo.jpg" > Usuario </td> <td height="23" background="fundo.jpg"> Senha</td> <td height="23" background="fundo.jpg" align="center">Dominio </td> <td height="23" background="fundo.jpg" align="center">E-mail</td> <td height="23" background="fundo.jpg" align="center">Nome</td> <td height="23" background="fundo.jpg" align="center">Acao</td> </tr> <tr> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> <? $i=0; while($linha = mysql_fetch_array($resultado)){ $i++; if ($i%2==0) $classe = " class='linha'"; else $classe = ""; ?> <tr <?=$classe?>> <td><a href="alterar.php?user=<? echo $linha['usuario'];?>&cliente=<? echo $linha['cliente'];?>&dmn=<? echo $linha['dominio'];?>&codigo=<? echo $linha['id'];?>&pass=<? echo $linha['senha']; ?>"> <? echo $linha['usuario'];?> </a></td> <td> <? echo $linha['senha']; ?> </td> <td> <? echo $linha['dominio']; ?></td> <td> <? echo $linha['usuario']; ?>@<? echo $linha['dominio']; ?>.fenrir.sj.ifsc.edu.br </td> <td> <? echo $linha['cliente']; ?> </td> <td><a href="excluir.php?usuario=<? echo $linha['usuario'];?>&codigo=<? echo $linha['id']; ?>&dominio=<? echo $linha['dominio'];?>&cliente=<? echo $linha['cliente']; ?>">Excluir </a></td> <? } //abaixo está o código para a imagem de incluir //<img border="0" src="atualizar.jpg" width="30" height="30"></a><? echo $linha['usuario']; ?> <tr> <td height="23" background="fundo.jpg" > </td> <td height="23" background="fundo.jpg"> </td> <td height="23" background="fundo.jpg" align="center"> </td> <td height="23" background="fundo.jpg" align="center"></td> <td height="23" background="fundo.jpg" align="center"> . </td> </tr> </tr> </tbody> </table> <p></p> <p></p> <p></p> <p></p> <p><a href="incluir.php"><img border="0" src="cadastro.gif" width="30" height="30" </a>Adicionar Novo Dominio </body> </html> <? //liberando a consulta mysql_free_result($resultado); //fechando a conexao mysql_close($conexao); } ?>
Se você clicar em "Sair", a seguinte página é invocada, encerrando a seção, e redirecionando você para "index.php":
<? session_start(); session_destroy(); header("location: index.php"); ?>
Ao clicar em "adicionar um usuário", a pagina é redirecionada para incluir.php, que seve para colocar os dados do novo cliente:
<? session_start(); if (!isset($_SESSION['aut'])){ header("location: index.php"); }else{ ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Incluir clientes no Servidor Fenrir</title> </head> <body> <body background="metal.jpg"> <form name="formTeste" action="conectar.php" method="get"> <center> <p>Usuario: <br> <input type="text" name="usr"> <p>Senha: <br> <input type="text" name="pass"> <p>Dominio: <br> <input type="text" name="dm"> <p>Cliente: <br> <input type="text" name="nm"> <input type="submit" name="b_enviar" value="Enviar"> <p><a href="admin.php">Lista de Clientes</a> </form> </center> </body> </html> <? } ?>
Os dados anteriores são enviados pelo método "get", para a página seguinte, conectar.php:
<? session_start(); if (!isset ($_SESSION['aut'])){ header("location: index.php"); }else{ $usuario = trim($_GET['usr']); $cliente = trim($_GET['nm']); $senha= trim($_GET['pass']); $dominio = trim($_GET['dm']); if ((empty($usuario)) || (empty($cliente)) || (empty($dominio)) || (empty($senha))) { header("location: erro.php"); }else{ //passando um "filtro" nas variaves $usuario = strtolower($usuario); //troca possiveis letras maiusculas por minusculas $dominio = strtolower($dominio); $senha = strtolower($senha); //retira possiveis espaços $usuario = str_replace(" ","",$usuario); $senha = str_replace(" ","",$senha); $dominio = str_replace(" ","",$dominio); // // $conexao = mysql_connect("localhost","fenrir","20bmw11"); $base_ok = mysql_select_db("fenrir",$conexao); //----------------------------------- //verifica se já existe um dominio de mesmo nome //----------------------------- $consulta = "SELECT * from admin"; $resultado = mysql_query($consulta,$conexao); while($linha = mysql_fetch_array($resultado)){ if ((! $linha['dominio'] == $dominio) || (! $linha['usuario'] == $usuario)) { //--------------------------------- //--------------------------------- $inserir = "INSERT INTO admin (usuario,senha,dominio,cliente) VALUES ('$usuario','$senha','$dominio','$cliente')"; //mandando os dados mysql_query($inserir,$conexao); //echo mysql_error($conexao) //------------------------------------------- //INSERINDO NA TABELA DO RADIUS--------- //---------------------------------- $con_rad = mysql_connect("localhost","freerad","bmwls2011"); $base_ok = mysql_select_db("radius",$con_rad); $inserir_radius = "INSERT INTO radcheck (username,attribute,op,value) VALUES ('$usuario','password','==','$senha')"; mysql_query($inserir_radius,$con_rad); mysql_close($con_rad); mysql_close($conexao); exec("sudo /var/scripts/add_user.sh $usuario $senha",$adduser); exec("sudo /var/scripts/add_apache.sh $dominio",$apache); exec("sudo /var/scripts/add_dns.sh $dominio",$dns); exec("sudo /var/scripts/add_postfix.sh $dominio $usuario",$postfix); header("location: admin.php"); } } } } header("location: admin.php"); ?>
Ao clicar em excluir um usuário, a página vai para exluir.php:
<? session_start(); if (!isset ($_SESSION['aut'])){ header("location: index.php"); }else{ $usuario = $_GET['usuario']; $codigo = $_GET['codigo']; $dominio = $_GET['dominio']; $cliente = $_GET['cliente']; ?> <html> <head> <title>Excluir Cliente</title> </head> <body> <body background="metal.jpg"> Você realmente deseja exclur o cliente <?echo $cliente; ?> ?<br /> <a href="excluir_logica.php?codigo=<? echo $_GET['codigo']; ?>&dominio=<? echo $_GET['dominio']; ?>&usuario=<? echo $_GET['usuario'];?>">Sim</a> <a href="admin.php">Não</a><br /> </body> </html> <? } ?>
Ao clicar em alterar, a seguinte página aparece:
<? session_start(); if (!isset ($_SESSION['aut'])){ header("location: index.php"); }else{ $usuario = $_GET['user']; $cliente = $_GET['cliente']; $dmn = $_GET['dmn']; $senha = $_GET['pass']; $codigo = $_GET['codigo']; ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Alteracoes</title> </head> <body> <body background="metal.jpg"> <form name="formoutroteste" action="alterando.php?codigo=<? echo $codigo ; ?>&senha=<? echo $senha ; ?>&cliente=<? echo $cliente ; ?>&dmn=<? echo $dmn ; ?>" method="post"> <p>Usuario <br> <input type="text" name="a" value="<? echo $usuario ?>"> <p>Senha <br> <input type="text" name="e" value="<? echo $senha ?>"> <p>Cliente <br> <input type="text" name="b"value="<? echo $cliente ?>"> <p>Dominio <br> <input type="text" name="c" value="<? echo $dmn ?>"> <input type="submit" name="a_enviar" value="Alterar"> </form> </body> </html> <? } ?>
Ao alterar algum campo(com exceção do usuário, que não pode ser alterado), o administrador é redirecionado para a página "alterando.php", onde as alterações são feitas:
<? session_start(); if (!isset ($_SESSION['aut'])){ header("location: index.php"); }else{ #------------------------------------------------------------------- #NOVOS VALORES $usuario = $_POST['a']; $cliente = $_POST['b']; $dominio = $_POST['c']; $senha = $_POST['e']; #CODIGO PARA LOCALIZAR NO MYSQL $codigo = $_GET['codigo']; #VALORES QUE ESTAO NA TABELA (PODEMOS DIZER "ANTIGOS") $pass = $_GET['senha']; $domain = $_GET['dmn']; $client = $_GET['cliente']; #---------------- #-------------------------- #------------------------------------------ #testando se o dominio nao foi escolhido //conectando no servidor $conexao = mysql_connect("localhost","fenrir","20bmw11"); //selecao da base de dadosi $base_ok = mysql_select_db("fenrir",$conexao); #------------------------------------------------------- $consulta = "SELECT * from admin"; $resultado = mysql_query($consulta,$conexao); while($linha = mysql_fetch_array($resultado)){ if ((! $linha['dominio'] == $dominio) || (! $linha['usuario'] == $usuario)) { #------------------------------------------------ //Aqui são feitos uma série de testes, se os dados forem diferentes if (($senha != $pass)){ //se a senha for diferente, roda o script para alterá-la exec("sudo /var/scripts/alt_senha.sh $usuario $senha",$senhaalterada); } //if (($cliente != $client)){ //testa se houve mudança no nome do cliente // exec("sudo /var/scripts/alt_cliente $client",$clientealterado); //} if (($dominio != $domain)){ //testa se houve mudança no domínio, a mudança mais significativa exec("sudo /var/scripts/alt_dns.sh $domain $dominio",$dominioalterado); exec("sudo /var/scripts/alt_apache.sh $domain $dominio",$apachealterado); exec("sudo /var/scripts/alt_postfix.sh $domain $usuario $dominio",$postfixalterado); } //Atualiazando o usuario $atualizar="UPDATE admin SET senha='$senha', dominio='$dominio', cliente='$cliente' WHERE id=$codigo"; mysql_query($atualizar,$conexao); //conectando no servidor radius $con_rad = mysql_connect("localhost","freerad","bmwls2011"); //selecao da base de dadosi $base_ok = mysql_select_db("radius",$con_rad); $alt_radius = "UPDATE radcheck SET value='$senha' WHERE username='$usuario'"; mysql_query($alt_radius,$con_rad); //echo mysql_error(); mysql_close($conexao); mysql_close($con_rad); header("location: admin.php"); } } } header("location: admin.php"); ?>
Instalação de Equipamento de Redes
Na parte de instalação de equipamentos de rede foram feitas as configurações dos equipamentos necessários para que houvesse a comunicação entre os laboratórios de Redes 1 (onde ficarão os servidores das equipes) e Meios de Transmissão ( onde será disposta uma área de trabalho), e ainda para que cada equipe pudesse disponibilizar para seus clientes, acesso a internet via DSL. Os equipamentos necessários para essa ligação foram:
-Roteadores
-Modens SHDSL
-Switch
-DSLAM
-Modens DSL
Além disso foi necessário a configuração de um Concentrador de Acesso, e um servidor Radius.
A primeira ligação e configurações que tiveram de ser feita foram dos modens SHDSL e roteadores. Os modens foram configurados a nível 'físico', modificando a pinagem da placa do mesmo, segunda a necessidade requerida. Já para os roteadores foi utilizado um software de gerenciamento utilizado via terminal, para estabelecer as rotas e ip's, o minicom, que requer algumas configurações pelo seu menu. Para entrar com o minicom, fazer no terminial
minicom -s
Para configurar o minicom, selecione a opção : "Configuração da porta serial"
┌─────────────[configuração]──────────────┐ │ Nomes de arquivos e rotas │ Protocolos de transferência de arquivos │ Configuração da porta serial │ Modem e discagem │ Tela e teclado │ Salvar configuração como dfl │ Salvar configuração como │ Sair │ Sair do Minicom └────────────────────────────────────────┘
Em seguida aparecerá:
┌──────────────────────────────────────────────────────────┐ │ A – Dispositivo Serial : /dev/tty1 │ B – Localização do Arquivo de Travamento : /var/lock │ C – Programa de Entrada : │ D – Programa de Saída : │ E – Bps/Paridade/Bits : 38400 8N1 │ F – Controle de Fluxo por Hardware : Sim │ G – Controle de Fluxo por Software : Não │ │ Alterar qual configuração? └──────────────────────────────────────────────────────────┘
Altere as seguintes opções:
Dispositivo Serial : /dev/ttSy0 Bps/Paridade/Bits : 9600 8N1 Controle de Fluxo por Hardware : Não
Após, volte ao menu principal, e salve a configuração como 'Salvar configuração com dfl', e saia do minicom com 'sair'. Agora já é possível acessar o roteador desejado, no caso o roteador cisco 2500, localizado no Lab. Meios, logando com o usuário e senha vindos de 'fábrica'. Após se logar dar os seguintes comandos:
enable;
configure terminal;
Para configurar a interface serial:
interface serial 0; ip address 10.0.0.2/30; encapsulation ppp; exit;
Para configurar a interface ethernet:
interface fastethernet 0; ip address 192.168.0.1/24; exit; exit;
Para salvar as configurações:
wr;
A mesma configuração foi feita no roteador do Lab. Redes 1, mudando apenas os endereços.
As rotas também tiveram de ser configuradas, no caso, o do Lab. Meios teve rota para o roteador do Lab. Redes.
Após feita as configurações nos roteadores e modens, os mesmos já estavam se comunicando entre si. Era necessário configurar o restante dos euipamentoS. O DSLAM foi basicamente configurado pelo professor Sobral, assim como o Concentrador de Acesso (AC), que servirá para receber as solicitações de um 'cliente' e se autenticar no servidor Radius de cada equipe. O modem DSL foi configurado via software do mesmo, ele foi acessado através navegador pelo seu endereço: 10.1.1.1 A página inicial será:
Ir para advanced setup, Wan,
Configurar: Modo PPOE, Encapulamento SNAP/LLC:
E Nat:
E pronto.
O servidor Radius que teve de ser configurado por cada equipe, em seu servidores, funciona como autenticador, no caso para o acesso via modem DSL. Ele deve funcionar com um banco de dados onde estarão cadastrados os clientes, e lá será sua base para a autenticação. Para instalá-lo:
apt-get install freeradius-mysql
Seus arquivos de configuração ficam no diretório /etc/freeradius Nossa equipe seguiu um tutorial da internet para auxiliar na configuração do Radius com o banco de dados. Site: http://www.howtoforge.com/authentication-authorization-and-accounting-with-freeradius-and-mysql-backend-and-webbased-management-with-daloradius
Obs.: Em muitas configurações não foi possível redigi-las, já que foi feita pela o professor, por isso não forma citadas.
Após as demais configurações feitas a rede ficou da seguinte forma:
Diagrama da rede:
Cabeamento Estruturado
A parte de infra-estrutura da rede, foi desenvolvida no Lab. Meios, e contou basicamente com:
-Um rack principal (dividido pelas equipes); -Um rack secundário (dividido pelas equipes); -Uma área de trabalho por equipe.
A disposição da rede física pode ser melhor compreendida pelo diagrama: