Anonim

È il 2017 e l'utilizzo di una VPN è diventato un gioco da ragazzi. Tra il carico di preoccupazioni sulla privacy esterna e il fatto che il tuo ISP sia in grado di vendere la tua cronologia di navigazione, non c'è davvero alcuna giustificazione per non usarne una.

Certo, puoi pagare uno dei centinaia di servizi VPN là fuori, ma ancora una volta fai affidamento su qualcun altro con i tuoi dati. La maggior parte sono fantastici, in realtà, ma se vuoi il controllo completo, puoi costruire la tua VPN su un Virtual P rivate S erver (VPS) o noleggiare il tuo server privato, se hai voglia di essere davvero hardcore con esso.

Tutto ciò che serve per costruire una VPN è il software OpenVPN open source e Linux (o BSD). La configurazione può essere coinvolta, ma non è impossibile con qualcuno con anche le competenze di base di Linux eseguire una distribuzione come Ubuntu.

Per questa guida, avrai bisogno di un VPS con Ubuntu. Puoi prenderne uno facilmente da qualcuno come DigitalOcean o Linode . Segui le loro guide di sicurezza di base per la configurazione. Assicurati di non commettere errori di base come consentire l'accesso root su SSH.

Inoltre, tieni presente che eseguirai questa intera configurazione nella riga di comando su SSH sul tuo VPS. Non c'è nulla che richieda una quantità folle di conoscenza di Linux, ma preparati a scrivere invece di fare clic.

Ottieni ciò di cui hai bisogno

Link veloci

  • Ottieni ciò di cui hai bisogno
  • Installa il firewall
    • Trova l'interfaccia
    • Nozioni di base di Iptables
    • Imposta le tue regole
      • loopback
      • ping
      • SSH
      • OpenVPN
      • DNS
      • HTTP / S
      • NTP
      • TUN
      • Registrazione
      • Rifiuta tutto il resto
      • NAT Masquerading
    • Inoltra traffico IPv4
    • Arresta tutte le connessioni IPv6
    • Importa e salva su Iptables

Ubuntu crea pacchetti e distribuisce OpenVPN nei suoi repository. Devi solo usare apt per installarlo. Sarà inoltre necessario lo strumento per generare chiavi di crittografia. Installali entrambi.

$ sudo apt installa openvpn easy-rsa

Installa il firewall

Successivamente, è necessario occuparsi del firewall. È un elemento importante per proteggere la tua VPN e prevenire sia la perdita di dati che accessi indesiderati.

Iptables è il firewall principale per Linux ed è la migliore opzione per controllare l'accesso alle porte di Ubuntu. Lo avrai già installato, quindi puoi iniziare a configurare le regole del firewall.

Trova l'interfaccia

Prima di iniziare a scrivere regole su iptables, scopri con quale interfaccia il tuo server è connesso a Internet. Esegui ifconfig per visualizzare le tue interfacce di rete. Quello che ha un inet addr: la corrispondenza dell'indirizzo IP a cui sei connesso è la giusta interfaccia.

Nozioni di base di Iptables

Di solito non è una buona idea copiare e incollare casualmente le cose nel terminale da Internet. Ciò è particolarmente vero quando si trattano argomenti di sicurezza. Quindi, prenditi del tempo qui per imparare qualcosa sulle regole di iptables prima di iniziare a inserirle.

Dai un'occhiata a questo esempio di una regola iptables.

-A INPUT -i eth0 -p tcp -m stato –stato STABILITO –sport 443 -j ACCETTA

Bene, quindi -A significa che stai per aggiungere una nuova regola. Quindi INPUT significa che riguarderà l'input al tuo server. C'è anche un'USCITA. Il flag -i indica a iptables per quale interfaccia è prevista questa regola. È possibile specificare per quale protocollo è la regola con -p. Questa regola gestisce tcp. -m specifica una condizione che deve soddisfare una connessione. In questo caso, deve corrispondere allo stato specificato. Naturalmente, quindi –state specifica uno stato, in questo caso una connessione STABILITA. La parte successiva indica a iptables per quale porta è prevista questa regola. È la porta 443, la porta HTTPS, qui. L'ultima bandiera è -j. Sta per "saltare" e dice a iptables cosa fare con la connessione. Se questa connessione soddisfacesse tutti i requisiti della regola, iptables l'avrebbe ACCETTATA.

