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.

Any idea if my antispoofing configuration is incorrect? Or any other 
suggestions to mitigate SSH connections from lo0?

Please note - SSH is configured to listen on TCP/50022. Not TCP/5273, so i have 
no idea how or why SSH is responding on TCP/5273.


Regards
dirk


###############################################################################

### Logs ###
### /var/log/authlog ###
Nov  3 21:27:46 server-1 sshd-session[46091]: Connection from 127.0.0.1 port 
48186 on 127.0.0.1 port 50022 rdomain "0"
Nov  3 21:27:46 server-1 sshd-session[46091]: User root from 127.0.0.1 not 
allowed because a group is listed in DenyGroups
Nov  3 21:27:48 server-1 sshd-session[46091]: Connection closed by invalid user 
root 127.0.0.1 port 48186 [preauth]
Nov  3 21:27:48 server-1 sshd[30737]: srclimit_penalise: ipv4: new 127.0.0.1/32 
deferred penalty of 30 seconds for penalty: failed authentication
Nov  3 21:33:19 server-1 sshd-session[42309]: Connection from 127.0.0.1 port 
5273 on 127.0.0.1 port 50022 rdomain "0"
Nov  3 21:33:19 server-1 sshd-session[42309]: User root from 127.0.0.1 not 
allowed because a group is listed in DenyGroups
Nov  3 21:33:23 server-1 sshd-session[42309]: Connection closed by invalid user 
root 127.0.0.1 port 5273 [preauth]
Nov  3 21:33:23 server-1 sshd[30737]: srclimit_penalise: ipv4: new 127.0.0.1/32 
deferred penalty of 30 seconds for penalty: failed authentication

###############################################################################

### /etc/pf.conf
#       $OpenBSD: pf.conf,v 1.55 2017/12/03 20:40:04 sthen Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf

# ---=== Global Config ====----
set skip on lo
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." 

Reply via email to