PF – очень мощный инструмент и в его арсенале имеются штатные средства для блокировки паролей. И так нужна такая конструкция:
table <badhosts> persist
...
block drop in quick on $ext_if from to any label "ssh bruteforce"
block drop out quick on $ext_if from any to label "ssh bruteforce"
...
pass in quick on $ext_if proto tcp from any to ($ext_if) port 22 flags S/SA keep state (max-src-conn-rate 1/60, overloadflush global)