{"id":1970,"date":"2025-09-09T18:03:56","date_gmt":"2025-09-09T18:03:56","guid":{"rendered":"https:\/\/asgardius.company\/?p=1970"},"modified":"2025-09-09T18:03:56","modified_gmt":"2025-09-09T18:03:56","slug":"configurando-un-servidor-vpn-sigiloso-con-openconnect","status":"publish","type":"post","link":"https:\/\/asgardius.company\/?p=1970","title":{"rendered":"Configurando un servidor VPN sigiloso con OpenConnect"},"content":{"rendered":"\n<p>Anteriormente publiqu\u00e9 un tutorial para montar un servidor VPN con Wireguard, el cual tiene un rendimiento excelente, pero es f\u00e1cil de bloquear. El protocolo OpenConnect es m\u00e1s dif\u00edcil de detectar para los firewall, ya que para los sistemas de inspecci\u00f3n profunda de paquetes el trafico parece utilizar el protocolo https. Las siguientes instrucciones son para Debian<\/p>\n\n\n\n<p>Instalamos el servidor OpenConnect<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install ocserv<\/code><\/pre>\n\n\n\n<p>Instalamos el servidor Apache y certbot para obtener un certificado SSL si es que no tenemos uno<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install apache2 certbot<\/code><\/pre>\n\n\n\n<p>configuramos un host virtual<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/apache2\/sites-available\/frank.asgardius.company.conf<\/code><\/pre>\n\n\n\n<p>Agregamos el contenido de la siguiente manera<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80&gt;\n        ServerName frank.asgardius.company\n\n        DocumentRoot \/var\/www\/ocserv\n&lt;\/VirtualHost&gt;<\/code><\/pre>\n\n\n\n<p>Guardamos los cambios y creamos el directorio ra\u00edz del servidor web<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir \/var\/www\/ocserv\nsudo chown www-data:www-data \/var\/www\/ocserv -R\nsudo a2ensite frank.asgardius.company\nsudo systemctl restart apache2<\/code><\/pre>\n\n\n\n<p>Solicitamos un certificado<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo certbot certonly --webroot --agree-tos --email you@exmaple.com -d frank.asgardius.company -w \/var\/www\/ocserv<\/code><\/pre>\n\n\n\n<p>editamos el archivo de configuraci\u00f3n se ocserv<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/ocserv\/ocserv.conf<\/code><\/pre>\n\n\n\n<p>Configuramos la autenticacion<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>auth = \"plain&#91;passwd=\/etc\/ocserv\/ocpasswd]\"<\/code><\/pre>\n\n\n\n<p>Buscamos la siguiente linea y la deshabilitamos<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>udp-port = 443<\/code><\/pre>\n\n\n\n<p>Agregamos nuestro certificado SSL<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server-cert = \/etc\/letsencrypt\/live\/frank.asgardius.company\/fullchain.pem\nserver-key = \/etc\/letsencrypt\/live\/frank.asgardius.company\/privkey.pem<\/code><\/pre>\n\n\n\n<p>Ajustamos nuestro nombre de dominio de la siguiente manera<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>default-domain = frank.asgardius.company<\/code><\/pre>\n\n\n\n<p>Cambiamos la subred interna para evitar conflictos con enrutadores domesticos<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ipv4-network = 10.10.10.0\nipv4-netmask = 255.255.255.0<\/code><\/pre>\n\n\n\n<p>Habilitamos la siguiente linea para evitar la fuga de peticiones DNS<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tunnel-all-dns = true<\/code><\/pre>\n\n\n\n<p>Configuramos nuestro servidor DNS<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dns = 8.8.8.8<\/code><\/pre>\n\n\n\n<p>Eliminamos las siguientes lineas para que la VPN redirija todo el trafico<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>route = 10.0.0.0\/8\nroute = 172.16.0.0\/12\nroute = 192.168.0.0\/16<\/code><\/pre>\n\n\n\n<p>Guardamos los cambios y reiniciamos el servicio<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart ocserv<\/code><\/pre>\n\n\n\n<p>Creamos una cuenta de usuario<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ocpasswd -c \/etc\/ocserv\/ocpasswd usuario<\/code><\/pre>\n\n\n\n<p>Si no tenemos otro servidor VPN ya instalado, necesitamos habilitar la redirecci\u00f3n de IP de la siguiente manera<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"net.ipv4.ip_forward = 1\" | sudo tee \/etc\/sysctl.d\/60-custom.conf\nsudo sysctl -p \/etc\/sysctl.d\/60-custom.conf<\/code><\/pre>\n\n\n\n<p>Instalamos UFW<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt instal ufw<\/code><\/pre>\n\n\n\n<p>Habilitamos el puerto https, http y ssh<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 22\/tcp\nsudo ufw allow 80\/tcp\nsudo ufw allow 443\/tcp<\/code><\/pre>\n\n\n\n<p>Editamos las reglas avanzadas de UFW<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/ufw\/before.rules<\/code><\/pre>\n\n\n\n<p>Agregamos los siguiente al final, adaptandolo a la interfaz de red que utilice nuestro servidor<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># NAT table rules\n*nat\n:POSTROUTING ACCEPT &#91;0:0]\n-A POSTROUTING -s 10.10.10.0\/24 -o ens2 -j MASQUERADE\n\n# End each table with the 'COMMIT' line or these rules won't be processed\nCOMMIT<\/code><\/pre>\n\n\n\n<p>Buscamos la cadena <code>ufw-before-forward<\/code> y agregamos lo siguiente al final de las lineas que la contienen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># allow forwarding for trusted network\n-A ufw-before-forward -s 10.10.10.0\/24 -j ACCEPT\n-A ufw-before-forward -d 10.10.10.0\/24 -j ACCEPT<\/code><\/pre>\n\n\n\n<p>Guardamos los cambios y habilitamos UFW<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw enable<\/code><\/pre>\n\n\n\n<p>Ahora tenemos una VPN capaz de evadir firewalls restrictivos (como el de Fortinet). Actualmente no hay programas cliente que funcionen en Windows<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Anteriormente publiqu\u00e9 un tutorial para montar un servidor VPN con Wireguard, el cual tiene un rendimiento excelente, pero es f\u00e1cil de bloquear. El protocolo OpenConnect es m\u00e1s dif\u00edcil de detectar para los firewall, ya que para los sistemas de inspecci\u00f3n profunda de paquetes el trafico parece utilizar el protocolo https. Las siguientes instrucciones son para&hellip; <a class=\"more-link\" href=\"https:\/\/asgardius.company\/?p=1970\">Seguir leyendo <span class=\"screen-reader-text\">Configurando un servidor VPN sigiloso con OpenConnect<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1970","post","type-post","status-publish","format-standard","hentry","category-sin-categoria","entry"],"_links":{"self":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/1970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1970"}],"version-history":[{"count":4,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/1970\/revisions"}],"predecessor-version":[{"id":1974,"href":"https:\/\/asgardius.company\/index.php?rest_route=\/wp\/v2\/posts\/1970\/revisions\/1974"}],"wp:attachment":[{"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/asgardius.company\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}