Projeto Integrador - 2009.1 - Equipe Zeus

De MediaWiki do Campus São José
Revisão de 18h34min de 9 de julho de 2009 por Zeus (discussão | contribs)
Ir para navegação Ir para pesquisar

Cabeamento Estruturado

  • Pontos na sala de meios de transmissão (CAB);
  • Dois Patch Panel no Rack na sala de transmissão;
  • 1 Patch Cord;
  • Teste de continuidade realizada no patch cord OK;
  • Passagem do cabo UTP que interliga a sala de redes1 com meios de transmissão em conjunto com os outros grupos;

Instalação de Equipamentos de Rede

  • Configurado switch 192.168.1.230;
  • Configurado as portas 7-11;
  • Criado as VLANs para hóspedes (20), usuários (25) e visitantes (100);


  • VLAN 20: IP - 10.2.1.1;
          Broadcast - 10.2.1.255;
          Mascara - 255.255.255.0;
  • VLAN 25: IP - 10.2.2.1;
          Broadcast - 10.2.2.255;
          Mascara - 255.255.255.0;
  • VLAN 100: IP - 10.2.10.1;
           Broadcast - 10.2.10.255;
           Mascara - 255.255.255.0;

Gerência de Rede

Sistema Operacional

  • Configurando o Servidor (GER);
  • Instalado o sistema operacional UBUNTU versão 8.10.
  • Configuração da eth0.
  • IP do servidor: 200.135.37.111;
  • Broadcast - 200.135.37.127;
  • Mascara - 255.255.255.192;

DHCP

  • Configuração do DHCP;
  • apt-get install dhcp3
       subnet 10.2.1.0 netmask 255.255.255.0 {
       range 10.2.1.50 10.2.1.60;
       option subnet-mask 255.255.255.0;
       option broadcast-address 10.2.1.255;
       option routers 10.2.1.1;
       option domain-name-servers 200.135.37.111
}

       subnet 10.2.2.0 netmask 255.255.255.0 {
       range 10.2.2.50 10.2.2.60;
       option subnet-mask 255.255.255.0;
       option broadcast-address 10.2.2.255;
       option routers 10.2.2.1;
       option domain-name-servers 200.135.37.111;

}

       subnet 10.2.10.0 netmask 255.255.255.0 {
       range 10.2.10.50 10.2.10.60;
       option subnet-mask 255.255.255.0;
       option broadcast-address 10.2.10.255;
       option routers 10.2.10.1;
       option domain-name-servers 200.135.37.111;

}

DNS

  • Configurado o DNS.
  • apt-get install bind9
  • Abrir o aquivo named.conf.local:

Seguem abaixo as configurações necessárias que devem ser configuradas dentro do mesmo.

named.conf.local

zone "zeus.sj.ifsc.edu.br" {
   type master;
   file "/etc/bind/zeus";
 };
zone "37.135.200.in-addr.arpa" {
type master;
file "/etc/bind/37.135.200.in-addr.arpa";
};
  • Criamos um arquivo com o nome de zeus, seguem abaixo as configurações que devem conter no arquivo.

zeus

$TTL    86400
; Start of Authority: início de autoridade @ IN SOA dns1.zeus.sj.ifsc.edu.br. admin.zeus.sj.ifsc.edu.br. ( 2009040100 ; Serial 1d ; Refresh 4h ; Retry 1w ; Expire 1d ) ; Negative Cache TTL ; ; Name Server: servidores DNS @ IN NS dns1 @ IN MX 0 mail ; ; Address: endereço dns1 IN A 200.135.37.111 mail IN A 200.135.37.111 www IN A 200.135.37.111 ; ; Canonical Name: "apelido" web IN CNAME www
  • É necessário criar o DNS reverso onde o nome é composto pelos 3 primeiros octetos de forma reversa e mais .in-addr.arpa seguem abaixo as configurações necessárias.

Ressalto que somente o servidor precisará configurar o DNS reverso.

37.135.200.in-addr.arpa

$TTL    86400
; Start of Authority: início de autoridade
@ IN SOA dns1.zeus.sj.ifsc.edu.br. admin.zeus.sj.ifsc.edu.br. (
2009062201 ; Serial
1d ; Refresh
4h ; Retry
1w ; Expire
1d ) ; Negative Cache TTL
;
; Name Server: servidores DNS
@ IN NS dns1.zeus.
;
; Address: endereço
111 IN PTR dns1.zeus.sj.ifsc.edu.br.
111 IN PTR mail.zeus.sj.ifsc.edu.br.
111 IN PTR www.zeus.sj.ifsc.edu.br

resolv.conf

  • Colocar o domínio utilizado.
domain zeus.sj.ifsc.edu.br
nameserver  127.0.0.1

SSH

Utilizado para acessar remotamente o servidor.

apt-get install sshd

Apache - Servidor Web

apt-get install apache2

Não é necessário configurar, somente incuir o site (páginas e imagens)no /var/www. Ressalto que o site precisa excluir o arquivo index.html que estará dentro do /var/www e renomear o site inicial para index, senão o por default aparecerá uma página em branco.

SMTP/IMAP - Servidor de e-mail

  • apt-get install -uw imapd
  • apt-get install postifix
  • apt-get install mailx


  • Configurado arquivo main.cf;
     myhostname = mail.zeus.sj.ifsc.edu.br
     mydomain = zeus.sj.ifsc.edu.br
     alias_maps = hash:/etc/aliases
     alias_database = hash:/etc/aliases
     myorigin = zeus.sj.ifsc.edu.br
     mydestination = zeus.sj.ifsc.edu.br, localhost.zeus.sj.ifsc.edu.br, localhost, mail.zeus.ifsc.edu.br
     relayhost =
     mynetworks = 127.0.0.1/32

SNMP

Utilizado para monitoração da rede a ferramenta Cacti. O Cacti recolhe dados referente a rede e mostra gráfico onde podemos observar a quantidade de memória utilizada, a utilização de partições, tráfego das interfaces, quantidade de processos que estão rodando entre outros. Para instalar o Cacti e o utilizamos os comandos abaixo.

  • apt-get install snmpd
  • apt-get install cacti


  • Configurado arquivo /etc/snmp/snmpd.conf;
      rocommunity zeus
      syslocation Laboratório de redes 1
      syscontact zeus@zeus.sj.ifsc.edu.br
      sysservices 72

Ressalto que não podemos esquecer de escolher uma comunidade e decreve-lá no campo "rocommunity", pois no Cacti será solicitado a comunidade que deve ser utilizada.

Acesso ao nosso Cacti http://www.zeus.sj.ifsc.edu.br/cacti

Radius

O radius é uma ferramenta utilizada para a autenticação de usuários seja na rede cabeada ou na rede sem fio. Pode ser utilizado com um banco de dados MySQL, para que o mesmo busque usuário e senha ou pode-se usar o arquivo de texto users da mesma forma determinando usuário e senha. Utilizaremos o arquivo de texto users devido a facilidade de implementar.

  • Baixando o pacote
wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-2.1.6.tar.gz
  • Compilador e biblioteca
make
gcc 
g++
libssl-dev
  • Preparando a compilação
./configure --prefix=/usr/local freeradius-server2.1.6 --exe-prefix=/usr/local freeradius-server2.1.6 
  • Compilando
make
make install

Após isso é necessário a configuração de dois arquivos o clients.conf e o users

  • Clients.conf

Arquivo onde é cadastrado os equipamentos que irão se conectar a rede.

  • Users

Arquivo onde é cadastrado os usuários que podem se conectar a rede, é necessário determinar dentro do users o login e senha que será utilizado por cada usuário.

Segue abaixo a configuração de cada um desses arquivos.


  • Configurado arquivo clients.conf;
client zeus {
  nastype = other
  client = 192.168.1.230
  secret = senha
  shortname = usuario
}

client zeus {
  nastype = other
  cliente = 192.162.1.209
  secret = senha
  shortname = usuario
}


  • Configurado arquivo users;
  • Formato utilizado para que possamos identificar e excluir os arquivos foi o seguinte.
  • O login e senha que estão abaixo serão os respectivos login e senha do usuário para que o mesmo possa se autenticar na rede cabeada ou sem fio.
  • O "X" é onde você deve identificar em qual VLAN cairá o usuário após a autenticação.
  • #2009-07-30 é a data de saída do hóspede
  • 22222222222 é a senha que deverá ser utilizada pelo usuário para a autenticação.
#2009-07-30 22222222222
login@zeus.sj.ifsc.edu.br Cleartext-Password :="senha"
       Tunnel-Type = "VLAN",
       Tunnel-Medium-Type = "IEEE-802",
       Tunnel-Private-Group-ID = "X"

Crontab

  • Utilizamos o crontab para agendarmos uma tarefa para realizar o checkout, todos os dias ao meio dia é executado um scrit onde é procurado todos os usuários onde a data de saída é igual a data de hoje, esses usuários são excluídos do users e do relatório de ocupação.

Utilizamos o comando sed –i, onde o mesmo localiza e exclui um determinado número de linhas a partir do parâmetro citado para a busca

Tafera Agendada

Utilizamos o seguinte parâmetro para agendar a tarefa para todos os dias as 12h o usuário root executar a tarefa. Os parâmetros são determinados dentro do arquivo crontab em /etc.

00 12   * * *   root    /etc/freeradius/cron

Script (Crontab)

Criamos um script para incluirmos no cron onde o mesmo irá verificar se a data do users (data de saída do hóspede) é igual a data de hoje, se for igual o comando sed -i irá excluir as 5 linhas do users e assim bloqueando o acesso daquele usuário, pois sem o cadastro no users não tem como o usuário autenticar. Segue abaixo o script.

#!/bin/bash
data=`date +%F`
sed -i /\#$data/,+5d /etc/freeradius/users

Programação para Redes de Computadores

PHP

  • apt-get install php5

A página foi criada em HTML e PHP.

Banco de dados

  • apt-get install mysql-server

O nosso banco de dados utiliza MySQL como linguagem.

SITE

Segue abaixo o código fonte da nossa página.

  • Código fonte da nossa conexão com o banco, que foi feito para agilizar o processo de abertura da conexão com o banco de dados, pois digitando $conexão já abre a conexão.

<? $conexao=mysql_connect('localhost',"root","zeus"); $banco=mysql_select_db("zeus",$conexao); ?>

  • Código fonte onde é feito uma verificaçãose o CPF do hóspede existe no banco de dados, se o mesmo existe puxa os dados cadastrados anteriormente.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>...:: Zeus Resort ::...</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body>

          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />

 

 

         <form id="form1" name="form1" method="post" action="cadastrar.php">
CPF <label>
                 <input name="cpf" type="text" id="cpf" size="11" maxlength="11" />
</label>
  <label>
                 <input type="submit" name="enviar" id="enviar" value="Enviar" />
</label>
         </form>

 

</body> </html>

  • Código fonte do site onde é realizado o cadastro.

<? require_once("conexao.php"); $cpf=$_POST['cpf']; $sql="select * from clientes where cpf='$cpf'"; $r=@mysql_query($sql) or die(mysql_error()); $existe=@mysql_num_rows($r); $alterar=0; if($existe>0) { $cliente=@mysql_fetch_array($r); $s=explode("-",$cliente['saida']); $saida=$s[2]."/".$s[1]."/".$s[0]; $alterar=1; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>...:: Zeus Resort ::...</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body>

          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />

 

 

         <form id="form1" name="form1" method="post" action="grava.php">
Nome <label>
                 <input name="nome" type="text" id="nome" size="35" maxlength="35" value="<?=$cliente['nome']?>"/>
</label>
CPF <label>
                 <input name="cpf" type="text" id="cpf" size="11" maxlength="11" value="<?=$cpf?>"/>
</label>
Chegada <label>
                 <input type="text" name="entrada" id="entrada" value="<?=$cliente['entrada']?>"/>
</label>
Saída <label>
                 <input type="text" name="saida" id="saida" value="<?=$saida?>"/>
</label>
Login <label>
                 <input name="login" type="text" id="login" size="8" maxlength="8" />
</label>
Senha <label>
                 <input name="senha" type="password" id="senha" size="8" maxlength="8" />
</label>
<label>
                 <input type="reset" name="Reset" id="button" value="Limpar" />
</label>
<label>
                 <input type="submit" name="enviar" id="enviar" value="Enviar" />
</label>
           <input type="hidden" name="alterar" id="alterar" value="<?=$alterar?>" />
         </form>

 

</body> </html>

  • Código fonte do site que joga os dados necessários para o arquivo users (freeradius) e para o banco de dados.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>...:: Zeus Resort ::...</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <?

require_once('conexao.php'); $nome=$_POST['nome']; $cpf=$_POST['cpf']; $entrada=$_POST['entrada']; $sai=explode('/',$_POST['saida']); $saida=$sai[2].'-'.$sai[1].'-'.$sai[0]; $login=$_POST['login']; $senha=$_POST['senha']; $sql="select nome from clientes where cpf='$cpf'"; $busca=mysql_query($sql);

$existe=mysql_num_rows($busca) ;

if($existe>0) { $sql="update clientes set entrada='$entrada',saida='$saida',visitas=visitas+1 where cpf='$cpf'"; $ok=mysql_query($sql); } else { $sql="insert into clientes (nome,cpf,entrada,saida,login,senha) values ('$nome','$cpf','$entrada','$saida','$login','$senha')"; $ok=mysql_query($sql) or die(mysql_error()); $fs=fopen("/etc/freeradius/users","a+",0);

$conteudo= "#$saida $cpf" . "\n" . "$nome" . "@zeus.sj.ifsc.edu.br" . " Cleartext-Password :=" . "\"$cpf\"" . "\n" . "\tTunnel-Type = \"VLAN\"," . "\n" . "\tTunnel-Medium-Type = \"IEEE-802\"," . "\n" . "\tTunnel-Private-Group-ID = \"20\"" . "\n" . "\n";

fwrite($fs,$conteudo); fclose($fs); mysql_close($conexao); ?> <script>alert('Cadastro efetuado com sucesso!');</script> <? }

echo "<script> window.location='busca.php';</script>"; ?> </body> </html>

  • Código fonte do site que faz a alteração dos dados no users(freeradius) e no banco de dados.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>...:: Zeus Resort ::...</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <? require_once('conexao.php'); $nome=$_POST['nome']; $cpf=$_POST['cpf']; $entrada=$_POST['entrada']; $sai=explode('/',$_POST['saida']); $saida=$sai[2].'-'.$sai[1].'-'.$sai[0]; $op=$_POST['op']; $sql="select saida from clientes where cpf='$cpf'"; $r=@mysql_query($sql); $s=mysql_fetch_array($r); $saida_anterior=$s['saida']; if($op=='1') { $sql="update clientes set nome='$nome',cpf='$cpf',entrada='$entrada',saida='$saida' where cpf='$cpf'"; $msg=" ALTERADO "; exec("sed -i 's/\#.*$cpf/\#$saida_anterior\ $cpf/g' /etc/freeradius/users");

} else { $sql="delete from clientes where cpf='$cpf'"; $msg=" EXCLUIDO "; }

$ok=mysql_query($sql); mysql_close(); echo "<script>alert('Cadastro $msg com sucesso!');</script>"; echo "<script> window.location='ocupacao.php';</script>"; ?> </body> </html>

  • Código fonte do site onde ele verifica se o login e senha estão corretos e redireciona para a página principal do administrador.

<? session_start(); if(($_POST['login']=='login') && ($_POST['senha']=='senha')) { $_SESSION['login']='login'; echo "<script> window.location='index1.php';</script>"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>mythology</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body>

          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />

 

 

Bem vindo!

         <form id="form1" name="form1" method="post" action="">
Login <label>
                 <input name="login" type="text" id="login" size="8" maxlength="8" />
</label>
Senha <label>
                 <input name="senha" type="password" id="senha" size="8" maxlength="8" />
</label>
<label>
                 <input type="submit" name="button" id="button" value="Enviar" />
</label>
         </form>

 

</body> </html>

  • Código fonte do site principal do administrador.

<? session_start(); if(!isset($_SESSION['login'])) { // se a variavel de sessao nao existir, entao redireciona para a pagina: entrada.php echo "<script> window.location='login.php';</script>";

}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>..:: ZEUS ::..</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body>