Dead Packets

13/06/2014

Lojinha dos Pacotes Mortos – Política de Firewall simples

Filed under: fortinet — drak @ 3:08 PM

Continuando a série da Lojinha, iniciado aqui. Neste post nosso analista irá criar as regras iniciais da lojinha.

Em primeiro lugar, antes de sair criando as regras vamos associar nossas interfaces à zonas (para que a configuração não vire uma zona!). Isso vai facilitar a visualização da base de regras no firewall, pois ao invés de visualizarmos regras da interface ‘port3’ para ‘port1’ iremos ver regras da ‘LAN’ para ‘WAN’, muito melhor não ?

Seguindo nossa topologia atual, procedemos à criação das zonas.

Topologia

Como vemos na topologia acima, temos um mapeamento claro entre portas e o nome da zona, abaixo segue configuração.

config system zone						# Ou via Web em System:Network, seta pra baixo do lado de 'Create New', Zone
    edit "WAN"
        set interface "port1"
        set intrazone allow
    next
end

Fazemos o mesmo para as demais interfaces, conforme o mapeamento da topologia.

Após ajustarmos esses detalhes, vamos criar uma regra liberando acesso Web (HTTP, HTTPS e DNS) para toda a rede interna, lembrando que nosso analista ainda não conhece muito de segurança e por isso está criando uma regra muito permissiva:

config firewall policy					# Policy:Policy:Policy
    edit 1
        set srcintf "LAN"
        set dstintf "WAN"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "Web Access"
        set logtraffic all
        set nat enable
    next
end

config log setting						# Ativando log na regra de DENY implícita
    set fwpolicy-implicit-log enable
end

Agora iremos ativar o DHCP Server na LAN, assim não teremos que configurar IP estático no nosso WinXP e nem nos próximos computadores que forem comprados para a loja.

config  system  dhcp  server   			# System:Network:Interfaces:Interface X:DHCP Server
        edit  1
                set  default-gateway  10.0.1.254
                set  dns-service  default
                set  interface  "port3"
                        config  ip-range
                                edit  1
                                        set  end-ip  10.0.1.200
                                        set  start-ip  10.0.1.100
                                next
                        end
                set  netmask  255.255.255.0
        next
end

Ok, hora de iniciar os testes! Ele executa um ping para o DNS do Google (8.8.8.8) e… dá erro 😦

Hora de iniciar o troubleshooting:

FortiGate-VM64 # exec dhcp lease-list		# Primeiro descobrimos qual IP foi servido ao WinXP
port3										# Também podemos ver em System:Monitor:DHCP Monitor
  IP			MAC-Address			Hostname			VCI			Expiry
  10.0.1.100	00:0c:29:33:8e:a4	alexandr-bd97b3		MSFT 5.0		Sun Jun 15 17:26:39 2014

# Agora criamos o debug e o filtro adequado
FortiGate-VM64 # diag debug info					# Verificamos como está o debug
debug output:		disable
console timestamp:	disable
console no user log message:	disable
CLI debug level:	3

# Ok, agora vamos habilitar o debug, definir o filtro e indicar quantos pacotes iremos avaliar

diag debug ena										# Habilita o debug
diag debug flow show console enable					# Habilitamos as mensagens de debug na console
diag debug flow filter addr 10.0.1.100				# Filtro da origem
diag debug flow trace start 100          			# Iremos analisar somente os 100 primeiros pacotes

# Após criação do filtro e trace foi feito novamente o teste com ping para 8.8.8.8, segue o que apareceu na console

id=13 trace_id=1 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=1 msg="allocate a new session-00000076"
id=13 trace_id=1 msg="find a route: gw-10.200.1.254 via port1"
id=13 trace_id=1 msg="use addr/intf hash, len=2"
id=13 trace_id=1 msg="Denied by forward policy check"