Imposta le tue regole

Quindi, dovresti avere un'idea generale di come funzionano ora le regole di iptables. Il resto di questa sezione ti spiegherà come impostare le regole pezzo per pezzo.

Il modo migliore per creare un set di regole iptables è creare un file che contenga tutte. Quindi, puoi importare tutto in iptables in una volta. Impostare le regole una per una può diventare fonte di confusione, specialmente se stai iniziando da zero una nuova serie di regole.

Crea un file nella directory / tmp per creare le tue regole.

$ vim / tmp / ipv4

Inizia quel file con il filtro *. Questo dice a iptables che quelle che seguono saranno le regole per il filtraggio dei pacchetti.

loopback

La prima sezione delle regole blocca l'interfaccia di loopback. Dicono a iptables che il server dovrebbe accettare il traffico da se stesso sull'interfaccia di loopback. Dovrebbe anche rifiutare il traffico proveniente da se stesso che non proviene dal loopback.

-A INPUT -i lo -j ACCEPT -A INPUT! -i lo -s 127.0.0.0/8 -j REJECT -A OUTPUT -o lo -j ACCEPT

ping

Successivamente, consenti il ​​ping. Dovresti essere in grado di eseguire il ping del tuo server per assicurarti che sia online nel caso in cui non sia altrimenti raggiungibile. In questo caso, sono consentite solo richieste di eco e il server consentirà a se stesso di inviare output ICMP.

-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m state --state STABILITO, CORRELATO -j ACCEPT -A OUTPUT -p icmp -j ACCEPT

SSH

Hai bisogno di SSH. Questo è l'unico modo per raggiungere il tuo server. Le regole SSH sono specifiche per la tua interfaccia Internet, quindi assicurati di sostituire eth0 a qualunque interfaccia il tuo server stia effettivamente utilizzando.

Potrebbe anche essere una buona idea cambiare le connessioni SSH al di fuori della porta 22, poiché è l'impostazione predefinita che potrebbero provare i potenziali aggressori. Se lo fai, assicurati di cambiarlo anche nelle tue regole iptables.

-A INPUT -i eth0 -p tcp -m state --state NEW, STABILITO --dport 22 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state STTABLISHED --sport 22 -j ACCEPT

OpenVPN

Il prossimo pezzo consente il traffico da e verso il server OpenVPN su UDP.

-A INPUT -i eth0 -p udp -m state --state NEW, STABILITO --dport 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state STTABLISHED --sport 1194 -j ACCEPT

DNS

Ora, consenti connessioni DNS su UDP e TCP. Vuoi che la tua VPN gestisca il DNS, non il tuo ISP. Questo è parte del motivo per cui stai configurando una VPN in primo luogo.

-A INPUT -i eth0 -p udp -m state --state STTABLISHED --sport 53 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW, STTABLISHED --dport 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state STTABLISHED --sport 53 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW, STTABLISHED --dport 53 -j ACCEPT

HTTP / S

Affinché Ubuntu sia in grado di aggiornarsi, è necessario aggiungere una serie di regole per consentire la connessione in uscita di HTTP e HTTPS. Si noti che queste regole consentono solo al server di avviare connessioni HTTP, quindi non è possibile utilizzarlo come server Web o connettersi ad esso tramite la porta 80 o 443

-A INPUT -i eth0 -p tcp -m state --state STABILITO --sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state --state STTABLISHED --sport 443 -j ACCEPT -A OUTPUT - o eth0 -p tcp -m state --state NEW, STABILITO --dport 80 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state --state NEW, STTABLISHED --dport 443 -j ACCEPT

NTP

Per far funzionare correttamente l'orologio del tuo server, avrai bisogno di NTP. NTP consente al server di sincronizzarsi con i timeserver in tutto il mondo. Avere un orologio errato sul tuo server può causare problemi di connessione, quindi eseguire NTP è una buona idea. Ancora una volta, dovresti accettare solo connessioni in uscita e già stabilite.

-A INPUT -i eth0 -p udp -m state --state STABILITO --sport 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state --state NEW, STTABLISHED --dport 123 -j ACCEPT

TUN

Sblocca l'interfaccia TUN utilizzata da OpenVPN per il tunneling del traffico.

-A INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT

