Having a public facing VPN sever will get prodded regularly by people trying to gain access maliciously.
If you have absolutely no way of locking down the accepted IP’s then the best you can do is use complex usernames and passwords with a good passphrase.
Do a whois lookup on the IP and add the subnet to an address list called “blocked” then have your first firewall rule as drop traffic from “blocked” list. It’s manual and you’ll be forever updating your list.
Think of port-knocking implementation (it’s really flexible and it’s only you who decide how paranoid you are to complicate the procedure) or similar techniques. Router would automatically add your IP into white list and you’ll be able to connect afterwards. Other attempts for the direct connection without proper knocking would be refused (or even could be forever or temporary blocked).
You can set expiration time for white-listed addresses to the desired period (e.g. 10 minutes, 1 hour, 10 days whatever). This would give you an opportunity to skip manual cleaning of addresses.
Knocking could be automated by self-written scripts or 3rd party apps.
That’s not really a big overhead for feeling “a bit more secured”.
We are querying all computers with routable IPv4 addresses that are not firewalled from the internet with a specifically crafted 64 byte ISAKMP packet and capturing the response. We intend no harm, but if we are causing problems, please contact us at: dnsscan (at) shadowserver (dot) org.
Make sure you have known IP addresses in the “allowed_access” list. Apart from manually adding entries, the above script will automatically add known IPs to vpn whitelist
Adjust timers to your liking and paste this to your router (with my rules clients have a chance to try to connect 3x in 10 minutes):