GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare la tua VPN:istruzioni dettagliate

VPN:che cos'è?

La VPN è una rete privata virtuale che crea un tunnel crittografato tra il tuo dispositivo e la connessione Internet. Esiste una doppia VPN che è l'uso simultaneo di due diversi server VPN. Quando si utilizza VeePN, tutti i dati in entrata e in uscita vengono crittografati. Quando ti connetti a un server VPN, tutta la tua attività online passerà attraverso questo tunnel e non attraverso il provider. Pertanto, i criminali informatici che vogliono scansionare il tuo traffico vedranno solo il paese a cui sei connesso e non saranno in grado di rubare password dai social network, dalle carte di credito o da qualsiasi informazione personale.

La VPN è uno strumento abbastanza buono per combattere gli intrusi informatici e sei interessato alla domanda "Posso configurare il mio server VPN?" Ovviamente puoi configurare la tua VPN o il concatenamento VPN. Creando il tuo server VPN, ottieni molti vantaggi:

  • Tu controlli i tuoi server e le persone usando la VPN.
  • Puoi essere sicuro che nessuno possiede i tuoi dati.
  • Avrai accesso a molte risorse bloccate nella tua regione.
  • Potrai connetterti a una rete Wi-Fi pubblica e nessuno potrà prendere in consegna i tuoi dati.
  • Puoi nascondere il traffico da servizi speciali.

Istruzioni per la creazione del proprio server VPN basato su Linux Debian

Di seguito troverai le istruzioni dettagliate su come creare VPN fatte in casa. Segui attentamente tutti i suggerimenti, poiché il risultato dipenderà dalla correttezza dei passaggi.

Registrati con Amazon AWS e connettiti al server

Amazon Web Services ha una semplice procedura di registrazione e suggerimenti per la creazione di un profilo in modo che tu possa seguire tu stesso questo passaggio. Dopo aver completato il processo di registrazione, vai su Lightsail e seleziona la zona geografica in cui desideri creare il tuo server VPN. Quindi crea una nuova istanza e seleziona questi dati:"Solo OS", sistema operativo Debian 9.5. Quindi vedrai un piano di istanza:quello più comune con 512 MB di RAM ti si addice.

Alcuni siti sono aggressivi nei confronti dei visitatori i cui indirizzi IP appartengono a hoster popolari e li bloccano. A loro avviso, tali visitatori prendono parte agli attacchi DDOS. Per non essere bloccato e non dover condividere un indirizzo IP con migliaia di altre macchine AWS, vai su Rete e assicurati di allocare un IP statico. Assegnalo all'istanza che hai creato.

Ora devi scaricare la chiave privata per l'accesso SSH. La chiave privata si trova nella sezione Account> Chiavi SSH. Scarica questa chiave e caricala sul client SSH. Abbiamo creato un server a Bali utilizzando iPad Pro e Termius. Tuttavia, puoi utilizzare un client SSH diverso. Ad esempio, una buona alternativa è Terminal.app integrato in macOS. Nelle nostre istruzioni considereremo Terminal, ma l'algoritmo è simile per altri client SSH.

Iniziamo in modo semplice:apri Terminale. Il terminale ha un problema noto chiamato "locale". Se stai usando Termius, questo problema non c'è. Aggiungi un paio di nuove righe al file .profile di macOS locale per eliminare il problema della localizzazione. Modifica questo file usando l'editor di testo nano. Sarebbe utile se avessi qualcosa del genere:nano ~/ .profile. Ora devi inserire alcune righe lì:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Devi salvare questo file usando il comando Ctrl+X. Chiudere il terminale usando il comando Cmd+Q. Dopo questo passaggio, eseguilo di nuovo.

Ora devi spostare la chiave privata Lightsail scaricata in precedenza in una directory speciale in cui sono archiviate le chiavi SSH:mv ~/Downloads/YOUR_DOWNLOADED_KEY.pem ~/.ssh. Dopo questo passaggio, limitare i diritti della chiave. In caso contrario, macOS ne bloccherà l'utilizzo. Questo può essere fatto usando questi codici:

cd ~/ .ssh/
chmod 600 YOUR_DOWNLOADED_KEY.pem

Al termine di questo passaggio, puoi connetterti alla tua macchina Lightsail. Vedrai un campo speciale YOUR_LIGHTSAIL_IP. In esso, devi specificare un indirizzo IP statico esterno:ssh -i YOUR_DOWNLOADED_KEY.pem admin @ YOUR_LIGHTSAIL_IP. Se hai fatto tutto correttamente, vedresti un'iscrizione speciale con tutti i tuoi dati.

Configura Debian

Tutti i passaggi successivi devono essere eseguiti sotto l'utente root. E quindi, specifica sudo su. Quindi aggiorna l'indice dei pacchetti nei repository. Forse puoi vedere di persona che ci sono aggiornamenti:apt-get update. Ora il tuo compito è installare questi aggiornamenti:apt-get upgrade.

Installa strongSwan

Usando un codice speciale, installa strongSwan:apt-get install strongswan. Parleremo di come impostare strongSwan un po' più tardi. Al momento, la cosa più importante è creare certificati in modo che i tuoi dispositivi possano utilizzare la VPN.

Genera certificati di accesso

Nella nostra guida utilizziamo certificati autofirmati perché solo il nostro team utilizzerà il server VPN. Per fare certificati, è necessario il pacchetto strongswan-pki. Installalo:pacchetto strongswan-pki.

Ora puoi iniziare a creare certificati. Il primo passo è creare un certificato radice. Soprattutto, è noto come CA (Autorità di certificazione). Questo certificato ti rilascerà gli altri certificati di cui hai bisogno. Puoi creare un certificato nel file ca.pem:

cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem
ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=YOUR_LIGHTSAIL_IP" --outform pem > cacerts/ca.pem

Per creare un certificato per il tuo server VPN, hai bisogno di un file debian.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem
ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=YOUR_LIGHTSAIL_IP" --san YOUR_LIGHTSAIL_IP --flag serverAuth --outform pem > certs/debian.pem

Per creare un certificato per i tuoi dispositivi, hai bisogno di un file me.pem:

ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem 
ipsec pki --pub --in private/me.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=me" --san me --flag clientAuth --outform pem > certs/me.pem

Non hai più bisogno del file ca.pem, quindi per sicurezza e affidabilità, eliminalo:rm /etc/ipsec.d/private/ca.pem. Hai completato il processo di creazione dei certificati:congratulazioni, sei quasi alla fine!

Cosa fare se i certificati impiegano troppo tempo?

Cosa intendiamo per tempo troppo lungo? Ad esempio, i tuoi certificati vengono generati per più di 5 secondi. Questi dati indicano una bassa quantità di entropia. Nota che la creazione di certificati può richiedere da 40 a 60 minuti a causa della bassa quantità di entropia, che non è molto buona per il tuo lavoro. Pertanto, per verificare la quantità di entropia, puoi avviare un'altra sessione nella scheda successiva:

Usando il comando sopra, vedrai la quantità di entropia al momento della richiesta. Se vuoi controllare l'entropia in tempo reale, puoi usare questo comando:watch -n 0.25 cat /proc/sys/kernel/random/entropy_avail.

Se il risultato mostra meno di 200 entropie, ti consigliamo di cambiare provider di hosting. Inoltre, molti esperti consigliano di installare il pacchetto haveged, il cui compito è generare entropie. Tuttavia, l'utilità di questo pacchetto non è stata dimostrata, quindi, inoltre, tutto dipenderà da te. Quando utilizzi Amazon Lightsail, questi problemi non si verificano e puoi generare rapidamente chiavi. Per uscire dalla richiesta, è necessario utilizzare i tasti Ctrl + Z.

Configura strongSwan

Per configurare correttamente strongSwan, è necessario cancellare la configurazione predefinita di strongSwan. Utilizzare questo comando:> /etc/ipsec.conf. Quindi puoi crearne uno tuo nell'editor di testo nano:nano /etc/ipsec.conf.

Vedrai il campo YOUR_LIGHTSAIL_IP e il tuo compito è sostituirlo con l'indirizzo IP esterno della macchina in AWS Lightsail. Ora puoi inserire testo come questo:

include /var/lib/strongswan/ipsec.conf.inc

config setup
    	uniqueids=never
    	charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    	keyexchange=ikev2
    	ike=aes128gcm16-sha2_256-prfsha256-ecp256!
    	esp=aes128gcm16-sha2_256-ecp256!
    	fragmentation=yes
    	rekey=no
    	compress=yes
    	dpdaction=clear
    	left=%any
    	leftauth=pubkey
    	leftsourceip=YOUR_LIGHTSAIL_IP
    	leftid=YOUR_LIGHTSAIL_IP
    	leftcert=debian.pem
    	leftsendcert=always
    	leftsubnet=0.0.0.0/0
    	right=%any
    	rightauth=pubkey
    	rightsourceip=10.10.10.0/24
    	rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
    	auto=add

Importante! strongSwan è molto severo riguardo a tutti i rientri nella configurazione. Pertanto, quando inserisci i comandi, separa ogni sezione della configurazione usando il tasto Tab. Nel nostro esempio, abbiamo specificato come dovrebbe apparire. Puoi usare il nostro modello o fare solo un rientro. In caso contrario, strongSwan non funzionerà.

Salva il file creato usando i tasti Ctrl + X. Nel file ipsec.secrets, che memorizza tutti i riferimenti ai certificati e alle chiavi di autenticazione, aggiungi un puntatore speciale al certificato del tuo server:

nano /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc

: RSA debian.pem

Se hai seguito tutti i passaggi, la configurazione di Strongswan è completa. Sarebbe utile riavviare il servizio:ipsec restart. A condizione che tu abbia inserito tutti i comandi correttamente, il server si avvierà con il seguente messaggio:

