Mudanças entre as edições de "Projeto Integrador - 2009.2 - Dicas de GER"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 213: Linha 213:
 
import os
 
import os
  
def limpar(equipe, registro):
+
def limpar(equipe, registro, servidor):
print("tecle ENTER...")
+
enter=''
 +
print("Tecle ENTER...")
 
raw_input(enter)
 
raw_input(enter)
 
os.system('clear')
 
os.system('clear')
print equipe, registro
+
print('@' + servidor + ' ' + registro + ' ' + equipe)
  
enter = ''
+
def main():
equipes = {}
+
equipes = {}
equipes.update({'iguana':'111'})
+
prefixo = '200.135.37'
equipes.update({'mlwnetworks':'112'})
+
dominio = 'sj.ifsc.edu.br'
equipes.update({'technet':'113'})
+
equipes.update({'iguana':'111'})
equipes.update({'urano':'114'})
+
equipes.update({'mlwnetworks':'112'})
equipes.update({'epsilon':'115'})
+
equipes.update({'technet':'113'})
 +
equipes.update({'urano':'114'})
 +
equipes.update({'epsilon':'115'})
  
for equipe in equipes:
+
for equipe in equipes:
for registro in ('SOA', 'NS', 'MX', 'A'):
+
for registro in ('SOA', 'NS', 'MX', 'A'):
limpar(equipe, registro)
+
limpar(equipe, registro, prefixo + '.65')
os.system('dig @200.135.37.65 ' + registro +
+
os.system('dig @' + prefixo + '.65 ' + registro +
' ' + equipe + '.sj.ifsc.edu.br')
+
' ' + equipe + '.' + dominio)
limpar(equipe, registro)
+
limpar(equipe, registro, prefixo + '.' + equipes[equipe])
os.system('dig @200.135.37.' + equipes[equipe] +
+
os.system('dig @' + prefixo + '.' + equipes[equipe] +
' ' + registro + ' ' + equipe + '.sj.ifsc.edu.br')
+
' ' + registro + ' ' + equipe + '.' + dominio)
 +
 +
if __name__ == '__main__':
 +
main()
 
</syntaxhighlight>
 
</syntaxhighlight>
  
  
 
{{Voltar|Projeto Integrador - 2009.2#Gerência de Redes|Página principal do Projeto}}
 
{{Voltar|Projeto Integrador - 2009.2#Gerência de Redes|Página principal do Projeto}}

Edição das 19h12min de 3 de dezembro de 2009

Organização

<graphviz> digraph Serviços { splines = true

subgraph clusterRede { label = "Rede" DHCP }

subgraph clusterAplicacao { label = "Aplicação" DNS HTTP MySQL SMTP IMAP }

DHCP -> DNS -> HTTP MySQL -> HTTP -> MySQL DNS -> SMTP -> HTTP DNS -> IMAP -> HTTP } </graphviz>

Integração entre Aplicações

À espera da necessidade dos alunos :-)


Scripts

Firewal

#!/bin/bash


# Variáveis: MEXA aqui!
#
# Interfaces
EXTERNA_IFACE="eth0"
DMZ_IFACE="eth0:0"
LAN="eth0:1"
#
# Redes
EXTERNA_REDE="200.135.37.0/24"
DMZ_REDE="172.31.0.16/30"
LAN_REDE="172.31.0.0/28"
#
# Servidores
ROTEADOR="200.135.37.82"
DMZ_WEB="172.31.0.17"
#
# Portas
PORTAS_TCP_SERVIDOR="22"
PORTAS_UDP_SERVIDOR=""
PORTAS_TCP_WEB="25 80"
PORTAS_UDP_WEB="53"


limpa_regras()
{
	echo "- Antigas regras de NAT."
	iptables -t nat -F
	
	echo "- Antigas regras de filtro de pacotes."
	iptables -F
}

politica_padrao()
{
	echo "- Política padrão para NAT."
	iptables -t nat -P PREROUTING ACCEPT
	iptables -t nat -P POSTROUTING ACCEPT
	iptables -t nat -P OUTPUT ACCEPT
	
	echo "- Política padrão para filtro de pacotes."
	iptables -P INPUT ACCEPT
	iptables -P FORWARD ACCEPT
	iptables -P OUTPUT ACCEPT
}


regras_basicas()
{
	echo "- Regras básicas:"
	echo "  - Loopback."
	iptables -A INPUT -i lo -j ACCEPT
	echo "  - Conexões ativas."
	iptables -A INPUT   -m state --state RELATED,ESTABLISHED -j ACCEPT
}

roteamento()
{
	echo "- Roteamento."
	sysctl -w net.ipv4.ip_forward=1 > /dev/null
}

nat()
{
	echo "- NAT para as redes internas."
	iptables -t nat -A POSTROUTING -o ${EXTERNA_IFACE} -j MASQUERADE
}

redir_portas()
{	echo "- De externa para o servidor Web:"
	for porta in ${PORTAS_TCP_WEB}; do
		echo "  - Redireciona porta ${porta}/TCP."
		iptables -t nat -A PREROUTING -d ${ROTEADOR} -p tcp \
			--dport ${porta} -j DNAT --to ${DMZ_WEB}
	done
	for porta in ${PORTAS_UDP_WEB}; do
		echo "  - Redireciona porta ${porta}/UDP."
		iptables -t nat -A PREROUTING -d ${ROTEADOR} -p udp \
			--dport ${porta} -j DNAT --to ${DMZ_WEB}
	done
	
}

filtro_local()
{
	echo "- Filtro de pacotes:"
	for porta in ${PORTAS_TCP_SERVIDOR}; do
		echo "  - Libera porta ${porta}/TCP."
		iptables -A INPUT -p tcp --dport ${porta} -j ACCEPT
	done
	for porta in ${PORTAS_UDP_SERVIDOR}; do
		echo "  - Libera porta ${porta}/UDP."
		iptables -A INPUT -p udp --dport ${porta} -j ACCEPT
	done
	echo "  - Bloqueia o resto."
	iptables -P INPUT DROP
}

filtro_roteamento()
{
	echo "- Filtro de pacotes:"
	echo "  - Bloqueia da DMZ para a LAN interna."
	iptables -A FORWARD -s ${DMZ_REDE} -d ${LAN_REDE} -j DROP
	echo "  - Libera o resto."
	iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
}

status()
{
	echo "#####################"
	echo "# Filtro de pacotes #"
	echo "#####################"
	iptables -L -n -v
	echo
	echo
	echo "#######"
	echo "# NAT #"
	echo "#######"
	iptables -t nat -L -n -v
}

case ${1} in
	"start"|"restart")
		clear
		echo
		echo "Removendo:"
		limpa_regras
		echo
		echo "Aplicando:"
		politica_padrao
		echo
		echo "Para o acesso direto ao servidor:"
		regras_basicas
		filtro_local
		echo
		echo "Para o roteamento:"
		roteamento
		nat
		redir_portas
		filtro_roteamento
		echo
		echo "Pronto!"
		;;
	"stop")
		clear
		echo
		echo "Removendo:"
		limpa_regras
		echo
		echo "Aplicando:"
		politica_padrao
		roteamento
		nat
		echo
		echo "Pronto!"
		;;
	"status")
		clear
		status
		;;
	*)
		echo "Use: ${0} (start|stop|restart|status)"
		exit -1
		;;
esac

Teste de Servidor DNS

#!/usr/bin/python

import os

def limpar(equipe, registro, servidor):
	enter=''
	print("Tecle ENTER...")
	raw_input(enter)
	os.system('clear')
	print('@' + servidor + ' ' + registro + ' ' + equipe)

def main():
	equipes = {}
	prefixo = '200.135.37'
	dominio = 'sj.ifsc.edu.br'
	equipes.update({'iguana':'111'})
	equipes.update({'mlwnetworks':'112'})
	equipes.update({'technet':'113'})
	equipes.update({'urano':'114'})
	equipes.update({'epsilon':'115'})

	for equipe in equipes:
		for registro in ('SOA', 'NS', 'MX', 'A'):
			limpar(equipe, registro, prefixo + '.65')
			os.system('dig @' + prefixo + '.65 ' + registro +
				' ' + equipe + '.' + dominio)
			limpar(equipe, registro, prefixo + '.' + equipes[equipe])
			os.system('dig @' + prefixo + '.' + equipes[equipe] +
				' ' + registro + ' ' + equipe + '.' + dominio)
				
if __name__ == '__main__':
	main()



Voltar para Página principal do Projeto