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 36: Linha 36:
  
 
=''Scripts''=
 
=''Scripts''=
* Exemplo de ''firewall'':
+
==''Firewal''==
 
<syntaxhighlight lang=bash>
 
<syntaxhighlight lang=bash>
 
#!/bin/bash
 
#!/bin/bash
Linha 206: Linha 206:
 
esac
 
esac
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
==Teste de Servidor DNS==
 +
<syntaxhighlight lang=python>
 +
#!/usr/bin/python
 +
 +
import os
 +
 +
def limpar(equipe, registro):
 +
print("tecle ENTER...")
 +
raw_input(enter)
 +
os.system('clear')
 +
print equipe, registro
 +
 +
enter = ''
 +
equipes = {}
 +
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)
 +
os.system('dig @200.135.37.65 ' + registro +
 +
' ' + equipe + '.sj.ifsc.edu.br')
 +
limpar(equipe, registro)
 +
os.system('dig @200.135.37.' + equipes[equipe] +
 +
' ' + registro + ' ' + equipe + '.sj.ifsc.edu.br')
 +
</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 19h02min 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):
	print("tecle ENTER...")
	raw_input(enter)
	os.system('clear')
	print equipe, registro

enter = ''
equipes = {}
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)
		os.system('dig @200.135.37.65 ' + registro +
			' ' + equipe + '.sj.ifsc.edu.br')
		limpar(equipe, registro)
		os.system('dig @200.135.37.' + equipes[equipe] +
			' ' + registro + ' ' + equipe + '.sj.ifsc.edu.br')



Voltar para Página principal do Projeto