È necessario consentire a TUN di inoltrare il traffico all'interfaccia normale per la VPN. Troverai quell'indirizzo IP nella configurazione OpenVPN. Se lo cambi nella configurazione, cambia anche nelle tue regole.

-A AVANTI -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCETTA -A AVANTI -m stato - stato stabilito, CORRELATO -j ACCETTA

Registrazione

È una buona idea tenere registri di tutto ciò che viene rifiutato da iptables. In questo caso, significa tutto ciò che non rientra in nessuna di queste regole. I registri ti consentono di vedere se ci sono attività dannose o tentativi di fare qualcosa di dannoso contro il tuo server.

-A INPUT -m limite –limit 3 / min -j LOG –log-prefisso “iptables_INPUT_denied:” –log-level 4
-A FORWARD -m limite –limit 3 / min -j LOG –log-prefix “iptables_FORWARD_denied:” –log-level 4
-A OUTPUT -m limite –limit 3 / min -j LOG –log-prefisso “iptables_OUTPUT_denied:” –log-level 4

Rifiuta tutto il resto

Infine, devi bloccare tutto ciò che non rientra nelle tue regole. Questo è davvero lo scopo di avere un firewall in primo luogo.

-A INGRESSO -j REJECT -A AVANTI -j REJECT -A OUTPUT -j REJECT

Chiudi il file con COMMIT per dire a iptables di impegnare tutte le regole.

NAT Masquerading

È necessario che le connessioni dalla VPN sembrino provenire dal server stesso. Questo pezzo non può essere incluso nel normale file iptables perché utilizza una tabella diversa. Va bene, però, è solo una riga.

$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Inoltra traffico IPv4

Dovrai abilitare l'inoltro del traffico IPv4, in modo che possa passare tra la VPN e l'interfaccia di rete effettiva del tuo server. Apri /etc/sysctl.d/99-sysctl.conf con sudo.

Trova la riga qui sotto e decommentala rimuovendo il #.

net.ipv4.ip_forward = 1

Arresta tutte le connessioni IPv6

Siamo spiacenti, non hai ancora finito con iptables. Devi bloccare tutto il traffico IPv6. Questo server OpenVPN supporterà solo IPv4, il che va bene, dal momento che non ti imbatterai in una situazione in cui hai bisogno di IPv6. Di conseguenza, qualsiasi connessione IPv6 può potenzialmente perdere informazioni, il che è l'opposto di quello che si desidera quando si utilizza una VPN.

Prima di impostare le regole per iptables, è necessario disabilitare IPv6 ovunque nel sistema.

Aggiungi le seguenti righe a /etc/sysctl.d/99-sysctl.conf. Se lo hai chiuso dalla sezione precedente, riaprilo con sudo.

net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1

Attiva le tue modifiche.

$ sudo sysctl -p

Commenta tutte le linee IPv6 in / etc / hosts. Avrai bisogno anche di sudo qui.

# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters

Finalmente, puoi scrivere le regole di iptables IPv6. Crea un file per loro su / tmp / ipv6.

* filtro -A INPUT -j REJECT -A AVANTI -j REJECT -A OUTPUT -j REJECT COMMIT

Vedi, sono semplici. Rifiuta tutto.

Importa e salva su Iptables

Devi importare queste regole per poter fare qualsiasi cosa. Quindi, ora è il momento di farlo.

Inizia cancellando tutto il resto. Non vuoi che nessuna vecchia regola si frapponga.

$ sudo iptables -F && sudo iptables -X

Importa le tue regole IPv4 e IPv6.

$ sudo iptata-restore </ tmp / ipv4 $ sudo ip6tables-restore </ tmp / ipv6

Probabilmente non vorrai mai più farlo. Quindi, avrai bisogno di un nuovo pacchetto per salvare le tue regole in modo permanente.

$ sudo apt installa iptables-persistent

Durante l'installazione, il pacchetto ti chiederà di salvare le tue regole esistenti. Rispondi "Sì".

Se si apportano modifiche in un secondo momento, è possibile aggiornare anche le configurazioni salvate.

$ sudo service netfilter-persistent save

Ci è voluto del tempo, ma il tuo firewall è pronto. Nella pagina successiva, affronteremo la creazione delle chiavi di crittografia necessarie.

Clicca qui: Pagina successiva

Tutto su vpns: come configurare il tuo vpn con openvpn (parte 3)