Anteriormente publiqué un tutorial para montar un servidor VPN con Wireguard, el cual tiene un rendimiento excelente, pero es fácil de bloquear. El protocolo OpenConnect es más difícil de detectar para los firewall, ya que para los sistemas de inspección profunda de paquetes el trafico parece utilizar el protocolo https. Las siguientes instrucciones son para Debian
Instalamos el servidor OpenConnect
sudo apt install ocserv
Instalamos el servidor Apache y certbot para obtener un certificado SSL si es que no tenemos uno
sudo apt install apache2 certbot
configuramos un host virtual
sudo nano /etc/apache2/sites-available/frank.asgardius.company.conf
Agregamos el contenido de la siguiente manera
<VirtualHost *:80>
ServerName frank.asgardius.company
DocumentRoot /var/www/ocserv
</VirtualHost>
Guardamos los cambios y creamos el directorio raíz del servidor web
sudo mkdir /var/www/ocserv
sudo chown www-data:www-data /var/www/ocserv -R
sudo a2ensite frank.asgardius.company
sudo systemctl restart apache2
Solicitamos un certificado
sudo certbot certonly --webroot --agree-tos --email you@exmaple.com -d frank.asgardius.company -w /var/www/ocserv
editamos el archivo de configuración se ocserv
sudo nano /etc/ocserv/ocserv.conf
Configuramos la autenticacion
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Buscamos la siguiente linea y la deshabilitamos
udp-port = 443
Agregamos nuestro certificado SSL
server-cert = /etc/letsencrypt/live/frank.asgardius.company/fullchain.pem
server-key = /etc/letsencrypt/live/frank.asgardius.company/privkey.pem
Ajustamos nuestro nombre de dominio de la siguiente manera
default-domain = frank.asgardius.company
Cambiamos la subred interna para evitar conflictos con enrutadores domesticos
ipv4-network = 10.10.10.0
ipv4-netmask = 255.255.255.0
Habilitamos la siguiente linea para evitar la fuga de peticiones DNS
tunnel-all-dns = true
Configuramos nuestro servidor DNS
dns = 8.8.8.8
Eliminamos las siguientes lineas para que la VPN redirija todo el trafico
route = 10.0.0.0/8
route = 172.16.0.0/12
route = 192.168.0.0/16
Guardamos los cambios y reiniciamos el servicio
sudo systemctl restart ocserv
Creamos una cuenta de usuario
sudo ocpasswd -c /etc/ocserv/ocpasswd usuario
Si no tenemos otro servidor VPN ya instalado, necesitamos habilitar la redirección de IP de la siguiente manera
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/60-custom.conf
sudo sysctl -p /etc/sysctl.d/60-custom.conf
Instalamos UFW
sudo apt instal ufw
Habilitamos el puerto https, http y ssh
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Editamos las reglas avanzadas de UFW
sudo nano /etc/ufw/before.rules
Agregamos los siguiente al final, adaptandolo a la interfaz de red que utilice nuestro servidor
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o ens2 -j MASQUERADE
# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT
Buscamos la cadena ufw-before-forward
y agregamos lo siguiente al final de las lineas que la contienen
# allow forwarding for trusted network
-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT
Guardamos los cambios y habilitamos UFW
sudo ufw enable
Ahora tenemos una VPN capaz de evadir firewalls restrictivos (como el de Fortinet). Actualmente no hay programas cliente que funcionen en Windows