Projeto Integrador - 2011.1 - Fenrir
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
- Equipe foi subdividida em:
- Sergio e Luana - IER
- Marco, Beatriz e WIlliam - Gerência de Redes
- Marco - Apache
- Beatriz - DNS
- William - Postfix
- 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: