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

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(16 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 24: Linha 24:
 
  # Acesso Wirelles;
 
  # Acesso Wirelles;
 
  # Suporte 24Horas.  
 
  # Suporte 24Horas.  
+
 
 
  Contamos com 6 Técnicos em Telecomunicações especialistas no setor de redes para todo o suporte necessário.
 
  Contamos com 6 Técnicos em Telecomunicações especialistas no setor de redes para todo o suporte necessário.
 
  Contate um de nossos especialistas através do e-mail teletecifsc.googlegroups.com e faça já seu orçamento.
 
  Contate um de nossos especialistas através do e-mail teletecifsc.googlegroups.com e faça já seu orçamento.
Linha 59: Linha 59:
 
- Edição do Arquivo do servidor DNS '''/etc/bind/named.conf'''  
 
- Edição do Arquivo do servidor DNS '''/etc/bind/named.conf'''  
  
Indica todos os arquivos que vai fazer a configuração dele
+
Indica todos os arquivos que irão fazer a configuração do DNS, incluindo os 3 principais defaults: ''named.conf.options, named.conf.local e o named.conf.default-zones''.
  
 
  // This is the primary configuration file for the BIND DNS server named.
 
  // This is the primary configuration file for the BIND DNS server named.
Linha 71: Linha 71:
 
  include "/etc/bind/named.conf.local";
 
  include "/etc/bind/named.conf.local";
 
  include "/etc/bind/named.conf.default-zones";
 
  include "/etc/bind/named.conf.default-zones";
  include "/etc/bind/servidor.conf";
+
  include "/etc/bind/robson.conf";
include "/etc/bind/tecnico.conf";
 
include "/etc/bind/daniel.conf";
 
  
 
- Edição do Arquivo de servidor DNS: named.conf.local '''/etc/bind/named.conf.local'''
 
- Edição do Arquivo de servidor DNS: named.conf.local '''/etc/bind/named.conf.local'''
É um arquivo padrão do BIND onde foi configurado o o nosso dominino TELETEC.
+
 
 +
É um arquivo padrão do BIND onde foi configurado o o nosso dominino TELETEC.
  
 
  //
 
  //
Linha 92: Linha 91:
  
 
- Edição do Arquivo de DNS Reverso: '''/etc/bind/37.135.200.in-addr.arpa'''
 
- Edição do Arquivo de DNS Reverso: '''/etc/bind/37.135.200.in-addr.arpa'''
 +
 
O DNS Reverso resolve um endereço IP para um nome de servidor – por exemplo, ele poderia resolver 200.176.3.142 para exemplo.hipotetico.com.br.
 
O DNS Reverso resolve um endereço IP para um nome de servidor – por exemplo, ele poderia resolver 200.176.3.142 para exemplo.hipotetico.com.br.
  
 
  $TTL 86400
 
  $TTL 86400
  @ IN  SOA  servidor.teletec.sj.ifsc.edu.br. root (
+
  @ IN  SOA  www.teletec.sj.ifsc.edu.br. root (
 
   2011061500 ;
 
   2011061500 ;
 
   1d ;
 
   1d ;
Linha 102: Linha 102:
 
  1d ;
 
  1d ;
 
       )
 
       )
         IN  NS    servidor.teletec.sj.ifsc.edu.br.
+
         IN  NS    www.teletec.sj.ifsc.edu.br.
  100    IN  PTR  servidor.teletec.sj.ifsc.edu.br.
+
  100    IN  PTR  www.teletec.sj.ifsc.edu.br.
  
 
- Edição do Arquivo para criar um subdomínio:'''/etc/bind/teletec.zone'''
 
- Edição do Arquivo para criar um subdomínio:'''/etc/bind/teletec.zone'''
Arquivo que traz todas as configurações de cada subdomínio.  
+
 
 +
Arquivo que traz todas as configurações de cada subdomínio.  
  
 
  $TTL 86400
 
  $TTL 86400
Linha 131: Linha 132:
 
- Configuração do arquivo '''/etc/apache2/sites-enabled/teletec-default'''
 
- Configuração do arquivo '''/etc/apache2/sites-enabled/teletec-default'''
  
NameVirtualHost 200.135.37.100:80
+
  <VirtualHost *:80>
  <VirtualHost 200.135.37.100:80>
 
 
  ServerAdmin webmaster@localhost
 
  ServerAdmin webmaster@localhost
 
  ServerName www.teletec.sj.ifsc.edu.br
 
  ServerName www.teletec.sj.ifsc.edu.br
Linha 140: Linha 140:
 
  AllowOverride None
 
  AllowOverride None
 
  </Directory>
 
  </Directory>
  <Directory /var/www/>
+
  <Directory /var/www/teletec>
 
  Options Indexes FollowSymLinks MultiViews
 
  Options Indexes FollowSymLinks MultiViews
 
  AllowOverride None
 
  AllowOverride None
Linha 221: Linha 221:
 
  alias_database = hash:/etc/aliases
 
  alias_database = hash:/etc/aliases
 
  myorigin = $myhostname
 
  myorigin = $myhostname
  mydestination = $myhostname
+
  mydestination = $myhostname, /etc/postfix/mydomains
 
  relayhost =  
 
  relayhost =  
 
  mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 
  mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
Linha 238: Linha 238:
  
 
  teletec.sj.ifsc.edu.br Principal
 
  teletec.sj.ifsc.edu.br Principal
 +
tecnico@teletec.sj.ifsc.edu.br tecnico
 
   
 
   
 
  robson.teletec.sj.ifsc.edu.br Subdominio1
 
  robson.teletec.sj.ifsc.edu.br Subdominio1
Linha 258: Linha 259:
 
  postmap /etc/postfix/mydomains
 
  postmap /etc/postfix/mydomains
 
  service postfix restart
 
  service postfix restart
+
 
 
== Instalação de Equipamento de Redes (Modem, Switch e Roteadores) ==
 
== Instalação de Equipamento de Redes (Modem, Switch e Roteadores) ==
  
Linha 414: Linha 415:
 
   
 
   
 
  service freeradius restart
 
  service freeradius restart
 +
 +
[[Arquivo:diagrama-teletec.jpg|850px]]
  
 
== Cabeamento Estruturado ==
 
== Cabeamento Estruturado ==
Linha 426: Linha 429:
  
 
== Programação para Redes de Computadores ==
 
== Programação para Redes de Computadores ==
 +
'''# Programação PHP e HTML'''
 +
'''Os Arquivos PHP (pagina Web) Encontram-se dentro da pasta: ''/var/www/teletec'''''
  
'''Os Arquivos PHP (pagina Web) Encontram-se dentro da pasta: ''/var/www/teletec'''''
+
[[Imagem:Paginas-php-teletec.jpg|850px]]
  
 
- Edição do Arquivo '''Verificação.php''':
 
- Edição do Arquivo '''Verificação.php''':
Linha 477: Linha 482:
 
   
 
   
 
  <.?
 
  <.?
     $conexao = mysql_connect("localhost","www-data","orelha1234");
+
     $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
 
     $base_ok = mysql_select_db("teletec",$conexao);
 
     $base_ok = mysql_select_db("teletec",$conexao);
 
     $consulta = "SELECT * from clientes";
 
     $consulta = "SELECT * from clientes";
Linha 501: Linha 506:
 
  <./html>
 
  <./html>
  
- Edição do Arquivo '''mod-domínio.php''':
+
- Edição do Arquivo '''mod-dominio.php''':
  
 
Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado.
 
Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado.
Linha 535: Linha 540:
 
     }else{  
 
     }else{  
 
   
 
   
       $script = "/etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio";
+
       $script = "sudo /etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio";
 
       exec("$script");
 
       exec("$script");
 
       exec("/etc/init.d/apache2 restart");
 
       exec("/etc/init.d/apache2 restart");
 
   
 
   
       $conexao = mysql_connect("localhost","www-data","orelha1234");
+
       $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $deletar = "DELETE FROM clientes WHERE dominio='$antigo.teletec.sj.ifsc.edu.br'";
 
       $deletar = "DELETE FROM clientes WHERE dominio='$antigo.teletec.sj.ifsc.edu.br'";
Linha 545: Linha 550:
 
       mysql_close($conexao);  
 
       mysql_close($conexao);  
 
   
 
   
       $conexao = mysql_connect("localhost","www-data","orelha1234");
+
       $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')";
 
       $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')";
Linha 639: Linha 644:
 
       $script = "/etc/teletec/del-dominio.sh $dominio";
 
       $script = "/etc/teletec/del-dominio.sh $dominio";
 
       exec("$script");
 
       exec("$script");
       exec("/etc/init.d/apache2 restart");
+
       exec("sudo /etc/init.d/apache2 restart");
       $conexao = mysql_connect("localhost","www-data","orelha1234");
+
       $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $deletar = "DELETE FROM clientes WHERE dominio='$dominio.teletec.sj.ifsc.edu.br'";
 
       $deletar = "DELETE FROM clientes WHERE dominio='$dominio.teletec.sj.ifsc.edu.br'";
Linha 746: Linha 751:
 
       header ("Location: adicionar.php");
 
       header ("Location: adicionar.php");
 
     }else{
 
     }else{
       $script = "/etc/teletec/add-dominio.sh '$cliente' $dominio";
+
       $script = "sudo /etc/teletec/add-dominio.sh '$cliente' $dominio";
 
       exec("$script");
 
       exec("$script");
 
       exec("/etc/init.d/apache2 restart");
 
       exec("/etc/init.d/apache2 restart");
       $conexao = mysql_connect("localhost","www-data","orelha1234");
+
       $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $base_ok = mysql_select_db("teletec",$conexao);
 
       $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')";
 
       $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')";
Linha 759: Linha 764:
 
  ?.>
 
  ?.>
  
 +
'''# Programação BASH'''
 
  '''Os Arquivos .sh (scripts que adicionam, removem ou alteram os usuários no servidor) Encontram-se dentro da pasta: ''/etc/teletec'''''  
 
  '''Os Arquivos .sh (scripts que adicionam, removem ou alteram os usuários no servidor) Encontram-se dentro da pasta: ''/etc/teletec'''''  
  
Linha 808: Linha 814:
 
       sudo sed -i '/'$antigo'@teletec\.sj\.ifsc\.edu\.br '$antigo'/Id' /etc/postfix/virtual
 
       sudo sed -i '/'$antigo'@teletec\.sj\.ifsc\.edu\.br '$antigo'/Id' /etc/postfix/virtual
 
       sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains  
 
       sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains  
 +
      sudo userdel -r $antigo
 
   
 
   
 
       sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf
 
       sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf
Linha 834: Linha 841:
 
Script em bash que remove o cliente (Subdominio, E-mail e Pagina WEB):
 
Script em bash que remove o cliente (Subdominio, E-mail e Pagina WEB):
  
Exclui todos os arquivos de configuração criados para este cliente e retira as linhas de configuração adicionadas em arquivos como o "named.conf", "virtual" e "mydomains", por ultimo os serviçoes DNS e POSTFIX são reiniciados ( o APACHE2 é reiniciado na pagina PHP).
+
Exclui todos os arquivos de configuração criados para este cliente e retira as linhas de configuração adicionadas em arquivos como o "named.conf", "virtual" e "mydomains", por ultimo os serviçoes DNS e POSTFIX são reiniciados ( o APACHE2 é reiniciado na pagina PHP).Também é removido o usuario criado no servidor.
  
 
  #!/bin/bash
 
  #!/bin/bash
Linha 850: Linha 857:
 
       sudo rm /etc/apache2/sites-enabled/$dominio-default
 
       sudo rm /etc/apache2/sites-enabled/$dominio-default
 
       sudo rm -r /var/www/$dominio
 
       sudo rm -r /var/www/$dominio
 +
      sudo userdel -r $dominio
 
       sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$dominio'/Id' /etc/postfix/virtual
 
       sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$dominio'/Id' /etc/postfix/virtual
 
       sudo sed -i '/'$dominio'@teletec\.sj\.ifsc\.edu\.br '$dominio'/Id' /etc/postfix/virtual
 
       sudo sed -i '/'$dominio'@teletec\.sj\.ifsc\.edu\.br '$dominio'/Id' /etc/postfix/virtual
Linha 870: Linha 878:
 
Pagina-Web: Assim como no sub-dominio, o script troca as palavras "padrao" que estão em um arquivo padrao de configuração ( padrao-default) pelo dominio escolhido pelo cliente, criando um novo arquivo de configuração com nome "dominio-escolhido"-default. Tambem cria uma pagina web html padrao.
 
Pagina-Web: Assim como no sub-dominio, o script troca as palavras "padrao" que estão em um arquivo padrao de configuração ( padrao-default) pelo dominio escolhido pelo cliente, criando um novo arquivo de configuração com nome "dominio-escolhido"-default. Tambem cria uma pagina web html padrao.
  
E-mail: O script adiciona as linhas de configuração do e-mail do cliente nos arquivos "virtual" e "mydomains".
+
E-mail: O script adiciona as linhas de configuração do e-mail do cliente nos arquivos "virtual" e "mydomains". Também é criado um usuario no servidor com login e senha igual ao dominio escolhido.
  
 
Após fazer as confgurações o script reinicia o DNS e o POSTFIX. (o APACHE2 é reiniciado na pagina PHP).
 
Após fazer as confgurações o script reinicia o DNS e o POSTFIX. (o APACHE2 é reiniciado na pagina PHP).
Linha 899: Linha 907:
 
       sudo /etc/init.d/bind9 restart
 
       sudo /etc/init.d/bind9 restart
 
       sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default
 
       sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default
       mkdir /var/www/$dominio
+
       sudo mkdir /var/www/$dominio
       sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html
+
       sudo sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html
 +
      sudo useradd -md /home/$dominio $dominio
 +
      sudo usermod -p $(openssl passwd -1 $dominio) $dominio
 
       sudo echo ' ' >> /etc/postfix/virtual
 
       sudo echo ' ' >> /etc/postfix/virtual
 
       sudo echo ''$dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio'' >> /etc/postfix/virtual
 
       sudo echo ''$dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio'' >> /etc/postfix/virtual
Linha 913: Linha 923:
 
  #      echo -e " * O dominio ja existe ou esta em branco.\n"
 
  #      echo -e " * O dominio ja existe ou esta em branco.\n"
 
  #fi
 
  #fi
 +
 +
'''# Banco de dados'''
 +
 +
Para o administrador conseguir os dados de "nome" e de "dominio" do cliente foi criado uma tabela no banco de dados, estas informações ficam visíveis na pagina "principal.php" e são usadas para remover ou modificar um cliente.
 +
 +
[[Arquivo:tabela-teletec.jpg]]
 +
 +
root@teletec: mysql -u root -p
 +
mysql> create database teletec;
 +
mysql> GRANT ALL PRIVILEGES on teletec.* to 'www-data'@'%' identified by 'SENHA-DO-ADMIN';
 +
mysql> quit
 +
root@teletec: mysql teletec -u www-data -p
 +
mysql> CREATE TABLE clientes (cliente VARCHAR(40), dominio VARCHAR(50));
 +
mysql> quit
 +
 +
'''# Permissionamento'''
 +
 +
Um usuário como o "www-data" não tem permissão para usar comandos como "service bind9 restart" ou para criar um arquivo de um diretorio de serviços como o "/etc/bind". Para os scripts em BASH e PHP funcionarem corretamente foi preciso dar permissão para o usuario "www-data" usar alguns comandos como "root", isto foi feito com a edição do arquivo "/etc/sudoers"
 +
 +
- Edição do Arquivo '''/etc/sudoers''': Arquivo onde são especificados os usuários que poderão usar o sudo:
 +
 +
#
 +
# This file MUST be edited with the 'visudo' command as root.
 +
#
 +
# Please consider adding local content in /etc/sudoers.d/ instead of
 +
# directly modifying this file.
 +
#
 +
# See the man page for details on how to write a sudoers file.
 +
#
 +
Defaults        env_reset
 +
 +
# Host alias specification
 +
 +
# User alias specification
 +
 +
# Cmnd alias specification
 +
 +
# User privilege specification
 +
root    ALL=(ALL:ALL) ALL
 +
 +
# Members of the admin group may gain root privileges
 +
%admin ALL=(ALL) ALL
 +
 +
# Allow members of group sudo to execute any command
 +
%sudo  ALL=(ALL:ALL) ALL
 +
 +
#includedir /etc/sudoers.d
 +
www-data ALL=NOPASSWD:/usr/sbin/service, /sbin/restart, /usr/sbin/apache2, /usr/sbin/postfix,
 +
/etc/init.d/bind9, /bin/sed, /bin/echo, /bin/mkdir, /usr/sbin/postmap, /usr/bin/touch, /etc/teletec
 +
/add-dominio.sh, /etc/init.d/apache2, /etc/init.d/postfix, /bin/rm, /etc/teletec/mod-dominio.sh,
 +
/etc/teletec/del-dominio.sh, /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel

Edição atual tal como às 15h27min de 12 de julho de 2011

* Equipe 2 : TELETEC


INTEGRANTES TELETEC

* Daniel Estefano;      estefano.daniel@gmail.com 
* Denis Teixeira;       denisteixeira3@gmail.com 
* Leonardo Oliveira P.; leonardo-op@live.com 
* Odair de Moraes;      odairdmoraes@hotmail.com
* Robson de Carvalho;   rob_carvalho12@hotmail.com
* Vagner Cordeiro.      cordeirotelecom@gmail.com

SOBRE A EMPRESA TELETEC - PROVEDORA DE ACESSO Á INTERNET:

Empresa especializada no ramo das Telecomunicações Oferece os seguintes serviços: 

# Conta de Usuário para cada cliente;
# Conta de E-mail para cada cliente;
# Uma página Web Padrão;
# Instalação do Modem ADSL e do Cabeamento Estrurado;
# Acesso Wirelles;
# Suporte 24Horas. 
Contamos com 6 Técnicos em Telecomunicações especialistas no setor de redes para todo o suporte necessário.
Contate um de nossos especialistas através do e-mail teletecifsc.googlegroups.com e faça já seu orçamento.

Etapas Iniciais de Configurações da Rede

# Instalação do Sistema Operacional:Ubuntu-Server;
# Definido Sistema de Arquivo, Dividido em 3 Partições: 1 Partição Primátia, 1 Partição Secundária e uma Partição para Swap; 
# Definido nome do Domínio: teletec.sj.ifsc.edu.br;
# Criado um Usuário: Tecnico;
# Acesso via SSH ao Servidor Teletec.

Gerencia de Redes: Apache, Postfix e DNS

Configurações do servidor DNS:

- Edição do Arquivo para IP Estático: /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
               address 200.135.37.100
               netmask 255.255.255.192
               gateway 200.135.37.126  

- Edição do Arquivo do servidor DNS /etc/bind/named.conf

Indica todos os arquivos que irão fazer a configuração do DNS, incluindo os 3 principais defaults: named.conf.options, named.conf.local e o named.conf.default-zones.

// 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/robson.conf";

- Edição do Arquivo de servidor DNS: named.conf.local /etc/bind/named.conf.local

É um arquivo padrão do BIND onde foi configurado o o nosso dominino TELETEC.

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918"8;
zone "teletec.sj.ifsc.edu.br." IN {
        type master;
        file "/etc/bind/teletec.zone";
        allow-update { none; };
};

- Edição do Arquivo de DNS Reverso: /etc/bind/37.135.200.in-addr.arpa

O DNS Reverso resolve um endereço IP para um nome de servidor – por exemplo, ele poderia resolver 200.176.3.142 para exemplo.hipotetico.com.br.

$TTL 86400
@	IN   SOA   www.teletec.sj.ifsc.edu.br. root (
 		2011061500 ;
 		1d ;
 		1h ;
  		1w ; 
		1d ;
 						    )
       IN   NS    www.teletec.sj.ifsc.edu.br.
100    IN   PTR   www.teletec.sj.ifsc.edu.br.

- Edição do Arquivo para criar um subdomínio:/etc/bind/teletec.zone

Arquivo que traz todas as configurações de cada subdomínio.

$TTL	86400
@	IN SOA teletec.teletec.sj.ifsc.edu.br root (
			2011062901;
			3H;
			15M;
			1W;
			1D );
	IN NS		teletec.teletec.sj.ifsc.edu.br.
         IN MX  0        mail.teletec.sj.ifsc.edu.br.
localhost	IN A	127.0.0.1
$ORIGIN teletec.sj.ifsc.edu.br.
teletec		A	200.135.37.100
www		A	200.135.37.100
mail		A	200.135.37.100

- Configuração do servidor Apache

No servidor Apache foi feito a instalação com o comando:

apt-get install apache2

- Configuração do arquivo /etc/apache2/sites-enabled/teletec-default

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName www.teletec.sj.ifsc.edu.br
	DocumentRoot /var/www/teletec
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/teletec>
		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>

Na criação de um novo cliente vai ser criado um novo arquivo semelhante a esse com duas alterações nas linhas: ServerName www.teletec.sj.ifsc.edu.br onde vai ser acrescentado na frente do domínio o subdomínio do cliente exemplo: ServerName www.subdominio.teletec.sj.ifsc.edu.br e na linha DocumentRoot /var/www/teletec onde vai ser substituido teletec pelo nome do domínio do cliente por exemplo: DocumentRoot /var/www/cliente


- Configuração do servidor POSTFIX

- Primeiro foi feito a instalação com o comando:

apt-get install postfix

Em seguida o programa de instalação vai fazer algumas perguntas sobre a localização dos arquivos e alguns parâmetros

- Configuração do arquivo /etc/postfix/main.cf:


# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = mail.teletec.sj.ifsc.edu.br
virtual_alias_maps = hash:/etc/postfix/virtual
alias_database = hash:/etc/aliases
myorigin = $myhostname
mydestination = $myhostname, /etc/postfix/mydomains
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
mydomain = teletec.sj.ifsc.edu.br
mynetworks_style = subnet
virtual_alias_domains = hash:/etc/postfix/mydomains


- Foi criado o arquivo /etc/postfix/virtual

Toda vez que for criado uma nova conta de e-mail vai ser acresentado duas linhas novas nesse arquivo como as que estão em negrito no arquivo abaixo so que onde tem a palavra padrao vai ser substituida pele nome do cliente

teletec.sj.ifsc.edu.br Principal
tecnico@teletec.sj.ifsc.edu.br tecnico

robson.teletec.sj.ifsc.edu.br Subdominio1
robson@robson.teletec.sj.ifsc.edu.br robson

padrao.teletec.sj.ifsc.edu.br padrao
user@padrao.teletec.sj.ifsc.edu.br user

- Editar o arquivo mydomains /etc/postfix/mydomains

Nesse arquivo tem como primeira linha o dominio e na seguinte o subdominio e toda vez que for criado uma conta nova vai ser acresentado uma linha nova com o nome do subdominio do cliente.

teletec.sj.ifsc.edu.br OK
robson.teletec.sj.ifsc.edu.br OK

- Executar os comandos para releitura e reinicialização do Postfix:

postmap /etc/postfix/virtual
postmap /etc/postfix/mydomains
service postfix restart

Instalação de Equipamento de Redes (Modem, Switch e Roteadores)

Configurações:

Instalação:

minicom -s

Configuração do Roteador Cisco 1700:

  • Configuração dos Dois Roteadores Utilizando a ferramenta "Minicon" (Se fosse Windows seria Hyperterminal)
  • Configuração dos dispositivos: Serial e Ethernet
  • Configuração como Protocolo PPP

- "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
└────────────────────────────────────────┘

- "Alteração da Porta Serial"

┌──────────────────────────────────────────────────────────┐
│ A – Dispositivo Serial : /dev/ttSy0 
│ B – Localização do Arquivo de Travamento : /var/lock
│ C – Programa de Entrada :
│ D – Programa de Saída :
│ E – Bps/Paridade/Bits : 9600 8N1 
│ F – Controle de Fluxo por Hardware : Não
│ G – Controle de Fluxo por Software : Não
│
│ Alterar qual configuração?
└──────────────────────────────────────────────────────────┘

- "Salvar configuração com dfl"

- Configurando a Interface Serial do Roteador:

enable;
configure terminal;
 
#Para configurar a interface serial:
interface serial 0;
ip address 10.0.0.1/30;
encapsulation ppp;
exit;
 
#Para configurar a interface ethernet:
interface fastethernet 0;
ip address 172.18.0.1/24;
exit;
exit;
 
#Para salvar as configurações:
wr;

Radius

Para ter acesso a rede aDSL ou pela rede sem fio será usado Radius para que os usuários sejam autenticados. O RADIUS é um sistema utilizado para prover uma autenticação centralizada em redes dial-up, VPN's (Virtual Private Network) e redes sem fio. Ele tem um modelo cliente-servidor, onde o cliente é o Network Access Server (NAS). Esse servidor é responsável por obter a informação sobre o cliente e repassá-la para o servidor RADIUS, além de interpretar a resposta, dando ou não acesso ao cliente. O servidor RADIUS é responsável por receber pedidos de conexão, autenticar o usuário e repassar ao NAS as informações necessárias para esse dar acesso ao usuário na rede.

Arquivos configurados:

Configurar login e senha para o cliente Radius ( /etc/freeradius /users ):

“Usúario” Cleartext-Password := "senha"
“Usúario” User-Password := "senha"

Teste antes se seu servidor Radius está autenticando usuáriosfaça o seguinte comando no AC PPPoE (que fica em Ac-server):

radtest seu_usuario sua_senha IP_do_seu_servidor_Radius 1 segredo_do_seu_servidor_Radius

Configurando o Servidor PPPoe (/etc/ppp/pppoe-servers-options):

require-chap
auth
lcp-echo-interval 10
lcp-echo-failure 2
ms-dns IP do seu servidor DNS
netmask 255.255.255.0
noipdefault
debug
kdebug 4
plugin radius.so
plugin radattr.so
radius-config-file /etc/radiusclient/teletec.conf
mru 1492
mtu 1492

Configuração do Cliente Radius ( etc/radiusclient/teletec.conf ):

auth_order	radius
login_tries	4
login_timeout	60
nologin /etc/nologin
issue	/etc/radiusclient/issue
authserver 	200.135.37.100
acctserver 	200.135.37.100
servers		/etc/radiusclient/servers
dictionary 	/etc/radiusclient/dictionary
login_radius	/usr/sbin/login.radius
seqfile		/var/run/radius.seq
mapfile		/etc/radiusclient/port-id-map
default_realm
radius_timeout	10
radius_retries	3
login_local	/bin/login

Configurando o IP do Servidor Radius ( /etc/radiusclient/servers ):

200.135.37.100 testing123

Integrando Radius ao Banco de Dados

Primeiro procedimento, instale o pacote.

apt-get install freeradius-mysql

Edite o arquivo de configuração do freeradius, e descomente a seguinte linha ( /etc/freeradius/radiusd.conf ):

$INCLUDE sql.conf

Para entrar no MySQL execute o comando:

mysql -u root -p 

Crie uma base de dados somente para o Radius e dê ao usuário Radius a devida permissão para acesso a esta base. No shell do MySQL, execute os comandos:

CREATE DATABASE radius;
GRANT ALL ON radius.* TO freerad@localhost IDENTIFIED BY "senha_do_usuário_freeradius";
exit;

Inserindo informações na base de dados:

mysql -u “usuário” -p “senha do usuário radius” “database” < /etc/freeradius/sql/mysql/schema.sql
mysql -u “usuário” -p “senha do usuário radius” “database” < /etc/freeradius/sql/mysql/nas.sql

Editar o arquivo /etc/freeradius/sql.conf, colocando a senha do usuário Radius:

passwrod = "senha do usuário radius"

E descomente a linha do mesmo arquivo ( /etc/freeradius/sql.conf ) :

readclients = yes

Reinicie o FreeRadius:

service freeradius restart

Diagrama-teletec.jpg

Cabeamento Estruturado

Atividades Concluídas:

- o A central telefônica ao DSLAM
- o O DSLAM ao armário de telecom da equipe, através de uma linha telefone + DSL
- o armário da equipe a uma área de trabalho. 
- O cabeamento permitiu a conexão do modem DSL no armário de telecom.
- As tomadas da área de trabalho para conexão com Telefone e o Modem ADSL.

Programação para Redes de Computadores

# Programação PHP e HTML

Os Arquivos PHP (pagina Web) Encontram-se dentro da pasta: /var/www/teletec

Paginas-php-teletec.jpg

- Edição do Arquivo Verificação.php:

Esta pagina PHP verifica se o login e a senha do administrador esta correto. Se estiver correto vai para a pagina "principal.php" se não volta para "login.php".

<?
session_start();
$login = $_POST['login'];
$senha = $_POST['senha'];
if ( ( $login == "LOGIN-DO-ADMIN" ) && ( $senha == "SENHA-DO-ADMIN" ) ){
$_SESSION['autorizado'] = $login;
Header ("Location: principal.php");
}else{
Header ("Location: login.php");
}
?>

- Edição do Arquivo sair.php:

Esta pagina PHP faz o administrador "deslogar" ("logoff") e depois volta para pagina "login.php"

<?
session_start();
session_destroy();
Header ("Location: login.php");
?>

- Edição do arquivo principal.php:

Esta é a principal pagina PHP do site, nela verificamos os clientes criados e armazenados no banco de dados, redirecionamos para pagina que modifica os dominios (alterar.php), redirecionamos para pagina que remover os dominios (excluir.php)e tambem redirecionamos para a pagina que adiciona os dominios (adicionar.php). Quando é redirecionado para pagina de modificação e remoção tambem é enviado uma variavel com o dominio do cliente para saber qual usuario deve ser modificado ou alterado.

<.?
   .session_start();
   .if (!isset($_SESSION['autorizado'])){
      .header ("Location: login.php");
   .}else{
.?>
<.html>
   <.head>
     <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
     <.title>Administrcao de Dominios</title>
   <./head>
<.body>

<.p><a href="sair.php">Sair</a>

<.p>

<.p style="text-align:center;margin-left:auto;margin-right:auto;">Cliente Dominio Acao

<.?
   $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
   $base_ok = mysql_select_db("teletec",$conexao);
   $consulta = "SELECT * from clientes";
   $resultado = mysql_query($consulta,$conexao);
   while($linha = mysql_fetch_array($resultado)){
      $cliente = $linha['cliente'];
      $dominio = $linha['dominio'];
.?>
   <.form>
      <.p style="text-align:center;margin-left:auto;margin-right:auto;">
      <.a name="cliente" id="cliente" href="alterar.php?id=<? echo $linha['dominio'];?>"> <?echo                   $.linha['cliente'];?></a>   

<.? echo $linha['dominio'];?> <a href="excluir.php?id=<? echo $linha['dominio'];?>"> Excluir</a>

  <./form>
<.?
   .}
   .mysql_free_result($resultado);
   .mysql_close($conexao);
.}
.?>
   <.p style="text-align:right;margin-left:auto;margin-right:0;">

<.a href="adicionar.php">Adicionar novo dominio</a>

<./body>
<./html>

- Edição do Arquivo mod-dominio.php:

Esta pagina PHP recebe três variaveis com o dominio antigo do clinete, o novo dominio e o novo nome do cliente, estas variaveis são repassadas para o script "mod-dominio.sh" e este é executado modificando o dominio e o nome do cliente, depois de executar o script as informações do banco de dados tambem são modificadas e o serviço APACHE2 é reiniciado. Após todo este processamento a pagina é redirecionada para 'principal.php".

<.?
session_start();
if (!isset($_SESSION['autorizado'])){
        header ("Location: login.php");
}else{
   $cliente = $_POST['cliente'];
   $dominio = $_POST['dominio'];
   $antigo = $_POST['antigo'];;
   if (empty($dominio)) {
      $dominio = "invalido";
   } 

   if (preg_match('/^[a-z0-9]+/', $dominio)){
   }else{
      $dominio = "invalido";
   } 

   $arquivo = '/etc/bind/named.conf';
   $linhas = array();
   exec("cat $arquivo",$linhas);
   for ($i = 0 ; $i < sizeof($linhas); $i++){
      if ($linhas[$i] == "include \"/etc/bind/$dominio.conf\";"){
         $dominio = "invalido";
      }
   }
   if ($dominio == "invalido"){
      header ("Location: alterar.php");
   }else{ 

      $script = "sudo /etc/teletec/mod-dominio.sh $antigo '$cliente' $dominio";
      exec("$script");
      exec("/etc/init.d/apache2 restart");

      $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
      $base_ok = mysql_select_db("teletec",$conexao);
      $deletar = "DELETE FROM clientes WHERE dominio='$antigo.teletec.sj.ifsc.edu.br'";
      mysql_query($deletar,$conexao);
      mysql_close($conexao); 

      $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
      $base_ok = mysql_select_db("teletec",$conexao);
      $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')";
      mysql_query($inserir,$conexao);
      mysql_close($conexao);
      header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php"); 

   }
.}
?.>

- Edição do Arquivo login.php:

Esta pagina PHP recolhe o login e a senha fornecidas pelo administrador atraves de um formulario e manda para a pagina PHP de processamento que verifica se esta correto.

.<?
.session_start();
.if (isset($_SESSION['autorizado'])){
.Header ("Location: principal.php");
.}else{
.?>
<.html>
<.head>
  <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  <.title>Hospedagem Web</title>
<./head>

<.body>

<.p>

<.p>Sistemas de Hospedagem de Sitios Web

<.p>

		<.form name="formTeste" action="verificacao.php" method="post">
			<.p>Usuário:
<.input type="text" name="login"> <.p>Senha:
<.input type="password" name="senha"> <.input type="submit" name="b_enviar" value="Entrar"> <./form>

<.p>

<.?
}
.?>
<./body>
<./html>

- Edição do Arquivo Index.php:

Esta pagina apenas redireciona para "login.php"

<.?
Header ("Location: login.php");
.?>

- Edição do Arquivo excluir.php:

Esta pagina PHP faz uma verificação, se o administrador realmente querer excluir o dominio é mandado o dominio do clinete em uma variavel para a pagina PHP de processamento "del-dominio.php" e a pagina é redirecionada para la, mais se o usuario não quiser escluir é mandado novamente para p pagina "principal.php".

<.?
session_start();
if (!isset($_SESSION['autorizado'])){ 
	header ("Location: login.php");
}else{
   $id=$_GET['id'];
   $parte1 = explode(".", $id);
   $antigo = $parte1[0];
?.>
<.html>
   <head>
      <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      <.title>Excluir o cliente</title>
   <./head>
<.body>

<.p>Voce realmente deseja excluir o cliente?

  <.p><a href="del-dominio.php?id=<?echo $antigo;?>">Sim</a> <a

.href="principal.php">Nao</a>

<.p>

<?
}
.?>
<./body>
<./html>

- Edição do Arquivo del-dominio.php:

Esta pagina PHP é uma pagina de processamento que recebe em uma variavel o nome do dominio que sera removido e transfere esta variavel para o script em bash "del-dominio.sh" ja executa o script, depois este dominio é removido do banco de dados e o serviço APACHE2 é reiniciado. Após todo o processamento a pagina é redirecionada para "principal.php".

<.?
session_start();
if (!isset($_SESSION['autorizado'])){
        header ("Location: login.php");
}else{
      $dominio = $_GET['id'];
      $script = "/etc/teletec/del-dominio.sh $dominio";
      exec("$script");
      exec("sudo /etc/init.d/apache2 restart");
      $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
      $base_ok = mysql_select_db("teletec",$conexao);
      $deletar = "DELETE FROM clientes WHERE dominio='$dominio.teletec.sj.ifsc.edu.br'";
      mysql_query($deletar,$conexao);
      mysql_close($conexao);
      header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php");
}
?.>

- Edição do Arquivo alterar.php:

Nesta pagina PHP o administrador informa o novo nome do cliente e o novo dominio, estas informações são gravadas em uma variavel que será mandada para a pagina PHP que vai fazer todo o trabalho de processamento (mod-dominio.php).

<.?
session_start();
if (!isset($_SESSION['autorizado'])){ 
	header ("Location: login.php");
}else{
   $id=$_GET['id'];
   $parte1 = explode(".", $id);
   $antigo = $parte1[0];
?.>
<.html>
   <.head>
      <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      <.title>Alterar Dominio</title>
   </.head>
<.body>

<.p><.a href="principal.php">Voltar </a>

   <.form name="formTeste" action="mod-dominio.php" method="post">
      <.p>Novo nome do cliente: 
<.input type="text" name="cliente"> <.p>Novo dominio:
<.input type="text" name="dominio"> <.input type="hidden" name="antigo" value="<?echo $antigo;?>"> <.input type="submit" name="b_enviar" value="Alterar"> <./form> <.? } ?.> <./body> <./html>

- Edição do Arquivo adicionar.php:

Esta pagina PHP recolhe duas variaveis atraves do formulrios, em uma esta o nome do clinete e na outra o dominio escolhido, estas variaveis são repassadas para a pagina de processamento que vai adicionar este novo subdominio (add-dominio.php).Depois ela é redirecionada para a pagina de processamento "add-dominio.php".

<.?
session_start();
if (!isset($_SESSION['autorizado'])){
	header ("Location: login.php");
.}else{
.?>
<.html>
   <.head>
      <.meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      <.title>Adicionar Cliente</title>
   <./head>
<.body>

<.p><.a href="principal.php">Voltar </a>

   <.form name="formTeste" action="add-dominio.php" method="post">
      <.p>Nome do cliente: 
<.input type="text" name="cliente"> <.p>Dominio:
<.input type="text" name="dominio"> <.input type="submit" name="b_enviar" value="Criar"> <./form> <.? .} .?> <./body> <./html>

- Edição do Arquivo add-dominio.php:

Esta pagina PHP é uma pagina de processamento que recebe duas variaveis, na primeira esta o nome do dominio que sera removido e na segunda está o dominio do cliente, estas variaveis são transferidas para o script em bash "add-dominio.sh" que é executado, depois este dominio é adicionado no banco de dados e o serviço APACHE2 é reiniciado. Após todo o processamento a pagina é redirecionada para "principal.php".

<.?
session_start();
if (!isset($_SESSION['autorizado'])){
	header ("Location: login.php");
}else{
   $cliente = $_POST['cliente'];
   $dominio = $_POST['dominio']; 

   if (empty($dominio)) {
      $dominio = "invalido";
   } 

   if (preg_match('/^[a-z0-9]+/', $dominio)){
   }else{
      $dominio = "invalido";
   } 

   $arquivo = '/etc/bind/named.conf';
   $linhas = array();
   exec("cat $arquivo",$linhas);
   for ($i = 0 ; $i < sizeof($linhas); $i++){
      if ($linhas[$i] == "include \"/etc/bind/$dominio.conf\";"){
         $dominio = "invalido";
      }
   }
   if ($dominio == "invalido"){
      header ("Location: adicionar.php");
   }else{
      $script = "sudo /etc/teletec/add-dominio.sh '$cliente' $dominio";
      exec("$script");
      exec("/etc/init.d/apache2 restart");
      $conexao = mysql_connect("localhost","www-data","SENHA-DO-ADMIN");
      $base_ok = mysql_select_db("teletec",$conexao);
      $inserir = "INSERT INTO clientes (cliente,dominio) VALUES ('$cliente','$dominio.teletec.sj.ifsc.edu.br')";
      mysql_query($inserir,$conexao);
      mysql_close($conexao);
      header ("Location: http://www.teletec.sj.ifsc.edu.br/principal.php");
   }
}
?.>

# Programação BASH

Os Arquivos .sh (scripts que adicionam, removem ou alteram os usuários no servidor) Encontram-se dentro da pasta: /etc/teletec 

- Edição do Arquivo mod-dominio.sh: Script em bash que altera o dominio do cliente (Subdominio, E-mail e Pagina WEB):

O script de modificação na verdade exclui o dominio criado e cria um novo, os scripts de remover e adicionar estão juntos neste script.

#!/bin/bash
#Leonardo
#echo -n "Dominio: "
#read antigo
#IFS=$'\n'
#for linha in `cat /etc/bind/named.conf`; do
#   if [ $linha = 'include "/etc/bind/'$antigo'.conf";' ];then
#         valido=sim
#         break
#      else
#         valido=nao
#   fi
#done
#if [ $valido = nao ];then
#   echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m"
#   echo -e " * O dominio não existe ou esta em branco.\n"
#   exit
#fi
#echo -n "Novo nome para o cliente: "
#read nome
#echo -n "Novo dominio: "
#read dominio
#echo=${dominio:=nulo}
#IFS=$'\n'
#for linha in `cat /etc/bind/named.conf`; do
#   if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then
#      dominio=existe
#      break
#   fi
#done
#if [ $dominio != nulo ] && [ $dominio != existe ];then
antigo=$1
nome=$2
dominio=$3
      sudo sed -i '/\/etc\/bind\/'$antigo'\.conf/Id' /etc/bind/named.conf
      sudo rm /etc/bind/$antigo.conf
      sudo rm /etc/bind/$antigo.zone
      sudo rm /etc/apache2/sites-enabled/$antigo-default
      sudo rm -r /var/www/$antigo
      sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$antigo'/Id' /etc/postfix/virtual
      sudo sed -i '/'$antigo'@teletec\.sj\.ifsc\.edu\.br '$antigo'/Id' /etc/postfix/virtual
      sudo sed -i '/'$antigo'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains 
      sudo userdel -r $antigo 

      sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf
      numero=`date | cut -d ":" -f 3 | cut -d " " -f 1`
      novoserial=$((1000000000+$numero))
      sudo sed s/padrao/$dominio/g /etc/bind/padrao.conf > /etc/bind/$dominio.conf
      sudo sed s/padrao/$dominio/g /etc/bind/padrao.zone | sed s/2011061504/$novoserial/g > /etc/bind/$dominio.zone
      sudo /etc/init.d/bind9 restart
      sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default
      mkdir /var/www/$dominio
      sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html
      sudo echo ' ' >> /etc/postfix/virtual
      sudo echo $dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio >> /etc/postfix/virtual
      sudo echo $dominio'@teletec.sj.ifsc.edu.br '$dominio >> /etc/postfix/virtual
      sudo echo $dominio'.teletec.sj.ifsc.edu.br OK' >> /etc/postfix/mydomains
      sudo postmap /etc/postfix/virtual
      sudo postmap /etc/postfix/mydomains
      sudo /etc/init.d/postfix restart
#      echo -e " * Dominio modificado com sucesso!\t\t\t\t[ OK ]\n"
#   else
#      echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m"
#      echo -e " * O dominio ja existe ou esta em branco.\n"
#fi

- Edição do Arquivo del-dominio.sh: Script em bash que remove o cliente (Subdominio, E-mail e Pagina WEB):

Exclui todos os arquivos de configuração criados para este cliente e retira as linhas de configuração adicionadas em arquivos como o "named.conf", "virtual" e "mydomains", por ultimo os serviçoes DNS e POSTFIX são reiniciados ( o APACHE2 é reiniciado na pagina PHP).Também é removido o usuario criado no servidor.

#!/bin/bash
#Leonardo
#echo -n "Dominio: "
#read dominio
#IFS=$'\n'
#for linha in `cat /etc/bind/named.conf`; do
#   if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then
dominio=$1
      sudo sed -i '/\/etc\/bind\/'$dominio'\.conf/Id' /etc/bind/named.conf
      sudo rm /etc/bind/$dominio.conf
      sudo rm /etc/bind/$dominio.zone
      sudo /etc/init.d/bind9 restart
      sudo rm /etc/apache2/sites-enabled/$dominio-default
      sudo rm -r /var/www/$dominio
      sudo userdel -r $dominio
      sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br Subdominio-'$dominio'/Id' /etc/postfix/virtual
      sudo sed -i '/'$dominio'@teletec\.sj\.ifsc\.edu\.br '$dominio'/Id' /etc/postfix/virtual
      sudo sed -i '/'$dominio'\.teletec\.sj\.ifsc\.edu\.br OK/Id' /etc/postfix/mydomains
      sudo postmap /etc/postfix/virtual
      sudo postmap /etc/postfix/mydomains
      sudo /etc/init.d/postfix restart
#      echo -e " * Dominio removido com sucesso!\t\t\t\t[ OK ]\n"
#      exit
#   fi
#done
#      echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m"
#      echo -e " * O dominio não existe ou esta em branco.\n"

- Edição do Arquivo add-dominio.sh: Script em bash que adiciona o cliente (Subdominio, E-mail e Pagina WEB):

Sub-dominio: O script pega como base arquivos padrões ja criados e configurados ( padrao.conf e padrao.zone ), altera todas as palavras "padrao" destes arvivos pelo dominio escolhido pelo usuario e salva como "dominio-escolhido".zone e "dominio-escolhido".conf. Alem disso ele tambem inclui o caminho do arquivo de configuração ".conf" no "named.conf".

Pagina-Web: Assim como no sub-dominio, o script troca as palavras "padrao" que estão em um arquivo padrao de configuração ( padrao-default) pelo dominio escolhido pelo cliente, criando um novo arquivo de configuração com nome "dominio-escolhido"-default. Tambem cria uma pagina web html padrao.

E-mail: O script adiciona as linhas de configuração do e-mail do cliente nos arquivos "virtual" e "mydomains". Também é criado um usuario no servidor com login e senha igual ao dominio escolhido.

Após fazer as confgurações o script reinicia o DNS e o POSTFIX. (o APACHE2 é reiniciado na pagina PHP).

#!/bin/bash
# Leonardo
#echo -n "Nome do cliente: "
#read nome
#echo -n "Dominio: " 
#read dominio
#echo=${dominio:=nulo}
#IFS=$'\n'
#for linha in `cat /etc/bind/named.conf`; do
#   if [ $linha = 'include "/etc/bind/'$dominio'.conf";' ];then
#      dominio=existe
#      break
#   fi   
#done
#
#if [ $dominio != nulo ] && [ $dominio != existe ];then
nome=$1
dominio=$2
      sudo echo 'include "/etc/bind/'$dominio'.conf";' >> /etc/bind/named.conf
      numero=`date | cut -d ":" -f 3 | cut -d " " -f 1`
      novoserial=$((1000000000+$numero))
      sudo sed s/padrao/$dominio/g /etc/bind/padrao.conf > /etc/bind/$dominio.conf
      sudo sed s/padrao/$dominio/g /etc/bind/padrao.zone | sed s/2011061504/$novoserial/g > /etc/bind/$dominio.zone
      sudo /etc/init.d/bind9 restart
      sudo sed s/padrao/$dominio/g /etc/apache2/sites-available/padrao-default > /etc/apache2/sites-enabled/$dominio-default
      sudo mkdir /var/www/$dominio
      sudo sed s/dominio/$dominio/g /var/www/padrao/index.html | sed s/nome/"$nome"/g > /var/www/$dominio/index.html
      sudo useradd -md /home/$dominio $dominio
      sudo usermod -p $(openssl passwd -1 $dominio) $dominio
      sudo echo ' ' >> /etc/postfix/virtual
      sudo echo $dominio'.teletec.sj.ifsc.edu.br Subdominio-'$dominio >> /etc/postfix/virtual
      sudo echo $dominio'@teletec.sj.ifsc.edu.br '$dominio >> /etc/postfix/virtual 
      sudo echo $dominio'.teletec.sj.ifsc.edu.br OK' >> /etc/postfix/mydomains
      sudo postmap /etc/postfix/virtual
      sudo postmap /etc/postfix/mydomains
      sudo /etc/init.d/postfix restart
#      echo -e " * Dominio criado com sucesso!\t\t\t\t[ OK ]\n"
#   else
#      echo -e " * Você entrou com um dominio inválido!\t\t\t \e[31m [ ERRO ] \e[m"
#      echo -e " * O dominio ja existe ou esta em branco.\n"
#fi

# Banco de dados

Para o administrador conseguir os dados de "nome" e de "dominio" do cliente foi criado uma tabela no banco de dados, estas informações ficam visíveis na pagina "principal.php" e são usadas para remover ou modificar um cliente.

Tabela-teletec.jpg

root@teletec: mysql -u root -p
mysql> create database teletec;
mysql> GRANT ALL PRIVILEGES on teletec.* to 'www-data'@'%' identified by 'SENHA-DO-ADMIN';
mysql> quit
root@teletec: mysql teletec -u www-data -p
mysql> CREATE TABLE clientes (cliente VARCHAR(40), dominio VARCHAR(50));
mysql> quit

# Permissionamento

Um usuário como o "www-data" não tem permissão para usar comandos como "service bind9 restart" ou para criar um arquivo de um diretorio de serviços como o "/etc/bind". Para os scripts em BASH e PHP funcionarem corretamente foi preciso dar permissão para o usuario "www-data" usar alguns comandos como "root", isto foi feito com a edição do arquivo "/etc/sudoers"

- Edição do Arquivo /etc/sudoers: Arquivo onde são especificados os usuários que poderão usar o sudo:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d
www-data ALL=NOPASSWD:/usr/sbin/service, /sbin/restart, /usr/sbin/apache2, /usr/sbin/postfix, 
/etc/init.d/bind9, /bin/sed, /bin/echo, /bin/mkdir, /usr/sbin/postmap, /usr/bin/touch, /etc/teletec
/add-dominio.sh, /etc/init.d/apache2, /etc/init.d/postfix, /bin/rm, /etc/teletec/mod-dominio.sh, 
/etc/teletec/del-dominio.sh, /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel