Firewall de gateway baseado em PF para OpenBSd 6.0

1

Currenly eu estou olhando para criar um gateway baseado em OpenBSD 6.0 pf. Baseado no que eu li nas páginas de manual do pf e no OpenBSD pf FAQ, e alguns exemplos na internet, eu consegui configurar um firewall. Mas não tenho certeza se acertei:

## Macros
wan="WAN interface"
wan_ip="WAN IP address"
lan="LAN interface"
lan_ip="LAN IP address"
lan_nw="LAN network address with subnetmask"
man="management interface"
man_ip="management ip address"
lo="lo0"


## TABLES
table <spammers> persist file "/etc/spammers.txt"


## OPTIONS
set block-policy drop
# debug lvl: none - urgent - misc - loud
set debug none
set limit { frags 2000, states 20000, src-nodes 2000, tables 1000, table-entries 100000 }
set loginterface { $wan, $lan, $man }
set optimization normal
set reassemble yes
set ruleset-optimization none
set skip on $lo
set state-defaults pflow, no-sync
set state-policy if-bound


## TRAFFIC NORMALIZATION
scrub on $wan all reassemble tcp
scrub in on $wan all fragment reassemble max-mss 1440
scrub out on $wan all fragment reassemble random-id no-df
# For NFS
scrub in on $lan all no-df
scrub out on $lan all no-df
antispoof for { $lo, $wan, $lan, $man }


## QUEUEING RULES


## TRANSLATION RULES (NAT)
nat on $wan from $lan_nw to any -> $wan_ip

## FILTER RULES
# Block everything (inbound AND outbound on ALL interfaces) by default (catch-all)
block all
# Block everything comming from and to spam IP's
block in on $wan from <spammers> to any
block out on $wan from any to <spammers>
# Activate spoofing protection for all interfaces
block in on all from urpf-failed

# Default TCP policy
block return-rst in log on $wan proto TCP all
    pass in quick on $man proto TCP from any to $man_ip port 22 flags S/FSRA keep state

# Default UDP policy
block in log on $wan proto udp all
    # Provide NTP to LAN and mgmt network.
    pass in quick on $lan proto UDP from any to $lan_ip port 123
    pass in quick on $man proto UDP from any to $man_ip port 123

# Default ICMP policy
block in log on $wan proto icmp all
    pass in quick on $wan proto icmp from any to $wan_ip echoreq keep state

block out on $wan all
    pass out quick on $wan from $wan_ip to any keep state

Isso é suficiente para criar um roteador de gateway reforçado? Alguém pode rever minha configuração e dar algum feedback ou ponteiros?

    
por Baron van Neemweggen 24.01.2017 / 20:03

1 resposta

1

Sua primeira regra de esfrega é redundante - você repete o mesmo efeito com as próximas duas regras.

Torne as regras de bloqueio específicas quick ou elas podem ser substituídas por regras posteriores. (O padrão é a última ação mencionada, a menos que quick seja fornecido, o que efetivamente quebra a avaliação da regra nesse ponto). Especialmente com sua regra inicial de "bloqueio", tudo o que não corresponde explicitamente será bloqueado. Portanto, a maioria das suas regras de bloqueio a seguir é redundante.

Ao testar, use "log" e monitore a interface pflog0 . Também use o modo verboso nas regras de show do pfctl ( pfctl -vsr ) para ver as contagens de correspondência das regras, para ter certeza de que elas estão realmente fazendo algo.

    
por 04.02.2017 / 03:53