Det er 2017, og å bruke en VPN har blitt en no-brainer. Mellom mengden av eksterne personvernproblemer og din egen ISP som kan selge nettleserloggen din, er det virkelig ingen begrunnelse for å ikke bruke en.
Jada, du kan betale en av de hundrevis av VPN-tjenestene der ute, men nok en gang er du avhengig av noen andre med dataene dine. De fleste er i virkeligheten fantastiske, men hvis du vil ha full kontroll, kan du bygge din egen VPN på en V irtual P rivate S erver (VPS) eller leie din egen private server, hvis du føler for å være veldig hardcore med det.
Alt du trenger for å bygge en VPN er open source OpenVPN-programvaren og Linux (eller BSD). Konfigurasjonen kan være involvert, men det er ikke umulig med noen med til og med grunnleggende Linux-ferdigheter å dra på en distribusjon som Ubuntu.
For denne guiden, trenger du en VPS som kjører Ubuntu. Du kan plukke en enkelt opp fra noen som DigitalOcean eller Linode . Følg de grunnleggende sikkerhetsveiledningene for å bli satt opp. Forsikre deg om at du ikke gjør grunnleggende feil som å tillate rottilgang over SSH.
Husk også at dette du skal gjøre hele oppsettet på kommandolinjen over SSH til din VPS. Det er ikke noe som krever en gal mengde på Linux-kunnskap, men vær forberedt på å skrive i stedet for å klikke.
Få det du trenger
Hurtigkoblinger
- Få det du trenger
- Konfigurer brannmuren
- Finn grensesnittet
- Iptables Basics
- Sett opp dine regler
- Loopback
- Ping
- SSH
- OpenVPN
- DNS
- HTTP / S
- NTP
- TUN
- Hogst
- Avvis alt annet
- NAT Masquerading
- Frem IPv4-trafikk
- Stopp alle IPv6-tilkoblinger
- Importer og lagre til Iptables
Ubuntu pakker og distribuerer OpenVPN i depotene. Du trenger bare å bruke apt for å installere det. Du trenger også verktøyet for å generere krypteringsnøkler. Installer dem begge.
$ sudo apt installere openvpn easy-rsa
Konfigurer brannmuren
Deretter må du ta vare på brannmuren. Det er en viktig brikke for å holde VPN-sikkerheten din og forhindre både datalekkasje og uønsket tilgang.
Iptables er hovedbrannmuren for Linux, og det er det beste alternativet for å kontrollere tilgangen til Ubuntu-portene. Du har allerede installert det, slik at du kan komme i gang med å konfigurere brannmurreglene.
Finn grensesnittet
Før du begynner å skrive regler til iptables, må du finne ut hvilket grensesnitt serveren din er koblet til Internett med. Kjør ifconfig for å vise nettverksgrensesnittene. Den som har en inet addr: samsvarer med IP-adressen du er koblet til, er det rette grensesnittet.
Iptables Basics
Det er vanligvis ikke en god ide å tilfeldig kopiere og lime inn ting i terminalen fra Internett. Dette gjelder spesielt når du arbeider med sikkerhetsemner. Så ta litt tid her for å lære litt om regler for iptables før du begynner å legge dem inn.
Ta en titt på dette eksemplet på en iptables-regel.
-E INPUT -i eth0 -p tcp -m state – stat ESTABLISERT –port 443 -j AKSEPT
OK, så -A betyr at du kommer til å legge til en ny regel. Da betyr INPUT at det vil angripe innspill til serveren din. Det er også et UTGANG. Flagget -i forteller iptables hvilket grensesnitt denne regelen er for. Du kan spesifisere hvilken protokoll regelen er for med -p. Denne regelen håndterer tcp. -m spesifiserer en betingelse som en tilkobling må oppfylle. I dette tilfellet må det samsvare med staten som er spesifisert. Naturligvis angir da –status en tilstand, i dette tilfellet en ESTABLISERT tilkobling. Den neste delen forteller iptables hvilken port denne regelen er for. Det er port 443, HTTPS-porten, her. Det siste flagget er -j. Den står for "hopp", og den forteller iptables hva du skal gjøre med forbindelsen. Hvis denne forbindelsen oppfylte alle kravene i regelen, ville iptables akseptere den.
Sett opp dine regler
Så du bør ha en generell ide om hvordan iptables-regler fungerer nå. Resten av denne delen vil fortelle deg hvordan du konfigurerer reglene dine stykke for stykke.
Den beste måten å lage et sett med iptables-regler er å opprette en fil som inneholder dem alle. Deretter kan du importere det hele til iptables samtidig. Å sette regler en-for-en kan bli forvirrende, spesielt hvis du starter et nytt regelverk fra bunnen av.
Lag en fil i / tmp-katalogen for å lage dine regler.
$ vim / tmp / ipv4
Start filen av med * filter. Dette forteller iptables at det som følger kommer til å være regler for pakkefiltrering.
Loopback
Den første delen av regler låser loopback-grensesnittet. De forteller iptables at serveren skal godta trafikk fra seg selv i loopback-grensesnittet. Den bør også avvise trafikk som kommer fra seg selv som ikke kommer fra loopback.
-EIN INNGANG -Jeg lo -j AKSEPT-EN INNGANG! -i lo -s 127.0.0.0/8 -j AVVIS-ET UTGANG -o lo -j ACCEPT
Ping
La deretter ping. Du bør kunne pinge serveren din for å være sikker på at den er på nettet i tilfelle den ellers ikke kan nås. I dette tilfellet er det bare ekkoforespørsler som er tillatt, og serveren vil tillate seg å sende ICMP-utgang.
-E INPUT -p icmp -m state - stat NYTT --icmp-type 8 -j ACCEPT -A INPUT -p icmp -m state - stat ESTABLISERT, RELATERT -J ACCEPT -A OUTPUT -p icmp -j ACCEPT
SSH
Du trenger SSH. Det er den eneste måten du kan nå serveren din på. SSH-reglene er spesifikke for internettgrensesnittet ditt, så sørg for at du erstatter eth0 for det grensesnittet serveren din faktisk bruker.
Det kan også være en god ide å endre SSH-tilkoblinger fra port 22, siden det er standard som potensielle angripere vil prøve. Hvis du gjør det, må du også endre det i iptables-reglene.
-E INPUT -i eth0 -p tcp -m state - stat NY, OPPSTILLING - port 22 -j ACCEPT -A OUTPUT -o eth0 -p tcp -m state - stat ESTABLISERT - sport 22 -j ACCEPT
OpenVPN
Denne neste brikken tillater trafikk til og fra OpenVPN-serveren over UDP.
-E INPUT -i eth0 -p udp -m state - stat NY, OPPSTILLING - port 1194 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state - stat ESTABLISERT - sport 1194 -j ACCEPT
DNS
La nå DNS-tilkoblinger over UDP og TCP. Du vil at VPN skal håndtere DNS, ikke ISP. Det er en del av grunnen til at du setter opp et VPN i utgangspunktet.
-E INPUT -i eth0 -p udp -m state - stat ESTABLISERT - sport 53 -j AKSEPT -E UTPUT -o eth0 -p udp -m state - stat NY, ETABLERT --port 53 -j ACCEPT -A INPUT -i eth0 -p tcp -m state - stat ESTABLISERT - sport 53 -j AKSEPT -E UTPUT -o eth0 -p tcp -m state - stat NY, ETABLERT --port 53 -j ACCEPT
HTTP / S
For at Ubuntu skal kunne oppdatere seg selv, må du legge til et sett med regler for å tillate utgående tilkobling av HTTP og HTTPS. Merk at disse reglene bare tillater serveren å starte HTTP-tilkoblinger, slik at du ikke kan bruke den som en webserver eller koble til den over port 80 eller port 443
-E INPUT -i eth0 -p tcp -m state - stat ESTABLISERT - sport 80 -j ACCEPT -A INPUT -i eth0 -p tcp -m state - stat ESTABLISERT - sport 443 -j ACCEPT -A OUTPUT - o eth0 -p tcp -m state - stat NY, ESTABLISERT --port 80 -j AKSEPT -E UTPUT -o eth0 -p tcp -m state - stat NY, ETABLERT - dport 443 -j ACCEPT
NTP
Hvis du vil at serverklokken kjører ordentlig, trenger du NTP. NTP lar serveren din synkronisere med tidsservere over hele verden. Å ha en feil klokke på serveren din kan forårsake tilkoblingsproblemer, så det er en god idé å kjøre NTP. Nok en gang bør du bare godta utgående og allerede etablerte forbindelser.
-E INPUT -i eth0 -p udp -m state - stat ESTABLISERT - sport 123 -j ACCEPT -A OUTPUT -o eth0 -p udp -m state - stat NY, ETABLERT - dport 123 -j ACCEPT
TUN
Fjern blokkeringen av TUN-grensesnittet som OpenVPN bruker for å skaffe tunneltrafikk.
-E INPUT -i tun0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT
Du må tillate TUN å videresende trafikk til ditt vanlige grensesnitt for VPN. Du finner den IP-adressen i OpenVPN-konfigurasjonen. Hvis du endrer det i konfigurasjonen, kan du endre det i reglene dine også.
-E Fremover -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT -A FORWARD -m state - stat ESTABLISERT, RELATERT -j ACCEPT
Hogst
Det er lurt å føre logger over alt som blir avvist av iptables. I dette tilfellet betyr det alt som ikke passer inn i noen av disse reglene. Logger lar deg se om det er skadelig aktivitet eller forsøk på å gjøre noe ubehagelige mot serveren din.
-En INPUT -m grense –grense 3 / min -j LOGG –logg-prefiks “iptables_INPUT_denied:” –log-nivå 4
-E Fremover -m grense –grense 3 / min -j LOGG –logg-prefiks “iptables_FORWARD_denied:” –log-nivå 4
-En UTGANG -m grense –grense 3 / min -j LOGG –logg-prefiks “iptables_OUTPUT_denied:” –log-nivå 4
Avvis alt annet
Til slutt må du blokkere alt som ikke passer inn i reglene dine. Det er virkelig formålet med å ha en brannmur i utgangspunktet.
-EINNGANG -J AVVISNING-ET FREMTJENN -J AVVISNING-ET UTGANG -J AVslag
Lukk filen med COMMIT for å fortelle iptables å forplikte alle reglene.
NAT Masquerading
Du trenger tilkoblingene fra VPN for å se ut som om de kommer fra selve serveren. Denne brikken kan ikke inkluderes i den vanlige iptables-filen fordi den bruker en annen tabell. Det er ok, men det er bare en linje.
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Frem IPv4-trafikk
Du må aktivere videresending av IPv4-trafikk, slik at den kan passere mellom VPN og serverens faktiske nettverksgrensesnitt. Åpne /etc/sysctl.d/99-sysctl.conf med sudo.
Finn linjen nedenfor og kammenter den ved å fjerne #.
Stopp alle IPv6-tilkoblinger
Beklager, du er ikke ferdig med iptables ennå. Du må sperre all IPv6-trafikk. Denne OpenVPN-serveren støtter bare IPv4, noe som er bra, siden du ikke kommer til å komme i en situasjon der du trenger IPv6. Som et resultat kan IPv6-tilkoblinger potensielt lekke informasjon, noe som er det motsatte av det du ønsker når du bruker en VPN.
Før du setter reglene for iptables, må du deaktivere IPv6 overalt ellers på systemet.
Legg til følgende linjer til /etc/sysctl.d/99-sysctl.conf. Hvis du lukket den fra forrige seksjon, må du åpne den igjen med 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
Aktiver endringene.
$ sudo sysctl -p
Kommenter alle IPv6-linjene i / etc / hosts. Du trenger sudo også her.
# :: 1 ip6-localhost ip6-loopback # fe00 :: 0 ip6-localnet # ff00 :: 0 ip6-mcastprefix # ff02 :: 1 ip6-allnodes # ff02 :: 2 ip6-allrouters
Endelig kan du skrive IPv6-iptables-reglene. Lag en fil for dem på / tmp / ipv6.
* filter -E INPUT -j REJECT -A FORWARD -j REJECT -A OUTPUT -j REJECT COMMIT
De er enkle. Avvis alt.
Importer og lagre til Iptables
Du må importere disse reglene for at de skal kunne gjøre noe. Så nå er det på tide å gjøre det.
Begynn med å rydde ut alt annet som er der. Du vil ikke at noen gamle regler kommer i veien.
$ sudo iptables -F && sudo iptables -X
Importer både IPv4- og IPv6-reglene.
$ sudo iptables-Restore </ tmp / ipv4 $ Sudo ip6tables-Restore </ tmp / ipv6
Du vil sannsynligvis aldri gjøre det igjen. Så du trenger en ny pakke for å lagre reglene dine permanent.
$ sudo apt installere iptables-persistent
Under installasjonen vil pakken be deg om å lagre eksisterende regler. Svar "Ja."
Hvis du gjør endringer senere, kan du også oppdatere de lagrede konfigurasjonene.
$ sudo-tjeneste netfilter-vedvarende lagring
Det tok litt tid, men brannmuren din er klar til å gå. På neste side skal vi ta tak i å lage nødvendige krypteringsnøkler.
Klikk her: Neste side
