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 1: Linha 1:
 +
__TOC__
 
=Organização=
 
=Organização=
 
* Usem [http://www.mindmeister.com mapas mentais] ou [http://www.graphviz.org grafos direcionados] (dígrafos) para ver/compreender a relação entre camadas e serviços de rede. Exemplo:
 
* Usem [http://www.mindmeister.com mapas mentais] ou [http://www.graphviz.org grafos direcionados] (dígrafos) para ver/compreender a relação entre camadas e serviços de rede. Exemplo:

Edição das 17h57min 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

  • Exemplo de firewall:
#!/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



Voltar para Página principal do Projeto