Firewall PF no OSX com IceFloor

4

Eu configurei o pf usando o IceFloor no meu sistema OSX 10.9 executando o Server 3.0.2. Tudo parece estar bem, exceto que eu não consigo conectar ao sistema usando o nome DNS ou o IP público de localhost. Por exemplo. Eu posso conectar a http / port 80 da internet, mas não da própria máquina usando o IP público. A conexão da máquina para localhost / 127.0.0.1 funciona. Aqui está o log que recebo (x.x.x.x é o IP público do host):

rule 7/0(match): block in on en0: x.x.x.x.80 > x.x.x.x.64460: Flags [R.], seq 1, ack 1, win 65535, length 0

E aqui está a lista de regras

$ sudo pfctl -s rules
[sudo] password for paul: 
No ALTQ support in kernel
ALTQ related functions disabled
scrub-anchor "icefloor.nat" all fragment reassemble
anchor "icefloor.nat" all
block drop in quick from <emergingthreats> to any
block drop out quick from any to <emergingthreats>
block drop in log quick from <_blacklist> to any
block drop out log quick from any to <_blacklist>
block drop in quick from no-route to any
block drop in quick from urpf-failed to any label "uRPF"
block drop log inet all label "Generic_blocks_(IPv4)"
block drop log inet6 all label "Generic_blocks_(IPv6)"
anchor "icefloor.groupblocks" all label "Blocks"
anchor "inspector.blocks" all label "Temp_blocks"
anchor "icefloor.exceptions" all label "Logs_exceptions"
anchor "icefloor.portknocking" all label "Hidden_services"
anchor "icefloor.genericipv6" all
anchor "icefloor.inbound" all label "Local_services"
anchor "icefloor.outbound" all label "All_traffic"
anchor "icefloor.outbound_nat" all label "NAT_clients_traffic"
anchor "icefloor.custom_rules" all

Você pode me dizer qual é o rule 7/0(match) ? E por que não é permitido conectar-se do host local à chave pública (em qualquer porta aberta)? Tem algo a ver com a regra no-route f? Ou as duas Generic_blocks_ -rules?

Agradecemos antecipadamente

Paul

    
por lluuaapp 12.01.2014 / 14:39

1 resposta

1

Eu também estava enfrentando esse problema e levou um pouco de teste e tcpdump para descobrir tudo.

Para responder a sua primeira pergunta, qual é a rule 7/0(match) : é a regra "Generic_blocks_ (IPv4)" adicionada automaticamente pelo IceFloor para bloquear e registrar todo o tráfego não explicitamente autorizado. Você pode confirmar o número dessa regra executando pfctl -gsr como root.

Sobre o motivo pelo qual ele está bloqueado. A conexão de entrada é o que está bloqueado. Não tem nada a ver com o não-roteamento ou qualquer coisa no conjunto de regras visível . Tem a ver com a forma como o seu nome DNS é tratado localmente. A tabela de roteamento da sua máquina ( netstat -r ) tem uma entrada para o seu nome DNS que aponta para localhost na interface lo0 .

A entrada de log contém algumas informações intrigantes, especificamente a block in on en0 , que leva você a acreditar que algo está acontecendo na interface en0 . No entanto, fazer um tcpdump -nvvvi en0 tcp and port 80 mostrou que nenhum pacote estava realmente viajando em en0 . No entanto, os pacotes foram encontrados com tcpdump -nvvvi lo0 tcp and port 80 , confirmando assim que o tráfego estava (como esperado) acontecendo em lo0 .

A configuração padrão do IceFloor ( /Library/IceFloor/icefloor.conf ) é gerada com uma linha que possui set skip on lo0 . No começo, isso parece ser uma linha muito bem-vinda e bem-vinda (veja link ). Todos os outros pedaços de lo0 apareceram desimpedidos pelas regras pf. Em um palpite, decidi comentar essa linha e adicionar uma nova regra (logo após a inclusão da tabela): pass quick on lo0 . Depois de recarregar com essa configuração modificada, consegui acessar meu servidor da web por meio do meu nome DNS (problema resolvido). Então, parece que a linha set skip on lo0 tem alguns problemas.

O recuo com a modificação manual do arquivo icefloor.conf é que ele impede que você use a guia Firewall na interface do IceFloor. Como salvar uma nova configuração substituiria qualquer edição manual.

    
por 05.02.2014 / 18:13