I've been scratching my head over this one. Here is my pf.conf:
int_if = "em0"
dmz_if = "em1"
block log all
set skip on lo0
block log quick inet6
block in log quick on $int_if from ! <rfc1918> to any
block out log quick on $int_if from any to ! <rfc1918>
pass out log on $int_if inet proto tcp from $int_if:0 to 10.1.1.1 port ldap
pass in log on $dmz_if inet proto tcp from $dmz_if:network to $dmz_if:0 port
ldap
pass in log on $dmz_if inet proto icmp from $dmz_if:network to $dmz_if:0
pass out log on $dmz_if inet proto icmp from $dmz_if:0 to $dmz_if:network
pass in log on $int_if inet proto icmp from <rfc1918> to $int_if:0
pass out log on $int_if inet proto icmp from $int_if:0 to <rfc1918>
pass in log on $int_if inet proto icmp from <rfc1918> to $dmz_if:network
pass out log on $dmz_if inet proto icmp from <rfc1918> to $dmz_if:network
pass in log on $dmz_if inet proto udp from $dmz_if:network to $dmz_if:0 port
ntp
pass in log on $int_if inet proto tcp from <rfc1918> to { $int_if:0
$dmz_if:network } port ssh
pass out log on $dmz_if inet proto tcp from <rfc1918> to $dmz_if:network port
ssh
pass out log on $dmz_if inet proto tcp from $int_if:0 to $dmz_if:network port
ssh
pass out log on $int_if inet proto udp from $int_if:0 to <dns> port domain
pass out log on $int_if inet proto udp from $int_if:0 to <ntp> port ntp
The problem is that some rules end up out of order in the "pfctl -s rules"
output (note the icmp rules in particular):
0 block drop log all
1 block drop in log quick on em0 from ! <rfc1918> to any
2 block drop out log quick on em0 from any to ! <rfc1918>
3 block drop log quick inet6 all
4 pass in log on em0 inet proto icmp from <rfc1918> to 192.168.7.2
5 pass in log on em0 inet proto icmp from <rfc1918> to 192.168.8.0/24
6 pass in log on em0 inet proto tcp from <rfc1918> to 192.168.7.2 port =
22 flags S/SA
7 pass in log on em0 inet proto tcp from <rfc1918> to 192.168.8.0/24 port
= 22 flags S/SA
8 pass out log on em0 inet proto udp from 192.168.7.2 to <dns> port = 53
9 pass out log on em0 inet proto udp from 192.168.7.2 to <ntp> port = 123
10 pass out log on em0 inet proto tcp from 192.168.7.2 to 10.1.1.1 port =
389 flags S/SA
11 pass out log on em0 inet proto icmp from 192.168.7.2 to <rfc1918>
12 pass out log on em1 inet proto icmp from 192.168.8.1 to 192.168.8.0/24
13 pass out log on em1 inet proto icmp from <rfc1918> to 192.168.8.0/24
14 pass out log on em1 inet proto tcp from <rfc1918> to 192.168.8.0/24
port = 22 flags S/SA
15 pass out log on em1 inet proto tcp from 192.168.7.2 to 192.168.8.0/24
port = 22 flags S/SA
16 pass in log on em1 inet proto tcp from 192.168.8.0/24 to 192.168.8.1
port = 389 flags S/SA
17 pass in log on em1 inet proto icmp from 192.168.8.0/24 to 192.168.8.1
18 pass in log on em1 inet proto udp from 192.168.8.0/24 to 192.168.8.1
port = 123
This is under OpenBSD 5.1. Am I misunderstanding something? Is some kind of
optimization taking place behind the scenes?
Andy