Marvin Pascale

[B.Log]

26 Giugno 2022

Pritunl

Oramai sappiamo tutti cosa sia una Vpn (virtual private network), ma per i pochi che ancora non sanno di cosa sto parlando…

Una VPN è una rete virtuale che consente di mettere in comunicazione host (e reti) che non hanno punti in comune (router o switch). Il traffico che normalmente si istraderebbe verso il nostro router di default viene intercettato e inviato nel tunnel vpn verso il router (della vpn) e questo gioco di rotte fa comunicare tutti i membri della vpn. Di fatto tutte le comunicazioni tra i membri della VPN passano dal router VPN.

NB: Spiegazione semplicistica finita.

Pritunl è un progetto free e opensource che vuole semplificare di molto la creazione e la gestione di una o più vpn offrendo ottime prestazioni, oltre la possibilità di scalare e distribuire il carico nonché un’ottima interfaccia web.

pritunl

Installazione e configurazione

Partiremo da una AlmaLinux 8.6 e procederemo con un’installazione in uno scenario semplice: un singolo nodo con un solo database.

Come prima cosa assicuriamoci che il nostro sistema sia aggiornato

# dnf update -y

Prepariamo la nostra istanza

# sh -c 'echo "* hard nofile 64000" >> /etc/security/limits.conf'
# sh -c 'echo "* soft nofile 64000" >> /etc/security/limits.conf'
# sh -c 'echo "root hard nofile 64000" >> /etc/security/limits.conf'
# sh -c 'echo "root soft nofile 64000" >> /etc/security/limits.conf'

aggiungiamo i repositories

# tee /etc/yum.repos.d/mongodb-org-5.0.repo << EOF
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
EOF

# tee /etc/yum.repos.d/pritunl.repo << EOF
[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/oraclelinux/8/
gpgcheck=1
enabled=1
EOF

# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

rimuoviamo e fermiamo i servizi legati al firewall

# dnf -y remove iptables-services && systemctl disable --now firewalld.service

installiamo i tools per wireguard

# dnf -y install wireguard-tools

importiamo le chiavi ed installiamo il software (MongoDB e Pritunl)

## Importiamo la chiave
# gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
# gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp;  rpm --import key.tmp; rm -f key.tmp
## In caso il server sia offline
# rpm --import https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc

# yum -y install pritunl mongodb-org
# systemctl enable --now mongod pritunl

Una volta terminato non ci basta che andare all’indirizzo https://[ip_server] e completare l’inizializzazione.

pritunl setup

Pritunl ci chiede di comprovare di essere noi gli amministratori dell’istanza e per fare ciò dobbiamo inserire la setup key ottenibile con il comando

# pritunl setup-key

terminata l’inizializzazione sarà possibile fare il primo login e per ottenere i dati di accesso eseguiamo

# pritunl default-password

ed il gioco è fatto.

pritunl setup Ultimando al prima configurazione saremo in grado di aggiungere la nostra organizzazione e gli utenti.

Nella sezione Users aggiungiamo prima l’organizzazione e poi l’utente. pritunl setup pritunl setup

Nella sezione Servers aggiungiamo il nostro server poi abbiniamo l’organizzazione al server appena creato. pritunl setup pritunl setup

Avviamo il server VPN. pritunl setup

Per tentare la nostra prima connessione basterà scaricare il profilo dell’utente creato in precedenza pritunl setup

in alternativa è possibile otterene dei link (con durata 24h) per importare il profilo o scaricare il client pritunl setup

Pritunl offre un ottimo client per Linux, Mac e Windows.

Varie ed eventuali

Io ho avuto problemi con MongoDB 5.0 perché la cpu della VM non aveva i flag richiesti e ho optato per la versione 4.4. Per farlo mi è bastato modificare il file repo mongodb-org-5.0.repo.

Nei vari suggerimenti per migliorare la sicurezza e le prestazioni c’è quello di rimuovere la rotta 0.0.0.0/0 creta di default e creare delle rotte per gestire le reti che dobbiamo raggiungere tramite quella vpn. > Routing all internet traffic through the VPN server on a cloud or enterprise network will almost always produce unintended results. This configuration is intended for simple VPN servers running on one isolated host. It should never be used in a cloud or enterprise environment. Cloud and enterprise networks often have a lot of network resources that may not be considered when providing VPN users with full network access. One example is unintentionally providing VPN users with access to the AWS metadata service. With all network traffic routed and NATed through the VPN server a simple HTTP query from the VPN client to the metadata service curl http://169.254.169.254 will return potentially sensitive information. This can be a significant issue if IAM roles are used on the Pritunl instance. Another example is unintentionally providing VPN users with access to the MongoDB database that is used by Pritunl. If the MongoDB database is not sufficiently protected the user could modify the database to gain additional access to VPN servers.

Extra

Non dimentichiamo mai di mettere al sicuro le nostre istanze esposte con Crowdsec .


Le opinioni in quanto tali sono opinabili e nulla ti vieta di approfondire l’argomento.

Risorse: