Instala tu propio servidor VPN Outline Descripción
En este artículo os vamos a enseñar cómo crear una VPN de forma fácil, para ello crearemos un servidor con la imagen de Docker y usaremos Outline creado por Jigsaw (Google). Outline no es bien bien una VPN, pero hace su función mediante proxy socks5. La ventaja de usar una VPN es que protegemos nuestra conexión y no puede ser vista por otros usuarios que estén conectados a la misma red que nosotros. También usaremos las buenas prácticas para usar Docker desde países bloqueados por el mismo.
Outline es una herramienta de código abierto que le permite configurar su propio servidor VPN de forma rápida y sencilla. Esto significa que ya no tiene que confiar en un servicio VPN de terceros y tiene un control total sobre los datos que van y vienen de su servidor VPN.
Además, cuando instala Outline en su propio servidor, nadie más puede ver la configuración de su cliente. Solo usted tiene acceso al funcionamiento interno de cómo conectar un cliente de Outline a su servidor de Outline.
Mientras que en el pasado los beneficios que vienen con el control total sobre su servidor VPN requerían redes de computadoras
avanzadas y habilidades de administración de servidores, Outline le promete una experiencia de instalación más conveniente. Outline se destaca entre las VPN de código abierto como una de las más fáciles de instalar y administrar para un uso continuo.
Para esta instalación usaremos los servicios de clouding.io la instalacion empezamos primeramente creando un servidor con Linux, en este caso usaremos ubuntu 20.04
Outline usa 2 puertos uno para la administración y otro para los accesos mediante llaves, entonces configuraremos el el cortafuego, recomendamos abrir todos los puertos en el firewall y una vez instalado lo limitan a los puertos que usan para el mismo.
Una vez creados las reglas del firewall, vas al VPS y desvincular el que tienes puesto y vinculas el mismo que acabas de crear.
Preparación del servidor
Una vez iniciado el Servidor accedemos al mismo y preparamos los requerimientos mínimos que en este caso será docker
sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y' Instalamos Docker
apt-get install docker.io
Una vez instalado docker procedemos a configurar algunos mirror por si estas instalando desde un lugar donde docker no esta permitido libremente
nano /etc/docker/daemon.json {
"registry-mirrors": [
"https://rw21enj1.mirror.aliyuncs.com", "https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com", "https://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn", "https://1nj0zren.mirror.aliyuncs.com", "https://quay.io",
"https://docker.mirrors.ustc.edu.cn", "http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
] }
Si desea agregar un registro de mirror inseguro aquí les dejo el enlace de cómo hacerlo. Reiniciamos para que se vean los cambios.
systemctl daemon-reload systemctl restart docker
Este paso a continuación es para aquellos que están detrás de un proxy padre y es opcional.
Crear la carpeta docker.service.d
mkdir -p /etc/systemd/system/docker.service.d Creamos el fichero http-proxy.conf
nano /etc/systemd/system/docker.service.d/http-proxy.conf Dentro agregamos:
[Service]
Environment="HTTP_PROXY=http://user:password@proxyip:port/"
Environment="HTTPS_PROXY=http://user:password@proxyip:port/"
Environment="NO_PROXY= hostname.example.com,localhost,127.0.0.1"
Recargamos la config y reiniciamos el servicio:
systemctl daemon-reload systemctl restart docker
Ahora comprobaremos que todo está bien.
Usaremos el comando:
docker info
Nos dará una salida similar a la siguiente:
Client:
Context: default Debug Mode: false
Server:
Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0
Server Version: 20.10.2 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive
Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2 Default Runtime: runc
Init Binary: docker-init containerd version:
runc version:
init version:
Security Options:
apparmor seccomp
Profile: default
Kernel Version: 5.4.0-66-generic Operating System: Ubuntu 20.04.2 LTS OSType: linux
Architecture: x86_64 CPUs: 1
Total Memory: 981.2MiB Name: outline.syscu.net
ID: XAT3:I4L7:QJLM:5XKW:WAQ5:UGGD:LMHE:EMMF:GNC7:QSQI:ZWBL:UWK4 Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://rw21enj1.mirror.aliyuncs.com/
https://dockerhub.azk8s.cn/
https://reg-mirror.qiniu.com/
https://hub-mirror.c.163.com/
https://docker.mirrors.ustc.edu.cn/
https://1nj0zren.mirror.aliyuncs.com/
https://quay.io/
http://f1361db2.m.daocloud.io/
https://registry.docker-cn.com/
Live Restore Enabled: false WARNING: No swap limit support WARNING: No blkio weight support
WARNING: No blkio weight_device support
Aquí solo deben fijarse si les reconoce el proxy(si se lo pusieron) y los mirrors alternos(Registry Mirrors).
Configuramos docker para que inicie automáticamente sudo systemctl enable docker
Comprobamos que docker este iniciado sin problema sudo sudo systemctl status docker
Instalación del Servidor Outline
Si todo esta corriendo bien procedemos a instalar entonces el Outline con el siguiente comando:
Nota: Si desean personalizar los puertos y el host mirar al final del artículo.
sudo wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh | bash
De ahí tenemos que guardar los datos que nos dan, ya que son las llaves de acceso para el Outline Manager, es decir debe guardar la información siguiente:
CONGRATULATIONS! Your Outline server is up and running.
To manage your Outline server, please copy the following line (including curly brackets) into Step 2 of the Outline Manager interface:
{"apiUrl":"https://185.254.204.115:63058/lUcKsF3obk36qPLVUTB3bQ","certSha256":"85C84BA2BF7F44AC52216480AAAEF00B31F89743261CA704B1580A44029B0AC5"}
If you have connection problems, it may be that your router or cloud provider blocks inbound connections, even though your machine seems to allow them.
Make sure to open the following ports on your firewall, router or cloud provider:
- Management port 63058, for TCP
- Access key port 6972, for TCP and UDP
Como notaron en la imagen anterior ya tenemos las llaves de acceso para el manager de outline y los puertos que usará el mismo para cada cosa tanto manager como para los clientes.
Antes de seguir podemos cerrar ya en nuestro cortafuegos limitando a esos 2 puertos y desactivando las reglas que creamos permitiendo todos los puertos
Outline Manager
Ya una vez configurado el firewall en el cortafuego procedemos a descargar el Outline Manager:
Outline Manager para Windows Outline Manager para Linux Outline Manager para macOS
Una vez instalado procedemos a configurar la llave de acceso a la administración.
En la página de configuración, seleccione «Configurar esquema en cualquier lugar» y pegue la clave de administración del servidor, como mostramos a continuación:
Una vez que hayas configurado tu servidor, genera claves de acceso únicas directamente desde la aplicación Administrador para ordenadores. Esta aplicación te permite enviar invitaciones para conectarse a tu servidor a través de tu plataforma de comunicación
preferida. Las claves de acceso sirven para conectar dispositivos a Administrador de Outline y protegerlos mediante tu servidor. Cada clave de acceso es única, y todas se pueden gestionar o eliminar directamente desde el servidor. Puedes fijar límites de datos para controlar cuánto ancho de banda puede usar cada clave.
Para conectar la pc actual con la que estamos administrando a través del outline clientes damos click en el icono que mostramos acá y copiamos la llave de acceso
Si una persona quiere conectarse a tu servidor, basta con que acepte la invitación que le hayas enviado. Una vez que se haya conectado, podrá conectarse o desconectarse fácilmente desde la aplicación.
Outline Client
Pueden descargar el cliente de outline:
Cliente para Android Cliente para Windows Cliente para Chrome Cliente para Iphone Cliente para macOS Cliente para Linux
Cuando un cliente se conecta la app se pone en verde como ven
Probamos desde el sitio ifconfig.io que estemos saliendo por el ip del servidor
Estadisticas de los accesos, podemos verlo en el Outline Manager como les muestro aca
En el mismo podemos limitar llaves el consumo de datos que queremos que tengan
Actualizaciones a su servidor Outline VPN
Con Outline VPN, no tiene que hacer nada por su parte para mantener su servidor actualizado. Las últimas correcciones de errores y mejoras de seguridad se instalan automáticamente. Esto se logra mediante el contenedor de Docker denominado “Watchtower” en su servidor. Watchtower es una aplicación de código abierto que busca e instala actualizaciones en el contenedor Shadowbox.
Además de las actualizaciones del servidor de Outline, cuando configura su servidor usando el Administrador de Outline, se configurará un trabajo cron para actualizar automáticamente el sistema operativo del host y reiniciar cuando sea necesario.
Personalizar la Instalacion del Servidor Outline
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/Jigsaw-Code/outline-server/master/src/server_manager/install_scripts/install_server.sh)" --hostname=WGAPI --keys-port=443 --api-port=8080 Básicamente, api-port es para Outline Manager, donde simplemente puede agregar eliminar usuarios desde una aplicación simple
conectada al servidor
El keys-port es el puerto para cada usuario o clave de acceso creada en el administrador de esquemas El hostname es su nombre personalizado indicado en el esquema de usuario de VPN
Asegurar servidor con Cortafuegos
Después de la instalación, es posible que deba proteger Outline Server con UFW (cortafuegos sencillo):
– Cómo proteger Outline Server:
En primer lugar, instale UFW si no lo está.
sudo apt-get install ufw
después de instalar UFW, puede configurar el firewall sin habilitarlo.
sudo ufw allow /
sudo ufw allow 8080/tcp sudo ufw allow 8080/udp sudo ufw allow 443/tcp sudo ufw allow ssh
Nota: estas reglas de cortafuegos es en el servidor como tal y usando los puertos que pusimos en la personalización, el cual puede cambiarlo a los que su servidor requiera sino lo personalizo.
Habilitación de UFW:
sudo ufw enable
Esto tendrá la siguiente salida: Firewall is active and enabled on system startup
Aún así, no se establece la limitación de velocidad del usuario, lo que significa que sus conexiones dependiendo de su servidor y la velocidad de Internet del usuario pueden alcanzar hasta 150 MB por clave de acceso.
Categoría
1. Ciberseguridad 2. Docker
3. Redes
4. Software Libre 5. Virtualización 6. VPN
Etiquetas
3. Outline Server 4. ufw
5. VPN
Fecha de creación julio 2021
Autor armandof