Penetrating Firewalls Using OpenVPN
Posted: Wed Oct 13, 2021 2:08 pm
Ref: Server Running OpenVPN-2.5.4-I602-amd64.msi on Windows 10 x64 version 21H1.
Problem: I had the unfortunate experience of spending several days in a hospital behind their very restrictive wifi firewall. The only access they granted to their public wifi was web browsing using HTTP (TCP port 80) and HTTPS (TCP port 443). My IMAP-based e-mail client was blocked as was my OpenVPN client which was set to use UDP port 80.
This began my search for a way to penetrate this very restrictive firewall. I first discovered the OpenVPN option port-share which sounded as though it would help OpenVPN penetrate a restrictive firewall by setting the OpenVPN server to listen on TCP port 443 and forward legitimate HTTPS traffic to a web server running on a different, nonstandard TCP port, e.g., TCP port 4443.
The manual for OpenVPN 2.4 states that this port-share option is not implemented in the Windows version but since the manual for 2.5 is not yet online, I tried it anyway and found that it is not implemented in 2.5 either.
After thinking about this port-share option, it may fool some firewalls but likely not the most sophisticated ones that can tell the difference between OpenVPN encrypted traffic and HTTPS encrypted traffic. So a more robust solution is required.
The most obvious solution is to design OpenVPN to use HTTPS and avoid all traffic differences between OpenVPN and plain web browsers while making the port-share option work in Windows as well as the other operating systems.
Does anyone have a better solution to my problem? Come to think of it, people in China, North Korea, and other similar restrictive environments would benefit from a solution like this as well.
Problem: I had the unfortunate experience of spending several days in a hospital behind their very restrictive wifi firewall. The only access they granted to their public wifi was web browsing using HTTP (TCP port 80) and HTTPS (TCP port 443). My IMAP-based e-mail client was blocked as was my OpenVPN client which was set to use UDP port 80.
This began my search for a way to penetrate this very restrictive firewall. I first discovered the OpenVPN option port-share which sounded as though it would help OpenVPN penetrate a restrictive firewall by setting the OpenVPN server to listen on TCP port 443 and forward legitimate HTTPS traffic to a web server running on a different, nonstandard TCP port, e.g., TCP port 4443.
The manual for OpenVPN 2.4 states that this port-share option is not implemented in the Windows version but since the manual for 2.5 is not yet online, I tried it anyway and found that it is not implemented in 2.5 either.
After thinking about this port-share option, it may fool some firewalls but likely not the most sophisticated ones that can tell the difference between OpenVPN encrypted traffic and HTTPS encrypted traffic. So a more robust solution is required.
The most obvious solution is to design OpenVPN to use HTTPS and avoid all traffic differences between OpenVPN and plain web browsers while making the port-share option work in Windows as well as the other operating systems.
Does anyone have a better solution to my problem? Come to think of it, people in China, North Korea, and other similar restrictive environments would benefit from a solution like this as well.