
Cuando tenemos realizada instalación de Ubuntu server, usando algún programa como Oscam, cuya guia de iniciación expusimos en este articulo, debemos tener en cuenta dos aspectos:
- Si la comunicación es interna, es decir nos vamos a conectar al programa dentro de nuestra Lan (salon, dormitorio1, dormitorio2), donde los segmentos de datos entre las dos maquinas, asi como la autentificacion entre ellas es control directo del administrador del Servicio, y como se ha comentado el flujo de datos queda dentro de la red local.
- Si la comunicación es externa, es decir nos vamos a conectar al programa desde otra red fuera de nuestra Lan (domicilio vacacional), deseamos que un amigo pueda conectarse al programa, en este caso los segmentos de datos asi como la autentificacion ya no es directa por parte del administrador del servicio, y como se ha comentado el flujo de datos ya sale de nuestra red local.
Seguridad
En el caso de comunicación externa, es importante tener un minimo de seguridad para proteger las conexiones de nuestra maquina con ubuntu Server para garantizar:
- Penetración
- Manipular
- Uso no autorizado
- búsqueda de intereses públicos y privados
Para ello es recomendable el uso de una VPN, existiendo diferentes opciones como Openvpn, wireguard, zerotier….., aunque en este articulo vamos a realizar esta conexion VPN usando Tailscale.
1 Instalacion de Tailscale en Ubuntu Server
La instalación de Tailscale en Ubuntu Server es extremadamente facil, basta con seguir unos pequeños pasos, para tenerlo todo listo.
1. En primer lugar debemos crear una cuenta en Tailscale, es gratuito a traves de su web: https://tailscale.com/
Simplemente nos registramos en la web
2. Una vez ya tenemos registrada una cuenta en Tailscale, ahora vamos a realizar la instalacion en ubuntu Server, para ello podemos ejecutar este script de instalacion:
curl -fsSL https://tailscale.com/install.sh | sh
3. Una vez realizada la instalacion, debemos asociar nuestra maquina con ubuntu Server con nuestra cuenta Tailscale, para ello ejecutamos el comando:
sudo tailscale up
4. Como hemos visto al ejecutar el comando nos aparecera un enlace url, accedemos a el, y nos logueamos para autorizar con nuestra cuenta tailscale, tras ello ya tendremos añadida nuestra maquina a tailscale
5. Ahora, para que tailscale tenga todo el control de las conexiones entrantes vamos a configurar el firewall por defecto que trae ubuntu Server (UFW), para permitir a tailscale y denegar todo lo demas, para ello:
a) Con el siguiente comando comprobamos si tenemos algunas reglas ya establecidas con anterioridad para eliminarlas:
sudo ufw status numbered
Las eliminamos usando el comando:
sudo ufw delete xxxx(numero de regla)
b) Ahora vamos a autorizar la interfaz de tailscale, para ello, en primer lugar para saber la interfaz usada ejecutamos:
ifconfig
Observamos que la interfaz es tailscale0, por lo que autorizamos las conexiones para esta interfaz en el firewall UFW, con el siguiente comando:
sudo ufw allow in on tailscale0
c) Ahora denegamos todas las conexiones entrantes y autorizamos las salientes con estos dos comandos:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Para finalizar comprobamos que la regla de autorizacion para la interfaz tailscale esta correcta con el comando:
sudo ufw status
d) Ahora podemos comprobar cual es la ip de la maquina con ubuntu server en la red tailscale, lo podemos ver en la misma web o con el comando:
tailscale ip
Nota: Si instalamos tailscale en otras maquinas nuestras, usando nuestra cuenta de registro tailscale, somos administrador, por lo que tendremos acceso a todos los servicios de ubuntu server a traves de las otras maquinas.
2 Autorizar conexiones desde otras cuentas Tailscale
Ahora, por ejemplo deseamos que otra persona con otra cuenta Tailscale se conecte por ejemplo a nuestro programa oscam que tenemos instalado en ubuntu Server, para ello es muy facil, siguiendo estos pasos.
a) Pulsamos en Share de la maquina donde tenemos instalado ubuntu server
b) Generamos link de invitacion
c) Copiamos el link de invitacion y se lo damos a la otra persona con cuenta tailscale diferente
Esa otra persona accedera al link y se logueara con su cuenta tailscale y aceptara la invitacion
ACL Limitar el acceso a las cuentas invitadas
Las maquinas invitadas tendran acceso a todos los servicios de nuestra cuenta tailscale, para limitar el acceso solo al servicio que deseemos, en este ejemplo oscam, debemos realizar los siguientes pasos.
Pulsamos sobre Acces Control en tailscale y observaremos que podemos establecer reglas
2. Ahora para facilitar el uso os dejamos unas reglas simples para que solo tengan acceso los invitados a nuestra maquina con ubuntu server y al puerto del servicio oscam, en este ejemplo puerto oscam 22500, os dejamos esta plantilla, que debemos modificar con nuestros datos
// Example/default ACLs for unrestricted connections.
{
// Declare static groups of users beyond those in the identity service.
"groups": {
"group:admins": ["email de registro servidor"],
},
// Declare convenient hostname aliases to use in place of IP addresses.
"hosts": {
"example-host-1": "100.100.100.100",
},
// Access control lists.
"acls": [
// Los que mandan
{"action": "accept", "src": ["group:admins"], "dst": ["*:*"]},
// Los invitados que vienen a chupar
{
"action": "accept",
"src": ["autogroup:shared"],
"dst": ["ip tailcale deco servidor:22500"],
},
],
"ssh": [
// Allow all users to SSH into their own devices in check mode.
// Comment this section out if you want to define specific restrictions.
{
"action": "check",
"src": ["autogroup:members"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot", "root"],
},
],
}
Basicamente:
Creamos un grupo administradores donde añadiremos nuestra cuenta de acceso a tailscale o de otras cuentas que deseamos que sean admis:
«groups»: {
«group:admins»: [«nuestra cuenta gmail»],
},
Creamos las reglas de acceso
«acls»: [
// Los que mandan
{«action»: «accept», «src»: [«group:admins»], «dst»: [«*:*»]},
// Los invitados que vienen a chupar
{
«action»: «accept»,
«src»: [«autogroup:shared»],
«dst»: [«iptailscale del receptor:22500»],
},
],
El grupo admis tiene acceso a todas las maquinas y puertos
autogroup:shared — que son los usuarios invitados en tailscale solo tienen acceso a la ip tailscale del receptor y solo en el puerto 22500.