On 2025-11-10, dirk coetzee <[email protected]> wrote:
> Hi All,
>
> I am seeing ssh authentication attempts on my lo0 interface (127.0.0.1). I 
> have antispoofing configured. Unfortunately due to unchangeable 
> circumstances, SSH (TCP/50022) is exposed.

I don't see any nat rules, so you either have something relaying TCP
traffic to port 50022 (e.g. relayd "forward to" running as a simple
relay), or something on the machine itself is ssh'ing to [email protected].

> set block-policy drop
> set syncookies adaptive (start 33%, end 12%)
> set reassemble yes no-df
> set ruleset-optimization none
> set optimization aggressive
> set limit { states 20000, frags 20000, src-nodes 5000, table-entries 2000000 }
> match in all scrub (no-df random-id max-mss 1440)
>
> # ---=== Macros ===---
> ports_dns      = "{ 53, 853 }"
> icmp_useful    = "{ echoreq, unreach, timex, timereq }"
> icmp6_useful   = "{ echoreq, unreach, timex, routersol, neighbrsol, 
> routeradv, neighbradv }"
> ip_ext1        = "{ vio0:0 }"
>
> # ---=== Tables ===---
> table <bruteforce>     persist
> table <sshguard>       persist
> table <sshd_block>     persist file "/etc/pf.files/table_sshd_block.txt"
> table <script1_block>  persist file "/etc/pf.files/script1_block.txt"
> table <geoblock>       persist file "/etc/pf.files/zones/pf.geoblock.master"
> table <githubblkdips>  persist file "/etc/pf.files/github_blkd_ips.txt"
> table <martians>       persist file "/etc/pf.files/martians.txt"
> table <snortips>       persist file "/etc/pf.files/snortips.txt"
> table <wwlogpf>        persist file "/etc/pf.files/wwwintrusions.txt"
>
> # ---=== Block: IPv6 rules ===--- 
> block in  quick log on egress inet6 from any  to self  label "Rule:$nr on 
> $if. Block IPv6 Inbound."
> block out quick log on egress inet6 from self to any   label "Rule:$nr on 
> $if. Block IPv6 Outbound."
>
> # ---=== AntiSpoof rules ===--
> antispoof log quick for { lo0, vio0, wg0, tun0 } label "Rule:$nr $if $proto 
> $dstaddr $dstport. Antispoof rule."
> block     quick log on lo0 inet  proto tcp from any to self port { 
> 22,80,443,50022 }  label "Rule:$nr $if $proto $dstaddr $dstport. URPF 
> Failure."
> block     quick log on lo0 inet  proto udp from any to self port   51820      
>         label "Rule:$nr $if $proto $dstaddr $dstport. URPF Failure."
> block     quick log on lo0 inet6 proto tcp from any to self port { 
> 22,80,443,50022 }  label "Rule:$nr $if $proto $dstaddr $dstport. URPF 
> Failure."
> block     quick log on lo0 inet6 proto udp from any to self port   51820      
>         label "Rule:$nr $if $proto $dstaddr $dstport. URPF Failure."
> block     quick log                        from urpf-failed            label 
> "Rule:$nr $if $proto $dstaddr $dstport. URPF Failure."
> block     quick log inet proto tcp         from any port <1024 to self port 
> {80,443,50022} label "Rule:$nr $if $proto $dstaddr $dstport. Reflection 
> Attack" 
> block     quick log inet proto udp         from any port <1024 to self port 
> 51820          label "Rule:$nr $if $proto $dstaddr $dstport. Reflection 
> Attack" 
>
> # ---=== Block: Martians ===--- 
> block in  quick log on egress inet from <martians>     to self             
> label "Rule:$nr on $if. Block Martians Inbound."
> block out quick log on egress inet from self           to <martians>       
> label "Rule:$nr on $if. Block Martians Outbound."
>
> # ---=== Default OpenBSD Rules ===---
> block return in on ! lo0 proto tcp to port 6000:6010 label "Rule:$nr on $if. 
> Default OpenBSD rule - X11"
> block return out log proto {tcp udp} user _pbuild    label "Rule:$nr on $if. 
> Default OpenBSD rule - pbuild"
>
> # ---=== Block: SSH Guard ===--- 
> block in  quick log on egress from <sshguard>     to self             label 
> "Rule:$nr on $if. SSH Guard Inbound."
> block out quick log on egress from self           to <sshguard>       label 
> "Rule:$nr on $if. SSH Guard Outbound."
> block in  quick log on egress from <sshd_block>   to self             label 
> "Rule:$nr on $if. SSH Block Script Inbound."
> block out quick log on egress from self           to <sshd_block>     label 
> "Rule:$nr on $if. SSH Block Script Outbound."
>
> # ---=== Geo Fencing ===---
> block in         quick log from <geoblock> to self                    label 
> "Rule:$nr on $if. GeoBlock Inbound."
> block return out quick log from self       to <geoblock>              label 
> "Rule:$nr on $if. GeoBlock Outbound."
>
> # ---=== Block: Snort Intrusion Prevention ===--- 
> block in  quick log on egress from <snortips>     to self             label 
> "Rule:$nr on $if. Snort IPS Block Inbound."
> block out quick log on egress from self           to <snortips>       label 
> "Rule:$nr on $if. Snort IPS Block Outbound."
>
> # ---=== Block: WWW log file parsed offenders ===--- 
> block in  quick log on egress from <wwlogpf>      to self             label 
> "Rule:$nr on $if. WWW offenders Inbound."
> block out quick log on egress from self           to <wwlogpf>        label 
> "Rule:$nr on $if. WWW offenders Outbound."
>
> # ---=== Block: Scripted Block Lists ===--- 
> block in  quick log on egress from <script1_block> to self            label 
> "Rule:$nr on $if. Bad IPs Block List Inbound." 
> block out quick log on egress from self            to <script1_block> label 
> "Rule:$nr on $if. Bad IPs Block List Outbound."
> block in  quick log on egress from <githubblkdips> to self            label 
> "Rule:$nr on $if. GitHub Repo Banned IPs Inbound."
> block out quick log on egress from self            to <githubblkdips> label 
> "Rule:$nr on $if. GitHub Repo Banned IPs Outbound."
>
> # ---=== Block: Bruteforce Protection ===--- 
> block in  quick log on egress from <bruteforce>   to self             label 
> "Rule:$nr on $if. Bruteforcers Inbound."
> block out quick log on egress from self           to <bruteforce>     label 
> "Rule:$nr on $if. Bruteforcers Outbound."
>
> # ---=== Inbound Access: SSH Allow and Source Track ===--- 
> pass in quick log on egress inet  proto tcp from any port >1023 to $ip_ext1 
> port = 50022 flags S/SA synproxy state (source-track rule, max-src-conn 3, 
> max-src-conn-rate 3/10, overload <bruteforce> flush global, src.track 600) 
> label "Rule:$nr on $if interface. Inbound SSH."
>
> # ---=== Inbound Access: HTTP/S ===--- 
> pass  in quick log on egress inet  proto tcp from any port >1023 to $ip_ext1 
> port = 80  flags S/SA synproxy state (source-track rule, max-src-conn 64, 
> max-src-conn-rate 64/300, overload <bruteforce> flush global, src.track 3600) 
> label "Rule:$nr on $if interface Inbound HTTP."
> pass  in quick log on egress inet  proto tcp from any port >1023 to $ip_ext1 
> port = 443 flags S/SA synproxy state (source-track rule, max-src-conn 64, 
> max-src-conn-rate 64/300, overload <bruteforce> flush global, src.track 3600) 
> label "Rule:$nr on $if interface Inbound HTTPS."
>
> # ---=== Inbound Access: Wireguard ===--- 
> pass  in quick log on egress inet proto udp  from any         port >1023 to 
> $ip_ext1 port = 51820 keep state (source-track rule, max-src-conn 30, 
> overload <bruteforce> flush global, src.track 3600) label "Rule:$nr on $if 
> interface. Inbound Wireguard VPN." 
> pass  in quick log on wg0    inet proto tcp  from wg0:network port >1023 to 
> wg0:0 port = 50022 label "Rule:$nr on $if interface. Inbound WG SSH."
> pass  in quick log on wg0    inet proto icmp from wg0:network            to 
> $ip_ext1              label "Rule:$nr on $if interface. Inbound WG ICMP."
> block in quick log on egress inet proto udp  from any                    to 
> self  port = 51820 label "Rule:$nr on $if interface. Inbound Wireguard VPN."
>
> # ---=== User Oubound Rules: dhcp ===---
> pass  out quick log          inet proto udp       from self port {67,68}      
> to 255.255.255.255 port {67,68} user  _dhcp label "$nr: Allow DHCP service on 
> ports 67 68"
> block out quick log          inet proto {tcp udp} from self                   
> to any                          group _dhcp label "$nr: Block DHCP service"
>
> # ---=== Outbound Access: NTP ===---
> pass  out quick log inet  proto udp from self port >1023 to any port 123 user 
> _ntp set tos ef label "Rule:$nr on $if interface. NTP Outbound."
> pass  out quick log inet6 proto udp from self port >1023 to any port 123 user 
> _ntp label "Rule:$nr on $if interface. NTP Outbound."
> pass  out quick log inet  proto tcp from self port >1023 to any port 443 user 
> _ntp label "Rule:$nr on $if interface. NTP Outbound."
> pass  out quick log inet6 proto tcp from self port >1023 to any port 443 user 
> _ntp label "Rule:$nr on $if interface. NTP Outbound."
> block out quick log inet  proto { tcp udp } from self group _ntp              
>      label "Rule:$nr on $if interface. Block NTP Out."
> block out quick log inet6 proto { tcp udp } from self group _ntp              
>      label "Rule:$nr on $if interface. Block NTP Out."
>
> # ---=== Outbound Access: UnWind ===---
> pass  out quick log inet  proto { tcp udp } from self to any port $ports_dns 
> group _unwind label "Rule:$nr on $if interface. Unwind Outbound ipv4"
> pass  out quick log inet6 proto { tcp udp } from self to any port $ports_dns 
> group _unwind label "Rule:$nr on $if interface. Unwind Outbound ipv6"
> pass  out quick log inet  proto   tcp       from self to any port 443        
> group _unwind label "Rule:$nr on $if interface. Unwind HTTP Check"
> pass  out quick log inet6 proto   tcp       from self to any port 443        
> group _unwind label "Rule:$nr on $if interface. Unwind HTTP Check"
> block out quick log inet  proto { tcp udp } from self to any port $ports_dns 
> group _unwind label "Rule:$nr on $if interface. Block any service DNS Out4"
> block out quick log inet6 proto { tcp udp } from self to any port $ports_dns 
> group _unwind label "Rule:$nr on $if interface. Block any service DNS Out6"
> block out quick log inet  proto { tcp udp } from self                        
> group _unwind label "Rule:$nr on $if interface. Unwind Service Cleanup Rule,"
> block out quick log inet6 proto { tcp udp } from self                        
> group _unwind label "Rule:$nr on $if interface. Unwind Service Cleanup Rule,"
>
> # ---=== Outbound Access: DHCPD ===---
> pass  out quick log inet  proto { tcp udp } from self to any port 67:68 group 
> _dhcp label "Rule:$nr on $if interface. DHCPD."
> pass  out quick log inet6 proto { tcp udp } from self to any port 67:68 group 
> _dhcp label "Rule:$nr on $if interface. DHCPD."
> block out quick log inet  proto { tcp udp } from self                   group 
> _dhcp label "Rule:$nr on $if interface. DHCPD."
> block out quick log inet6 proto { tcp udp } from self                   group 
> _dhcp label "Rule:$nr on $if interface. DHCPD."
>
> # ---=== Outbound Access: from pkgfetch ===---
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 443 
> user _pkgfetch label "Rule:$nr on $if interface. Pkg Outbound"
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 443 
> user _pkgfetch label "Rule:$nr on $if interface. Pkg Outbound"
> block out quick log inet  proto { tcp udp } from self to any group _pkgfetch 
> label "Rule:$nr on $if interface. Block Pkg."
> block out quick log inet6 proto { tcp udp } from self to any group _pkgfetch 
> label "Rule:$nr on $if interface. Block Pkg."
>
> # ---=== Outbound Access: from syspatch ===---
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 443 
> user _syspatch label "Rule:$nr on $if interface. Syspatch Outbound."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 443 
> user _syspatch label "Rule:$nr on $if interface. Syspatch Outbound."
> block out quick log inet  proto { tcp udp } from self to any group _syspatch 
> label "Rule:$nr on $if interface. Block Syspatch"
> block out quick log inet6 proto { tcp udp } from self to any group _syspatch 
> label "Rule:$nr on $if interface. Block Syspatch"
>
> # ---=== Outbound Access: from freshclam ===---
> ## pass  out quick log inet  proto { tcp } from self port >1023 to any port 
> 53  user _clamav label "Rule:$nr on $if interface. Freshclam DNS Out."
> ## pass  out quick log inet6 proto { tcp } from self port >1023 to any port 
> 53  user _clamav label "Rule:$nr on $if interface. Freshclam DNS Out."
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 443 
> user _clamav label "Rule:$nr on $if interface. Freshclam HTTP Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 443 
> user _clamav label "Rule:$nr on $if interface. Freshclam HTTP Out."
> block out quick log inet  proto { tcp udp } from self to any group _clamav 
> label "Rule:$nr on $if interface. Block Freshclam."
> block out quick log inet6 proto { tcp udp } from self to any group _clamav 
> label "Rule:$nr on $if interface. Block Freshclam."
>
> # ---=== Outbound Access: from root ===---
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 80  
> user root label "Rule:$nr on $if interface. Root HTTP Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 80  
> user root label "Rule:$nr on $if interface. Root HTTP Out."
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 443 
> user root label "Rule:$nr on $if interface. Root HTTPS Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 443 
> user root label "Rule:$nr on $if interface. Root HTTPS Out."
> block out quick log inet  proto { tcp udp } from self to any user  root  
> label "Rule:$nr on $if interface. Block root out."
> block out quick log inet6 proto { tcp udp } from self to any user  root  
> label "Rule:$nr on $if interface. Block root out."
> block out quick log inet  proto { tcp udp } from self to any group wheel 
> label "Rule:$nr on $if interface. Block wheel out."
> block out quick log inet6 proto { tcp udp } from self to any group wheel 
> label "Rule:$nr on $if interface. Block wheel out."
>
> # ---=== Outbound Access: from dirk ===---
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 22  
> user dirk label "Rule:$nr on $if interface. Dirk SSH Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 22  
> user dirk label "Rule:$nr on $if interface. Dirk SSH Out."
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 43  
> user dirk label "Rule:$nr on $if interface. Dirk Whois Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 43  
> user dirk label "Rule:$nr on $if interface. Dirk Whois Out."
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 80  
> user dirk label "Rule:$nr on $if interface. Dirk HTTP Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 80  
> user dirk label "Rule:$nr on $if interface. Dirk HTTP Out."
> pass  out quick log inet  proto { tcp } from self port >1023 to any port 443 
> user dirk label "Rule:$nr on $if interface. Dirk HTTPS Out."
> pass  out quick log inet6 proto { tcp } from self port >1023 to any port 443 
> user dirk label "Rule:$nr on $if interface. Dirk HTTPS Out."
> block out quick log inet  proto { tcp udp } from self to any group dirk label 
> "Rule:$nr on $if interface. Block Dirk."
> block out quick log inet6 proto { tcp udp } from self to any group dirk label 
> "Rule:$nr on $if interface. Block Dirk."
>
> # ---=== ICMP Outbound Rules ===---
> pass  out quick log inet  proto icmp  from self  to any icmp-type  
> $icmp_useful   label "Rule:$nr on $if interface. ICMP Outbound."
> pass  out quick log inet6 proto icmp6 from self  to any icmp6-type 
> $icmp6_useful  label "Rule:$nr on $if interface. ICMP6 Outbound."
> block out quick log inet  proto icmp  from self  to any                       
>     label "Rule:$nr on $if interface. ICMP Outbound."
> block out quick log inet6 proto icmp6 from self  to any                       
>     label "Rule:$nr on $if interface. ICMP6 Outbound."
>
> # ---=== ICMP Inbound Rules ===---
> pass  in  quick log inet  proto icmp  from any to self icmp-type 8 code 0 
> keep state label "Rule:$nr on $if interface. ICMP Inbound."
> block in  quick log inet  proto icmp  from any to self                        
>        label "Rule:$nr on $if interface. ICMP Inbound."
> block in  quick log inet6 proto icmp6 from any to self                        
>        label "Rule:$nr on $if interface. ICMP6 Inbound."
>
> # ---=== Block Reverse Path Verify Fail ===---
> block in  quick log inet  from urpf-failed     label "Rule:$nr on $if 
> interface. Block reverse patch verify failures."
> block in  quick log inet6 from urpf-failed     label "Rule:$nr on $if 
> interface. Block reverse patch verify failures."
> block in  quick log inet  from no-route to any label "Rule:$nr on $if 
> interface. Block non routable traffic."
> block in  quick log inet6 from no-route to any label "Rule:$nr on $if 
> interface. Block non routable traffic."
>
> # ---=== Cleanup Rules ===---
> block  in quick log inet6 from any label "Rule:$nr on $if interface - Cleanup 
> IPv6 *in* Rule."
> block  in quick log inet6 to   any label "Rule:$nr on $if interface - Cleanup 
> IPv6 *in* Rule."
> block out quick log inet6 from any label "Rule:$nr on $if interface - Cleanup 
> IPv6 *out* Rule."
> block out quick log inet6 to   any label "Rule:$nr on $if interface - Cleanup 
> IPv6 *out* Rule."
> block  in quick log inet  from any label "Rule:$nr on $if interface - Cleanup 
> IPv4 *in*  Rule."
> block  in quick log inet  to   any label "Rule:$nr on $if interface - Cleanup 
> IPv4 *in*  Rule."
> block out quick log inet  from any label "Rule:$nr on $if interface - Cleanup 
> IPv4 *out* Rule."
> block out quick log inet  to   any label "Rule:$nr on $if interface - Cleanup 
> IPv4 *out* Rule."
> block     quick log            all label "Rule:$nr on $if interface - Last 
> match Cleanup Rule."
> block           log                label "Rule:$nr on $if interface - 
> Stateless  Cleanup Rule." 
>
>

this is really complicated and hard to read and understand.
most people don't need such complexity.

-- 
Please keep replies on the mailing list.

Reply via email to