id=13 trace_id=2 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=2 msg="allocate a new session-00000077"
id=13 trace_id=2 msg="find a route: gw-10.200.1.254 via port1"
id=13 trace_id=2 msg="use addr/intf hash, len=2"
id=13 trace_id=2 msg="Denied by forward policy check"

id=13 trace_id=3 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=3 msg="allocate a new session-00000078"
id=13 trace_id=3 msg="find a route: gw-10.200.1.254 via port1"
id=13 trace_id=3 msg="use addr/intf hash, len=2"
id=13 trace_id=3 msg="Denied by forward policy check"

id=13 trace_id=4 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=4 msg="allocate a new session-00000079"
id=13 trace_id=4 msg="find a route: gw-10.200.1.254 via port1"
id=13 trace_id=4 msg="use addr/intf hash, len=2"
id=13 trace_id=4 msg="Denied by forward policy check"

FortiGate-VM64 # diag debug disable					# Interrompe a execução do debug
FortiGate-VM64 # diag debug reset					# Retorna os valores de debug para o padrão

Por padrão o Windows manda 4 pacotes de ping por isso vemos 4 blocos de informação acima (que eu separei com uma linha em branco para facilitar a visualização). Como podemos ver na última linha de cada bloco acima os pacotes estão sendo bloqueados por ausência de regras na política: “Denied by forward policy check”, também poderíamos ver isso facilmente pela interface Web em Log & Report:Traffic Log:Forward Traffic.

Agora basta ajustar a regra para liberar também o ping, aproveitando esse ajuste também iremos criar um objeto de rede para colocar como origem, eliminando um “ANY” da regra existente e tornando o ambiente mais seguro.

config firewall address							# Firewall Objects:Address:Addresses
	edit  "net-10.0.1.100/24"
			set associated-interface "LAN"
			set comment "Internal Network"
			set subnet 10.0.1.0 255.255.255.0
end

config firewall policy
    edit 1
        set srcaddr "net-10.0.1.100/24"
        set service "Web Access" "PING"
end

Após configuração do objeto e da regra realizamos novamente o teste e o debug, agora vendo o ping passar sem problemas.

id=13 trace_id=101 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=101 msg="allocate a new session-00000909"
id=13 trace_id=101 msg="find a route: gw-10.200.1.254 via port1"
id=13 trace_id=101 msg="use addr/intf hash, len=2"
id=13 trace_id=101 msg="find SNAT: IP-10.200.1.1, port-62464"
id=13 trace_id=101 msg="Allowed by Policy-1: SNAT"
id=13 trace_id=101 msg="SNAT 10.0.1.100->10.200.1.1:62464"

id=13 trace_id=102 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=102 msg="Find an existing session, id-00000909, original direction"
id=13 trace_id=102 msg="SNAT 10.0.1.100->10.200.1.1:62464"

id=13 trace_id=103 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=103 msg="Find an existing session, id-00000909, original direction"
id=13 trace_id=103 msg="SNAT 10.0.1.100->10.200.1.1:62464"

id=13 trace_id=104 msg="vd-root received a packet(proto=1, 10.0.1.100:512->8.8.8.8:8) from port3."
id=13 trace_id=104 msg="Find an existing session, id-00000909, original direction"
id=13 trace_id=104 msg="SNAT 10.0.1.100->10.200.1.1:62464"

O teste de acesso à Internet também é feito com sucesso e podemos ver a regra em uso pela coluna “Count”.

policy_view_rule_count

Ótimo, Internet funcionando! No próximo post da série iremos integrar com o Active Directory para identificar quem está navegando, assim como ativar algumas funcionalidades de Web Content Filter e depois gerar alguns relatórios com o FortiAnalyzer.

Referências
Verifying that traffic is accepted by a security policy
Troubleshooting Tip : debug flow messages “iprope_in_check() check failed, drop” – “Denied by forward policy check” – “reverse path check fail, drop”

Anúncios

Deixe um comentário »

Nenhum comentário ainda.

RSS feed for comments on this post. TrackBack URI

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Blog no WordPress.com.

%d blogueiros gostam disto: