Mudanças entre as edições de "Projeto Integrador - 2009.1 - Equipe Zeus"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(29 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 41: Linha 41:
  
 
==DHCP==
 
==DHCP==
 +
 +
DHCP é a sigla para Dynamic Host Configuration Protocol.
 +
Trata-se de um protocolo utilizado em redes de computadores que permite a estes obterem um endereço IP automaticamente.
 +
 +
 
* '''Configuração do DHCP;'''
 
* '''Configuração do DHCP;'''
 
* <tt>apt-get install dhcp3</tt>
 
* <tt>apt-get install dhcp3</tt>
Linha 71: Linha 76:
  
 
==DNS==
 
==DNS==
 +
 +
DNS é a sigla para Domain Name System (Sistema de Resolução de Nomes). Trata-se de um recurso usado em redes TCP/IP (o protocolo utilizado na internet e na grande maioria das redes) que permite acessar computadores sem que o usuário ou sem que o próprio computador tenha conhecimento de seu endereço IP, ou seja, faz a conversão de nomes em endereços IP's.
 +
 
* Configurado o DNS.
 
* Configurado o DNS.
 
* <tt>apt-get install bind9</tt>
 
* <tt>apt-get install bind9</tt>
Linha 139: Linha 147:
 
  domain zeus.sj.ifsc.edu.br
 
  domain zeus.sj.ifsc.edu.br
 
  nameserver  127.0.0.1
 
  nameserver  127.0.0.1
 +
 +
==Postifix==
 +
 +
O Postfix é um agente de transferência de emails (MTA), um software livre para envio e entrega de emails. Rápido e fácil de administrar, é uma alternativa segura ao Sendmail, muito utilizado em servidores UNIX.
 +
 +
Configuração:
 +
 +
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
 +
mynetworks = 127.0.0.1/32
  
 
== SSH ==
 
== SSH ==
 +
 +
O SSH (Secure SHell) é um protocolo que permite a você acessar virtualmente o servidor como se você estivesse em um terminal (no prompt do DOS, por exemplo). Se você preferir, considere como o SSH como um computador controlando outro computador.
  
 
Utilizado para acessar remotamente o servidor.
 
Utilizado para acessar remotamente o servidor.
Linha 153: Linha 177:
  
 
==SMTP/IMAP - Servidor de e-mail==
 
==SMTP/IMAP - Servidor de e-mail==
 +
 +
SMTP - padrão internacional utilizado para transfência de correspondências eletrônicas (email) entre computadores.
 +
 +
IMAP - protocolo padrão utilizado por leitores de email para ter acesso às mensagens que chegam ao servidor de email.
  
 
* <tt>apt-get install -uw imapd</tt>
 
* <tt>apt-get install -uw imapd</tt>
Linha 230: Linha 258:
 
* '''Configurado arquivo clients.conf''';
 
* '''Configurado arquivo clients.conf''';
  
  client zeus {
+
  client proxy{
  nastype = other
+
        ipaddr = 200.135.37.115
  client = 192.168.1.230
+
        secret = proxy
  secret = senha
+
        nastype = other
  shortname = usuario
+
}
}
+
 
 
client zeus {
 
  nastype = other
 
  cliente = 192.162.1.209
 
  secret = senha
 
  shortname = usuario
 
}
 
  
  
Linha 262: Linha 283:
 
         Tunnel-Medium-Type = "IEEE-802",
 
         Tunnel-Medium-Type = "IEEE-802",
 
         Tunnel-Private-Group-ID = "X"
 
         Tunnel-Private-Group-ID = "X"
 +
 +
zeus@zeus.sj.ifsc.edu.br        Cleartext-Password :="123"
 +
        Tunnel-Type = "VLAN",
 +
        Tunnel-Medium-Type = "IEEE-802",
 +
        Tunnel-Private-Group-ID = "20"
  
 
==Crontab==
 
==Crontab==
Linha 281: Linha 307:
 
  sed -i /\#$data/,+5d /etc/freeradius/users
 
  sed -i /\#$data/,+5d /etc/freeradius/users
  
=Programação para Redes de Computadores=
+
==Iptables==
==PHP==
 
* <tt>apt-get install php5</tt>
 
A página foi criada em HTML e [http://php.net PHP].
 
 
 
== Banco de dados ==
 
* <tt>apt-get install mysql-server</tt>
 
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.'''
+
Do [http://www.vivaolinux.com.br/artigo/Seguranca-com-Iptables Viva o Linux]:
  
<?
+
''Firewall''
$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.'''
+
''O que é iptables/firewall''
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
''O Firewall é um programa que tem como objetivo proteger a máquina contra acessos indesejados, tráfego indesejado, proteger serviços que estejam rodando na máquina e bloquear a passagem de coisas que você não deseja receber (como conexões vindas da Internet para sua segura rede local, evitando acesso aos dados corporativos de uma empresa ou a seus dados pessoais).''
<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>
 
<div id="wrap">
 
 
 
    <div id="header">
 
      <div id="logo">
 
        <h1>Zeus Resort</h1>
 
        <div></div>
 
      </div>
 
      <ul id="nav">
 
        <li class="first"><a href="cadastrar.php">Cadastrar</a></li>
 
        <li><a href="relatorio.php">Relatório</a></li>
 
        <li><a href="ocupacao.php">Ocupação</a></li>
 
        <li><a href="logout.php">LogOut</a></li>
 
      </ul>
 
    </div>
 
    <!-- /header -->
 
    <div id="content">
 
      <div class="side fl">
 
        <div class="sideinner">
 
          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />
 
          <h3>&nbsp;</h3>
 
        </div>
 
      </div>
 
      <div class="main fr">
 
        <div id="text">
 
          <h2>&nbsp;</h2>
 
          <form id="form1" name="form1" method="post" action="cadastrar.php">
 
            <table width="424" border="0">
 
              <tr>
 
                <td width="66">CPF</td>
 
                <td width="137"><label>
 
                  <input name="cpf" type="text" id="cpf" size="11" maxlength="11" />
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td>&nbsp;</td>
 
                <td><label>
 
                  <input type="submit" name="enviar" id="enviar" value="Enviar" />
 
                </label></td>
 
              </tr>
 
            </table>
 
          </form>
 
          <p>&nbsp;</p>
 
        </div>
 
        <div class="clearfix"></div>
 
        <div id="col">
 
          <div class="first fl">
 
            <ul>
 
              <li></li>
 
            </ul>
 
          </div>
 
          <div class=" fl ">
 
            <ul>
 
              <li></li>
 
              <li></li>
 
            </ul>
 
          </div>
 
        </div>
 
      </div>
 
      <!-- /content -->
 
    </div>
 
    <div class="clearfix"></div>
 
    <div id="footer"></div>
 
    <!-- /footer -->
 
  </div>
 
  
</body>
+
''Iptables''
</html>
 
  
*'''Código fonte do site onde é realizado o cadastro.'''
+
''O iptables é um firewall em nível de pacotes e funciona baseado no endereço/porta de origem/destino do pacote, prioridade, etc. Ele funciona através da comparação de regras para saber se um pacote tem ou não permissão para passar. ''
  
<?
 
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>
 
<div id="wrap">
 
 
 
    <div id="header">
 
      <div id="logo">
 
        <h1>Zeus Resort</h1>
 
        <div></div>
 
      </div>
 
      <ul id="nav">
 
        <li class="first"><a href="cadastrar.php">Cadastrar</a></li>
 
        <li><a href="relatorio.php">Relatório</a></li>
 
        <li><a href="ocupacao.php">Ocupação</a></li>
 
        <li><a href="logout.php">LogOut</a></li>
 
      </ul>
 
    </div>
 
    <!-- /header -->
 
    <div id="content">
 
      <div class="side fl">
 
        <div class="sideinner">
 
          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />
 
          <h3>&nbsp;</h3>
 
        </div>
 
      </div>
 
      <div class="main fr">
 
        <div id="text">
 
          <h2>&nbsp;</h2>
 
          <form id="form1" name="form1" method="post" action="grava.php">
 
            <table width="424" border="0">
 
              <tr>
 
                <td width="66">Nome</td>
 
                <td width="137"><label>
 
                  <input name="nome" type="text" id="nome" size="35" maxlength="35" value="<?=$cliente['nome']?>"/>
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td>CPF</td>
 
                <td><label>
 
                  <input name="cpf" type="text" id="cpf" size="11" maxlength="11" value="<?=$cpf?>"/>
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td>Chegada</td>
 
                <td><label>
 
                  <input type="text" name="entrada" id="entrada" value="<?=$cliente['entrada']?>"/>
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td>Saída</td>
 
                <td><label>
 
                  <input type="text" name="saida" id="saida" value="<?=$saida?>"/>
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td>Login</td>
 
                <td><label>
 
                  <input name="login" type="text" id="login" size="8" maxlength="8" />
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td>Senha</td>
 
                <td><label>
 
                  <input name="senha" type="password" id="senha" size="8" maxlength="8" />
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td><label>
 
                  <input type="reset" name="Reset" id="button" value="Limpar" />
 
                </label></td>
 
                <td><label>
 
                  <input type="submit" name="enviar" id="enviar" value="Enviar" />
 
                </label></td>
 
              </tr>
 
            </table>
 
            <input type="hidden" name="alterar" id="alterar" value="<?=$alterar?>" />
 
          </form>
 
          <p>&nbsp;</p>
 
        </div>
 
        <div class="clearfix"></div>
 
        <div id="col">
 
          <div class="first fl">
 
            <ul>
 
              <li></li>
 
            </ul>
 
          </div>
 
          <div class=" fl ">
 
            <ul>
 
              <li></li>
 
              <li></li>
 
            </ul>
 
          </div>
 
        </div>
 
      </div>
 
      <!-- /content -->
 
    </div>
 
    <div class="clearfix"></div>
 
    <div id="footer"></div>
 
    <!-- /footer -->
 
  </div>
 
  
</body>
+
                bloqueia tudo
</html>
+
iptables -P INPUT DROP
 +
                libera o minimo
 +
iptables -A INPUT -i lo -j ACCEPT
 +
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
  
*'''Código fonte do site que joga os dados necessários para o arquivo users (freeradius) e para o banco de dados.'''
+
              libera aplicativo TCP
 +
iptables -A INPUT -p tcp –dport 22 –syn -j ACCEPT
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
                      http
<html xmlns="http://www.w3.org/1999/xhtml">
+
iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT
<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');
+
              Liberar aplicativo UDP
$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) ;
+
      DHCP
 +
iptables -A INPUT -p udp --dport 67 -j ACCEPT
  
if($existe>0)
+
radius (autenticacao via proxy = 200.135.37.115)
{
+
iptables -A INPUT -p udp –dport 1812 -j ACCEPT
$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";
+
      NAT
  
fwrite($fs,$conteudo);
+
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
fclose($fs);
 
mysql_close($conexao);
 
?>
 
<script>alert('Cadastro efetuado com sucesso!');</script>
 
<?
 
}
 
  
echo "<script> window.location='busca.php';</script>";
+
=Programação para Redes de Computadores=
?>
+
==PHP==
</body>
 
</html>
 
  
* '''Código fonte do site que faz a alteração dos dados no users(freeradius) e no banco de dados.'''
+
Uma linguagem do lado do servidor é aquela que se executa no servidor web, justo antes da página ser enviada através da Internet ao cliente. As páginas que se executam no servidor podem realizar acessos a bases de dados, conexões em rede, e outras tarefas para criar a página final que será vista pelo cliente. O cliente somente recebe uma página com o código HTML resultante da execução da PHP. Como a página resultante contém unicamente código HTML, é compatível com todos os navegadores.
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
Segue abaixo o comando para instalar o PHP.
<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);
+
* <tt>apt-get install php5</tt>
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.'''
+
A página foi criada em HTML e [http://php.net PHP].
  
<?
+
== Banco de dados ==
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>
 
<div id="wrap">
 
 
 
    <div id="header">
 
      <div id="logo">
 
        <h1>Zeus Resort</h1>
 
        <div></div>
 
      </div>
 
    </div>
 
    <!-- /header -->
 
    <div id="content">
 
      <div class="side fl">
 
        <div class="sideinner">
 
          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />
 
          <h3>&nbsp;</h3>
 
        </div>
 
      </div>
 
      <div class="main fr">
 
        <div id="text">
 
          <h2>&nbsp;</h2>
 
          <h2>Bem vindo! </h2>
 
          <form id="form1" name="form1" method="post" action="">
 
            <table width="200" border="0" cellpadding="5" cellspacing="5">
 
              <tr>
 
                <td align="right">Login</td>
 
                <td><label>
 
                  <input name="login" type="text" id="login" size="8" maxlength="8" />
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td align="right">Senha</td>
 
                <td><label>
 
                  <input name="senha" type="password" id="senha" size="8" maxlength="8" />
 
                </label></td>
 
              </tr>
 
              <tr>
 
                <td colspan="2" align="center"><label>
 
                  <input type="submit" name="button" id="button" value="Enviar" />
 
                </label></td>
 
              </tr>
 
            </table>
 
          </form>
 
          <p>&nbsp;</p>
 
        </div>
 
        <div class="clearfix"></div>
 
        <div id="col">
 
          <div class="first fl">
 
            <ul>
 
              <li></li>
 
            </ul>
 
          </div>
 
          <div class=" fl ">
 
            <ul>
 
              <li></li>
 
              <li></li>
 
            </ul>
 
          </div>
 
        </div>
 
      </div>
 
      <!-- /content -->
 
    </div>
 
    <div class="clearfix"></div>
 
    <div id="footer"></div>
 
    <!-- /footer -->
 
  </div>
 
  
</body>
+
Bancos de dados (ou bases de dados), são conjuntos de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim.
</html>
 
  
*Código fonte do site principal do administrador.
+
Segue abaixo o comando para a instalação do banco de dados MySQL.
  
<?
+
* <tt>apt-get install mysql-server</tt>
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>";
 
}
 
  
?>
+
Utilizamos o MySQL-Query-Browser
  
<!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>
 
<div id="wrap">
 
 
 
    <div id="header">
 
      <div id="logo">
 
        <h1>Zeus Resort</h1>
 
        <div></div>
 
      </div>
 
      <ul id="nav">
 
        <li class="first"><a href="busca.php">Cadastrar</a></li>
 
        <li><a href="relatorio.php">Relatório</a></li>
 
        <li><a href="ocupacao.php">Ocupação</a></li>
 
        <li><a href="logout.php">LogOut</a></li>
 
  
      </ul>
+
Segue abaixo o comando para a instalação do banco de dados MySQL-Query-Browser.
    </div>
 
    <!-- /header -->
 
    <div id="content">
 
      <div class="side fl">
 
        <div class="sideinner">
 
          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />
 
          <h3>&nbsp;</h3>
 
        </div>
 
      </div>
 
      <div class="main fr">
 
        <div id="text">
 
          <h2>&nbsp;</h2>
 
          <h2>Bem vindo! </h2>
 
          <p>&nbsp;</p>
 
        </div>
 
        <div class="clearfix"></div>
 
        <div id="col">
 
          <div class="first fl">
 
            <ul>
 
              <li></li>
 
            </ul>
 
          </div>
 
          <div class=" fl ">
 
            <ul>
 
              <li></li>
 
              <li></li>
 
            </ul>
 
          </div>
 
        </div>
 
      </div>
 
      <!-- /content -->
 
    </div>
 
    <div class="clearfix"></div>
 
    <div id="footer"></div>
 
    <!-- /footer -->
 
  </div>
 
  
</body>
+
* <tt>apt-get install mysql-query-server</tt>
</html>
 
 
 
*'''Código fonte do site onde ele puxa as informações do banco para que as mesmas possam ser alteradas.'''
 
 
 
<?
 
require_once('conexao.php');
 
$cpf=$_GET['cpf'];
 
$op=$_GET['op'];
 
$sql="select * from clientes where cpf='$cpf'";
 
if($op==1)
 
{
 
$msg="Alterar";
 
}
 
else
 
{
 
$msg="Excluir";
 
}
 
  
$busca=@mysql_query($sql);
+
O nosso banco de dados utiliza MySQL como linguagem.
$cliente=@mysql_fetch_array($busca);
 
$sai=explode('-',$cliente['saida']);
 
$saida=$sai[2].'/'.$sai[1].'/'.$sai[0];
 
?>
 
<!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>
 
<div id="wrap">
 
 
 
    <div id="header">
 
      <div id="logo">
 
        <h1>Zeus Resort</h1>
 
        <div></div>
 
      </div>
 
      <ul id="nav">
 
        <li class="first"><a href="cadastrar.php">Cadastrar</a></li>
 
        <li><a href="relatorio.php">Relatório</a></li>
 
        <li><a href="ocupacao.php">Ocupação</a></li>
 
        <li><a href="logout.php">LogOut</a></li>
 
      </ul>
 
    </div>
 
    <!-- /header -->
 
    <div id="content">
 
      <div class="side fl">
 
        <div class="sideinner">
 
          <img src="Zeus_punishment_by_JuanSan.jpg" width="301" height="450" />
 
          <h3>&nbsp;</h3>
 
        </div>
 
      </div>
 
      <div class="main fr">
 
        <div id="text">
 
         
 
  
 
=Referências Bibliográficas=
 
=Referências Bibliográficas=

Edição atual tal como às 14h49min de 10 de julho de 2009

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

DHCP é a sigla para Dynamic Host Configuration Protocol. Trata-se de um protocolo utilizado em redes de computadores que permite a estes obterem um endereço IP automaticamente.


  • 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

DNS é a sigla para Domain Name System (Sistema de Resolução de Nomes). Trata-se de um recurso usado em redes TCP/IP (o protocolo utilizado na internet e na grande maioria das redes) que permite acessar computadores sem que o usuário ou sem que o próprio computador tenha conhecimento de seu endereço IP, ou seja, faz a conversão de nomes em endereços IP's.

  • 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

Postifix

O Postfix é um agente de transferência de emails (MTA), um software livre para envio e entrega de emails. Rápido e fácil de administrar, é uma alternativa segura ao Sendmail, muito utilizado em servidores UNIX.

Configuração:

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
mynetworks = 127.0.0.1/32

SSH

O SSH (Secure SHell) é um protocolo que permite a você acessar virtualmente o servidor como se você estivesse em um terminal (no prompt do DOS, por exemplo). Se você preferir, considere como o SSH como um computador controlando outro computador.

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

SMTP - padrão internacional utilizado para transfência de correspondências eletrônicas (email) entre computadores.

IMAP - protocolo padrão utilizado por leitores de email para ter acesso às mensagens que chegam ao servidor de email.

  • 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 proxy{
       ipaddr = 200.135.37.115
       secret = proxy
       nastype = other

}


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

zeus@zeus.sj.ifsc.edu.br        Cleartext-Password :="123"
        Tunnel-Type = "VLAN",
        Tunnel-Medium-Type = "IEEE-802",
        Tunnel-Private-Group-ID = "20"

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

Iptables

Do Viva o Linux:

Firewall

O que é iptables/firewall

O Firewall é um programa que tem como objetivo proteger a máquina contra acessos indesejados, tráfego indesejado, proteger serviços que estejam rodando na máquina e bloquear a passagem de coisas que você não deseja receber (como conexões vindas da Internet para sua segura rede local, evitando acesso aos dados corporativos de uma empresa ou a seus dados pessoais).

Iptables

O iptables é um firewall em nível de pacotes e funciona baseado no endereço/porta de origem/destino do pacote, prioridade, etc. Ele funciona através da comparação de regras para saber se um pacote tem ou não permissão para passar.


                bloqueia tudo

iptables -P INPUT DROP

               libera o minimo

iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

              libera aplicativo TCP

iptables -A INPUT -p tcp –dport 22 –syn -j ACCEPT

                     http

iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT

             Liberar aplicativo UDP
      DHCP

iptables -A INPUT -p udp --dport 67 -j ACCEPT

radius (autenticacao via proxy = 200.135.37.115) iptables -A INPUT -p udp –dport 1812 -j ACCEPT

      NAT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Programação para Redes de Computadores

PHP

Uma linguagem do lado do servidor é aquela que se executa no servidor web, justo antes da página ser enviada através da Internet ao cliente. As páginas que se executam no servidor podem realizar acessos a bases de dados, conexões em rede, e outras tarefas para criar a página final que será vista pelo cliente. O cliente somente recebe uma página com o código HTML resultante da execução da PHP. Como a página resultante contém unicamente código HTML, é compatível com todos os navegadores.

Segue abaixo o comando para instalar o PHP.

  • apt-get install php5

A página foi criada em HTML e PHP.

Banco de dados

Bancos de dados (ou bases de dados), são conjuntos de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim.

Segue abaixo o comando para a instalação do banco de dados MySQL.

  • apt-get install mysql-server

Utilizamos o MySQL-Query-Browser


Segue abaixo o comando para a instalação do banco de dados MySQL-Query-Browser.

  • apt-get install mysql-query-server

O nosso banco de dados utiliza MySQL como linguagem.

Referências Bibliográficas

Apostilas

  • Linux Básico, Gerência, Segurança e Monitoramento de Redes - Odilson Tadeu Valle



Projeto Integrador - 2009.1