I solved the problem by copying the entire rule block right after
the old one and commenting out the old one.
New:
pass in on egress inet proto tcp to (egress) port $mail_ports \
keep state (max-src-conn 20, \
max-src-conn-rate 35/300, overload <bad_ips> \
flush global) \
rdr-to $mail_server
Old:
pass in on egress inet proto tcp to (egress) \
port $mail_ports \
keep state (max-src-conn 20, \
max-src-conn-rate 35/300, overload <bad_ips> \
flush global) rdr-to $mail_server
I only split one line and merged two other lines into one
but I think I did it correctly and I do not see any logical
changes in the block.
I still cannot understand what happened because there were no
uncommented excess lines within the old block.
Before copying the entire rule block I even occasionally made
a typo in the old rule and checked it with pfctl -nf /etc/pf.conf.
PF still did as if there were no block with the typo at all:
pass in on egress inet proto tcp to (egress) \
pppport $mail_ports \
keep state (max-src-conn 20, \
max-src-conn-rate 35/300, overload <bad_ips> \
flush global) rdr-to $mail_server
On Mon May 20 11:43:21 2024, Maksim Rodin wrote:
> Hello,
> I use OpenBSD 7.5 stable amd64.
> I uncommented an old rule and the corresponding macro in pf.conf
> which definitely worked when the
> machine was on version 7.3 and possibly 7.4.
>
> After that:
> pfctl -nf /etc/pf.conf shows nothing
> pfctl -f /etc/pf.conf shows nothing
> So Packet Filter seems to be happy with the config as a whole.
>
> pfctl -vvsr shows the old rules WITHOUT the uncommented one.
> pfctl -vvnf /etc/pf.conf warns that the uncommented macro
> used in the uncommented rule is NOT used.
>
> The output of pfctl -vvnf /etc/pf.conf is appended as
> pfctl_vvnf file
> The output of pfctl -vvsr is appended as
> pfctl_vvsr file
>
>
> Did I miss something when changing the configuration?
>
> The uncommented section 1 is:
> mail_ports = "{ submission imaps }"
>
> The uncommented section 2 is:
> pass in on egress inet proto tcp to (egress) \
> port $mail_ports \
> keep state (max-src-conn 20, \
> max-src-conn-rate 35/300, overload <bad_ips> \
> flush global) rdr-to $mail_server
>
>
> My whole pf.conf (all uncommented lines):
> int_if = "{ vether1 em1 em2 em3 }"
> table <martians> { 0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 \
> 169.254.0.0/16 172.16.0.0/12 192.0.2.0/24 \
> 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 \
> }
> table <spamd-white> persist
> table <nospamd> persist file "/etc/mail/nospamd"
> table <bad_ips> persist file "/etc/pf/bad_ips"
>
> transmission_server = "192.168.1.65"
> mail_server = "192.168.1.171"
>
> mail_ports = "{ submission imaps }"
>
> block log all
> set limit table-entries 1000000
> set block-policy drop
> set syncookies adaptive (start 29%, end 15%)
> set skip on lo
>
> match in all scrub (no-df random-id max-mss 1440)
> match out on egress inet from (vether1:network) \
> to any nat-to (egress:0)
>
> block in quick on egress from <martians> to any
> block return out quick on egress from any to <martians>
> block quick from <bad_ips>
>
> pass out quick inet
> pass in on $int_if inet
>
> pass in on egress inet proto tcp \
> to (egress) port 22 keep state \
> (max-src-conn 2, max-src-conn-rate 2/300, \
> overload <bad_ips> flush global)
>
> pass in on egress inet proto { tcp udp } \
> to (egress) port domain keep state \
> (max-src-states 10) \
> rdr-to 127.0.0.1 port 8053
>
> pass in on $int_if inet proto { tcp udp } from \
> (vether1:network) to (egress) port domain
>
> pass in on egress inet proto { tcp udp } \
> to (egress) port 50000 \
> rdr-to $transmission_server
>
> pass in on egress inet proto tcp to (egress) \
> port $mail_ports \
> keep state (max-src-conn 20, \
> max-src-conn-rate 35/300, overload <bad_ips> \
> flush global) rdr-to $mail_server
>
> pass in on egress proto tcp to (egress) \
> port smtp divert-to 127.0.0.1 port spamd
> pass in on egress proto tcp from <nospamd> to (egress) \
> port smtp rdr-to $mail_server
> pass in log on egress proto tcp from <spamd-white> \
> to (egress) port smtp \
> rdr-to $mail_server
> pass out on egress proto tcp to (egress) port smtp
>
>
> --
> Best regards
> Maksim Rodin
> warning: macro 'mail_ports' not used
> Loaded 714 passive OS fingerprints
> int_if = "{ vether1 em1 em2 em3 }"
> table <martians> { 0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16
> 172.16.0.0/12 192.0.2.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 }
> table <spamd-white> persist
> table <nospamd> persist file "/etc/mail/nospamd"
> table <bad_ips> persist file "/etc/pf/bad_ips"
> transmission_server = "192.168.1.65"
> mail_server = "192.168.1.171"
> mail_ports = "{ submission imaps }"
> set limit table-entries 1000000
> set block-policy drop
> set syncookies adaptive (start 29%, end 15%)
> set skip on { lo }
> @0 block drop log all
> @1 match in all scrub (no-df random-id max-mss 1440)
> @2 match out on egress inet from (vether1:network:*) to any nat-to
> (egress:0:*) round-robin
> @3 block drop in quick on egress from <martians:0> to any
> @4 block return out quick on egress from any to <martians:0>
> @5 block drop quick from <bad_ips:0> to any
> @6 pass out quick inet all flags S/SA
> @7 pass in on vether1 inet all flags S/SA
> @8 pass in on em1 inet all flags S/SA
> @9 pass in on em2 inet all flags S/SA
> @10 pass in on em3 inet all flags S/SA
> @11 pass in on egress inet proto tcp from any to (egress:*) port = 22 flags
> S/SA keep state (source-track rule, max-src-conn 2, max-src-conn-rate 2/300,
> overload <bad_ips> flush global, src.track 300)
> @12 pass in on egress inet proto tcp from any to (egress:*) port = 53 flags
> S/SA keep state (source-track global, max-src-states 10) rdr-to 127.0.0.1
> port 8053
> @13 pass in on egress inet proto udp from any to (egress:*) port = 53 keep
> state (source-track global, max-src-states 10) rdr-to 127.0.0.1 port 8053
> @14 pass in on vether1 inet proto tcp from (vether1:network:*) to (egress:*)
> port = 53 flags S/SA
> @15 pass in on em1 inet proto tcp from (vether1:network:*) to (egress:*) port
> = 53 flags S/SA
> @16 pass in on em2 inet proto tcp from (vether1:network:*) to (egress:*) port
> = 53 flags S/SA
> @17 pass in on em3 inet proto tcp from (vether1:network:*) to (egress:*) port
> = 53 flags S/SA
> @18 pass in on vether1 inet proto udp from (vether1:network:*) to (egress:*)
> port = 53
> @19 pass in on em1 inet proto udp from (vether1:network:*) to (egress:*) port
> = 53
> @20 pass in on em2 inet proto udp from (vether1:network:*) to (egress:*) port
> = 53
> @21 pass in on em3 inet proto udp from (vether1:network:*) to (egress:*) port
> = 53
> @22 pass in on egress inet proto tcp from any to (egress:*) port = 50000
> flags S/SA rdr-to 192.168.1.65
> @23 pass in on egress inet proto udp from any to (egress:*) port = 50000
> rdr-to 192.168.1.65
> @24 pass in on egress inet proto tcp from any to (egress:*) port = 25 flags
> S/SA divert-to 127.0.0.1 port 8025
> @25 pass in on egress inet proto tcp from <nospamd:0> to (egress:*) port = 25
> flags S/SA rdr-to 192.168.1.171
> @26 pass in log on egress inet proto tcp from <spamd-white:0> to (egress:*)
> port = 25 flags S/SA rdr-to 192.168.1.171
> @27 pass out on egress proto tcp from any to (egress:*) port = 25 flags S/SA
> @0 block drop log all
> [ Evaluations: 1331 Packets: 746 Bytes: 35871 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @1 match in all scrub (no-df random-id max-mss 1440)
> [ Evaluations: 1331 Packets: 21182 Bytes: 12745032 States: 19
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @2 match out on egress inet from (vether1:network:1) to any nat-to
> (egress:0:1) round-robin
> [ Evaluations: 1331 Packets: 20878 Bytes: 12693160 States: 14
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @3 block drop in quick on egress from <martians:9> to any
> [ Evaluations: 973 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @4 block return out quick on egress from any to <martians:9>
> [ Evaluations: 973 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @5 block drop quick from <bad_ips:8018> to any
> [ Evaluations: 1331 Packets: 157 Bytes: 9756 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @6 pass out quick inet all flags S/SA
> [ Evaluations: 1174 Packets: 21152 Bytes: 12742195 States: 19
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 215 ]
> @7 pass in on vether1 inet all flags S/SA
> [ Evaluations: 959 Packets: 21031 Bytes: 12722634 States: 17
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 170 ]
> @8 pass in on em1 inet all flags S/SA
> [ Evaluations: 959 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @9 pass in on em2 inet all flags S/SA
> [ Evaluations: 959 Packets: 54 Bytes: 8100 States: 1
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 18 ]
> @10 pass in on em3 inet all flags S/SA
> [ Evaluations: 959 Packets: 54 Bytes: 8910 States: 1
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 18 ]
> @11 pass in on egress inet proto tcp from any to (egress:1) port = 22 flags
> S/SA keep state (source-track rule, max-src-conn 2, max-src-conn-rate 2/300,
> overload <bad_ips> flush global, src.track 300)
> [ Evaluations: 959 Packets: 19 Bytes: 3983 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 1 ]
> @12 pass in on egress inet proto tcp from any to (egress:1) port = 53 flags
> S/SA keep state (source-track global, max-src-states 10) rdr-to 127.0.0.1
> port 8053
> [ Evaluations: 599 Packets: 15 Bytes: 862 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 2 ]
> @13 pass in on egress inet proto udp from any to (egress:1) port = 53 keep
> state (source-track global, max-src-states 10) rdr-to 127.0.0.1 port 8053
> [ Evaluations: 22 Packets: 3 Bytes: 194 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 1 ]
> @14 pass in on vether1 inet proto tcp from (vether1:network:1) to (egress:1)
> port = 53 flags S/SA
> [ Evaluations: 325 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @15 pass in on em1 inet proto tcp from (vether1:network:1) to (egress:1) port
> = 53 flags S/SA
> [ Evaluations: 149 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @16 pass in on em2 inet proto tcp from (vether1:network:1) to (egress:1) port
> = 53 flags S/SA
> [ Evaluations: 149 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @17 pass in on em3 inet proto tcp from (vether1:network:1) to (egress:1) port
> = 53 flags S/SA
> [ Evaluations: 131 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @18 pass in on vether1 inet proto udp from (vether1:network:1) to (egress:1)
> port = 53
> [ Evaluations: 240 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @19 pass in on em1 inet proto udp from (vether1:network:1) to (egress:1) port
> = 53
> [ Evaluations: 149 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @20 pass in on em2 inet proto udp from (vether1:network:1) to (egress:1) port
> = 53
> [ Evaluations: 149 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @21 pass in on em3 inet proto udp from (vether1:network:1) to (egress:1) port
> = 53
> [ Evaluations: 131 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @22 pass in on egress inet proto tcp from any to (egress:1) port = 50000
> flags S/SA rdr-to 192.168.1.65
> [ Evaluations: 727 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @23 pass in on egress inet proto udp from any to (egress:1) port = 50000
> rdr-to 192.168.1.65
> [ Evaluations: 20 Packets: 2 Bytes: 185 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 2 ]
> @24 pass in on egress inet proto tcp from any to (egress:1) port = 25 flags
> S/SA divert-to 127.0.0.1 port 8025
> [ Evaluations: 619 Packets: 4 Bytes: 164 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 1 ]
> @25 pass in on egress inet proto tcp from <nospamd:20> to (egress:1) port =
> 25 flags S/SA rdr-to 192.168.1.171
> [ Evaluations: 1 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @26 pass in log on egress inet proto tcp from <spamd-white:1> to (egress:1)
> port = 25 flags S/SA rdr-to 192.168.1.171
> [ Evaluations: 1 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
> @27 pass out on egress proto tcp from any to (egress:1) port = 25 flags S/SA
> [ Evaluations: 21 Packets: 0 Bytes: 0 States: 0
> ]
> [ Inserted: uid 0 pid 13268 State Creations: 0 ]
--
Best regards
Maksim Rodin
С уважением,
Родин Максим