Date: Tue, 18 Apr 2017 14:26:52 -0400 From: David Mehler <dave.mehler@gmail.com> To: freebsd-questions <freebsd-questions@freebsd.org> Subject: freebsd 10.3, pf, and openvpn Message-ID: <CAPORhP5eEoUC46taW9WKzBoxSEerDp-t0XrH=MPNYE8FNtLXyg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hello, I'm running FreeBSD 10.3 with jails and now an openvpn using pf as the firewall. I'm having an issue connecting to openvpn from off site and I have determined it's a firewall issue, when pf is disabled the connection works. I'm wondering if anyone can spot the error? My interfaces and networks are as follows, vtnet0 external interface, lo1 jails 10.0.0.0/8 and tun0 the openvpn interface for routed vpn traffic, 10.8.0.0/8. Here's my config: # # Required order: macros, options, normalization, queueing, # translation, filtering. # Note: translation rules are first match while filter rules are last match= . # Macros ext_if=3D"vtnet0" int_if =3D "lo1" vpn_if =3D "tun0" jailnet =3D "10.0.0.0/8" vpnnet=3D"10.8.0.0/8" icmp_types=3D"{echoreq, unreach}" #IPV6 ICMP types: # packet to big and echo request type ping # Neighbor Discovery Protocol (NDP) (types 133-137): # Router Solicitation (RS), Router Advertisement (RA) # Neighbor Solicitation (NS), Neighbor Advertisement (NA) # Route Redirection icmp6_types=3D"{ 2, 128, 133, 134, 135, 136, 137 }" #synstate=3D"flags S/SA synproxy state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global)" tcpstate =3D"flags S/SA modulate state" udpstate =3D"keep state" voipports =3D "{5060, 5061, 10000:10500}" # allowed traffic tcp_services=3D"{7, ftp-data, ftp, ssh, smtp, 43, domain, bootps, bootpc, http, imap, https, submission, imaps, 2703}" udp_services=3D"{7, ftp-data, ftp, ssh, smtp, 43, domain, bootps, bootpc, http, ntp, imap, https, submission, imaps, 1194, 3690, 6277, 24441, 4500, 500, 50, 51}" # Name and IP of jails webmail=3D"10.0.0.15" # Name and IP of jailed ssh servers jssh1=3D"10.0.0.15" jssh2=3D"10.0.0.16" jssh3=3D"10.0.0.17" jssh4=3D"10.0.0.18" # The Asterisk Server asterisk=3D"10.0.0.17" # The vpn server vpn=3D"10.8.0.1" # Options # block-policy can be either drop or return set block-policy drop set optimization conservative #set skip on tun0 # Normalization # normalize all incoming traffic. Set ttl 254: limits mapping of hosts behi= nd # firewall. Set random-id to help same. # Set mss to ATM network frame size for easy splitting upstream. scrub on $ext_if all random-id min-ttl 254 max-mss 1452 reassemble tcp fragment reassemble # NAT nat on $ext_if from $jailnet to any -> ($ext_if) static-port nat on $ext_if from $vpnnet to any -> ($ext_if) # Redirect any packets requesting ports 2220, 2221, 2222, or 2223 to jailed ssh servers # External redirect rdr on $ext_if inet proto tcp from any to any port 2220 -> $jssh1 port 2220 # reflect for internal hosts rdr on $int_if inet proto tcp from any to any port 2220 -> $jssh1 port 2220 # External redirect rdr on $ext_if inet proto tcp from any to any port 2221 -> $jssh2 port 2221 # reflect for internal hosts rdr on $int_if inet proto tcp from any to any port 2221 -> $jssh2 port 2221 # External redirect rdr on $ext_if inet proto tcp from any to any port 2222 -> $jssh3 port 2222 # reflect for internal hosts rdr on $int_if inet proto tcp from any to any port 2222 -> $jssh3 port 2222 # External redirect rdr on $ext_if inet proto tcp from any to any port 2223 -> $jssh4 port 2223 # reflect for internal hosts rdr on $int_if inet proto tcp from any to any port 2223 -> $jssh4 port 2223 # Redirect traffic to the vpn server # External redirect rdr on $ext_if inet proto udp from any to any port 1194 -> $vpn port 1194 rdr on $ext_if inet proto tcp from any to any port 1194 -> $vpn port 1194 # reflect for internal hosts rdr on $int_if inet proto udp from any to any port 1194 -> $vpn port 1194 rdr on $int_if inet proto tcp from any to any port 1194 -> $vpn port 1194 # Redirect traffic to the asterisk server # SIP on UDP and tcp port 5060, tcp 5061 for secure signaling. rdr on $ext_if inet proto udp from any to any port 5060 -> $asterisk port 5= 060 rdr on $ext_if inet proto tcp from any to any port 5060 -> $asterisk port 5= 060 rdr on $ext_if inet proto tcp from any to any port 5061 -> $asterisk port 5= 061 # RTSP ports 10000 to 10500 rdr on $ext_if inet proto udp from any to any port 10000:10500 -> $asterisk port 10000:10500 # Tables table <bruteforce> persist file "/etc/pf/bruteforce" table <droplasso> persist file "/etc/pf/pf.drop.lasso.conf" table <fail2ban> persist file "/etc/pf/fail2ban" table <martians> persist file "/etc/pf/martians" # The ZeuS blocklist of c&c servers table <ZeuS> persist file "/etc/pf/ZeuS" # The malwaredomain ip block list table <malwaredomain> persist file "/etc/pf/malwaredomain" # Table of selected country IP addresses table <blocked_countries> persist file "/etc/pf/blocked_countries" # Table of apache mod_evasive blocks table <evasive> persist file "/etc/pf/evasive" antispoof for $ext_if antispoof for $int_if # Start by blocking by default block all # Block anything in the blocked_countries table first block in quick from <blocked_countries> # Block nmap scans block in quick on $ext_if inet proto tcp from any to any flags FUP/FUP # Explicitly block unroutable addresses block drop in quick on $ext_if from <martians> to any block drop out quick on $ext_if from any to <martians> # Explicitly block anything in the bruteforce table block in quick from <bruteforce> # Explicitly block anything in the fail2ban table block in quick from <fail2ban> # Explicitly block anything in the droplasso table block in quick from <droplasso> # Explicitly block anything in the ZeuS table block in quick from <ZeuS> # Explicitly block anything in the malwaredomain table block in quick from <malwaredomain> # Block anything in the evasive table block in quick from <evasive> # pass everything on the loopback interface pass quick on lo0 all # allow ping and host unreach pass inet proto icmp icmp-type $icmp_types keep state # Traceroute # allow out the default range for traceroute(8): # =E2=80=9Dbase+nhops*nqueries-1=E2=80=9D (33434+64*3-1) pass inet proto udp to port 33433:33626 # For IPv4 # Pass out only the desired ports from host and jails pass inet proto tcp from {self, $jailnet, $vpnnet} to any port $tcp_services $tcpstate pass inet proto udp from {self, $jailnet, $vpnnet} to port $udp_services $udpstate # Allow ssh connections in from the internet pass in inet proto tcp from any to $ext_if port ssh flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) # Pass in ssh traffic to the jails # pass rules for nat redirect pass in inet proto tcp from any to $jssh1 port 2220 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) pass inet proto tcp from any to $jssh1 port 2220 flags S/SA keep state pass in inet proto tcp from any to $jssh2 port 2221 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) pass inet proto tcp from any to $jssh2 port 2221 flags S/SA keep state pass in inet proto tcp from any to $jssh3 port 2222 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) pass inet proto tcp from any to $jssh3 port 2222 flags S/SA keep state pass in inet proto tcp from any to $jssh4 port 2223 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) pass inet proto tcp from any to $jssh4 port 2223 flags S/SA keep state # Pass traffic to the vpn pass in inet proto udp from any to $vpn port 1194 $udpstate pass in inet proto tcp from any to $vpn port 1194 $udpstate pass inet proto udp from any to $vpn port 1194 $udpstate pass inet proto tcp from any to $vpn port 1194 $udpstate pass quick on tun0 all keep state # Pass in http traffic from the internet pass in inet proto tcp to $ext_if port 80 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) # Pass in https traffic from the internet pass in inet proto tcp to $ext_if port 443 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) # Pass in smtp traffic from the internet pass in inet proto tcp to $ext_if port 25 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) # Pass in submission traffic from the internet pass in inet proto tcp to $ext_if port 587 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) # Pass in imaps traffic from the internet pass in inet proto tcp to $ext_if port 993 flags S/SA keep state (max-src-conn 15, max-src-conn-rate 5/3, overload <bruteforce> flush global) # pass traffic from the asterisk server pass inet proto {udp, tcp} from any to $asterisk port $voipports keep state I've tried enabling the set skip on tun0 no good, changing my nat vpnnet line to vpn_if no good, and commenting out the pass rules and doing rdr pass on the 1194 rdr lines, all have not worked. Any help appreciated. Thanks. Dave.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPORhP5eEoUC46taW9WKzBoxSEerDp-t0XrH=MPNYE8FNtLXyg>