Avvio di strongSwan 5.5.1 IPsec [starter]...

Se noti che il programma genera un errore, leggi il registro di sistema per determinare qual è il problema. Il comando visualizzerà le ultime 50 righe del log:tail -n 50> /var/log/syslog.

Configura le impostazioni del kernel di rete

Al file /etc/sysctl.conf, devi apportare alcune modifiche:nano /etc/sysctl.conf. Usando i due tasti Ctrl + W, trova le seguenti variabili nel file e apporta le modifiche lì:

  • Deseleziona questa opzione per abilitare l'inoltro dei pacchetti:net.ipv4.ip_forward =1
  • Decommenta questo parametro per prevenire attacchi MITM:net.ipv4.conf.all.accept_redirects =0
  • Decommenta questo parametro per disabilitare l'invio di reindirizzamenti ICMP:net.ipv4.conf.all.send_redirects =0
  • Aggiungi questo parametro ovunque nel file, su una nuova riga, disabilitando le ricerche PMTU:net.ipv4.ip_no_pmtu_disc =1

Carica i nuovi valori ottenuti:sysctl -p. Hai finito di configurare i parametri di rete del kernel.

Configura iptables

iptables è uno strumento speciale che gestisce e controlla il firewall netfilter integrato di Linux. Installa il pacchetto iptables-persistent, che ti permetterà di salvare le regole di iptables in un file e caricarle ad ogni avvio del sistema:apt-get install iptables-persistent.

Dopo aver installato questo pacchetto, il sistema ti chiederà di mantenere le regole IPv4 e IPv6 correnti. Devi specificare "no", perché hai un nuovo sistema e nessun dato da salvare.

Ora inizia a creare le tue regole iptables. Per garantire sicurezza e affidabilità, libera tutte le catene:

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -Z

Per non perdere l'accesso al sistema, consenti le connessioni SSH sulla porta 22:

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Il passaggio successivo è consentire le connessioni sull'interfaccia di loopback:iptables -A INPUT -i lo -j ACCEPT. Quindi consenti le connessioni IPSec in entrata sulle porte UDP 500 e 4500:

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

Consenti l'inoltro del traffico ESP:

iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Un server VPN è come un thread tra Internet e i client VPN, quindi è necessario configurare il mascheramento del traffico:

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Configura la dimensione massima del segmento del pacchetto:

iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN, RST SYN -m tcpmss --mss 1361: 1536 -j TCPMSS --set-mss 1360

Nega tutte le connessioni di terze parti al server utilizzando i comandi:

iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

Salva le regole create in modo che esistano dopo ogni riavvio:

netfilter-persistent save
netfilter-persistent reload

Riavvia il sistema:riavvia e controlla se le regole che hai creato funzionano.

Consenti connessioni in Lightsail Firewall

AWS Lightsail ha creato il suo firewall per proteggere i sistemi. Seleziona la tua istanza, vai su Rete e consenti connessioni sulle porte UDP 500 e 4500. Rimuovi la porta 80 contemporaneamente:non ne avrai bisogno.

Crea .mobileconfig per iPhone, iPad, Mac

I tuoi dispositivi sono iPhone, iPad e Mac, quindi puoi utilizzare un profilo VPN .mobileconfig. Sarebbe utile se avessi creato una configurazione su richiesta. Se un servizio o un'applicazione tenta di andare offline, la connessione VPN continuerà a funzionare automaticamente. Eviterai la situazione in cui hai martellato per stabilire una connessione VPN e il traffico è passato attraverso il provider. Usa lo script che genererà questa configurazione per te:

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh

Installa il pacchetto zsh affinché lo script funzioni correttamente:apt-get install zsh. Modifica il nome del server in base alle tue idee e scrivi l'indirizzo IP esterno della macchina Lightsail che hai specificato in precedenza durante la creazione dei certificati:

nano mobileconfig.sh
SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP"

Ora esegui lo script e ottieni il file iphone.mobileconfig:

chmod u+x mobileconfig.sh
./mobileconfig.sh > iphone.mobileconfig.

Elimina questo file dal server connettendoti con Transmit o Cyberduck:invialo a tutti i tuoi dispositivi tramite Airdrop. Confermare l'installazione della configurazione sui dispositivi. Stabilirai automaticamente le connessioni al server VPN.

Assicurati di pulire dopo te stesso:

rm mobileconfig.sh
rm iphone.mobileconfig

Linux
  1. Come creare un ruolo IAM in AWS utilizzando Terraform

  2. Come creare un volume fisico in Linux usando LVM

  3. Come creare RPM per il tuo script in CentOS/RedHat

  4. Come creare un utente Linux usando Ansible

  5. Come creare il tuo sito Plesk

Come creare e mantenere le tue pagine man

Come creare il tuo stack di sviluppatori WordPress su OpenShift 4

Come creare il tuo server VPN IPsec in Linux

Come creare una partizione usando il comando "separato".

Come creare partizioni del disco usando cfdisk

Come creare facilmente la tua distribuzione Linux?