Mudanças entre as edições de "Projeto Integrador - 2011.1 - Fenrir"

De MediaWiki do Campus São José
Ir para: navegação, pesquisa
(Instalação de Equipamento de Redes)
(3º Dia 15/06/2011)
 
(4 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  ==
  
*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
 
*Status das Atividades
Linha 256: Linha 251:
  
 
=== 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 417: Linha 462:
  
 
'''Página index:'''
 
'''Página index:'''
[[Arquivo:Index_fenrir.png|400px]]
+
[[Arquivo:Index_fenrir.png|500px]]
 
  <nowiki><?
 
  <nowiki><?
 
session_start();
 
session_start();
Linha 463: Linha 508:
 
}
 
}
 
  </nowiki>
 
  </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.'''
 
'''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.'''
''foto admin''
+
[[Arquivo:admin_fenrir.png|700px]]
  
 
  <nowiki><?
 
  <nowiki><?
Linha 597: Linha 657:
  
 
'''Ao clicar em "adicionar um usuário", a pagina é redirecionada para incluir.php, que seve para colocar os dados do novo cliente:'''
 
'''Ao clicar em "adicionar um usuário", a pagina é redirecionada para incluir.php, que seve para colocar os dados do novo cliente:'''
''foto incluir''
+
[[Arquivo:incluir_fenrir.png|600px]]
  
 
  <nowiki><?
 
  <nowiki><?
Linha 721: Linha 781:
  
 
'''Ao clicar em excluir um usuário, a página vai para exluir.php:'''
 
'''Ao clicar em excluir um usuário, a página vai para exluir.php:'''
''foto excluir''
+
[[Arquivo:excluir_fenrir.png|400px]]
 
  <nowiki><?
 
  <nowiki><?
 
session_start();
 
session_start();
Linha 752: Linha 812:
  
 
'''Ao clicar em alterar, a seguinte página aparece''':
 
'''Ao clicar em alterar, a seguinte página aparece''':
''foto alterar''
+
[[Arquivo:alterar_fenrir.png|400px]]
 
  <nowiki><?
 
  <nowiki><?
 
session_start();
 
session_start();
Linha 995: Linha 1 055:
  
 
== 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|800px]]
 
[[Arquivo:Diagrama_Cabe.jpg|800px]]
 
[[Arquivo:Legendaa.jpg|500px]]
 
[[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

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


Página index: Index fenrir.png

<?
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. Admin fenrir.png

<?
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: Incluir fenrir.png

<?
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: Excluir fenrir.png

<?
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: Alterar fenrir.png

<?
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á:

Captura de tela-ADSL 2+ Router - Mozilla Firefox.png

Ir para advanced setup, Wan,

Captura de tela-ADSL 2+ Router - Mozilla Firefox-1.png


Configurar: Modo PPOE, Encapulamento SNAP/LLC:

Captura de tela-ADSL 2+ Router - Mozilla Firefox-2.png

E Nat:

Captura de tela-ADSL 2+ Router - Mozilla Firefox-4.png

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 rede1.jpg

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 Cabe.jpg Legendaa.jpg